一、需求:

1.导入文件读取员工的信息和工资信息,最后将增加、删除或修改的员工工资信息写入原来的文件中

2.能够实现员工工资信息的增删改查

3.当增加和修改员工信息时用户用空格分隔员工姓名和薪资

4.实现退出功能

二、思路

1.首先需要将包含有员工薪资信息的文件读出来存储到一个容器里,因为员工姓名和薪资一一对应,因此想到字典的key--->value机制,将员工薪资信息存储到字典中。

2.写一个函数让用户选择该如何操作----->add、delete、modify、search(增删改查)以及退出操作

3.定义四个函数----- >user_add()、user_delete()、user_modify()、user_seach()

三、实现(源码)


 #!/user/bin/env python
#-*-coding:utf-8 -*-
#Author: qinjiaxi
import sys,os,re
operation_list = """
1.增加新员工薪资信息
2.删除已有员工薪资信息
3.修改已有员工薪资信息
4.查询已有员工薪资信息
5.退出操作
"""
user_dict = {}#空字典用来存储员工薪资信息
def user_info():
'''定义员工薪资信息函数'''
with open('info.txt','r') as f:
for i in f:
i = i.strip()#去掉每行字符串前后空格和换行以及缩进
user_dict[i.split()[0]] = i.split()[1]#将员工信息以键值对key(员工姓名)--->value(员工薪资)的方式存储在字典中
print('当前员工的姓名:', i.split()[0]) def user_choice():
'''用户输入选择'''
while True:
print(operation_list)
user_choice = input('请选择操作编号:')
if user_choice.isdigit():
user_choice = int(user_choice)
if user_choice > 5:
print('\033[31;1m请输入正确的操作编号\033[0m')
if user_choice == 1:
user_info_add()
if user_choice == 2:
user_info_del()
if user_choice == 3:
user_info_modify()
if user_choice == 4:
user_info_search()
if user_choice == 5:
sys.exit('退出程序')
else:
print('\033[31;1m请输入正确的操作编号\033[0m') def user_info_add():
'''定义增加新员工薪资信息函数'''
while True:
user_info()
add_user = input('请输入要增加员工的姓名和薪资,并以空格隔开(例如: Qinjiaxi 10000)')
add_user_info = add_user.strip().split()#去掉用户输入前后的空格换行以及缩进,并将姓名和工资以列表形式打印
if len(add_user_info) < 2:
print('\033[31;1m请输入正确的格式\033[0m')
elif not add_user_info[1].isdigit():
print('\033[31;1m请输入正确的数字\033[0m')
else:
name = add_user_info[0].capitalize()#把用户名的第一个字母变成大写
salary = add_user_info[1]
if name in user_dict:#判断姓名是否在字典中
print("\033[31;1m您输入的名字已存在\033[0m")
elif not name.isalpha():#判断姓名是否是全英文
print('\033[31;1m请输入正确的姓名')
else:
with open('info.txt','a') as f:
f.write(name + ' ')
f.write(salary + '\n')
print('已将\033[31;1m%s\033[0m用户信息添加成功' % name)
break def user_info_del():
'''定义删除员工薪资信息函数'''
while True:
user_info()
del_user = input('请输入要删除员工的姓名,例如(Qinjiaxi)')
del_user_info = del_user.capitalize()#把首个字母改成大写,方便用户输入
if del_user_info in user_dict:
confirm = input('请确认是否删除\033[32;1m %s\033[0m用户信息--->按\033[32;1mN\033[0m退出,按任意键确认'% del_user_info)
if confirm.capitalize() != 'N':
list = []#定义一个空列表用于存储不需要删除的员工信息
with open('info.txt', 'r') as f:
lines = f.readlines()
for line in lines:
if not re.search(del_user_info, line):#判断哪些员工不需要删除
list.append(line)
with open('info.txt', 'w') as f:
f.writelines(list)
print('\033[32;1m%s\033[0m已经删除' % del_user_info)
break
else:
print('\033[32;1m%已取消删除\033[0m')
else:
print('\033[32;1m该用户不存在\033[0m') def user_info_modify():
'''定义修改员工薪资信息函数'''
while True:
user_info()
modify_user = input('请输入要修改员工的姓名和薪资,并以空格隔开(例如:Qinjiaxi 10000)')
modify_user_info = modify_user.strip().split()
if len(modify_user_info) < 2:
print('\033[32;1m请输入正确的格式\033[0m')
elif not modify_user_info[1].isdigit():
print('\033[32;1m请输入正确的数字\033[0m')
else:
name = modify_user_info[0].capitalize()#姓名
salary = modify_user_info[1]#薪资
if name in user_dict:
with open('info.txt', 'r') as f:
lines = f.readlines()
with open('info.txt', 'w') as f_w:
for line in lines:
if name in line:
line = line.replace(user_dict[name], salary)#替换薪资
f_w.write(line)
print('已将\033[32;1m%s\033[0m的工资修改为\033[32;1m%s\033[0m元'%(name, salary))
break
else:
print('\033[32m;1m您输入的用户不存在\033[0m') def user_info_search():
'''定义查询员工薪资信息函数'''
while True:
user_info()
search_user = input('请输入要查询的员工姓名(例如:Qinjiaxi)')
search_user_info = search_user.capitalize()
if search_user_info in user_dict:
print('\033[32;1m%s\033[0m工资为\033[32;1m%s\033[0m元' % (search_user_info, user_dict[search_user_info]))
break
else:
print('\033[32;1m您输入的用户不存在\033[0m') user_choice()


