python做系统查人的信息_Python综合项目之员工信息查询
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
from db import db_handle
# 查询接口
def select_interface(user_inp):
# 调用查询语法解析接口
flag = select_prammar(user_inp) # 获得关键字,文件名,查询条件
flag_list = ['1', '2', '3', '4', '5']
if flag in flag_list:
return flag
keyword, file_name, condition = flag
# 开始查询
user_list = [] # 存储每一个用户字典的列表
show_list = []
user_data = db_handle.select(file_name)
if user_data == '6':
return '6'
location_1, location_2, location_3 = condition
eval_list = ['int(user_dic[location_1]) > int(location_3)',
'int(user_dic[location_1]) < int(location_3)']
if location_2 in ['']:
if not location_3.isdigit() or location_1 not in ['age', 'id', 'phone']:
return '2'
for user_dic in user_data:
if location_2 == '>':
if eval(eval_list[0]):
user_list.append(user_dic)
else:
if eval(eval_list[1]):
user_list.append(user_dic)
elif location_2 == '=':
for user_dic in user_data:
if location_3 == user_dic[location_1]:
user_list.append(user_dic)
elif location_2 == 'like':
# print('zheli')
for user_dic in user_data:
if location_3 in user_dic[location_1]:
user_list.append(user_dic)
# print(keyword)
if keyword[0] == '*':
# print(user_list, 'userlist')
show_list = [list(i.values()) for i in user_list]
title_table = [['id', 'name', 'age', 'phone', 'dep', 'start_work_time']]
show_list = title_table + show_list
# print(show_list)
return show_list
else:
# print(user_list, 'userlist')
for k in user_list:
show_list.append([k[i] for i in keyword])
show_list = [keyword] + show_list
return show_list
# 增加接口
def add_interface(user_inp):
# 调用增加语句解析接口
res = add_prammar(user_inp)
if res == '1':
return '1'
*_, file_name, name, age, phone, dep, start_work_time = res
# 调用查询接口
user_list = db_handle.select(file_name)
if user_list == '6':
return '6'
# 判断手机号码是否重复
for user_dic in user_list:
if phone in user_dic['phone']:
return '7'
current_id = int(user_list[-1]['id']) + 1
current_id = str(current_id)
add_user_info = [f'{current_id},{name},{age},{phone},{dep},{start_work_time}']
# 调用保存接口
user_data = [list(i.values()) for i in user_list]
user_data.append(add_user_info)
db_handle.save(file_name, user_data)
return '8'
# 删除接口
def del_interface(user_inp):
# 调用删除语句解析接口
user_data = []
res = del_prammar(user_inp)
if res == '1':
return '1'
file_name, user_id = res
# 获取数据
user_list = db_handle.select(file_name)
if not user_list:
return '6'
# 删除符合条件的信息
for user_dic in user_list:
if not user_dic['id'] == user_id:
user_data.append(list(user_dic.values()))
# 调用保存接口
db_handle.save(file_name, user_data)
return '9'
pass
# 更新接口
def update_interface(user_inp):
# 调用修改语法解析接口
res = update_prammar(user_inp)
if res == '1':
return '1'
file_name, set_name, set_data, where_name, where_data = res
# 获取数据信息
user_list = db_handle.select(file_name)
if not user_list:
return '6'
# 修改数据
for user_dic in user_list:
if user_dic[where_name] == where_data:
user_dic[set_name] = set_data
user_data = [list(i.values()) for i in user_list]
# 调用保存接口
db_handle.save(file_name, user_data)
return '10'
'''-----------------------------------------------------------------'''
# 语句类型判断
def prammar_type(user_inp):
'''解析用户输入语句的类型:param user_inp::return: 对应语句类型接口的内存地址'''
prammar_list = user_inp.split()
current_list = {'find': select_interface,
'add': add_interface,
'update': update_interface,
'del': del_interface}
# print('a')
if prammar_list[0] in current_list:
return current_list[prammar_list[0]]
else:
return False
# 查询语法解析
def select_prammar(user_inp):
title = ['id', 'name', 'age', 'phone', 'dep', 'start_work_time', '*']
conditon = ['id', 'name', 'age', 'phone', 'dep', 'start_work_time']
# 正则表达式
res = re.search('find (.*?) from (.*?) where (.*)', user_inp, re.I)
# print('1')
if not res: return '1'
# 判断查询条件是否正确
res2 = re.search('(.*?) ([>=
# print('2')
# print(res2)
if not res2: return '2'
# 判断展示条件是否正确
res3 = re.findall('[a-zA-Z*]+', res.group(1))
# print('3')
if not res3: return '3'
for i in res3:
if i in title:
pass
else:
return '4'
# print('4')
# print(res2.group(1))
if res2.group(1) in conditon:
pass
else:
return '5'
# print('5')
return [res3, res.group(2), res2.groups()] # 关键字,文件名,查询条件
# 新增语法解析
def add_prammar(user_inp):
# 正则表达式
res = re.search('add (.*?) ([a-zA-z]+?),(\d+?),(1[34567]\d{9}),(\w+?),(\d{1,4}-\d{1,2}-\d{1,2})', user_inp)
if not res: return '1'
return res.groups()
# 删除语法解析
def del_prammar(user_inp):
res = re.search('del from (.+?) where id = (.+)', user_inp, re.I)
if not res: return '1'
return res.groups()
# 修改语法解析
def update_prammar(user_inp):
res = re.search('update (.+?) set ([a-zA-Z]+?) = (.+?) where ([a-zA-Z]+?) = (.+)', user_inp)
if not res: return '1'
if res.group(2) not in ['name', 'age', 'phone', 'dep', 'start_work_time']:
return '1'
if res.group(4) not in ['name', 'age', 'phone', 'dep', 'start_work_time', 'id']:
return '1'
return res.groups()
# ----------------------------
# 加载数据
def data_load():
res = db_handle.select('staff_table')
return [list(i.values()) for i in res]
python做系统查人的信息_Python综合项目之员工信息查询相关推荐
- python做系统查人的往来的信息_L01-04:python查询员工信息表练习
#decoding=utf-8 ''' 编写可供用户查询的员工信息表! 1|用户认证 ID Name department phone 查询关键字:姓名 '''import linecache inp ...
- 用python做系统的感悟_python感悟
嗯,对于python我其实也是一知半解,比较擅长java,我就拿java和python进行比较一下吧 1,首先先说简单的程序运行时间问题,对于同等时间复杂度的测试程序,python虽然运行速度没有c快 ...
- python系统-python做系统
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 在linux操作系统上编写shell脚本时, 主要涉及到执行系统命令, ...
- 如何用python做二维码识别软件_Python什么都能做(一)用 Python 做一个扫码工具...
Python实现扫码工具 二维码作为一种信息传递的工具,在当今社会发挥了重要作用.从手机用户登录到手机支付,生活的各个角落都能看到二维码的存在.那你知道二维码是怎么解析的吗?有想过自己实现一个扫码工具 ...
- python做个游戏辅助_8个用于辅助项目的出色Python库
python做个游戏辅助 在Python / Django世界中我们有一句俗语:我们是为语言而来的,而是为社区而留下的. 对我们大多数人来说都是如此,但是让我们留在Python世界中的另一件事是,有了 ...
- Vue项目实战之人力资源平台系统(十)图片上传和打印员工信息
前言 目录 前言 一.配置腾讯云空间存储图片 1.1 配置步骤 二.图片上传流程解析 三.实现文件上传组件 3.1 安装依赖 3.2 上传图片组件的基本布局 3.3 全局注册组件 3.4 点击图片进行 ...
- 软件工程小项目~企业员工信息管理系统-需求分析~~
理解需求 1.管理员进入系统后能够狠清晰的看到企业的组织形式,并能够很方便的进入到各个管理功能模块. 2.管理员能够根据企业的实际来实时的改变系统中机构组织,主要的改变包括:当有新部门成立时,要将新部 ...
- 员工信息管理系统java6_实例:员工信息管理系统 StaffManagementSystem
一.创建测试数据库.测试表和测试数据 二.搭建Maven+SSM框架,粗浅的学习了一下pom文件中每个依赖的作用,基于Spring MVC实现了一个根据staff_id查询员工信息的controlle ...
- 计算机与信息专业综合试题,计算机与信息专业综合试题(有答案)适合事业单位考试...
计算机与信息专业综合试题(有答案)适合事业单位考试 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 一.单项选择题(每题2分,共40分) ...
最新文章
- 借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
- 阿里云数据库2020技术年报新鲜出炉,全力开启牛年新征程!
- django配置mysql数据库
- asp.net core监控—引入Prometheus(六)
- spring jpa 流式_从响应式Spring Data存储库流式传输实时更新
- 如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]
- 使用Quartus进行功能仿真时出现“testbench_vector_input_file option does not exist”的解决方法
- 男性护肤不“美白” 控油:男女有别 - 生活至上,美容至尚!
- Codeforces 57C Array dp暴力找到规律
- spark入门及环境搭建
- 为 WE 打 Call!
- atitit. java跟php的比较..为什么大企业喜欢java 而不是php
- juel java_Juel基本使用
- Windows 10 的触摸板手势
- SpringInAction第三章学习笔记:Spring高级装配
- SimpleFOC移植STM32(二)—— 开环控制
- 格调高又小众的EPUB 阅读器(转载)
- 常见的存储虚拟化技术(HCIE云方向)
- python_pygame.外星人入侵
- iOS Core Animation 简明系列教程
热门文章
- 2017.9.13 找硬币 失败总结
- 为什么envi镶嵌老是出错_10个数学考试老出错的根源和解决办法,你值得拥有
- logback logback.xml 常用配置详解
- html自动增加一行并获取行号,javascript开发系列(table操作,table增加一行,删除一行,取行号,列号)...
- 贝壳金控赵文乐:基于 Spring Cloud 的服务治理实践
- 简单理解JSONP的定义及其实现
- 上接扩展GridView控件(10) - 自定义分页样式
- RefreshLayout刷新组件,有详细注释适合使用和中高端学习
- JQuery:JQuery遍历详解
- 自己手写代码实现下拉刷新(对于小项目第三方库太占资源)