Python 员工信息管理系统
学Python将近一个月了,第一次写了两百多行代码,一个很简单的脚本。
员工信息管理系统:
需求:
1.管理员账户能够增加,删除,修改,查询员工信息,并且设置管理员账户。
2.普通账户可以查看所有员工信息,但不能增加,修改,删除员工信息。
3.可以针对员工信息类型进行模糊查询,并能记录搜索出多少条结果。
4.三次密码输入错误退出程序。
5.员工工号自增。
思路:
时间太晚了,明天再写。
具体实现代码
- #coding=utf-8
- #__author:Administrator
- #__time:2018/5/21 12:43
- #__file_name:staff_list
- import io
- import time
- import os
- FileRead = io.open('Staff_list','r',encoding='utf8')
- Staff_list = eval(FileRead.read())
- username = 0
- '''
- 员工信息管理系统
- 需求:
- 1.增
- 2.删
- 3.改
- 4.查
- 5.管理员登陆
- 6.模糊搜索
- '''
- string = '''
- 工号:%s
- 姓名:%s
- 年龄:%s
- 部门:%s
- 地址:%s
- 电话:%s
- Q Q:%s
- 微信:%s
- 入职时间:%s
- '''
- Project = ['姓名','年龄','部门','地址','电话','qq','微信','入职时间']
- def login():#登陆模块
- global username
- print '='*43,'员工信息管理系统','='*43
- num = 1
- while num <= 3 :
- username = int(raw_input('请输入你的工号:\n'))
- pwd = raw_input('请输入密码:\n')
- if username not in Staff_list:
- print '没有你的信息,请联系管理员添加或重新输入,还有 %d 次机会'%(3-num)
- num += 1
- elif Staff_list[username]['权限'] == 1 and pwd == Staff_list[username]['密码']:
- print '欢迎 %s 进入员工信息管理系统'%Staff_list[username]['姓名']
- AdminMenuShow()
- elif Staff_list[username]['权限'] != 1 and pwd == Staff_list[username]['密码']:
- print '欢迎 %s 进入员工信息系统'%Staff_list[username]['姓名']
- StaffMenuShow()
- else :
- print '密码输入错误,还有 %d 次机会'%(3-num)
- num += 1
- else :
- print '输入次数过多,已退出程序'
- time.sleep(3)
- exit()
- def OptionJudge(chioce):#对用户输入进行判断
- if chioce == 'A' or chioce == 'a': Increase()
- elif chioce == 'B' or chioce == 'b': Delete()
- elif chioce == 'C' or chioce == 'c': Amend()
- elif chioce == 'D' or chioce == 'd': Query()
- elif chioce == 'E' or chioce == 'e': AllStaff()
- elif chioce == 'F' or chioce == 'f': Search()
- elif chioce == 'G' or chioce == 'g': IncreaseAdmin()
- elif chioce == 'H' or chioce == 'h': exit()
- else :
- chioce = raw_input('你的输入有误 请重新输入:\n')
- OptionJudge(chioce)
- def AdminMenuShow():#管理员菜单展示
- print '=' * 43, '员工信息管理系统', '=' * 43
- print '【A】增加一个成员 【B】删除一个成员'
- print '【C】修改一个成员 【D】查询一个成员'
- print '【E】查看所有成员 【F】关键词搜索 '
- print '【G】增加一个管理员【H】退出系统'
- chioce = raw_input('请输入你的选择:\n')
- OptionJudge(chioce)
- def StaffMenuShow():#普通用户菜单展示
- print '=' * 43, '员工信息管理系统', '=' * 43
- print '【E】查看所有成员 【D】查询一个成员'
- print '【F】关键词搜索 【H】退出系统 '
- chioce = raw_input('请输入你的选择:\n')
- OptionJudge(chioce)
- def Increase():#增加一个用户
- print '=' * 44, '增加新的员工', '=' * 44
- staff_num = Staff_list['num']
- Staff_list[staff_num] = {}
- Staff_list[staff_num]['姓名'] = raw_input('请输入员工姓名\n')
- Staff_list[staff_num]['年龄'] = raw_input('请输入员工年龄\n')
- Staff_list[staff_num]['部门'] = raw_input('请输入员工部门\n')
- Staff_list[staff_num]['住址'] = raw_input('请输入员工地址\n')
- Staff_list[staff_num]['电话'] = raw_input('请输入员工电话号码\n')
- Staff_list[staff_num]['qq'] = raw_input('请输入员工QQ号码\n')
- Staff_list[staff_num]['微信'] = raw_input('请输入员工微信号码\n')
- Staff_list[staff_num]['入职时间'] = raw_input('请输入员工入职日期\n')
- Staff_list[staff_num]['密码'] = raw_input('请设置员工登陆密码\n')
- Staff_list[staff_num]['权限'] = raw_input('请设置员工权限\n')
- Staff_list['num'] = Staff_list['num'] + 1
- print '%s已录入成功,工号为%d' % (Staff_list[staff_num]['姓名'],staff_num)
- Staff_list_UpDate()
- def IncreaseAdmin():#创建管理员账户
- print '=' * 43, '正在增加管理员', '=' * 43
- staff_num = int(raw_input('请输入员工工号\n'))
- if Staff_list[staff_num] == {}:
- print '工号为%d的员工已离职,请重新输入' % staff_num
- IncreaseAdmin()
- elif staff_num in Staff_list and Staff_list[staff_num] != {}:
- Flag = raw_input('确认是否将 %s 设置为管理员用户?Y/N' % Staff_list[staff_num]['姓名'])
- if Flag == 'Y':
- print '%s 已成功设置为管理员' % Staff_list[staff_num]['姓名']
- Staff_list[staff_num]['权限'] = 1
- time.sleep(3)
- Staff_list_UpDate()
- elif Flag == 'N':
- print '正在返回主菜单'
- AdminMenuShow()
- else:
- print '你的输入错误,正在为你返回主菜单'
- AdminMenuShow()
- else :
- print '没有工号为%d的员工,请重新输入' % staff_num
- IncreaseAdmin()
- def Delete():#删除一个用户
- print '=' * 46, '删除员工', '=' * 46
- Staff_num = int(raw_input('请输入你要删除的员工工号\n'))
- if Staff_num in Staff_list and Staff_list[Staff_num] != {}:
- Flag = raw_input('确认是否删除 %s?Y/N ' % Staff_list[Staff_num]['姓名'])
- if Flag == 'Y' or Flag == 'y' :
- temp = Staff_list[Staff_num]['姓名']
- Staff_list[Staff_num] = {}
- time.sleep(3)
- print '已经为您删除 %s'%temp
- Staff_list_UpDate()
- elif Flag == 'N' or Flag == 'n':
- print '请重新输入'
- Delete()
- else:
- print '你的输入错误,正在为你返回主菜单'
- AdminMenuShow()
- elif Staff_num in Staff_list and Staff_list[Staff_num] == {}:
- print '%s已被删除,请重新输入'%Staff_list[Staff_num]['姓名']
- Delete()
- else:
- print '没有工号为%d的用户,请重新输入'%Staff_num
- Delete()
- print '操作完毕,正在返回主菜单'
- AdminMenuShow()
- def Amend():#修改一个用户
- print '=' * 44, '修改员工信息', '=' * 44
- staff_num = int(raw_input('请输入你要修改的员工编号\n'))
- if staff_num not in Staff_list:
- print '你输入的员工编号不存在,请重新输入'
- Amend()
- elif staff_num == 0 :
- print '你无权修改,请重新输入'
- Amend()
- elif Staff_list[staff_num] == {}:
- print '你所要修改的员工已被删除,无法进行修改'
- Amend()
- else :
- while True :
- project = raw_input('请输入你要修改的项目(姓名/年龄/部门/地址/电话/qq/微信/入职时间)\n')
- if project in Staff_list[staff_num] and project in Project :
- content = raw_input('请输入你要修改的内容:\n')
- Staff_list[staff_num][project] = content
- print '已为您修改完毕,正在为您返回主菜单'
- Staff_list_UpDate()
- else :
- print '你输入的项目不正确,请重新输入'
- def Permissions():
- if Staff_list[username]['权限'] == 1:
- print '操作完毕,正在返回主菜单'
- AdminMenuShow()
- else:
- print '操作完毕,正在返回主菜单'
- StaffMenuShow()
- def Query():#查询一个用户
- print '=' * 44, '员工信息查询', '=' * 44
- staff_num = int(raw_input('请输入员工工号\n'))
- if Staff_list[staff_num] == {}:
- print '该员工已被删除,请重新搜索你要查询的员工'
- Query()
- elif staff_num in Staff_list:
- print '=' * 43, 'Info of %s' % Staff_list[staff_num]['姓名'], '=' * 43
- print string % (
- staff_num, Staff_list[staff_num]['姓名'], Staff_list[staff_num]['年龄'], Staff_list[staff_num]['部门'],
- Staff_list[staff_num]['住址'], Staff_list[staff_num]['电话'], Staff_list[staff_num]['qq'],
- Staff_list[staff_num]['微信'], Staff_list[staff_num]['入职时间'])
- else :
- print '没有工号为%d的员工,请重新输入'
- Query()
- Flag = raw_input('员工%s 信息已查询完毕,是否返回主菜单?Y/N ' % Staff_list[staff_num]['姓名'])
- if Flag == 'Y' or Flag == 'y' :
- Permissions()
- else :
- print '重新查询一个用户'
- Query()
- def AllStaff():#查看所有用户
- for i in range(1, Staff_list['num']) :
- if Staff_list[i] == {}:
- print '=' * 45, '第%d 号员工'%i, '=' * 45
- print '第%d 号员工已离职'%i
- else :
- print '=' * 44, '%s的信息' % Staff_list[i]['姓名'], '=' * 44,
- print string % (
- i, Staff_list[i]['姓名'], Staff_list[i]['年龄'], Staff_list[i]['部门'],
- Staff_list[i]['住址'], Staff_list[i]['电话'], Staff_list[i]['qq'],
- Staff_list[i]['微信'], Staff_list[i]['入职时间'])
- Flag = raw_input('用户信息已查询完毕,是否返回主菜单?Y/N ')
- if Flag == 'Y' or Flag == 'y':
- Permissions()
- else:
- print '不允许操作'
- def Search():#关键词搜索
- print '=' * 44, '员工信息搜索', '=' * 44
- project = raw_input('请输入你要查找的项目(姓名/年龄/部门/地址/电话/qq/微信/入职时间)\n')
- num = 0
- while True:
- key = raw_input('请输入你要查找的关键字\n')
- if project in Project:
- for i in range(1, Staff_list['num']):
- if Staff_list[i] == {}:
- pass
- elif key in Staff_list[i][project]:
- print '=' * 44, '%s的信息' % Staff_list[i]['姓名'], '=' * 44,
- print string % (
- i, Staff_list[i]['姓名'], Staff_list[i]['年龄'], Staff_list[i]['部门'],
- Staff_list[i]['住址'], Staff_list[i]['电话'], Staff_list[i]['qq'],
- Staff_list[i]['微信'], Staff_list[i]['入职时间'])
- num += 1
- if num == 0:
- print '没有搜索到结果,请重新搜索'
- else:
- print '共搜索到 %d 名 %s 为 %s 的员工' % (num, project, key)
- Flag = raw_input('用户信息已查询完毕,任意键继续搜索,选择Y返回主菜单 ')
- if Flag == 'Y' or Flag == 'y':
- Permissions()
- else :
- Search()
- else:
- print '你要查找的项目不存在'
- def Staff_list_UpDate():
- global FileRead
- FileRead.close()
- with open('Staff_list_copy', 'w') as FileWrite :
- Write_Staff_list = str(Staff_list)
- FileWrite.write(Write_Staff_list)
- os.remove('Staff_list')
- os.renames('Staff_list_copy','Staff_list')
- FileRead = io.open('Staff_list', 'r', encoding='utf8')
- time.sleep(3)
- AdminMenuShow()
- login()
文本内容:
初始帐号:0
初始密码:123456
- {0: {', '\xe6\x9d\x83\xe9\x99\x90': 1, '\xe5\xa7\x93\xe5\x90\x8d': 'admin'}}
Python 员工信息管理系统的更多相关文章
- jQuery实现的3个基础案例(仿QQ列表分组,二级联动下拉框,模拟员工信息管理系统)
1.仿QQ列表分组 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&quo ...
- qt项目:员工信息管理系统
开发一个员工信息管理系统 一.项目具体要求: 1.用qt开发界面,数据库用QSqlite 数据库文件名:demostudent.db 2.通过界面能够查看到数据库中员工信息表中内容,包括员工姓名.年龄 ...
- Python员工信息表练习
1.用户可以模糊查询员工信息 2.显示匹配了多少条,匹配字符需要高亮显示 employee_db.txt 总经办 龚丽丽 总经理 男 -- 1月18日 汉 族 中共党员 已婚 总经办 李惠 副总经理 ...
- Python学生信息管理系统的开发
# 第一题:设计一个全局变量,来保存很多个学生信息:学生(学号, 姓名,年龄):思考要用怎样的结构来保存:# 第二题:在第一题基础上,完成:让用户输入一个新的学生信息(学号,姓名,年龄):你将其保存在 ...
- python 学生信息管理系统
python与数据库的例子 初始化数据库 链接数据库创建库和表并插入数据 init.py import pymysql sql_base='create database school;' sql_t ...
- Python:员工信息增删改查
一:需求 homework.txt文件中有如下格式的人员信息: 1,Jack Wang,28,13451024608,HR,2015‐01‐072,Rain Wang,21,13451054608,I ...
- python作业员工信息表程序(第四周)
作业需求: 1. 员工信息表程序,实现增删改查操作: 2. 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 ...
- python--员工信息管理系统编译及思路
员工管理系统,顾名思义,应该具有增删查改功能.拿到需求后,应该按照一定的流程依次编写,最后达到程序的统一和兼容. 系统需求如下: 文件存储格式如下: id,name,age,phone,job 1,A ...
- python员工管理系统(基础版)
各位小伙伴们大家好,最近自学python已经差不多把基础学完了,现在运用这些基础知识写了一个简单版本的员工管理系统 因为在大学里我是学过java的,所以,当有了一定的基础和熏陶外,真心觉得python ...
随机推荐
- prototype.js 和json.js 冲突
1.冲突简述和分析 prototype.js与json.js并不是完全兼容的.主要冲突在于json.js为Object的原型增加了一个toJSONString的方法. 冲突之一:是prototype中 ...
- C++笔记十七:C语言中 “冒牌货”const和const符号表
在.c文件中有程序: int main() { int const a = 10; a=20; printf("a=%d\n",a); return 0; } 编译就知道C语言 ...
- solr研磨之游标分页
普通分页 当需要深度分页的时候,比如查询第10000页数据,每页显示10条,意味着需要提取前10000 x 10 页的数据,并将这100000条数据缓存在内存中,然后在内存中进行排序.最后返回最后10 ...
- JavaScript脚本放在哪里用户体验好
javascript代码写在<head>里面: 由于这时候网页主体(body)还未加载,所以这里适合放一些不是立即执行的自定义函数,立即执行的语句则很可能会出错(视浏览器而定) javas ...
- 零基础自学Python十天,写了一款猜数字小游戏,附源码和软件下载链接!
自学一门语言最重要的是要及时给自己反馈,那么经常写一些小程序培养语感很重要,写完可以总结一下程序中运用到了哪些零散的知识点. 本程序中运用到的知识点有: 1.输入输出函数 (input.print) ...
- Redis实现简单消息队列
http://www.jianshu.com/p/9c04890615ba 任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器,服务器 ...
- (七):C++分布式实时应用框架 2.0
C++分布式实时应用框架 2.0 技术交流合作QQ群:436466587 欢迎讨论交流 上一篇:(六):大型项目容器化改造 版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同 ...
- HTML5这个概念的解释
关于HTML5这个概念我一直很多困惑,稍微总结一下. 从HTML说起,HTML作为一个标记语言,通过这种标记定义了一个网页的dom tree,也定义了网页的结构,然后CSS定义了在这个结构基础上的样式 ...
- 搜索应用参考示例XXL-SEARCH
<搜索应用参考示例XXL-SEARCH> 一.简介 1.1 概述 XXL-SEARCH 是以 "lucene/elasticsearch" 为核心的,Pragmatic ...
- Java多线程:线程间通信之Lock
Java 5 之后,Java在内置关键字sychronized的基础上又增加了一个新的处理锁的方式,Lock类. 由于在Java线程间通信:volatile与sychronized中,我们已经详细的了 ...