python实现简易工资管理系统(Salary Manage)源码的更多相关文章

  1. html5 canvas简易版捕鱼达人游戏源码

    插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...

  2. python附录-builtins.py模块str类源码(含str官方文档链接)

    python附录-builtins.py模块str类源码 str官方文档链接:https://docs.python.org/3/library/stdtypes.html#text-sequence ...

  3. Python机器学习经典实例电子版和附带源码

    Python机器学习经典实例电子版和附带源码 下载:https://pan.baidu.com/s/1m6ODNJk--PWHW8Vdsdjs-g 提取码:nyc0 分享更多python数据分析相关电 ...

  4. ASP.NET MVC通用权限管理系统(响应布局)源码更新介绍

    一.asp.net mvc 通用权限管理系统(响应布局)源码主要以下特点: AngelRM(Asp.net MVC)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash ...

  5. Python框架之Tornado(四)源码之褪去模板外衣

    上一篇介绍了客户端请求在tornado框架中的生命周期,其本质就是利用epoll和socket来获取并处理请求.在上一篇的内容中,我们只是给客户端返回了简单的字符串,如:“Hello World”,而 ...

  6. 学生信息管理系统应用ios源码iPad版

    学生信息管理系统应用iPad版,该应用源码比较完整的,而且也很详细,这也是一款学校用的学生和老师管理系统,里面涉及到了很多ipad常用的控件,操作和数据存储. <ignore_js_op> ...

  7. Python开发技术详解(视频+源码+文档)

    Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...

  8. 简易富文本编辑器bootstrap-wysiwyg源码注释

    好久没写随笔了,因为最近比较忙,小公司基本都是一个前端干所有属于和部分不属于前端的事情,所以就没空弄了,即使想分享,也因为没有时间和精力就搁置了. 这周周六日休息,正好时间比较充裕(ps:目前处在单休 ...

  9. Python:游戏:扫雷(附源码)

    这次我们基于 pygame 来做一个扫雷,上次有园友问我代码的 python 版本,我说明一下,我所有的代码都是基于 python 3.6 的. 先看截图,仿照 XP 上的扫雷做的,感觉 XP 上的样 ...

随机推荐

  1. pytorch 矩阵数据增加维度unsqueeze和降低维度squeeze

    增加一个维度 out.unsqueeze(-1) 降低一个维度 out.squeeze(dim=1)

  2. curl发送多维数组

    //通过curl模拟post的请求: function SendDataByCurl($url,$data=array()){ //对空格进行转义 $url = str_replace(' ','+' ...

  3. linux下的.ssh文件夹路径等

    1.linux下的.ssh文件夹在~下,直接cd ~/.ssh即可 2.tp经过gd类处理过的水印图片格式为png 3.前端扒下别人家的网站如果自己本地打开有出现相同的代码段则有可能是js动态添加的, ...

  4. Python(10)

    如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a.b.c可能的组合? # 注意是三重循环 for a in range(0, 1001): for b i ...

  5. vue项目中使用bpmn-基础篇

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项 ...

  6. 谷歌提高Google Assistant中Voice Match的准确性

    谷歌正在提高 Google Assistant 中 Voice Match 的准确性,使其变得更加完善.谷歌表示一旦用户在 Google Assistant 中启用 Voice Match 功能,那么 ...

  7. QQ靓号资料空白且空间开通教程

    QQ靓号资料空白且空间开通教程 首先你需要两个QQ号第一个是普通QQ号第二个是去这个官方网站注册一个QQ免费靓号https://ssl.zc.qq.com/v3/index-chs.html?type ...

  8. Django 内置分页的简单使用

    1, 文档 https://docs.djangoproject.com/en/1.11.1/topics/pagination/ 2,视图 from django.core.paginator im ...

  9. postman的使用概览

    本文主要描述postman的功能与使用方法Postman是404大厂的基于javascript语言完成的一款超级强大的插件,名字也很亲近(邮递员).可以用于做API请求测试.前端后台测试使用Postm ...

  10. Joomla CMS 3.2-3.4.4 SQL注入 漏洞分析

    RickGray · 2015/10/26 11:24 昨日,Joomla CMS发布新版本3.4.5,该版本修复了一个高危的SQL注入漏洞,3.2至3.4.4版本都受到影响.攻击者通过该漏洞可以直接 ...