转载https://blog.csdn.net/qq_35883464/article/details/83151464

实现员工信息表
文件存储格式如下:
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来修改列名对应的值为“新的值”

注意:要想操作员工信息表,必须先登录,登陆认证需要用装饰器完成
其他需求尽量用函数实现
---------------------
作者:陈宸-研究僧
来源:CSDN
原文:https://blog.csdn.net/qq_35883464/article/details/83151464
版权声明:本文为博主原创文章,转载请附上博文链接!

  1. # 读取文件——
  2. def get_line(filename):
  3. with open(filename,'r',encoding='utf-8') as f:
  4. for line in f:
  5. line = line.strip()
  6. line_lst = line.split(',')
  7. yield line_lst
  8.  
  9. # 员工信息表
  10.  
  11. dic = {'name':1,'id':0,'age':2,'phone':3,'job':4}
  12.  
  13. def condition_filter(condition):
  14. '''条件_筛选'''
  15. condition = condition.strip()
  16. if '>' in condition:
  17. col,val = condition.split('>')
  18. val = val.strip()
  19. col = col.strip()
  20. g = get_line('userinfo')
  21. for line_lst in g:
  22. if int(line_lst[dic[col]]) > int(val):
  23. yield line_lst
  24.  
  25. if '<' in condition:
  26. col,val = condition.split('<')
  27. val = val.strip()
  28. col = col.strip()
  29. g = get_line('userinfo')
  30. for line_lst in g:
  31. if int(line_lst[dic[col]]) < int(val):
  32. yield line_lst
  33.  
  34. if '=' in condition:
  35. col,val = condition.split('=')
  36. val = val.strip()
  37. col = col.strip()
  38. g = get_line('userinfo')
  39. for line_lst in g:
  40. if int(line_lst[dic[col]]) == int(val):
  41. yield line_lst
  42.  
  43. else:
  44. print('没有符合条件的员工')
  45.  
  46. def views(view_lst,staff_g): # view_list = ['name','age']
  47. '''展示符合条件的员工信息'''
  48. if '*' in view_lst:
  49. view_lst = dic.keys()
  50. for staff_info in staff_g: # staff_info已经拿到了正确的员工信息,是列表[1,Alex,22,13651054608,IT]
  51. for i in view_lst:
  52. print(staff_info[dic[i]],end=' ')
  53. print(' ')
  54.  
  55. #接受用户信息——
  56. ret = input('输入要搜索的员工信息:')
  57. # ret = 'select age,name where age > 22'
  58. view,condition = ret.split('where')
  59. view = view.replace('select','').strip()
  60. view_lst = view.split(',')
  61. # print(view_lst,condition)
  62. g = condition_filter(condition)
  63. views(view_lst,g)
  64. ---------------------
  65. 作者:陈宸-研究僧
  66. 来源:CSDN
  67. 原文:https://blog.csdn.net/qq_35883464/article/details/83151464
  68. 版权声明:本文为博主原创文章,转载请附上博文链接!

s9.16作业,员工信息表的更多相关文章

  1. day12 python作业:员工信息表

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

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

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

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

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

  4. 无废话ExtJs 入门教程十五[员工信息表Demo:AddUser]

    无废话ExtJs 入门教程十五[员工信息表Demo:AddUser] extjs技术交流,欢迎加群(201926085) 前面我们共介绍过10种表单组件,这些组件是我们在开发过程中最经常用到的,所以一 ...

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

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

  6. python-查询员工信息表

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

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

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

  8. python3 员工信息表

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

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

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

随机推荐

  1. bs4抓取糗事百科

    抓取糗事百科内容及评论,不包含图片信息.user-agent填入浏览器的即可.user-agent对应的value,360极速浏览器的话,可以在地址栏输入about:version,回车,用户代理后面 ...

  2. Go数据类型和变量

    一:Go数据类型 1.1 Go语言按照分类有以下几种数据类型 布尔型 布尔型的是一个常量true或者false 数字类型 整型int和浮点型 float32, float64 字符串类型 字符串就是一 ...

  3. Map的嵌套

    package cn.lijun.demo2; import java.util.HashMap; import java.util.Iterator; import java.util.Set; p ...

  4. css3: 基本知识记录

    1.transition过渡: 元素从一种样式到另一种样式添加效果: div { transition: width 2s, height 2s, transform 2s; -moz-transit ...

  5. 剑指Offer_编程题_3

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(i ...

  6. Accord.NET Framework 介绍

    阅读目录 1.基本功能与介绍 Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET  ...

  7. redis注册成window服务 标签: redis

    注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 开启服务 ...

  8. VirtualBox安装Ubuntu14.04

    创建虚拟机 点击 新建(N) 设置虚拟机的名称,类型与版本,如下图所示: 分配虚拟机的内存大小,受PC实际内存影响,暂时设置为2G,如下图所示: 分配虚拟机的硬盘大小,默认即可,如下图所示: 分配虚拟 ...

  9. SSM框架中spring的XML文件配置

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...

  10. 059、安装配置flannel(2019-03-28 周四)

    参考https://www.cnblogs.com/CloudMan6/p/7424858.html   build flannel   flannel 没哟现成的执行文件可用,必须自己build,最 ...