题目
''' HR人力资源管理. 1. 菜单: ("查看员⼯信息","添加员⼯信息", "修改员⼯信息", "删除员⼯信息", "退出") 2. 添加员⼯信息: ⽤户输⼊员⼯的基本信息(id, name, birthday, salary, input_time), 将员⼯信息写⼊到⽂件emp.db⽂件内 3. 修改员⼯信息: 显示所有员⼯信息. 然后让⽤户选择要修改的员⼯的id. 然后让⽤户输⼊员⼯的 ⼯资, 将员⼯的⼯资修改为⽤户输⼊的⼯资. 其余内容不做改动 4. 删除员⼯信息: 显示所有员⼯信息. 然后⽤户选择要删除的员⼯id, 根据⽤户输⼊的id删除该员 ⼯的全部信息 5. 查看员⼯信息: 显示出所有员⼯的基本信息. 以上操作都需要围绕着emp.db来完成. 关于时间的处理: ⾃⼰搜索time模块. 主要是针对input_time. birthday不⽤处理. ⽤户 输⼊什么就是什么. 扩展(升级题): ⽤户的每⼀次操作成功都要将⽤户执⾏的操作记录在emp.log⽂件中(查看员⼯信息除外). 例如: ⽤户选择"添加员⼯信息". 当添加动作执⾏完毕, 在emp.log中记录⼀句话: 管理 员在xxxx-xx-xx hh:mm:ss时间执⾏了添加员⼯信息操作. 添加的员⼯信息为: xxx 以此类推. 每次操作成功后都要记录信息. (查看员⼯信息除外) emp.db ⽂件中的内容格式⾃⼰定义. 这个没有要求. 但是要符合你⾃⼰的设计需求. ''' import time import os print("欢迎来到HR⼈⼒资源管理系统") menu = ("查看员⼯信息", "添加员⼯信息", "修改员⼯信息", "删除员⼯信息", "退出")
# ("查看员⼯信息","添加员⼯信息", "修改员⼯信息", "删除员⼯信息", "退出") import time import os def log(content): f = open("emp.log", mode="a", encoding="utf-8") f.write(content+" ") f.flush() f.close() def chakan(): # 第二个 print("编号 名字 生日 收入 录入时间") f = open("emp.db", mode="r", encoding="utf-8") for line in f: lst = line.strip().split("_") print(lst[0]+" "+lst[1]+" "+lst[2]+" "+lst[3]+" "+lst[4]) print("查看完毕!!!!") def tianjia(): # 第一个 flag = True while flag: id = input("请输入员工的id:") # 判定id是否可用 f = open("emp.db", mode="r", encoding="utf-8") for line in f: if id == line.strip().split("_")[0]: print("对不起. id已经重复了. 不可用. 请重新输入") break else: print("id不重复,可以使用") flag = False name = input("请输入员工的name:") birthday = input("请输入员工的birthday:") salary = input("请输入员工的salary:") input_time = time.strftime("%Y-%m-%d %H:%M:%S") # 获取系统时间 f = open("emp.db", mode="a", encoding="utf-8") f.write(id+"_"+name+"_"+birthday+"_"+salary+"_"+input_time+" ") f.flush() f.close() print("添加成功!!!") log(f"管理员xxx在{input_time}添加了一个员工, 该员工信息为: {id}_{name}_{birthday}_{salary}_{input_time}") def xiugai(): # 第四个 flag = True while flag: id = input("请输入你要修改的员工的id:") f = open("emp.db", mode="r", encoding="utf-8") for line in f: lst = line.strip().split("_") if id == lst[0]: print("当前员工的信息是: %s %s %s %s %s" % (lst[0], lst[1], lst[2],lst[3],lst[4]) ) flag = False break else: print("id不存在,请重新输入") f.flush() f.close() salary = input("请输入该员工的最新工资") with open("emp.db", mode="r", encoding="utf-8") as f1, open("emp.db_副本", mode="w", encoding="utf-8") as f2: for line in f1: lst = line.strip().split("_") if id == lst[0]: line = f"{id}_{lst[1]}_{lst[2]}_{salary}_{time.strftime('%Y-%m-%d %H:%M:%S')}" f2.write(line) # 修改 os.remove("emp.db") os.rename("emp.db_副本", "emp.db") print("修改员工信息完毕!!!") def shanchu(): # 第三个 id = input("请输入你要删除的员工的id") with open("emp.db", mode="r", encoding="utf-8") as f1, open("emp.db_副本", mode="w", encoding="utf-8") as f2: for line in f1: if id == line.strip().split("_")[0]: continue f2.write(line) # 不要删除的数据 os.remove("emp.db") os.rename("emp.db_副本", "emp.db") print("删除完毕!!!!") menu = ("查看员工信息","添加员工信息", "修改员工信息", "删除员工信息", "退出") while 1: for i in range(len(menu)): print(i + 1, menu[i]) n = input("请输入你要执行的菜单:") if n == '1': chakan() elif n == '2': tianjia() elif n == "3": xiugai() elif n == "4": shanchu() elif n == "5": print("程序退出") exit() else: print("对不起. 您输入的菜单不存在. 请重新输入")