作业需求:

1、从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件。

2、能增查改员工工资

3、增、改员工工资用空格分隔

4、实现退出功能

1)编写思路

编写思路参考下面GitHub链接中的流程图

https://github.com/KongChan1988/51CTO-Treasure/blob/master/Python_Study/%E7%AC%AC%E4%B8%80%E6%A8%A1%E5%9D%97%E5%AD%A6%E4%B9%A0/Day03/HomeWork/OB%2423%259IE%24XR8D59IN0%7B%24SJ.jpg

2)具体实现

#-*- Coding:utf-8 -*-
# Author: D.Gray
'''
作业需求
1、从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件。
2、能增查改员工工资
3、增、改员工工资用空格分隔
4、实现退出功能
'''
import sys,os,reoperation_lists = '''1.查询工资
2.修改工资
3.增加新员工记录
4.删除员工信息
5.退出'''
user_dict = {}                  #定义一个存储员工姓名及工资的空字典
def user_information():'''定义一个员工信息函数'''with open('info','r') as f:for i in f:i = i.strip()           #剔除字符串中的前后空格和换行user_dict[i.split()[0]] = i.split()[1]  #将员工姓名及工资存储到user_dict字典中,i.split()[0]=员工姓名 作为键#i.split()[1]=员工工资  作为值print('当前员工姓名:',i.split()[0])def user_operations():'''定义一个用户操作的函数'''while True:print(operation_lists)user_operation = input('请选择操作编号>>>:')if user_operation.isdigit():user_operation = int(user_operation)if user_operation > 5:print('\033[31;1m请输入有效操作编号\033[0m')if user_operation == 1:user_enquiries()if user_operation == 2:salary_change()if user_operation == 3:add_users()if user_operation == 4:del_users()if user_operation == 5:sys.exit('程序退出')else:print('\033[31;1m请输入有效操作编号\033[0m')def user_enquiries():'''定义一个用户查询的函数'''while True:user_information()enquirie_name = input('请输入要查询的员工姓名(例如:Alex):')if enquirie_name.capitalize() in user_dict:     #将输入的员工姓名首字母变大写,方便用户输入print('\033[32;1m%s\033[0m 工资为: \033[32;1m%s\033[0m元'%(enquirie_name.capitalize(),user_dict[enquirie_name.capitalize()]))breakelse:print('\033[31;1m请输入有效用户名\033[0m')def salary_change():'''定义一个修改工资函数'''while True:user_information()change_salary = input('请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):')salary_lists = change_salary.split()   #将用户输入的姓名和工资以列表形式打印if len(salary_lists) < 2:               #判断输入内容格式是否正确 姓名 工资print('\033[31;1m请输入正确格式内容\033[0m')elif not salary_lists[1].isdigit():     #判断输入的工资是否是数字print('\033[31;1m请输入有效工资金额\033[0m')else:_name = salary_lists[0].capitalize()        #定义_name变量存储 用户输入的姓名_salary = salary_lists[1]                   #定义_salary变量存储 用户输入的工资if _name in user_dict:with open('info','r') as f:lines = f.readlines()with open('info','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))breakelse:print('\033[31;1m该用户不存在\033[0m')def add_users():'''定义一个增加员工函数'''while True:user_information()add_user = input('请输入要增加员工姓名和工资,用空格分隔(例如:Eric 100000):')add_lists = add_user.split()if len(add_lists) < 2:               #判断输入内容格式是否正确 姓名 工资print('\033[31;1m请输入正确格式内容\033[0m')elif not add_lists[1].isdigit():     #判断输入的工资是否是数字print('\033[31;1m请输入有效工资金额\033[0m')else:_name = add_lists[0].capitalize()  # 定义_name变量存储 用户输入的姓名_salary = add_lists[1]  # 定义_salary变量存储 用户输入的工资if _name in user_dict:  #判断输入的姓名是否已存在print('\033[31;1m该用户已存在\033[0m')elif not _name.isalpha():       #判断输入的姓名是否是纯英文print('\033[31;1m请输入正确姓名\033[0m')else:with open('info','a') as f:f.write(_name+' ')f.write(_salary+'\n')print('已将 \033[32;1m%s\033[0m 的信息添加成功' % _name)breakdef del_users():'''定义一个删除员工函数'''while True:user_information()del_user = input('请输入要删除的员工姓名(例如:Alex):')del_name = del_user.capitalize()if del_name in user_dict:     #将输入的员工姓名首字母变大写,方便用户输入confirm_del = input('是否确认删除\033[32;1m%s\033[0m员工信息>>>任意键确认删除、按N不删除:'%del_user.capitalize())if confirm_del.capitalize() != 'N':         #判断用户选择确认删除list = []                               #定义一个空列表存储不需要删除员工信息with open('info','r') as f:lines = f.readlines()for line in lines:if not re.search(del_name,line):   #判断哪些员工不需要删除   del_name为确认删除的员工
                            list.append(line)with open('info','w') as f:f.writelines(list)                      #将不需要删除员工的信息列表重新写入 info文本中print('\033[32;1m%s\033[0m的员工信息已删除'%del_user.capitalize())breakelse:print('\033[31;1m已取消删除\033[0m')else:print('\033[31;1m该用户不存在\033[0m')user_operations()

