程序可实现以下功能:

1、查询,输入select name,age from staff_table where age > 22,查询到符合要求的信息;

输入select * from staff_table where dept = "IT",查询到符合要求的信息;

输入select * from staff_table where enroll_date like "2013",查询到符合要求的信息。

2、创建,输入insert Mickle,22,13651054608,IT,2013-04-01,加信息加入的员工信息表中。

3、删除,输入delect id,将指定的id号员工信息删除。

4、修改,输入update staff_table set dept = "Market" where dept = "IT",将要修改的内容修改。

程序还提供help功能,为用户输入正确的sql语句格式提供帮助。

import os #导入os模块,方便文件的删除和改名

def info_display(): #打印程序启动信息

print("-".center(60, "-"))

print("欢迎来到员工管理系统".center(50," "))

print("【输入help显示帮助信息】".center(50, " "))

print("-".center(60, "-"))

sql = input("请输入\033[1;31msql\033[0m信息>>>>").strip("")

if sql == "q" or sql == "quit": #用户如果输入q,程序退出

exit(" Bye Bye ".center(60, "-"))

elif sql == "help": #用户输入help,打印help信息,help信息为打印的格式

print("\033[1;35m 查询 输入格式:\n\tselect name,age from staff_table where age > 22\033[0m")

print("\033[1;35m 创建 输入格式:\n\tinsert Mickle,22,13651054608,IT,2013-04-01\033[0m")

print("\033[1;35m 修改 输入格式:\n\tupdate staff_table set dept = \"Market\" where dept = \"IT\"\033[0m")

print("\033[1;35m 删除 输入格式:\n\tdelete 5\033[0m")

else:

sql_parse(sql) #用户输入正确的sql语法,调用sql解析函数

def sql_parse(sql): #对用户输入的sql语句进行解析,根据sql语句调用不同的函数

func_choice = {"insert": insert, "delete": delete, "update": update, "select": select}

sql_list = sql.replace(",", " ").split() # 将sql解析成列表形式

if sql_list[0] == "select": #如果用户输入的sql语句是查询

sql_dict = {"from": [], "where": [], "limit": []}

tag = False

for item in sql_list: #根据sql解析出sql_dict

if tag and item in sql_dict:

tag = False

if not tag and item in sql_dict:

tag = True

key = item

continue

if tag:

sql_dict[key].append(item.strip('\"'))

func_choice.get(sql_list[0])(sql_dict) #解析出sql_dict后,传入查询函数,并调用查询函数

elif sql_list[0] == "insert": #如果用户输入的sql语句是创建

sql_dict = {}

sql_list.remove("insert")

sql_dict.setdefault("values",sql_list) #解析出sql_dict,传入创建函数

insert(sql_dict) #调用创建函数

elif sql_list[0] == "delete": #解析出sql_dict后,传入删除函数,并调用查询函数

delete_id = int(sql_list[1]) #获取用户要删除的id

delete(delete_id) #调用删除函数

elif sql_list[0] == "update": #如果用户输入的sql语句是修改

sql_dict = {"set":[],"where":[],"update":[]}

tag = False

for items in sql_list: #根据用户的sql,解析出sql_dict字典

if tag and items in sql_dict:

tag = False

if not tag and items in sql_dict:

tag = True

key = items

continue

if tag:

sql_dict[key].append(items.strip('\"'))

update(sql_dict) #传入修改函数,并调用修改函数

return sql_list

def insert(sql_dict): #创建信息函数

with open("staff_table","ab+") as f:

offs = -100

while True:

f.seek(offs,2)

lines = f.readlines()

if len(lines) > 1:

last = lines[-1]

break

offs *= 2

last = last.decode(encoding="utf-8")

last_id = int(last.split(",")[0])

new_id = last_id + 1

record = sql_dict.get("values")

record.insert(0,str(new_id))

record_str = ",".join(record)+"\n"

f.write(bytes(record_str,encoding="utf-8"))

f.flush()

print("\033[1;31m创建成功 \033[0m")

def delete(delete_id): #删除函数

with open("staff_table","r",encoding="utf-8") as f1,open("staff_table_bak","w",encoding='utf-8') as f2:

del_count = 1

for line in f1:

if del_count != delete_id:

f2.write(line)

elif del_count == delete_id:

pass

del_count += 1

print("\033[1;31m删除成功 \033[0m")

os.remove("staff_table") #删除原员工信息文件

os.rename("staff_table_bak","staff_table") #修改新员工信息文件名

def update(sql_dict): #修改函数

set_list = sql_dict.get("set") #获取要修改的内容

set_key = set_list[0]

where_list = sql_dict.get("where") #获取要修改的文件内容

with open("staff_table", "r", encoding="utf-8") as f1, open("staff_table_bak", "w", encoding='utf-8') as f2:

for line in f1:

title = "id,name,age,phone,dept,enroll_date"

dic = dict(zip(title.split(","),line.split(","))) #将文件每一行打包成字典的形式

if logic_action(dic,where_list): # 逻辑判断,调用逻辑判断函数

line = line.replace(dic[set_key],set_list[2]) #修改需要修改的那一行内容

f2.write(line) #将原文件写进新文件

print("\033[1;31m修改成功 \033[0m")

os.remove("staff_table")

os.rename("staff_table_bak", "staff_table")

def select(sql_dict): #查询函数

title = "id,name,age,phone,dept,enroll_date"

f = open("staff_table", "r", encoding="utf-8") # 1、找到数据库

res = []

for line in f:

dict1 = dict(zip(title.split(","), line.strip().split(",")))

where_list = sql_dict.get("where")

