作业要求:

周末大作业:实现员工信息表
文件存储格式如下:
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. FLAG = False
  2. def wrapper(func):
  3. def inner(*args,**kwargs):
  4. global FLAG
  5. '''登录程序'''
  6. if FLAG:
  7. ret = func(*args,**kwargs)
  8. return ret
  9. else:
  10. username = input('username:')
  11. password = input('password:')
  12. if username == 'pengzhaoyang' and password == '':
  13. FLAG = True
  14. ret = func(*args,**kwargs)
  15. return ret
  16. else:
  17. print('登录失败')
  18. return inner
  19.  
  20. @wrapper
  21. def dayu():
  22. keys = vkey[0].split(',')
  23. sele = vkey[1].split(">")
  24. with open('message','r',encoding='utf-8') as f:
  25. for line in f:
  26. lis = line.strip().split(',')
  27. dic = {}
  28. s = ''
  29. for i in range(len(lis)):
  30. dic[doc[i]] = lis[i]
  31. if int(dic[sele[0]]) > int(sele[1]):
  32. if keys[0] != '*':
  33. for key in keys:
  34. s += dic[key] + ','
  35. else:
  36. s = line.strip()
  37. print(s)
  38.  
  39. @wrapper
  40. def xiaoyu():
  41. keys = vkey[0].split(',')
  42. sele = vkey[1].split("<")
  43. with open('message','r',encoding='utf-8') as f:
  44. for line in f:
  45. lis = line.strip().split(',')
  46. dic = {}
  47. s = ''
  48. for i in range(len(lis)):
  49. dic[doc[i]] = lis[i]
  50. if int(dic[sele[0]]) < int(sele[1]):
  51. if keys[0] != '*':
  52. for key in keys:
  53. s += dic[key] + ','
  54. else:
  55. s = line.strip()
  56. print(s)
  57.  
  58. @wrapper
  59. def dengyu():
  60. keys = vkey[0].split(',')
  61. sele = vkey[1].split("=")
  62. with open('message','r',encoding='utf-8') as f:
  63. for line in f:
  64. lis = line.strip().split(',')
  65. dic = {}
  66. s = ''
  67. for i in range(len(lis)):
  68. dic[doc[i]] = lis[i]
  69. if dic[sele[0]] == sele[1]:
  70. if keys[0] != '*':
  71. for key in keys:
  72. s += dic[key] + ','
  73. else:
  74. s = line.strip()
  75. print(s)
  76.  
  77. @wrapper
  78. def like():
  79. keys = vkey[0].split(',')
  80. with open('message','r',encoding='utf-8') as f:
  81. for line in f:
  82. lis = line.strip().split(',')
  83. dic = {}
  84. s = ''
  85. for i in range(len(lis)):
  86. dic[doc[i]] = lis[i]
  87. if vkey[-1] in dic[vkey[1]]:
  88. if keys[0] != '*':
  89. for key in keys:
  90. s += dic[key] + ','
  91. else:
  92. s = line.strip()
  93. print(s)
  94.  
  95. doc = ['id', 'name', 'age', 'phone', 'job']
  96.  
  97. while True:
  98. sel = input('>>>') # 输入查询命令
  99. if 'select' in sel and 'where' in sel:
  100. vkey = sel.split()[1::2]
  101. if '>' in sel:
  102. dayu()
  103. elif '<' in sel:
  104. xiaoyu()
  105. elif '=' in sel:
  106. dengyu()
  107. else:
  108. like()
  109. else:
  110. 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. WebSocket的Tomcat实现

    一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通 ...

  2. php curl 跨域情趣

    function curl_post($url='',$postdata='',$options=array()){ $ch=curl_init($url); curl_setopt($ch,CURL ...

  3. Python开发技术详解PDF

    Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...

  4. mac下启动mysql

    mac下使用mysql有点蛋疼,每次都要找命令.可能不同版本或者安装方式mysql的位置不太一样, 可以使用locate mysql.server查找一下. # start sudo /usr/loc ...

  5. 前端性能优化 —— 添加Expires头

    简要:添加Expires头能有效的利用浏览器的缓存能力来改善页面的性能,能在后续的页面中有效避免很多不必要的Http请求,WEB服务器使用Expires头来告诉Web客户端它可以使用一个组件的当前副本 ...

  6. python学习:缩进

    缩进 一要求: 官方建议打四个空格.tab键不建议使用,放到其他操作系统容易出现混乱.(打四个空格太费劲) 二实现: 简便方法:每按一下tab键自动换成四个空格.notepad++ 设置里首选项-制表 ...

  7. 编写程序,将来自文件中的行保存在一个vector<string>,然后使用一个istringstream 从vector中读取数据,每次读一个单词

    #include<fstream> #include <vector> #include<string> #include<iostream> #inc ...

  8. php的Memcached模块扩展

    Memcached模块介绍       Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态. ...

  9. PHP使用 strpos() 注意事项

    返回字符出现的第一个位置, 如果字符在被搜索字符串的开头, 则会返回 ‘0’ 因此, 在使用此函数判断 字符串是否包含 某一个字符时  使用: if(strpos('string','str') != ...

  10. java基础 第八章课后习题

    1.什么是二重循环?在内层循环中使用continue和break语句,程序如何跳转? 答:二重循环就是一个循环结构体内又包含另一个完整的循环结构. continue语句跳转时是跳过了内层循环中的剩余语 ...