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 os import time def add(): # 新增员工信息 print('请输入员工的基本信息') with open('emp.db', mode='a+', encoding='utf-8') as f, \ open('emp.log', mode='a', encoding='utf-8') as f2: f.seek(0) first= f.readline().strip() if first =='': f.write('编号 姓名 生日 薪水 创建日期 修改日期\n') f.seek(0) a = 0 f.readline().strip() # 先读取第一行 for line in f: # 从第二行开始循环 line= line.strip().split(' ') # print(line) a = int(line[0]) id = str(a + 1) # 取出最大的编号加1 name = input('姓名:') # 姓名 while 1: # 生日 birthday = input('生日(例:20180101):') if len(birthday) != 8 or int(birthday[4:6]) > 12 or int(birthday[6:]) > 31 or not birthday.isdigit(): print('生日格式不正确,请重新输入') else: break while 1: # 薪水 salary = input('薪水:') if not salary.isdigit(): print('薪水格式不正确,请重新输入') else: break input_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())) # 创建时间 f.write(input_time + ' ') change_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())) # 修改时间 f.write(id + ' ') f.write(name + ' ') f.write(birthday + ' ') f.write(salary + ' ') f.write(change_time + '\n') times = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) # 产生日志时间 f2.write(f"管理员在 {times} 时间执行了添加员工信息操作,添加的员工信息为:编号:{id},姓名:{name},生日:{birthday},薪水:{salary}\n") # add() def look(): with open('emp.db',mode='r',encoding='utf-8') as f: for line in f: print(line, end='') print('\n如上是所有员工信息') # look() def change(): # 修改员工信息 with open('emp.db',mode='r',encoding='utf-8') as f,\ open('emp_tmp.db', mode='a', encoding='utf-8') as f1, \ open('emp.log', mode='a', encoding='utf-8') as f2: for line in f: print(line, end='') f.seek(0) num = input('\n请输入你想修改员工的编号:') sala = input('请输入你想修改的员工薪水:') for line in f: lines = line.strip().split(' ') if num == lines[0]: f1.write(num + ' ') nam = lines[1] f1.write(nam + ' ') f1.write(lines[2] + ' ') f1.write(sala + ' ') f1.write(lines[4] + ' ') shijian = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())) # 修改时间 f1.write(shijian + '\n') time1 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) f2.write(f"管理员在 {time1} 时间执行了修改员工操作,将员工编号为{num},姓名为{nam}的薪水修改为{sala}\n") else: f1.write(line) os.remove('emp.db') os.rename('emp_tmp.db','emp.db') # change() def delete(): # 删除员工信息 with open('emp.db', mode='r', encoding='utf-8') as f,\ open('emp_tmp.db', mode='a', encoding='utf-8') as f1,\ open('emp.log', mode='a', encoding='utf-8') as f2: for line in f: print(line, end='') f.seek(0) num = input('\n请输入你想要删除的员工的id:') for line in f: lines = line.strip().split(' ') if num == lines[0]: time1 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) f2.write(f"管理员在 {time1} 执行了删除员工操作,删除编号为{num},姓名为{lines[1]}的员工 \n") continue else: f1.write(line) os.remove('emp.db') os.rename('emp_tmp.db','emp.db') # delete() print("欢迎来到HR人力资源管理系统") print('请输入括号内的字母,执行相关操作') while 1: menu = input("查看员工信息(k), 添加员工信息(a), 修改员工信息(c), 删除员工信息(d), 退出(q):") if menu.upper() == 'K': # 查看员工信息 look() elif menu.upper() == 'A': # 新增员工信息 while 1: add() isadd = input('是否继续添加(Y/N):') if isadd.upper() == 'Y': continue print('退出添加操作') break elif menu.upper() == 'D': # 删除员工信息 while 1: delete() isdelete = input('是否继续删除(Y/N):') if isdelete.upper() == 'Y': continue print('退出删除操作') break elif menu.upper() == 'C': # 修改员工信息 while 1: change() ischange = input('是否继续修改(Y/N):') if ischange.upper() == 'Y': continue print('退出修改操作') break elif menu.upper() == 'Q': # 退出 print('操作完成,退出HR人力资源管理系统') break else: print('请输入正确的操作编码')