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了......来吧 十二,动机和情绪总不会错,只是行为没有效果而已 动机在潜意识里,总是正面的.潜意识从来不会伤害自己,只会误会的以为某行为可以满足该动机,而又不知道有其他做法的可能 ...
随机推荐
- 09_ for 练习 _ FlowerNumber
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- (64)Wangdao.com第十天_JavaScript 对象的 toString() 方法改变输出
JavaScript 对象的 toString() 方法改变输出 在平常,我们 console.log(对象); // 会打印 [Object Object] 但是我们想要更详细的输出,此时,我 ...
- ECMA Script 6_symbol(symbol.iterator) 新接口_iterator接口
iterator 接口 只要部署了 iterator 接口 symbol(symbol.iterator), 则可以进行 for...of 遍历
- Docker ElK安装部署使用教程
一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...
- ubuntu重复登录问题
第一次遇到: 昨天好不容易装好了驱动,紧接着装了CUDA,cuDNN,Anaconda,VSCode等等.然后安装pytorch的时候遇到了下载的问题,后来也算搞定了.但是在更换了显示器后重启(好像是 ...
- Magic Pen 6
Problem Description In HIT, many people have a magic pen. Lilu0355 has a magic pen, darkgt has a mag ...
- Python基础之容器1----字符串和列表
一.编码: 1.编码只是梳理 2.编码涉及的函数: 3.实例: 字符串内存图 二.字符串 1.定义:由一系列字符组成的不可变序列容器,存储的是字符的编码值. 不可变:指字符串一旦定义,其内存地址就已经 ...
- Selenium 3----定位一组元素+多表单切换+多窗口切换
定位一组元素 和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. find_e ...
- JS之数组的几个不 low 操作
JS之数组的几个不 low 操作 1.扁平化n维数组 1)终极篇 [1,[2,3]].flat(2) //[1,2,3] [1,[2,3,[4,5]].flat(3) //[1,2,3,4,5] [1 ...
- QQ机器人
先说下整体思路1.首先要借助一个QQ 插件,用来接收消息 发送消息2.要用个QQ 小号,这个QQ 你不能用来登,因为他相当于那个机器人3.要借助大神开发的SDK ,就是别人写的底层交互 ,我们只需要关 ...