作业要求:

周末大作业:实现员工信息表
文件存储格式如下:
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('语法错误!!!')

day12 python作业:员工信息表的更多相关文章

  1. python作业员工信息表程序(第四周)

    作业需求: 1. 员工信息表程序,实现增删改查操作: 2. 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 ...

  2. python练习题-员工信息表

    周末大作业:实现员工信息表文件存储格式如下:id,name,age,phone,job1,Alex,22,13651054608,IT2,Egon,23,13304320533,Tearcher3,n ...

  3. python写员工信息表作业笔记

    需求 流程图

  4. python-查询员工信息表

    python查询员工信息表 基本要求: 用户可以模糊查询员工信息 显示匹配了多少条,匹配字符需要高亮显示 代码: #!/usr/env python #coding:utf-8 import time ...

  5. python基础之员工信息表作业

    周末大礼包 文件存储格式如下: id, name, age, phone, job 1, Alex, 22, 13651054608, IT 2, Egon, 23, 13304320533, Tea ...

  6. s9.16作业,员工信息表

    转载https://blog.csdn.net/qq_35883464/article/details/83151464 实现员工信息表文件存储格式如下:id,name,age,phone,job1, ...

  7. python's sixteenth day for me 员工信息表

    import os user_dic = { 'username':None, 'password':None, 'login':True } flag = False name_list = ['i ...

  8. python-打印简单公司员工信息表

    python-打印简单公司员工信息表 要求,输入name不为空,输入次数最多3次,3次后跳出程序: 知识点: raw_input str转int whil if elif else continue ...

  9. python3 员工信息表

    这是最后一条NLP了......来吧 十二,动机和情绪总不会错,只是行为没有效果而已 动机在潜意识里,总是正面的.潜意识从来不会伤害自己,只会误会的以为某行为可以满足该动机,而又不知道有其他做法的可能 ...

随机推荐

  1. 对Spring运用的一些思考

    最近使用spring总是遇到启动时启动不起来,或者启动起来一会就服务就关闭掉. 停下来想想不是spring不好复杂,而是我对它掌握不够,再有就是使用要尽量规范 使用配置文件,dao.manager.s ...

  2. windows应用程序框架及实例

    应用程序框架:同一类型应用程序的结构大致相同,并有很多相同的源代码,因此可以通过一个应用程序框架AFX(Application FrameWorks)编写同一类型应用程序的通用源代码. 主要向导: D ...

  3. Ubuntu安装VLC播放器

    Ubuntu安装VLC官方介绍:http://www.videolan.org/vlc/download-ubuntu.html sudo apt-get update sudo apt-get in ...

  4. 11 安装已集成HA的树莓派镜像Hassbian

    2017-09-04 10:40:47 下载Hassbian镜像文件,浏览https://github.com/home-assistant/pi-gen/releases/tag/v1.23,查看最 ...

  5. PHP文件上传大小限制问题

    一.Thinkphp方面限制  $upload->maxSize   =     31457280 ; //设置附件上传大小 二.七牛方面限制: 'UPLOAD_FILE_QINIU' => ...

  6. SVN服务器搭建及使用

    .SVN(全称Subversion)是优秀的版本控制工具,与微软的TFS相比,有如下优势:开源(免费),支持多种操作系统. 本次我搭建的服务器采用:VisualSVN-Server-3.6.1-x64 ...

  7. cadence单一原理图库的设计

  8. 第一次c++作业小结

    之前从未接触过c++,上完第一节课后也还是懵懵懂懂.当知道有作业要完成时,也是无从下手.在仔细阅读教材以及同学的帮助下,我了解了如何编写最简单的程序,也算是踏入c++的大门.希望自己的第一次作业能够符 ...

  9. Kruskal || BZOJ 1601: [Usaco2008 Oct]灌水 || Luogu P1550 [USACO08OCT]打井Watering Hole

    题面:P1550 [USACO08OCT]打井Watering Hole 题解:无 代码: #include<cstdio> #include<cstring> #includ ...

  10. Confluo: Distributed Monitoring and Diagnosis Stack for High-speed Networks

    https://rise.cs.berkeley.edu/blog/confluo-millisecond-level-queries-on-large-scale-streaming-data/ht ...