3)Github笔记

第三周的笔记的地址是:

https://github.com/KongChan1988/51CTO-Treasure/tree/master/Python_Study/%E7%AC%AC%E4%B8%80%E6%A8%A1%E5%9D%97%E5%AD%A6%E4%B9%A0/Day03/Practice%20Notes

4)Readme.md文档

https://github.com/KongChan1988/51CTO-Treasure/blob/master/Python_Study/%E7%AC%AC%E4%B8%80%E6%A8%A1%E5%9D%97%E5%AD%A6%E4%B9%A0/Day03/HomeWork/readme_%E5%B7%A5%E8%B5%84%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F.md

转载于:https://www.cnblogs.com/catepython/p/7425524.html

老男孩Day3作业:工资管理系统相关推荐

  1. Springboot企业工资管理系统r9a51计算机毕业设计-课程设计-期末作业-毕设程序代做

    Springboot企业工资管理系统r9a51计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot企业工资管理系统r9a51计算机毕业设计-课程设计-期末作业-毕设程 ...

  2. java swing员工工资管理系统(大作业)源码+数据库文件+文档

    java swing员工工资管理系统.身份有管理员,员工,适合新手. 技术:java,swing,mysql,jdbc. 功能:登录,员工信息管理(增删改查),部门信息管理(增删改查),员工工资设定( ...

  3. 基于springboot的企业员工工资管理系统(财务系统)

    项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...

  4. java毕业设计基于web的学校工资管理系统Mybatis+系统+数据库+调试部署

    java毕业设计基于web的学校工资管理系统Mybatis+系统+数据库+调试部署 java毕业设计基于web的学校工资管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S ...

  5. 高校教师工资管理系统java_基于jsp的高校职工工资管理系统-JavaEE实现高校职工工资管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的高校职工工资管理系统, 该项目可用各类java课程设计大作业中, 高校职工工资管理系统的系统架构分为前后台两部分, ...

  6. 计算机毕业设计Java小型企业员工工资管理系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java小型企业员工工资管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java小型企业员工工资管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目 ...

  7. 计算机毕业设计Java企业员工工资管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java企业员工工资管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java企业员工工资管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B ...

  8. java毕业生设计员工工资管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计员工工资管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计员工工资管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  9. java计算机毕业设计的工资管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计的工资管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计的工资管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...

  10. mysql工资管理系统题目_java+ssm+mysql工资管理系统

    项目介绍: 本系统为基于jsp+ssm+mysql的企业工资管理系统,包含管理员.员工角色,功能如下: 管理员:登录系统.修改密码.员工管理(增删改).部门管理(增删改).岗位管理(增删改).职称奖金 ...

最新文章

  1. arduino小车前进代码_基于Arduino操纵杆扩展板Funduino制作机器人小车
  2. opengl 贴图坐标控制_材质贴图正确打开方式
  3. linux连接redis 命令_在Docker中使用Redis
  4. makefile 常用命令
  5. C++类内存分布——深度理解继承与虚函数
  6. Java教程之JDBC中的常用接口和类
  7. FB 宕机,Telegram 用户疯涨,P**hub 流量猛增
  8. .Net Core开发日志——Peachpie
  9. mysql无法创建新用户_如何mysql禁止创建新用户
  10. Java第一次上机实验源代码
  11. 数据算法之二叉树平衡(BinTreeNode Rotate)的Java实现
  12. linux入门和简单应用举例
  13. 王道计算机考研数据结构—学习笔记Chapter Five 串String
  14. 关于子网的网络地址和广播地址的计算问题的方法
  15. element ui 中 el-checkbox-group 点击一个全部选中的问题
  16. 算法动态规划之杂交水果取名问题
  17. 怎么把画好的流程图插入到Word中?
  18. 错题本——数据结构(线性表)
  19. 三菱触摸屏怎么改时间_三菱触摸屏界面显示设置
  20. java_Web学习01

热门文章

  1. SVN安装后bin中没有svn.exe,TortoiseSVN安装后bin目录中没有svn.exe;
  2. 实验教学管理系统 c语言程序代写源码下载
  3. 用Not Exists 代替Not In
  4. 【算法】LeetCode算法题-Length Of Last Word
  5. iOS学习笔记总结整理
  6. Mysql DDL与DML
  7. AVR之bootloader介绍
  8. Android书籍翻页效果需要用到的文件
  9. hdu2243 ac自动机
  10. Windows Server 2012 R2服务器集群测试