python实现简易工资管理系统(Salary Manage)源码
一、需求:
1.导入文件读取员工的信息和工资信息,最后将增加、删除或修改的员工工资信息写入原来的文件中
2.能够实现员工工资信息的增删改查
3.当增加和修改员工信息时用户用空格分隔员工姓名和薪资
4.实现退出功能
二、思路
1.首先需要将包含有员工薪资信息的文件读出来存储到一个容器里,因为员工姓名和薪资一一对应,因此想到字典的key--->value机制,将员工薪资信息存储到字典中。
2.写一个函数让用户选择该如何操作----->add、delete、modify、search(增删改查)以及退出操作
3.定义四个函数----- >user_add()、user_delete()、user_modify()、user_seach()
三、实现(源码)
1 #!/user/bin/env python 2 #-*-coding:utf-8 -*- 3 #Author: qinjiaxi 4 import sys,os,re 5 operation_list = """ 6 1.增加新员工薪资信息 7 2.删除已有员工薪资信息 8 3.修改已有员工薪资信息 9 4.查询已有员工薪资信息 10 5.退出操作 11 """ 12 user_dict = {}#空字典用来存储员工薪资信息 13 def user_info(): 14 '''定义员工薪资信息函数''' 15 with open('info.txt','r') as f: 16 for i in f: 17 i = i.strip()#去掉每行字符串前后空格和换行以及缩进 18 user_dict[i.split()[0]] = i.split()[1]#将员工信息以键值对key(员工姓名)--->value(员工薪资)的方式存储在字典中 19 print('当前员工的姓名:', i.split()[0]) 20 21 def user_choice(): 22 '''用户输入选择''' 23 while True: 24 print(operation_list) 25 user_choice = input('请选择操作编号:') 26 if user_choice.isdigit(): 27 user_choice = int(user_choice) 28 if user_choice > 5: 29 print('\033[31;1m请输入正确的操作编号\033[0m') 30 if user_choice == 1: 31 user_info_add() 32 if user_choice == 2: 33 user_info_del() 34 if user_choice == 3: 35 user_info_modify() 36 if user_choice == 4: 37 user_info_search() 38 if user_choice == 5: 39 sys.exit('退出程序') 40 else: 41 print('\033[31;1m请输入正确的操作编号\033[0m') 42 43 def user_info_add(): 44 '''定义增加新员工薪资信息函数''' 45 while True: 46 user_info() 47 add_user = input('请输入要增加员工的姓名和薪资,并以空格隔开(例如: Qinjiaxi 10000)') 48 add_user_info = add_user.strip().split()#去掉用户输入前后的空格换行以及缩进,并将姓名和工资以列表形式打印 49 if len(add_user_info) < 2: 50 print('\033[31;1m请输入正确的格式\033[0m') 51 elif not add_user_info[1].isdigit(): 52 print('\033[31;1m请输入正确的数字\033[0m') 53 else: 54 name = add_user_info[0].capitalize()#把用户名的第一个字母变成大写 55 salary = add_user_info[1] 56 if name in user_dict:#判断姓名是否在字典中 57 print("\033[31;1m您输入的名字已存在\033[0m") 58 elif not name.isalpha():#判断姓名是否是全英文 59 print('\033[31;1m请输入正确的姓名') 60 else: 61 with open('info.txt','a') as f: 62 f.write(name + ' ') 63 f.write(salary + '\n') 64 print('已将\033[31;1m%s\033[0m用户信息添加成功' % name) 65 break 66 67 def user_info_del(): 68 '''定义删除员工薪资信息函数''' 69 while True: 70 user_info() 71 del_user = input('请输入要删除员工的姓名,例如(Qinjiaxi)') 72 del_user_info = del_user.capitalize()#把首个字母改成大写,方便用户输入 73 if del_user_info in user_dict: 74 confirm = input('请确认是否删除\033[32;1m %s\033[0m用户信息--->按\033[32;1mN\033[0m退出,按任意键确认'% del_user_info) 75 if confirm.capitalize() != 'N': 76 list = []#定义一个空列表用于存储不需要删除的员工信息 77 with open('info.txt', 'r') as f: 78 lines = f.readlines() 79 for line in lines: 80 if not re.search(del_user_info, line):#判断哪些员工不需要删除 81 list.append(line) 82 with open('info.txt', 'w') as f: 83 f.writelines(list) 84 print('\033[32;1m%s\033[0m已经删除' % del_user_info) 85 break 86 else: 87 print('\033[32;1m%已取消删除\033[0m') 88 else: 89 print('\033[32;1m该用户不存在\033[0m') 90 91 def user_info_modify(): 92 '''定义修改员工薪资信息函数''' 93 while True: 94 user_info() 95 modify_user = input('请输入要修改员工的姓名和薪资,并以空格隔开(例如:Qinjiaxi 10000)') 96 modify_user_info = modify_user.strip().split() 97 if len(modify_user_info) < 2: 98 print('\033[32;1m请输入正确的格式\033[0m') 99 elif not modify_user_info[1].isdigit(): 100 print('\033[32;1m请输入正确的数字\033[0m') 101 else: 102 name = modify_user_info[0].capitalize()#姓名 103 salary = modify_user_info[1]#薪资 104 if name in user_dict: 105 with open('info.txt', 'r') as f: 106 lines = f.readlines() 107 with open('info.txt', 'w') as f_w: 108 for line in lines: 109 if name in line: 110 line = line.replace(user_dict[name], salary)#替换薪资 111 f_w.write(line) 112 print('已将\033[32;1m%s\033[0m的工资修改为\033[32;1m%s\033[0m元'%(name, salary)) 113 break 114 else: 115 print('\033[32m;1m您输入的用户不存在\033[0m') 116 117 def user_info_search(): 118 '''定义查询员工薪资信息函数''' 119 while True: 120 user_info() 121 search_user = input('请输入要查询的员工姓名(例如:Qinjiaxi)') 122 search_user_info = search_user.capitalize() 123 if search_user_info in user_dict: 124 print('\033[32;1m%s\033[0m工资为\033[32;1m%s\033[0m元' % (search_user_info, user_dict[search_user_info])) 125 break 126 else: 127 print('\033[32;1m您输入的用户不存在\033[0m') 128 129 user_choice()
转载于:https://www.cnblogs.com/qinlangsky/p/9487406.html
python实现简易工资管理系统(Salary Manage)源码相关推荐
- 基于JAVA的工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA的工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA的工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...
- JAVA计算机毕业设计企业员工工资管理系统(附源码、数据库)
JAVA计算机毕业设计企业员工工资管理系统(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclisp ...
- JAVA计算机毕业设计小型企业员工工资管理系统(附源码、数据库)
JAVA计算机毕业设计小型企业员工工资管理系统(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...
- 基于JAVA企业员工工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA企业员工工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA企业员工工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...
- 基于JAVA基于web的学校工资管理系统计算机毕业设计源码+系统+lw文档+部署
基于JAVA基于web的学校工资管理系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA基于web的学校工资管理系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...
- 基于JAVA工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- C语言源码做的职工工资管理系统课程设计(源码+课程设计报告)
一.课程设计的目的: C语言课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言程序设计的知识点,又接近工程实际需要.本次设计的目的是通过课程设计 ...
- 高校教师工资管理系统java_基于jsp的高校职工工资管理系统-JavaEE实现高校职工工资管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的高校职工工资管理系统, 该项目可用各类java课程设计大作业中, 高校职工工资管理系统的系统架构分为前后台两部分, ...
- Python+Vue计算机毕业设计企业工资管理系统87j16(源码+程序+LW+部署)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Python3.7.7+Django+Mysql5.7+pip list+HBuilderX(Vscode也行)+V ...
最新文章
- iOS-实际项目中用到的第三方库
- GoldenGate 基本参数含义
- 中小型研发团队架构实践:集中式日志ELK
- java orm框架什么意思_ORM框架是什么
- 1到30图片大全顺序_终于解决了!自媒体作者,如何给 Word 中的图片批量编号?...
- 27个机器学习图表翻译_使用机器学习的信息图表信息组织
- 2008-10-13 XEIM 2.0 beta 准时发布
- ccna之交换机密码破解
- eclipse接入hadoop-2.7.6集群(hadoop2.x版本通用),含免费资源
- 为什么做了梦第二天想不起来_做过的梦为什么总是想不起来?
- int类型究竟占几个字节
- Eclipse 安装tomcat插件(针对新版本的,Eclipse安装目录没有starup.jar的Eclipse)
- 解决FireFox(火狐浏览器)占用资…
- solidworks图纸模板添加_solidworks工程图模板制作教程(中)
- mw150um 驱动程序win10_Intel网卡驱动Win10专版 64位
- 修改AspNetPager的CustomInfoHTML,添加自定义样式
- MySQL重复数据排序_排序数据以在MySQL中重复记录
- 怎么把图片文件压缩到最小?
- 面试小结一:关于操作系统的面试题整理
- Java比较日期时间大小
热门文章
- CCNA-第一篇-基础入门概念
- 【Python学习】 - anaconda中spyder的常用快捷键总结
- 【POJ - 1995】Raising Modulo Numbers(裸的快速幂)
- 【HDU - 1263】 水果(STL)
- 7. Deep Learning From Scratch
- linux联想电脑wifi密码,联想笔记本Y7000—ubuntu16.4无法开启wifi的解决办法
- vb外部调用autocad_AutoCAD教程之图块的各种相关操作和概念
- Android手机mm开头的大文件,[2018年最新整理]2Android源代码编译命令m和mm和mmm以及make分析.doc...
- 建房子 最安全图纸_妄想山海初期该怎么办?砍树狩猎建房子,还能拆别人的房子...
- 计算机专业的三行情书,各专业三行情书,看懂你就是全能学霸!