1.需求
(1).工信息表程序,实现增删改查操作: (2).可进行模糊查询,语法至少支持下面3种: 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" (3).查到的信息,打印后,最后面还要显示查到的条数 (4).可创建新员工纪录,以phone做唯一键,staff_id需自增 (5).可删除指定员工信息纪录,输入员工id,即可删除 (6).可修改员工信息,语法如下: UPDATE staff_table SET dept = "Market" where dept = "IT" 注意:以上需求,要充分使用函数,请尽你的最大限度来减少重复代码
2..简易流程图
3.程序目录结构
代码语言:javascript复制├── backup ----> 备份员工数据目录
│ ├── __init__.py
│ └── staff_table2017-08-03 18-58-17
├── bin -----> 执行程序目录
│ ├── __init__.py
│ └── main.py ----> 员工信息主程序
├── db ----> 数据保存目录
│ ├── __init__.py
│ └── staff_table ----> 员工信息表
├── __init__.py
├── README
4.bin目录
代码语言:javascript复制#coding:utf-8
#Author:ZhiWenwei
import os
import time
import shutil
staff_table_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) r'/db/staff_table' #获取员工信息文件绝对路径
print(staff_table_path)
backup_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) '/backup/' #备份路径
'''定义一个能备份文件的装饰器,在修改原文件前先进行备份'''
def bakcup(func):
def bk(*args,**kwargs):
shutil.copy(staff_table_path,backup_dir 'staff_table' time.strftime("%Y-%m-%d %H-%M-%S"))
func(*args,**kwargs)
return bk
'''查询员工信息'''
def search():
user_search = input("请输入查询语句:").strip()
user_search_list = user_search.split(' ') #拆分为列表
search_info = [] #搜索结果放此列表
with open(staff_table_path,'r',encoding='utf-8') as f:
for line in f:
user_info = line.strip().split(',') #循环出员工信息并拆分为列表
conditional = '%s %s %s' %(user_info[2],user_search_list[6],user_search_list[7]) #将条件字符串写入变量
if user_search_list[6] == '=': #判断是等号就替换
conditional =conditional.replace('=','==')
if user_search_list[5] == 'age' and user_info[0].isdigit() and eval(conditional):#判断年龄和员工账户
print(type(conditional))
search_info.append([user_info[1],user_info[2]])
elif user_search_list[5] == 'dept'and user_info[4] in user_search_list[7]: #判断员工职位条件
search_info.append(user_info)
elif user_search_list[5] == 'enroll_date' and user_info[5][0:4] in user_search_list[7]: #判断日期
search_info.append(user_info)
if not search_info:
print("