#!/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综合项目之员工信息查询相关推荐

  1. python做系统查人的往来的信息_L01-04:python查询员工信息表练习

    #decoding=utf-8 ''' 编写可供用户查询的员工信息表! 1|用户认证 ID Name department phone 查询关键字:姓名 '''import linecache inp ...

  2. 用python做系统的感悟_python感悟

    嗯,对于python我其实也是一知半解,比较擅长java,我就拿java和python进行比较一下吧 1,首先先说简单的程序运行时间问题,对于同等时间复杂度的测试程序,python虽然运行速度没有c快 ...

  3. python系统-python做系统

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 在linux操作系统上编写shell脚本时, 主要涉及到执行系统命令, ...

  4. 如何用python做二维码识别软件_Python什么都能做(一)用 Python 做一个扫码工具...

    Python实现扫码工具 二维码作为一种信息传递的工具,在当今社会发挥了重要作用.从手机用户登录到手机支付,生活的各个角落都能看到二维码的存在.那你知道二维码是怎么解析的吗?有想过自己实现一个扫码工具 ...

  5. python做个游戏辅助_8个用于辅助项目的出色Python库

    python做个游戏辅助 在Python / Django世界中我们有一句俗语:我们是为语言而来的,而是为社区而留下的. 对我们大多数人来说都是如此,但是让我们留在Python世界中的另一件事是,有了 ...

  6. Vue项目实战之人力资源平台系统(十)图片上传和打印员工信息

    前言 目录 前言 一.配置腾讯云空间存储图片 1.1 配置步骤 二.图片上传流程解析 三.实现文件上传组件 3.1 安装依赖 3.2 上传图片组件的基本布局 3.3 全局注册组件 3.4 点击图片进行 ...

  7. 软件工程小项目~企业员工信息管理系统-需求分析~~

    理解需求 1.管理员进入系统后能够狠清晰的看到企业的组织形式,并能够很方便的进入到各个管理功能模块. 2.管理员能够根据企业的实际来实时的改变系统中机构组织,主要的改变包括:当有新部门成立时,要将新部 ...

  8. 员工信息管理系统java6_实例:员工信息管理系统 StaffManagementSystem

    一.创建测试数据库.测试表和测试数据 二.搭建Maven+SSM框架,粗浅的学习了一下pom文件中每个依赖的作用,基于Spring MVC实现了一个根据staff_id查询员工信息的controlle ...

  9. 计算机与信息专业综合试题,计算机与信息专业综合试题(有答案)适合事业单位考试...

    计算机与信息专业综合试题(有答案)适合事业单位考试 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 一.单项选择题(每题2分,共40分) ...

最新文章

  1. 借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
  2. 阿里云数据库2020技术年报新鲜出炉,全力开启牛年新征程!
  3. django配置mysql数据库
  4. asp.net core监控—引入Prometheus(六)
  5. spring jpa 流式_从响应式Spring Data存储库流式传输实时更新
  6. 如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]
  7. 使用Quartus进行功能仿真时出现“testbench_vector_input_file option does not exist”的解决方法
  8. 男性护肤不“美白” 控油:男女有别 - 生活至上,美容至尚!
  9. Codeforces 57C Array dp暴力找到规律
  10. spark入门及环境搭建
  11. 为 WE 打 Call!
  12. atitit. java跟php的比较..为什么大企业喜欢java 而不是php
  13. juel java_Juel基本使用
  14. Windows 10 的触摸板手势
  15. SpringInAction第三章学习笔记:Spring高级装配
  16. SimpleFOC移植STM32(二)—— 开环控制
  17. 格调高又小众的EPUB 阅读器(转载)
  18. 常见的存储虚拟化技术(HCIE云方向)
  19. python_pygame.外星人入侵
  20. iOS Core Animation 简明系列教程

热门文章

  1. 2017.9.13 找硬币 失败总结
  2. 为什么envi镶嵌老是出错_10个数学考试老出错的根源和解决办法,你值得拥有
  3. logback logback.xml 常用配置详解
  4. html自动增加一行并获取行号,javascript开发系列(table操作,table增加一行,删除一行,取行号,列号)...
  5. 贝壳金控赵文乐:基于 Spring Cloud 的服务治理实践
  6. 简单理解JSONP的定义及其实现
  7. 上接扩展GridView控件(10) - 自定义分页样式
  8. RefreshLayout刷新组件,有详细注释适合使用和中高端学习
  9. JQuery:JQuery遍历详解
  10. 自己手写代码实现下拉刷新(对于小项目第三方库太占资源)