if len(where_list) != 0:

if logic_action(dict1, where_list): # 逻辑判断,调用逻辑判断函数

res.append(line.strip())

else:

res = f.readlines()

print("查询到的信息有 \033[1;35m %s \033[0m 条"%len(res))

for i in res:

print("分别是\033[1;35m [%s]\033[0m "%i)

return res

def logic_action(dict1, where_list): #逻辑判断函数,如果文件的信息符合要求,就返回True

tag = False

if where_list[1] == "

if dict1[where_list[0]] < where_list[2]:

tag = True

elif where_list[1] == "=":

if dict1[where_list[0]] == where_list[2]:

tag = True

else:pass

elif where_list[1] == ">":

if dict1[where_list[0]] > where_list[2]:

tag = True

else:pass

elif where_list[1] == "like":

if where_list[2] in dict1[where_list[0]]:

tag = True

return tag

while True:

try:

info_display()

except IndexError as e:

print("【%s】,请输入正确的格式"%e) #如果用户输入的格式不正确,就打印提示

python创建员工_python-作业:员工信息表相关推荐

  1. python创建员工_python作业员工信息表程序(第四周)

    #!/usr/bin/env python#-*- coding:utf-8 -*-#Author: Colin Yao """python 员工信息表操作"& ...

  2. JavaWeb第九次:程序设计题:在MySQL,创建一个学生信息数据库Student,创建一张学生注册信息表message,包含name (姓名)、age (年龄)、sex (性别)、educ

    程序设计题: 在MySQL,创建一个学生信息数据库Student,创建一张学生注册信息表message,包含name (姓名).age (年龄).sex (性别).education(学历).phon ...

  3. python创建变量_python创建变量

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 创建: 当python变量'赋值'时,根据值类型创建变量,如:a=1引用: 当参 ...

  4. python创建列表_python创建与遍历List二维列表的方法

    python 创建List二维列表 lists = [[] for i in range(3)] # 创建的是多行三列的二维列表 for i in range(3): lists[0].append( ...

  5. python 计算时间重叠_Python基于时间信息(即时、间隔)计算项目之间的相似性...

    我想根据时间信息计算项目(0,1,2,3-.)之间的相似性.时间信息可以是时间即时(startdate).时间间隔(startdate.enddate)或null(NaT):请参阅下面的datafra ...

  6. python 创建子类_python创建子类的方法分析

    本文实例讲述了python创建子类的方法.分享给大家供大家参考,具体如下: 如果你的类没有从任何祖先类派生,可以使用object作为父类的名字.经典类的声明唯一不同之处在于其没有从祖先类派生---此时 ...

  7. python创建追加_Python文件的创建与追加

    (转载)https://www.xshell.net/python/python_open.html Posted by 破冰 on 2013-9-17 17:29 Tuesday 一.用Python ...

  8. python创建矩阵_Python创建对称矩阵的方法示例【基于numpy模块】

    本文实例讲述了Python创建对称矩阵的方法.分享给大家供大家参考,具体如下: 对称(实对称)矩阵也即: step 1:创建一个方阵 >>> import numpy as np & ...

  9. 如何用python创建文件_python在指定目录创建文件

    Python无法创建文件夹,如何制定创建目录?温柔也好,凶狠也罢.想有一个陌生的自己,给自己一些惊喜. /主目录/桌面/gnssIR_python-master:/usr/local/bin:/usr ...

  10. python创建单例模式_Python单例模式的四种创建方式实例解析

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

最新文章

  1. 属于android动画的是什么,下列选项中,属于Android系统的补间动画的是( )
  2. 你人生中的那口井挖了没有?
  3. Oracle 创建 split 和 splitstr 函数
  4. 对某钓鱼网站的一次渗透测试
  5. java oom分析_JAVA各种OOM代码示例与解决方法
  6. Exchange 2007 前端 IIS 内存占用过高
  7. 学习 Python 第八天
  8. JavaScript内置对象之Array对象总结(附实例)
  9. python清空屏幕代码_python代码怎样清屏
  10. 图解详说pads2007安装全过程(经过验证)
  11. 软件项目管理的常见问题
  12. 批量重命名文件、图片、去除括号
  13. vue执行mounted_vue mounted方法执行多次问题的解决方案
  14. ROS 入门基础(三)创建 Subscriber
  15. 关于计算机的英语单词及例句,小学生必背英语单词及例句(四年级).doc
  16. foxmail邮箱怎么导入邮件_Foxmail怎样导入和导出邮箱账户和邮件
  17. [048量化交易]python获取股票 量比 换手率 市盈率-动态 市净率 总市值 流通市值写入数据库MongoDB
  18. 为什么硬盘插在计算机上不显示,硬盘插在电脑上不显示怎么办
  19. Element Plus
  20. 车牌识别之Java调用EasyPR-linux篇

热门文章

  1. 大数据助力互联网金融
  2. IMX6U开发板设置固定ip
  3. Maven打包、安装命令
  4. 爬坑记:论开发习惯的重要性。。。
  5. 【一天一个挨打小技巧】格式工厂+万能格式转换YYDS,重磅出击
  6. python抓取pdf中的表格转换为csv表格汉语站名批量变英文(拼音)名
  7. Tomcat之startup.bat启动闪退解决
  8. 第1194期机器学习日报(2017-12-25)
  9. CC00210.CloudKubernetes——|KuberNetes高级调度.V13|——|Pod亲和力反亲和力.v01|pod亲和力_同namespace|
  10. moments音标_英语单词moment怎么读,moment的音标是什么,moment是什么意思 - 音标网