员工信息查询

文件存储格式如下:
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来修改列名对应的值为“新的值”

注意:要想操作员工信息表,必须先登录,登陆认证需要用装饰器完成
其他需求尽量用函数实现

作业要求:
1.今天的作业一起打包交上来
2.放在作业文件夹中
需要交整理的函数相关的思维导图
整理的函数知识点的博客链接
3.大作业放在文件夹中
  文件夹中需要包括:
  代码
  流程图(请上交一张png图片。如果没有合适的画图软件,可以用processon画)
  readme文件(请上交一个txt文件,对作业进行一些简单说明,包括作业的整体思路,如何运行,实现了哪些功能,遇到了哪些问题等。)

clumn_dic = {'id':0,'name':1,'age':2,'phone':3,'job':4}
print(clumn_dic.keys())
def get_show_lst(col_condition):
    col_info_lst = col_condition.strip().split('select')
    col_info_lst=[col_info_iterm for col_info_iterm in col_info_lst  if col_info_iterm]   #['name.age']
    if col_info_lst :
        col_info=col_info_lst[0]   #'name,age'
        #print(col_info)
        if '*' in  col_info :
            #print('123123')
            return  ['id', 'name', 'age', 'phone', 'job']
        elif  col_info:
            #print('444444444')
            ret=col_info.strip().split(',')
            return [iterm.strip() for iterm in ret]
        else :
            print(col_info)
def  get_selected_lst(con):
    if '>' in con:
        selected_lst = filterhandle('>',con)
    if '<' in con:
        selected_lst = filterhandle('<',con)
    if '=' in con:
        selected_lst = filterhandle('==',con.replace('=','=='))
    if 'like' in con:
        selected_lst = filterhandle('in',con.replace('like','in'))
    return selected_lst

def filterhandle(operate,con):
    col,val= con.split(operate)
    col=col.strip()    #age
    val=val.strip()    #22
    selected_lst = []
    with  open ('111.py','r',encoding='utf8') as  f:
        for line_lst  in  f:
            line_lst=line_lst.split(',')   #[id,'name','age','phone','job']
            judge =  'int(line_lst[clumn_dic[col]]) %s int(val)' %operate    if operate == '<' or operate == '>'\
            else  'val %s line_lst[clumn_dic[col]]' %operate
            if eval(judge):
                #print(line_lst)
                selected_lst.append(line_lst)
        return selected_lst
def show (selected_lst,show_lst):
    for iterm  in selected_lst:
        for a  in iterm :
            a=a.strip()
        for i in  show_lst :
            print(iterm[clumn_dic[i]],end=' ')


condition = input(">>>: ")   #  select  name,age  where age > 22
ret= condition.strip().split('where')
#print(ret)
con = ret[1]   #   age > 22
show_lst=get_show_lst(ret[0])
#print(show_lst)
selected_lst = get_selected_lst(con)
#selected_lst=[iterm    for iterm in selected_lst   if iterm ]
#print(selected_lst)
show (selected_lst,show_lst)

文件存储格式如下:
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来修改列名对应的值为“新的值”

注意:要想操作员工信息表,必须先登录,登陆认证需要用装饰器完成
其他需求尽量用函数实现

作业要求:
1.今天的作业一起打包交上来
2.放在作业文件夹中
需要交整理的函数相关的思维导图
整理的函数知识点的博客链接
3.大作业放在文件夹中
  文件夹中需要包括:
  代码
  流程图(请上交一张png图片。如果没有合适的画图软件,可以用processon画)
  readme文件(请上交一个txt文件,对作业进行一些简单说明,包括作业的整体思路,如何运行,实现了哪些功能,遇到了哪些问题等。)

clumn_dic = {'id':0,'name':1,'age':2,'phone':3,'job':4}
print(clumn_dic.keys())
def get_show_lst(col_condition):
    col_info_lst = col_condition.strip().split('select')
    col_info_lst=[col_info_iterm for col_info_iterm in col_info_lst  if col_info_iterm]   #['name.age']
    if col_info_lst :
        col_info=col_info_lst[0]   #'name,age'
        #print(col_info)
        if '*' in  col_info :
            #print('123123')
            return  ['id', 'name', 'age', 'phone', 'job']
        elif  col_info:
            #print('444444444')
            ret=col_info.strip().split(',')
            return [iterm.strip() for iterm in ret]
        else :
            print(col_info)
def  get_selected_lst(con):
    if '>' in con:
        selected_lst = filterhandle('>',con)
    if '<' in con:
        selected_lst = filterhandle('<',con)
    if '=' in con:
        selected_lst = filterhandle('==',con.replace('=','=='))
    if 'like' in con:
        selected_lst = filterhandle('in',con.replace('like','in'))
    return selected_lst

def filterhandle(operate,con):
    col,val= con.split(operate)
    col=col.strip()    #age
    val=val.strip()    #22
    selected_lst = []
    with  open ('111.py','r',encoding='utf8') as  f:
        for line_lst  in  f:
            line_lst=line_lst.split(',')   #[id,'name','age','phone','job']
            judge =  'int(line_lst[clumn_dic[col]]) %s int(val)' %operate    if operate == '<' or operate == '>'\
            else  'val %s line_lst[clumn_dic[col]]' %operate
            if eval(judge):
                #print(line_lst)
                selected_lst.append(line_lst)
        return selected_lst
def show (selected_lst,show_lst):
    for iterm  in selected_lst:
        for a  in iterm :
            a=a.strip()
        for i in  show_lst :
            print(iterm[clumn_dic[i]],end=' ')


condition = input(">>>: ")   #  select  name,age  where age > 22
ret= condition.strip().split('where')
#print(ret)
con = ret[1]   #   age > 22
show_lst=get_show_lst(ret[0])
#print(show_lst)
selected_lst = get_selected_lst(con)
#selected_lst=[iterm    for iterm in selected_lst   if iterm ]
#print(selected_lst)
show (selected_lst,show_lst)

猜你喜欢

转载自www.cnblogs.com/weidaijie/p/9718314.html