|

楼主 |
发表于 2020-5-11 23:53:33
|
显示全部楼层
- import calendar
- import os
- now_year = 2020
- now_month = 4
- days = calendar.monthrange (now_year,now_month)[1]
- #职员系统
- #添加职员,删除
- #如何实现系统
- #1.显示系统功能
- #2.让用户选择功能
- #3.判断用户选择的指定功能,然后完成相应的操作
- #职员系统
- #属性:职员列表属性 保存职员信息
- #方法:添加职员 计算职员工资 删除职员 显示职员信息等
- #职员类
- #属性:姓名,职务,月薪
- #
- class member(object):
- def __init__(self,name,post,salary):#名字,职务,月薪
- # 添加相关的属性信息
- self.name=name
- self.post=post
- self.salary=salary
- class memberSystem(object):
- def __init__(self):
- # 定义一个列表用于保存学生对象
- self.member_list = list()
- # 将功能代码放到指定函数里面
- def show_menu(self):
- '''该函数是为了展示功能界面'''
- # 1. 显示系统的功能菜单
- print("------职员管理系统1.0------")
- print("1.添加职员信息")
- print("2.计算职员工资")
- print("3.删除职员信息")
- print("4.显示所有职员")
- print("5.退出管理系统")
- # 添加职员函数
- # 分析:
- # 1. 职员的信息如何表示?
- # 2. 管理系统里面的职员信息如何表示?
- def add_member(self):
- name = input("请输入职员的姓名:")
- post = input("请输入职员的职务:")
- salary = input("请输入职员的月薪:")
- # 添加一个职员,需要自己创建一个职员对象
- stu=member(name,post,salary)
- # 把对象添加到列表里面
- self.member_list.append(stu)
- # 显示职员信息
- # print(self.member_list)
- print("添加成功")
- # 显示所有职员函数
- def show_all_member(self):
- '''该函数用于显示所有的职员信息'''
- # 注意列表里面储存的是字典
- # 遍历的时候使用enumerate函数可以返回下标
- for index, member in enumerate(self.member_list):
- # 计算学号=下标+1
- member_no = index + 1
- print("工号:", member_no,
- "姓名:", member.name,
- "职务:", member.post,
- "月薪:", member.salary)
- # 删除职员信息
- def delete_member(self):
- """该函数用来删除职员信息"""
- # 1.接收用户输入的工号
- member_no = int(input("请输入要删除职员的工号:"))
- # 2.将学号转换为下标
- index = member_no - 1
- # 判断下表是否合法
- if 0 <= index <= len(self.member_list):
- # 需求删除后把这个人的姓名显示出来,使用pop会把删除的内容返回
- member = self.member_list.pop(index)
- print("%s,删除成功!" % member.name)
- else:
- print("请输入有效工号!")
- # 查询某个职员信息
- def query_member(self):
- """该函数用来查询职员信息"""
- name = input("请输入要查询职员的姓名:")
- day = input("请输入上班天数:")
- restday = input("请输入休息天数:")
- workingdays = day + restday
- for index, member in enumerate(self.member_list):
- member_no = index + 1
- if member.name == name:
- print("工号:", member_no,
- "职员:", member.name,
- "职务:", member.post,
- "月薪:", member.salary)
- onedaysalary = (int(salary) / int(days))#计算一天工资
- wages = (int(onedaysalary) * (int(day)+int(restday)))#计算一个月工资
- i = 0
- if workingdays == days:
- i = 0
- else:
- i += 100
- realwages = (int(wages) + int(i))
-
- print("您的工资是:",int(realwages))
- break
- # 当循环语句没有执行break,表示没有该学生信息执行else里面的语句
- # 当循环执行break语句的时候,说明该学生信息存在,不会执行else里面的语句
- # 注意:当for循环与else一起使用的时候,如果没有执行for循环里面的break则会执行else语句!!!
- else:
- print("对不起,没有该职员")
-
- # 讲列表里面的数据保存到文件里面
- def save_file(self):
- # 1.打开文件 要以w方式打开
- file=open("member_list.data","w",encoding="utf-8")
- #2.把数据写入文件(把列表转换为字符串类型)
- # 把列表里面的每一个对象转换成学生列表里面的字典,把对象的属性信息保存到字典里面
- # stu.__dict__ 获取学生的字典信息把对象的属性信息以字典的形式返回
- new_list=[stu.__dict__ for stu in self.member_list]
- student_list_str=str(new_list)
- print(member_list_str,type(member_list_str))
- file.write(member_list_str)
- file.close()
- # 加载文件里面的内容,将文件里面的内容加载到列表里面****
- def load_file(self):
- # 1.判断文件是否存在 返回值类型是布尔类型
- if os.path.exists("member_list.data"):
- # 1.打开文件 r模式
- file=open("member_list.data","r",encoding="utf-8")
- # 2.读取文件里面的数据
- value=file.read()
- # 因为从文件里面读取的是字符串类型,所以需要先转换为列表类型
- # 注意这里将字符串转换为列表需要使用eval()函数,获取字符串包裹的内容
- new_list=eval(value)
- print("从文件里面获取的内容为:",new_list,type(new_list))
- # 把列表里面每一个学生字典信息转换为对象
- # **stu_dict:把字典里面的每一项数据按照关键字传参
- # member(**stu_dict)表示创建一个学生对象
- new_list=[member(**stu_dict) for stu_dict in new_list]
- print(new_list)
- # 3.将文件里面的内容添加到列表里面
- # 方法一:使用global
- # global student_list
- # student_list=new_list
- # 方法2:方式,把文件中的列表数据扩展到全局变量里面, 这里不需要加上global,因为列表是可变类型
- self.member_list.extend(new_list)
- file.close()
- # 程序入口函数,程序开始时第一个执行的函数
- def start(self):
- # 当程序运行的时候加载一次文件
- self.load_file()
- while True:
- # 1.显示系统功能菜单
- self.show_menu()
- # 2.接收用户输入的功能选项
- menu_option = input("请输入你要操作的功能选项:")
- # 3. 判断用户选择的指定功能,然后完成对应的操作(增删改查的功能)
- if menu_option == "1":
- print("添加职员信息")
- self.add_member()
- elif menu_option == "2":
- print("计算职员工资")
- self.modify_member()
- elif menu_option == "3":
- print("删除职员信息")
- self.delete_member()
- elif menu_option == "4":
- print("显示职员信息")
- self.show_all_member()
- elif menu_option == "5":
- print("程序退出")
- self.save_file()
- break
- system = memberSystem()
- system.start()
- print("-----end----")
复制代码 |
|