作业员工信息表实现增删改查操作
实现 操作 信息 作业 增删 员工 改查
2023-09-27 14:19:40 时间
有以下员工信息表
当然此表你在文件存储时可以这样表示
1
|
1 ,Alex Li, 22 , 13651054608 ,IT, 2013 - 04 - 01 |
现需要对这个员工信息文件,实现增删改查操作
- 可进行模糊查询,语法至少支持下面3种:
- select name,age from staff_table where age > 22
- select * from staff_table where dept = "IT"
- select * from staff_table where enroll_date like "2013"
- 查到的信息,打印后,最后面还要显示查到的条数
- 可创建新员工纪录,以phone做唯一键,staff_id需自增
- 可删除指定员工信息纪录,输入员工id,即可删除
- 可修改员工信息,语法如下:
- 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')
相关文章
- 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转
- Flutter通过BasicMessageChannel实现Flutter 与Android iOS 的双向通信
- 【Sql Server】实现数据库定时自动备份详细一步步操作(图文)
- Allegro如何实现同一个屏幕界面分屏显示操作指导
- Allegro如何实现交换functions操作详细指导
- 基于C++实现⾃然连接操作算法【100010157】
- 基于Java+MySQL 实现(图形界面)快递公司管理系统【100010133】
- ZOJ1001 A + B Problem(C++实现,通过字符串操作实现大整数加减运算)
- Android ActionBar详解(三):ActionBar实现切换Tabs标签
- 纯CSS如何实现状态圆点
- Spring Security 实战干货:实现自定义退出登录
- 回调函数实现类似QT中信号机制(最简单)
- 广义表操作 (ava实现)——广义表深度、广义表长度、打印广义表信息
- Unity 工具类 之 简单的背景乐和音频音效管理类实现
- Three 之 three.js (webgl)PostProcessing/shader/EffectComposer 屏幕渲染 之 屏幕pixel像素化效果的简单实现
- STL之vector容器的实现框架
- 在kettle中实现数据验证和检查
- java原子操作的实现原理--转载