day12 python作业:员工信息表
作业要求:
周末大作业:实现员工信息表
文件存储格式如下:
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作业:员工信息表的更多相关文章
- python作业员工信息表程序(第四周)
作业需求: 1. 员工信息表程序,实现增删改查操作: 2. 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 ...
- python练习题-员工信息表
周末大作业:实现员工信息表文件存储格式如下:id,name,age,phone,job1,Alex,22,13651054608,IT2,Egon,23,13304320533,Tearcher3,n ...
- python写员工信息表作业笔记
需求 流程图
- python-查询员工信息表
python查询员工信息表 基本要求: 用户可以模糊查询员工信息 显示匹配了多少条,匹配字符需要高亮显示 代码: #!/usr/env python #coding:utf-8 import time ...
- python基础之员工信息表作业
周末大礼包 文件存储格式如下: id, name, age, phone, job 1, Alex, 22, 13651054608, IT 2, Egon, 23, 13304320533, Tea ...
- s9.16作业,员工信息表
转载https://blog.csdn.net/qq_35883464/article/details/83151464 实现员工信息表文件存储格式如下:id,name,age,phone,job1, ...
- python's sixteenth day for me 员工信息表
import os user_dic = { 'username':None, 'password':None, 'login':True } flag = False name_list = ['i ...
- python-打印简单公司员工信息表
python-打印简单公司员工信息表 要求,输入name不为空,输入次数最多3次,3次后跳出程序: 知识点: raw_input str转int whil if elif else continue ...
- python3 员工信息表
这是最后一条NLP了......来吧 十二,动机和情绪总不会错,只是行为没有效果而已 动机在潜意识里,总是正面的.潜意识从来不会伤害自己,只会误会的以为某行为可以满足该动机,而又不知道有其他做法的可能 ...
随机推荐
- WebSocket的Tomcat实现
一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通 ...
- php curl 跨域情趣
function curl_post($url='',$postdata='',$options=array()){ $ch=curl_init($url); curl_setopt($ch,CURL ...
- Python开发技术详解PDF
Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...
- mac下启动mysql
mac下使用mysql有点蛋疼,每次都要找命令.可能不同版本或者安装方式mysql的位置不太一样, 可以使用locate mysql.server查找一下. # start sudo /usr/loc ...
- 前端性能优化 —— 添加Expires头
简要:添加Expires头能有效的利用浏览器的缓存能力来改善页面的性能,能在后续的页面中有效避免很多不必要的Http请求,WEB服务器使用Expires头来告诉Web客户端它可以使用一个组件的当前副本 ...
- python学习:缩进
缩进 一要求: 官方建议打四个空格.tab键不建议使用,放到其他操作系统容易出现混乱.(打四个空格太费劲) 二实现: 简便方法:每按一下tab键自动换成四个空格.notepad++ 设置里首选项-制表 ...
- 编写程序,将来自文件中的行保存在一个vector<string>,然后使用一个istringstream 从vector中读取数据,每次读一个单词
#include<fstream> #include <vector> #include<string> #include<iostream> #inc ...
- php的Memcached模块扩展
Memcached模块介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态. ...
- PHP使用 strpos() 注意事项
返回字符出现的第一个位置, 如果字符在被搜索字符串的开头, 则会返回 ‘0’ 因此, 在使用此函数判断 字符串是否包含 某一个字符时 使用: if(strpos('string','str') != ...
- java基础 第八章课后习题
1.什么是二重循环?在内层循环中使用continue和break语句,程序如何跳转? 答:二重循环就是一个循环结构体内又包含另一个完整的循环结构. continue语句跳转时是跳过了内层循环中的剩余语 ...