首页 > 技术文章 > 作业员工信息表实现增删改查操作

itfat 2017-09-04 20:08 原文

有以下员工信息表

 

当然此表你在文件存储时可以这样表示

1
1,Alex Li,22,13651054608,IT,2013-04-01

现需要对这个员工信息文件,实现增删改查操作

  1. 可进行模糊查询,语法至少支持下面3种:
    1.   select name,age from staff_table where age > 22
    2.   select  * from staff_table where dept = "IT"
    3.       select  * from staff_table where enroll_date like "2013"
    4. 查到的信息,打印后,最后面还要显示查到的条数 
  2. 可创建新员工纪录,以phone做唯一键,staff_id需自增
  3. 可删除指定员工信息纪录,输入员工id,即可删除
  4. 可修改员工信息,语法如下:
    1.   UPDATE staff_table SET dept="Market" WHERE where dept = "IT"

 注意:以上需求,要充分使用函数,请尽你的最大限度来减少重复代码!

 

yuangong文件

1,Alex Li,22,13651054608,IT,2013-04-01
2,Jack Wang,30,13304320533,HR,2015-05-03
3,Rain Liu,25,13832353221,Sales,2016-04-22
4,Mack Cao,40,13561453431,HR,2009-03-01
5,lzd,112,13912985190,IT,2019-1-1

代码如下:

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:lzd
#创建字典
list=dict()

#将文件导入到字典
with open('yuangong','r',encoding='utf-8') as f:
    for i in f:
        j=i.split(',',1)
        list[j[0]]=j[1].strip().split(',')
#print(list)

#每次操作完毕都引用装饰器函数保存下文件
def baocun(func):
    def warpper(*args,**kwargs):
        func()
        with open('yuangong', 'w', encoding='utf-8') as f:
            for i in list:
                f.write(i+','+','.join(list[i])+'\n')
        print('文件保存成功!\n')
    return warpper

def chaxun():
    while True:
        # for i in list:
        #     print(i,list[i])
        print("""
        1、岁数
        2、部门
        3、入职年份
        4、退出
        """)
        tmpchaxun = input("请输入你想操作的步骤?直接输入数字即可。\n")
        if tmpchaxun=='1' :
            tmpsuishu=input("请输入年龄,下面显示大于该年龄的员工:\n")
            numm=0
            if tmpsuishu.isdigit():
                for i in list:
                    if int(list[i][1])>int(tmpsuishu):
                        print(list[i][0],list[i][1])
                        numm=numm+1
                print("大于%s岁数一共有%s个人"%(tmpsuishu, numm))
            else:
                print('年龄需要输入数字的,请重新输入\n')
        elif tmpchaxun=='2' :
            tmpbumen=input('请输入部门名称,下面显示该部门的所有员工:\n')
            numm=0
            for i in list:
                if list[i][3] == tmpbumen:
                    print(list[i])
                    numm=numm+1
            print("该%s部门一共有%s个人"%(tmpbumen,numm))
        elif tmpchaxun=='3' :
            tmpriqi=input('请输入员工入职年份,下面显示该年份的所有员工:\n')
            numm=0
            if tmpriqi.isdigit():
                for i in list:
                    if tmpriqi in list[i][4]:
                        print(list[i])
                        numm=numm+1
                print("该%s年一共有%s个人" %(tmpriqi, numm))
            else:
                print('年份需要输入数字的,请重新输入\n')
        elif tmpchaxun=='4':
            break
        else:
            print('请输入正确的数字。谢谢!\n')

@baocun
def chuangjian():
    while True:
        tmpxinxi = input('请输入员工的“姓名/年龄/手机号码/部门/入职时间” ,请用/来间隔\n')
        xinxi=tmpxinxi.split('/')
        if len(xinxi) != 5:
            print('输入的格式不正确请重新输入\n')
            continue
        elif xinxi[2].isdigit():
            for kk in list.values():
                if xinxi[2] in kk:
                    print("手机号码重复啦~请重新输入!\n")
                    break
            else:
                tmpid=str(int(sorted(list)[-1])+1)
                list[tmpid]=xinxi
                print('用户添加完毕!\n')
                break
        else:
            print('手机号码输入错误~!\n')
    #print(list)

@baocun
def shanchu():
    #print('shanchu')
    while True:
        # for i in list:
        #     print(i,list[i])
        tmpshanchu=input('请输入你想删除的人员id号,退出请直接输入q\n')
        if tmpshanchu in list:
            del list[tmpshanchu]
            print('删除人员%s成功\n'%tmpshanchu)
        elif tmpshanchu=='q':
            break
        else:
            print('找不到这个人的id啊?你是不是输入错误了?\n')
@baocun
def xiugai():
    #print('xiugai')
    while True:
        # for i in list:
        #     print(i,list[i])
        tmpxiugai=input('请输入你想修改部门的名称,比如你想修改Market的人员变成IT部门,\
那么直接输入Market/IT,退出输入q\n')
        if tmpxiugai=='q':
            break
        bumen=tmpxiugai.split('/')
        if len(bumen) !=2:
            print("输入格式不正确,请重新输入\n")
            continue
        else:
            for i in list:
                if bumen[0] == list[i][3]:
                    list[i][3]=bumen[1]
                    print('部门修改完毕~!\n')
while True:
    print("""
    1、查询
    2、创建
    3、删除
    4、修改
    5、退出
    """)
    choosedic={1:chaxun,2:chuangjian,3:shanchu,4:xiugai}
    userchoose=int(input("请输入你想操作的步骤?直接输入数字即可。\n"))
    if userchoose in choosedic:
        choosedic[userchoose]()
    elif userchoose==5:
        exit()
    else:
        print('请输入正确的数字\n')

 

推荐阅读