day12 python作业:员工信息表
2024-08-27 06:59:04
作业要求:
周末大作业:实现员工信息表
文件存储格式如下:
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来修改列名对应的值为“新的值”
注意:要想操作员工信息表,必须先登录,登陆认证需要用装饰器完成.其他需求尽量用函数实现
作业代码:
自己鼓捣大半天,把查询功能实现了,代码没有进行优化,回头再优化代码完成进阶要求.
FLAG = False
def wrapper(func):
def inner(*args,**kwargs):
global FLAG
'''登录程序'''
if FLAG:
ret = func(*args,**kwargs)
return ret
else:
username = input('username:')
password = input('password:')
if username == 'pengzhaoyang' and password == '':
FLAG = True
ret = func(*args,**kwargs)
return ret
else:
print('登录失败')
return inner @wrapper
def dayu():
keys = vkey[0].split(',')
sele = vkey[1].split(">")
with open('message','r',encoding='utf-8') as f:
for line in f:
lis = line.strip().split(',')
dic = {}
s = ''
for i in range(len(lis)):
dic[doc[i]] = lis[i]
if int(dic[sele[0]]) > int(sele[1]):
if keys[0] != '*':
for key in keys:
s += dic[key] + ','
else:
s = line.strip()
print(s) @wrapper
def xiaoyu():
keys = vkey[0].split(',')
sele = vkey[1].split("<")
with open('message','r',encoding='utf-8') as f:
for line in f:
lis = line.strip().split(',')
dic = {}
s = ''
for i in range(len(lis)):
dic[doc[i]] = lis[i]
if int(dic[sele[0]]) < int(sele[1]):
if keys[0] != '*':
for key in keys:
s += dic[key] + ','
else:
s = line.strip()
print(s) @wrapper
def dengyu():
keys = vkey[0].split(',')
sele = vkey[1].split("=")
with open('message','r',encoding='utf-8') as f:
for line in f:
lis = line.strip().split(',')
dic = {}
s = ''
for i in range(len(lis)):
dic[doc[i]] = lis[i]
if dic[sele[0]] == sele[1]:
if keys[0] != '*':
for key in keys:
s += dic[key] + ','
else:
s = line.strip()
print(s) @wrapper
def like():
keys = vkey[0].split(',')
with open('message','r',encoding='utf-8') as f:
for line in f:
lis = line.strip().split(',')
dic = {}
s = ''
for i in range(len(lis)):
dic[doc[i]] = lis[i]
if vkey[-1] in dic[vkey[1]]:
if keys[0] != '*':
for key in keys:
s += dic[key] + ','
else:
s = line.strip()
print(s) doc = ['id', 'name', 'age', 'phone', 'job'] while True:
sel = input('>>>') # 输入查询命令
if 'select' in sel and 'where' in sel:
vkey = sel.split()[1::2]
if '>' in sel:
dayu()
elif '<' in sel:
xiaoyu()
elif '=' in sel:
dengyu()
else:
like()
else:
print('语法错误!!!')
最新文章
- [转]C/C++ 实现文件透明加解密
- [转]反向ajax项目
- Python与Hack之Unix口令
- Linux的运行级别和chkconfig用法
- 利用HibernateTools从数据库表生成带注解的POJO
- 简单模拟struts2核心控制器利用反射原理实现参数传递和物理视图跳转
- (贪心5.1.1)POJ 1230 Pass-Muraille
- 「Poetize6」Candle
- JavaScript创建类的方式
- 【SSRS】入门篇(四) -- 向报表添加数据
- 2017年秋软工-领跑衫获奖感言&;我最感谢的人
- ValidateCode源码
- 异步io模块
- 详解webpack中的hash、chunkhash、contenthash区别
- android第三方---->;android智能机器人的使用
- HIIT训练第一波,值得收藏的训练计划
- 【codeforces.com/gym/100240 J】
- Android File类 根据官方文档理解(转)
- Sublime Text 3如何编译运行c++程序
- 17.分支的合并&;遇到冲突时的分支合并
热门文章
- tap穿透之zepto的bug
- IDEA激活方式(亲测有效)加汉化方式
- Codechef August Challenge 2018 : Coordinate Compression
- (79)Wangdao.com第十五天_JavaScript 对象的继承_prototype原型对象_封装_函数式编程
- Retrieve pictures from Excel file using OLEDB
- Mybatis获取传参
- 校园服务nabcd需求分析
- linux-rhel7配置网卡bond双网卡主备模式
- mysql-8.0.13在windows上的部署
- 爬虫下载校花网美女信息-lxml