s9.16作业,员工信息表

时间:2022-06-05 20:45:39

转载https://blog.csdn.net/qq_35883464/article/details/83151464

实现员工信息表
文件存储格式如下:
id,name,age,phone,job
1,Alex,22,13651054608,IT
2,Egon,23,13304320533,Tearcher
3,nezha,25,1333235322,IT

现在需要对这个员工信息文件进行增删改查。

不允许一次性将文件中的行都读入内存。
基础必做:
a.可以进行查询,支持三种语法:
select 列名1,列名2,… where 列名条件
支持:大于小于等于,还要支持模糊查找。
示例:
select name, age where age>22
select * where job=IT
select * where phone like 133

进阶选做:
b.可创建新员工记录,id要顺序增加
c.可删除指定员工记录,直接输入员工id即可
d.修改员工信息
语法:set 列名=“新的值” where 条件
#先用where查找对应人的信息,再使用set来修改列名对应的值为“新的值”

注意:要想操作员工信息表,必须先登录,登陆认证需要用装饰器完成
其他需求尽量用函数实现
---------------------
作者:陈宸-研究僧
来源:CSDN
原文:https://blog.csdn.net/qq_35883464/article/details/83151464
版权声明:本文为博主原创文章,转载请附上博文链接!

# 读取文件——
def get_line(filename):
with open(filename,'r',encoding='utf-8') as f:
for line in f:
line = line.strip()
line_lst = line.split(',')
yield line_lst # 员工信息表 dic = {'name':1,'id':0,'age':2,'phone':3,'job':4} def condition_filter(condition):
'''条件_筛选'''
condition = condition.strip()
if '>' in condition:
col,val = condition.split('>')
val = val.strip()
col = col.strip()
g = get_line('userinfo')
for line_lst in g:
if int(line_lst[dic[col]]) > int(val):
yield line_lst if '<' in condition:
col,val = condition.split('<')
val = val.strip()
col = col.strip()
g = get_line('userinfo')
for line_lst in g:
if int(line_lst[dic[col]]) < int(val):
yield line_lst if '=' in condition:
col,val = condition.split('=')
val = val.strip()
col = col.strip()
g = get_line('userinfo')
for line_lst in g:
if int(line_lst[dic[col]]) == int(val):
yield line_lst else:
print('没有符合条件的员工') def views(view_lst,staff_g): # view_list = ['name','age']
'''展示符合条件的员工信息'''
if '*' in view_lst:
view_lst = dic.keys()
for staff_info in staff_g: # staff_info已经拿到了正确的员工信息,是列表[1,Alex,22,13651054608,IT]
for i in view_lst:
print(staff_info[dic[i]],end=' ')
print(' ') #接受用户信息——
ret = input('输入要搜索的员工信息:')
# ret = 'select age,name where age > 22'
view,condition = ret.split('where')
view = view.replace('select','').strip()
view_lst = view.split(',')
# print(view_lst,condition)
g = condition_filter(condition)
views(view_lst,g)
---------------------
作者:陈宸-研究僧
来源:CSDN
原文:https://blog.csdn.net/qq_35883464/article/details/83151464
版权声明:本文为博主原创文章,转载请附上博文链接!