现要求你写⼀个简单的员⼯信息增删改查程序,需求如下:
该表在⽂件中的存储⽅式:
⽂件名:staff_table(⽂件内容如下)
每⼀句对应的内容:序号,姓名,年龄,⼿机号,部分,入职时间
1,Alex Li,22,13651054608,IT,2013-04-01
2,Jack Wang,28,13451024608,HR,2015-01-07
3,Rain Wang,21,13451054608,IT,2017-04-01
4,Mack Qiao,44,15653354208,Sales,2016-02-01
5,Rachel Chen,23,13351024606,IT,2013-03-16
6,Eric Liu,19,18531054602,Marketing,2012-12-01
7,Chao Zhang,21,13235324334,Administration,2011-08-08
8,Kevin Chen,22,13151054603,Sales,2013-04-01
9,Shit Wen,20,13351024602,IT,2017-07-03
10,Shanshan Du,26,13698424612,Operation,2017-07-02
作业需求:
对⽤户输⼊的字符串进⾏解析,从⽂件中筛选出相应符合条件的结果集,对文件实现增删改查
小编累了,直接贴码吧,good job
import os
staff_msg = '''1,Alex Li,22,13651054608,IT,2013-04-01
2,Jack Wang,28,13451024608,HR,2015-01-07
3,Rain Wang,21,13451054608,IT,2017-04-01
4,Mack Qiao,44,15653354208,Sales,2016-02-01
5,Rachel Chen,23,13351024606,IT,2013-03-16
6,Eric Liu,19,18531054602,Marketing,2012-12-01
7,Chao Zhang,21,13235324334,Administration,2011-08-08
8,Kevin Chen,22,13151054603,Sales,2013-04-01
9,Shit Wen,20,13351024602,IT,2017-07-03
10,Shanshan Du,26,13698424612,Operation,2017-07-02
'''
def init_staff_msg():
'''
初始化员工信息表
:return:
'''
with open('staff_msg.txt','w') as f:
f.writelines(staff_msg)
def print_staff_msg():
'''
打印出员工信息表
:return:
'''
print('员工信息表'.center(50,'*'))
with open('staff_msg.txt','r') as f:
for line in f:
print(line)
#TODO:查询员工信息
def inquire_msg():
'''
模糊查询员工信息
:return:
'''
msg = '''
请按照如下样例进行查询:
1. find name,age from staff_table where age > 22
2. find * from staff_table where dept = "IT"
3. find * from staff_table where enroll_date like "2013"
'''
update_staff_msg = [] # 存储满足查询条件的员工信息
while True:
print(msg)
user_input = input('请输入查询命令,按照上面格式正确输入,别弄错了哦,大兄弟:>>>:').strip().split(' ') # 按照空格分割,得到一个列表
if user_input[5] == 'age' and user_input[-2] == '>': # 按照条件1查询
with open('staff_msg.txt','r') as f:
for line in f:
staff_msg_list = line.strip().split(',') # 将字符串按照','分割成一个列表
if staff_msg_list[2] > user_input[7]:
update_staff_msg.append(staff_msg_list) # 将满足条件的员工信息加入到列表
break
elif user_input[5] == 'age' and user_input[-2] == '<': # 按照条件1查询
with open('staff_msg.txt', 'r') as f:
for line in f:
staff_msg_list = line.strip().split(',') # 将字符串按照','分割成一个列表
if staff_msg_list[2] < user_input[7]:
update_staff_msg.append(staff_msg_list) # 将满足条件的员工信息加入到列表
break
elif user_input[5] == 'age' and user_input[-2] == '=': # 按照条件1查询
with open('staff_msg.txt', 'r') as f:
for line in f:
staff_msg_list = line.strip().split(',') # 将字符串按照','分割成一个列表
if staff_msg_list[2] == user_input[7]:
update_staff_msg.append(staff_msg_list) # 将满足条件的员工信息加入到列表
break
elif user_input[5] == 'dept': # 按照条件2查询
with open('staff_msg.txt','r') as f:
for line in f:
staff_msg_list = line.strip().split(',')
if staff_msg_list[-2] == eval(user_input[7]):
update_staff_msg.append(staff_msg_list)
break
elif user_input[5] == 'enroll_date': # 按照条件3查询
with open('staff_msg.txt','r') as f:
for line in f:
staff_msg_list = line.strip().split(',')
if staff_msg_list[5].split('-')[0] == eval(user_input[7]):
update_staff_msg.append(staff_msg_list)
break
else:
print("输入错误,请重新输入。")
print("满足查询条件的员工信息如下,人数为:\033[31;1m%d\033[0m。" % len(update_staff_msg))
[print(update_staff_msg[i]) for i in range(len(update_staff_msg))]
#TODO:添加新员工信息
def add_new_staff():
'''
创建新员工记录
:return:
'''
msg = '''
请按照如下样例创建新员工记录:
add staff_table Alex Li,25,134435344,IT,2015-10-29
'''
while True:
print(msg)
user_input = input("请输入查询命令,按照上面格式正确输入,别弄错了哦,大兄弟>>>:").strip().split(',')
if user_input[0].split(' ')[0] == 'add': # 输入格式正确
user_input[0] = ' '.join(user_input[0].split(' ')[2:])
with open('staff_msg.txt','r+') as f:
staff_phone = [] # 存储员工信息的电话号码phone
for line in f:
staff_phone.append(line.strip().split(',')[3])
if user_input[2] in staff_phone:
print("这条记录已经存在。不能重复插入信息!!!")
else:
new_staff_index = str(len(staff_phone) + 1) # 得到新添加员工的索引
user_input.insert(0,new_staff_index) # 将索引值插入到最前面
user_input = ','.join(user_input) # 列表-->字符串
f.write(user_input)
f.write('\n')
print("新员工记录添加完成。")
break
else:
print("输入错误,请重新输入。")
#TODO:删除相关员工信息
def delete_staff():
'''
删除员工信息
:return:
'''
msg = '''
请按照如下样例删除员工信息:
del from staff where id=3
'''
while True:
print(msg)
user_input = input('请输入查询命令,按照上面格式正确输入,别弄错了哦,大兄弟>>>:').strip().split(' ')
if user_input[0] == 'del':
file_old = open('staff_msg.txt','r+')
file_new = open('staff_msg_new.txt','w')
for line in file_old:
line_split = line.strip().split(',')
if user_input[4].split('=')[1] != line_split[0]: # 不符合条件的员工信息保存下来,写入新的文件
file_new.write(line)
file_new.close()
file_old.close()
os.remove('staff_msg.txt') # 删除旧文件
os.rename('staff_msg_new.txt','staff_msg.txt') # 重命名新文件
print("员工信息删除成功。")
break
else:
print("输入错误,请重新输入")
#TODO:更新员工信息
def update_staff_msg():
'''
更新员工信息
:return:
'''
msg = '''
请按照如下样例更新员工信息:
UPDATE staff_table SET dept="Market" WHERE dept="IT"
UPDATE staff_table SET age=25 WHERE name="Alex Li"
'''
while True:
print(msg)
user_input_raw = input('请输入查询命令,按照上面格式正确输入,别弄错了哦,大兄弟>>>:').strip()
user_input = user_input_raw.split(' ')
if user_input[0].lower() == 'update':
count = 0 # 计数,记录的改动次数
file_old = open('staff_msg.txt','r+')
file_new = open('staff_msg_new.txt','w+')
update_msg_new = [] # 存储更新后的员工信息
update_msg_old = [] # 存储更新前的员工信息
for line in file_old:
line = line.strip().split(',') # 字符串-->列表
if user_input[5].split('=')[0] == 'dept': # 按照样例1更新员工信息
if line[4] == eval(user_input[5].split('=')[1]):
update_msg_old.append(','.join(line))
line[4] = eval(user_input[3].split('=')[1])
line = ','.join(line)
count+=1
update_msg_new.append(line)
else:
line = ','.join(line)
elif user_input[5].split('=')[0] == 'name': # 按照样例2更新员工信息
if line[1] == eval(user_input_raw.split('=')[2]):
update_msg_old.append(','.join(line))
line[2] = user_input[3].split('=')[1]
line = ','.join(line)
count+=1
update_msg_new.append(line)
else:
line = ','.join(line)
else:
pass
file_new.write(line)
file_new.write('\n')
print("您总共修改了\033[31;1m%d\033[0m条记录" % count)
print("修改前的\033[31;1m%d\033[0m个员工信息" % count)
[print(update_msg_old[i]) for i in range(len(update_msg_old))]
print("修改后的\033[31;1m%d\033[0m个员工信息" % count)
[print(update_msg_new[i]) for i in range(len(update_msg_new))]
file_old.close()
file_new.close()
os.remove('staff_msg.txt')
os.rename('staff_msg_new.txt','staff_msg.txt')
break
else:
print("输入错误,请重新输入。")
def main():
'''
主函数
:return:
'''
msg = '''
1、查询员工信息
2、添加新员工信息
3、删除员工信息
4、更改员工信息
5、打印所有员工信息
6、退出程序
'''
init_staff_msg()
while True:
print(msg)
user_choose = input("请输入你的选择>>>")
if user_choose == '1':
inquire_msg()
elif user_choose == '2':
add_new_staff()
elif user_choose == '3':
delete_staff()
elif user_choose == '4':
update_staff_msg()
elif user_choose == '5':
print_staff_msg()
elif user_choose == '6':
exit("程序结束!!!")
else:
print("您的选择有误,请重新输入")
if __name__ == '__main__':
main()