员工信息增删改查

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)

以上是关于员工信息增删改查的主要内容,如果未能解决你的问题,请参考以下文章

JAVA增删改查

python练习员工信息增删改查程序

员工信息增删改查

python练习——moudule02——员工信息增删改查

项目:员工信息增删改查程序

作业员工信息表实现增删改查操作