作业要求:

周末大作业:实现员工信息表
文件存储格式如下:
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. Python学习——python的常用模块

    模块:用一堆代码实现了某个功能的代码集合,模块是不带 .py 扩展的另外一个 Python 文件的文件名. 一.time & datetime模块 import time import dat ...

  2. CodeForces - 1025C 字符串处理,画一个圆。。。

    题目链接: https://vjudge.net/problem/1810469/origin 题目大意: 给你一个字符串,中间切一刀,左右两边均反转,然后右边的串拼接到左边上. 思路: 比如  aa ...

  3. Linux下PHP扩展pdo_mysql

    1.进入PHP源码包ext/pdo目录 cd ext/pdo 2.执行/usr/local/php/bin/phpize[假设PHP的安装目录为/usr/local/php] /usr/local/p ...

  4. Face The Right Way [POJ3276] [开关问题]

    题意: 有n头奶牛排成一排,有的朝前(F)有的朝后(B),现在你可以使k头奶牛一次性翻转朝向(n>=k>=1),问你最少的翻转次数和此时对应的k值. Input Line 1: A sin ...

  5. __x__(14)0906第三天__<iframe> 内联框架 引入有一个外部html页面

    在现实开发中,不推荐使用内联框架,因为<iframe></iframe>中的内容不会被搜索引擎检索. 在特殊情况中,如内网项目,不用放在互联网上时,可以使用<iframe ...

  6. jQuery (01) 浏览器的事件模型

    浏览器的事件模型 由网景公司引入的 DOM0 级事件模型 把事件处理程序绑定到 DOM 元素的属性上: ele.onclick(); ele.onDOMContentLoad(); ele.onloa ...

  7. 社团的CTF逆向题WriteUp

    最近社团弄了CTF比赛,然后我就帮忙写了逆向的题目,这里写一下WriteUp,题目和源码在附件中给出 一个简单的逆向:one_jmp_to_flag.exe 这题算是签到题,直接OD智能搜索就完事了, ...

  8. 浅谈vue性能优化

    基础优化 所谓的基础优化是任何 web 项目都要做的,并且是问题的根源.HTML,CSS,JS 是第一步要优化的点 分别对应到 .vue 文件内的,<template>,<style ...

  9. Tinker 热修复

    集成方式: 第一步:在project  build.gradle 文件中添加: dependencies { // Tinker classpath("com.tinkerpatch.sdk ...

  10. Python Learning - Two

    1.  Built-in Modules and Functions 1) Function def greeting(name): print("Hello,", name) g ...