员工信息增删改查
Posted woz333333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了员工信息增删改查相关的知识,希望对你有一定的参考价值。
内容:
1.修改个人信息程序
2.员工信息增删改查
一、修改个人信息程序
需求:
1 在一个文件中存入多个人的个人信息,如以下: 2 username password age position department 3 alex abc123 21 Engineer IT 4 rain xyz456 32 Teacher Teaching 5 6 功能: 7 1.输入用户名及密码,正确登陆系统后显示 8 (1)修改个人信息 9 (2)打印个人信息 10 (3)修改密码 11 2.上述每个选项写一个方法 12 3.登陆输错3次退出程序
实现1:
1 # 员工信息文件 -> info_employee.txt 2 3 # 员工信息(列表嵌套) -> [ "alex", "abc123", 21, "Engineer", "IT"] 4 info = [] 5 6 7 # 获取员工信息 8 def get_info(): 9 with open("info_employee.txt", \'r\', encoding="utf-8") as f: 10 # 读取每一行的数据存入列表中 11 details = f.readlines() 12 # 遍历列表将每一行的数据分开并将一行的数据作为一个列表存入info列表中 13 for detail in details: 14 detail = detail.strip().split() 15 info.append(detail) 16 17 18 # 登陆 19 def login(): 20 users_pwds = [] 21 # 获取用户名及密码: 22 for index in range(1, len(info)): 23 # 获取用户数据 24 detail = info[index] 25 # 获取用户名及密码 26 user = detail[0] 27 pwd = detail[1] 28 users_pwds.append(dict({user: pwd})) 29 # 输入用户名及密码并验证用户名及密码是否正确 30 for i in range(4): 31 if i == 3: 32 print("你已经输错3次,不能再登陆了!") 33 exit() 34 # 输入用户名及密码 35 36 username, password = input("input the username and password(eg: user pwd): ").strip().split() 37 for item in users_pwds: 38 if item.get(username, None) == password: 39 print("登陆成功!欢迎%s!" % username) 40 now_user = username 41 return now_user 42 else: 43 print("用户名或密码错误!请重新输入") 44 45 46 # 打印选项 47 def output_chose(): 48 # 打印选项 49 print("你有如下选项: ") 50 print("1.修改个人信息") 51 print("2.打印个人信息") 52 print("3.修改密码") 53 print("4.退出系统") 54 # 用户输入选项,函数返回选项对应的整数 55 while True: 56 choice = input("请输入选项(数字): ") 57 if choice.isdigit(): 58 choice = int(choice) 59 if 1 <= choice <= 4: 60 return choice 61 else: 62 print("请输入正确的数字选项!") 63 else: 64 print("请输入正确的数字选项!") 65 continue 66 67 68 # 将修改后的信息写入文件中 69 def write_info(): 70 with open("info_employee.txt", "w", encoding="utf-8") as f: 71 for item in info: 72 for value in item: 73 f.write(str(value)+"\\t") 74 f.write("\\n") 75 76 77 # 1.修改个人信息 78 def change_info(update_name): 79 index = 0 80 for personal in info: 81 if personal[0] == update_name: 82 for i in range(len(personal)): 83 print(i+1, info[0][i], ": ", personal[i]) 84 choice = int(input("请输入你想要修改的选项: ")) 85 print("修改前的值: ", info[index][choice-1]) 86 change = input("请输入修改后的值: ") 87 info[index][choice-1] = change 88 write_info() 89 index += 1 90 91 92 # 2.打印个人信息 93 def output_info(personal_name): 94 for personal in info: 95 if personal[0] == personal_name: 96 for i in range(len(personal)): 97 print(info[0][i], ": ", personal[i]) 98 99 100 # 3.修改密码 101 def change_pwd(change_name): 102 index = 0 103 # 遍历找到用户信息的位置 104 for item in info: 105 if item[0] == change_name: 106 break 107 index += 1 108 # 输入两次密码,一样就通过,否则就重新输入 109 while True: 110 pwd1 = input("请输入新密码: ") 111 pwd2 = input("请再一次输入新密码: ") 112 if pwd1 == pwd2: 113 info[index][1] = pwd1 114 print("密码输入正确,修改密码成功!") 115 write_info() 116 break 117 else: 118 print("两次输入的密码不一样请重新输入!") 119 120 121 if __name__ == \'__main__\': 122 get_info() 123 login_user = login() 124 while True: 125 number = output_chose() 126 if number == 1: 127 change_info(login_user) 128 if number == 2: 129 output_info(login_user) 130 if number == 3: 131 change_pwd(login_user) 132 if number == 4: 133 exit()
实现2:
1 # __author__ = "wyb" 2 # date: 2018/4/20 3 4 5 def get_info(): 6 """ 7 获取员工信息 8 :return: 返回列表,列表中每一项是存储员工信息的字典 9 """ 10 info = [] 11 with open("info_employee.txt", \'r\', encoding="utf-8") as f: 12 # 读取每一行的数据存入列表中 13 details = f.readlines() 14 topics = details[0].split() # 第一排数据作为键 15 for index in range(1, len(details)): # 第二排开始的数据作为值 16 detail = details[index].strip().split() 17 dic = dict(zip(topics, detail)) # 把两个列表合并为一个字典 18 dic["user_id"] = index # 向用户数据中添加一项user_id方便替换用户数据 19 info.append(dic) 20 return info 21 22 23 def write_info(user_data): 24 """ 25 将修改后的用户信息写入文件中 26 :param user_data: 用户信息 27 :return: 28 """ 29 data = get_info() # 获取文件中数据 30 for index in range(len(data)): # 替换用户数据 31 if data[index]["user_id"] == user_data["user_id"]: 32 data[index] = user_data 33 34 with open("info_employee.txt", \'w\', encoding="utf-8") as f: # 将数据写入新文件 35 f.write("username\\tpassword\\tage\\tposition\\tdepartment\\n") 36 for item in data: 37 f.write("%s\\t%s\\t%s\\t%s\\t%s\\n" % (item["username"], item["password"], item["age"], item["position"], item["department"])) 38 39 return 40 41 42 def login(info): 43 """ 44 登陆接口 45 :param info: 个人信息所有数据 46 :return: 返回状态及信息 47 """ 48 # 输入用户名及密码并验证用户名及密码是否正确 49 for i in range(4): 50 if i == 3: 51 return {"status": -1, "error": "输错3次,不能再登陆"} 52 # 输入用户名及密码 53 username = input("username>>>").strip() 54 password = input("password>>>").strip() 55 for item in info: 56 if item["username"] == username and item["password"] == password: # 登陆成功 57 return {"status": 0, "msg": "欢迎%s登陆" % username, "username": username} 58 else: 59 print("用户名或密码错误!请重新输入") 60 61 62 def output_info(user_info): 63 """ 64 打印个人信息 65 :param user_info: 某个用户的个人信息 66 :return: 67 """ 68 print("USER INFO".center(50, "-")) 69 for k, v in user_info.items(): 70 print("%18s: %s" % (k, v)) 71 print("END".center(50, "-")) 72 return 73 74 75 def change_info(user_info): 76 """ 77 修改个人信息 78 :param user_info: 某个用户的个人信息 79 :return: 80 """ 81 print("选择你要修改的个人信息: ") 82 dic = {} 83 for index, item in enumerate(user_info.keys()): # 输出个人信息及选项,并将个人信息和选项捆绑 84 if item == "user_id": 85 continue 86 print("%s: %s" % (index+1, item)) 87 dic[str(index+1)] = item 88 choice = input("输入选项>>>").strip() 89 change = input("输入修改后的值>>>").strip() 90 user_info[dic[str(choice)]] = change # 修改信息 91 write_info(user_info) # 修改后的信息写入文件 92 return 93 94 95 def change_pwd(user_info): 96 """ 97 修改用户的密码 98 :param user_info: 某个用户的个人信息 99 :return: 100 """ 101 retry_times = 0 # 最多允许尝试3次 102 while True: 103 retry_times += 1 104 pwd = input("输入修改后的密码: ").strip() 105 pwd_again = input("再次输入密码: ").strip() 106 if pwd == pwd_again: 107 user_info["password"] = pwd 108 write_info(user_info) # 将修改后的数据写入文件 109 print("两次输入密码相符,修改成功") 110 return 111 else: 112 print("两次密码输入不符,请重新输入密码") 113 114 115 def controller(all_info, username): 116 """ 117 功能分发器 118 :param all_info: 所有用户信息 119 :param username: 登陆用户的用户名 120 :return: 121 """ 122 user_data = {} # 登陆用户的个人信息 123 menus = [ # 功能菜单 124 ("修改个人信息", change_info), 125 ("输出个人信息", output_info), 126 ("修改密码", change_pwd), 127 ("退出系统", 0), 128 ] 129 for item in all_info: # 根据用户名找到某个用户的用户信息 130 if item["username"] == username: 131 user_data = item 132 while True: 133 for index, item in enumerate(menus): # 输出功能菜单 134 print(index + 1, item[0]) 135 choice = input("请输入序号选择功能>>>") 136 if choice.isdigit(): 137 choice = int(choice) 138 if 1 <= choice < len(menus): 139 # 调用相应的功能函数 140 menus[choice-1][1](user_data) 141 elif choice == len(menus): 142 exit("退出系统") 143 if not choice: 144 continue 145 146 147 def entrance(): 148 """ 149 程序主入口 150 :return: 151 """ 152 details = get_info() # 获取所有数据 153 res = login(details) # 调用登陆接口 154 username = "" 155 if res["status"] == 0: # 成功登陆 156 username = res["username"] # 获取登陆的用户的用户名 157 print(res["msg"]) 158 else: # 登陆失败 159 print(res) 160 exit() 161 controller(details, username) # 调用功能分发器 162 163 164 if __name__ == \'__main__\': 165 entrance()
二、员工信息增删改查
需求:
实现:
这个题说白了就算麻烦,用笨办法也可以做出来,以下代码是我个人的实现,不同的人有不同的理解,实现也许有不同
整体思路: 在文件中存储员工信息,一个函数读取所有员工信息,并只在程序启动时读取,输入命令后根据不同命令调用不同函数来处理,如果命令是修改或增加或删除,在执行命令后将修改后的员工信息写入文件中
文件结构:
1 1,Alex Li,22,13651054608,IT,2013-04-01 2 2,wyb,20,15698704367,CTO,2016-8-9 3 3,tim,26,18945312218,HR,2015-9-3 4 4,Eric,30,18796342152,IT,2012-4-6 5 5,rachel,32,15367833458,Market,2013-9-3 6 6,jack,22,18398035682,HR,2016-7-6
测试命令:
1 find: 2 find * from staff_table 3 find name,age from staff_table 4 find name,age from staff_table where age > 22 5 find * from staff_table where dept = "IT" 6 find * from staff_table where enroll_date like "2013" 7 8 add: 9 add staff_table Alex Li,25,13651054608,IT,2016-7-8 10 add staff_table Alex Li,25,13444679873,IT,2016-7-8 11 add staff_table woz,20,13594372910,IT,2016-9-1 12 13 del: 14 del from staff_table where id=3 15 del from staff_table where id=13 16 17 update: 18 update staff_table set dept = "market" where dept = "IT" 19 update staff_table set age = 25 where name = "Alex Li"
输入命令并进行相关处理:
1 # 根据命令选择相应函数 2 def chose_command(commands): 3 command = commands[0] 4 if command == "find": 5 find(commands)以上是关于员工信息增删改查的主要内容,如果未能解决你的问题,请参考以下文章