# coding=utf-8
# Time : 2018/8/1 16:50
# Author : 云水君
# Email : 632942444@qq.com
# File : 员工管理系统.py
import json
class Operation():
@classmethod
def read_file(cls):
try:
with open("./data.json", "r", encoding="utf-8") as f:
data = json.load(f)
return data
except:
return []
@classmethod
def write_file(cls, data):
with open("./data.json", "w", encoding="utf-8") as f:
json.dump(data, f)
return True
class Staffs(Operation):
def __init__(self):
self.name = ""
self.age = 0
self.number = ""
self.pay = ""
self.position = ""
self.department = ''
@classmethod
def creat_staff(cls, dit):
staff = cls()
if len(dit):
for key in dit:
staff.__setattr__(key, dit[key])
return staff
return None
def __str__(self):
return "姓名:%s 年龄:%s 部门:%s 职位:%s 薪资:%s 工号:%s"%(self.name, self.age,self.department,self.position,self.pay,self.number)
class Department(Operation):
def __init__(self):
self.dp_name = ""
self.staffs = []
self.count = 0
@classmethod
def creat_deparment(cls, dit):
dp = cls()
if len(dit):
for key in dit:
if key != "staffs":
dp.__setattr__(key, dit[key])
return dp
return None
def load_staffs(self):
data = self.read_file()
self.staffs = []
for depart in data:
if depart["dp_name"] == self.dp_name:
for staff in depart["staffs"]:
self.staffs.append(Staffs.creat_staff(staff))
def add_staff(self):
staff = Staffs()
staff.name = input("请输入员工的名字:")
staff.age = input("请输入员工的年龄:")
staff.pay = input("请输入员工的薪资:")
staff.position = input("请输入员工的职位:")
staff.department = self.dp_name
staff.number = self.dp_name + str(self.count).rjust(3,"0")
data = self.read_file()
flag = False
for item in data:
if item["dp_name"] == self.dp_name:
item["staffs"].append(staff.__dict__)
item["count"] += 1
self.write_file(data)
flag = True
break
if not flag:
data.append({"dp_name": self.dp_name, "staffs": [staff.__dict__], "count": 1})
self.write_file(data)
class Company(Operation):
company_name = "千锋教育"
# staff_number = get_staff_number()
staff_pay = []
department = []
@classmethod
def add_staff(cls):
dp = input("请输入要添加的员工所属的部门:")
Company.load_department()
flag = False
for dpx in cls.department:
if dpx.dp_name == dp:
dpx.count += 1
dpx.add_staff()
flag = True
break
if not flag:
department = Department()
department.dp_name = dp
department.count = 1
department.add_staff()
@classmethod
def load_department(cls):
data = cls.read_file()
cls.department =[]
for depart in data:
Company.department.append(Department.creat_deparment(depart))
@classmethod
def max_pay(cls):
cls.load_department()
flag = 0
for dp in cls.department:
dp.load_staffs()
for staff in dp.staffs:
if flag == 0:
max_p = staff
flag = 1
elif max_p.pay < staff.pay:
max_p = staff
print(max_p)
@classmethod
def average_age(cls):
pass
@classmethod
def get_staff_number(cls):
data = cls.read_file()
staff_numbers = 0
for item in data:
staff_numbers += len(item["staffs"])
return staff_numbers
@classmethod
def show_staffs(cls):
cls.load_department()
print("1.按员工姓名查看")
print("2.查看所有员工")
n = input("请输入查看方式:")
if n == "2":
for dp in cls.department:
dp.load_staffs()
for staff in dp.staffs:
print(staff)
if n =="1":
name = input("请输入要查找的员工的名字:")
staffs_temp = []
for dp in cls.department:
dp.load_staffs()
for staff in dp.staffs:
if staff.name == name:
staffs_temp.append(staff)
if not len(staffs_temp):
print("员工%s不存在"%name)
else:
for stf in staffs_temp:
print(stf)
@classmethod
def del_staff(cls):
cls.load_department()
name = input("请输入要删除的员工的名字:")
staffs_temp = []
for dp in cls.department:
dp.load_staffs()
for staff in dp.staffs:
if staff.name == name:
# print(id(staff))
staffs_temp.append(staff)
if not len(staffs_temp):
print("员工%s不存在" % name)
else:
index = 1
for stf in staffs_temp:
print(index, ":", stf)
index += 1
n = int(input("请输入要删除的员工的序号:"))
nu = staffs_temp[n-1].number
flag = False
for dp in cls.department:
for staff in dp.staffs:
if staff.number == nu:
del staff
flag = True
break
if flag:
break
flag = False
data = cls.read_file()
index1 = 0
for dp in data:
index2 = 0
for staff in dp["staffs"]:
if staff["number"] == nu:
del data[index1]["staffs"][index2]
flag = True
cls.write_file(data)
print("删除成功!")
break
index2 += 1
if flag:
break
index1 += 1
if __name__ == '__main__':
while True:
print("1.添加员工")
print("2.查看员工")
print("3.删除员工")
print("4.查看薪资最高的员工")
print("5.退出")
i = input("请输入想要的操作:")
if i == "1":
Company.add_staff()
if i == "2":
Company.show_staffs()
if i == "3":
Company.del_staff()
if i =="4":
Company.max_pay()
if i == "5":
break
运行效果:
1.添加员工
2.查看员工
3.删除员工
4.查看薪资最高的员工
5.退出
请输入想要的操作:1
请输入要添加的员工所属的部门:营销部
请输入员工的名字:kk
请输入员工的年龄:35
请输入员工的薪资:8990
请输入员工的职位:营销总监
1.添加员工
2.查看员工
3.删除员工
4.查看薪资最高的员工
5.退出
请输入想要的操作:2
1.按员工姓名查看
2.查看所有员工
请输入查看方式:2
姓名:aa 年龄:22 部门:研发部 职位:程序员 薪资:2500 工号:研发部001
姓名:bb 年龄:31 部门:研发部 职位:主任 薪资:5000 工号:研发部002
姓名:aa 年龄:21 部门:行政部 职位:文员 薪资:3100 工号:行政部001
姓名:kk 年龄:25 部门:行政部 职位:CEO 薪资:8390 工号:行政部002
姓名:ww 年龄:23 部门:营销部 职位:营销员 薪资:3100 工号:营销部001
姓名:kk 年龄:35 部门:营销部 职位:营销总监 薪资:8990 工号:营销部002
1.添加员工
2.查看员工
3.删除员工
4.查看薪资最高的员工
5.退出
请输入想要的操作:2
1.按员工姓名查看
2.查看所有员工
请输入查看方式:1
请输入要查找的员工的名字:kk
姓名:kk 年龄:25 部门:行政部 职位:CEO 薪资:8390 工号:行政部002
姓名:kk 年龄:35 部门:营销部 职位:营销总监 薪资:8990 工号:营销部002
1.添加员工
2.查看员工
3.删除员工
4.查看薪资最高的员工
5.退出
请输入想要的操作:3
请输入要删除的员工的名字:aa
1 : 姓名:aa 年龄:22 部门:研发部 职位:程序员 薪资:2500 工号:研发部001
2 : 姓名:aa 年龄:21 部门:行政部 职位:文员 薪资:3100 工号:行政部001
请输入要删除的员工的序号:2
删除成功!
1.添加员工
2.查看员工
3.删除员工
4.查看薪资最高的员工
5.退出
请输入想要的操作:4
姓名:kk 年龄:35 部门:营销部 职位:营销总监 薪资:8990 工号:营销部002
1.添加员工
2.查看员工
3.删除员工
4.查看薪资最高的员工
5.退出
请输入想要的操作:2
1.按员工姓名查看
2.查看所有员工
请输入查看方式:2
姓名:aa 年龄:22 部门:研发部 职位:程序员 薪资:2500 工号:研发部001
姓名:bb 年龄:31 部门:研发部 职位:主任 薪资:5000 工号:研发部002
姓名:kk 年龄:25 部门:行政部 职位:CEO 薪资:8390 工号:行政部002
姓名:ww 年龄:23 部门:营销部 职位:营销员 薪资:3100 工号:营销部001
姓名:kk 年龄:35 部门:营销部 职位:营销总监 薪资:8990 工号:营销部002
16员工管理系统(面对对象与数据本地化)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...