作业需求:

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,re operation_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()]))
break
else:
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))
break
else:
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)
break def 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())
break
else:
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

老男孩Day3作业:工资管理系统的更多相关文章

  1. Python作业工资管理系统(第三周)

    作业内容: 实现效果: 从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件. 效果演示: 1. 查询员工工资 2. 修改员工工资 3. 增加新员工 ...

  2. 职工工资管理系统 --C语言

    #include<stdio.h> #include<string.h> #include<stdlib.h> #define NUM 1000 void ente ...

  3. 4_python之路之模拟工资管理系统

    python之路之模拟工资管理系统 1.程序说明:Readme.txt 1.程序文件:salary_management.py info.txt 2.程序文件说明:salary_management. ...

  4. 老男孩Day13作业:ORM学员管理系统

    一.作业需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图: 管理班级,可创建班级,根据学员qq号把学员加入班级      可创建指定班级的上课纪录,注意一节上 ...

  5. 老男孩python作业8-学员管理系统

    学员管理系统开发: 需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上 ...

  6. 老男孩Day7作业:选课系统

    1.作业需求:角色:学校.学员.课程.讲师 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3. 课程包 ...

  7. #006 C语言大作业学生管理系统第三天

    还差最后两部分 读取文件 恢复删除的学生信息 先学会处理文件的 知识点,再继续跟着视频做这个作业. 应该明天周六能把视频里手把手教的学生管理系统敲完 第二周尽量自己能完成C语言课本最后面那道学生管理系 ...

  8. #004 C语言大作业学生管理系统试着做

    链表不会用 文件不会使 在这种情况下就边写边做 希望这个月能做完这个作业 #include<stdio.h> #include<stdlib.h> #include<st ...

  9. python作业学员管理系统(第十二周)

    作业需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上课纪录对应多条学 ...

随机推荐

  1. C++模板的一些巧妙功能

    判断类中是否有指定名称的函数: #include<utility> #define HAS_MEMBER(member)\ template<typename T,typename. ...

  2. java集合类(2)

    java集合的主要分为三种类型:JAVA集合位于 java.util包 Set(集) List(列表) Map(映射) arrays函数, equals():比较两个array是否相等. fill() ...

  3. 如何同时打开两个UltraEdit

    高级—配置—应用程序布局—其它,勾上资源管理器选的文件将以独立的UltraEdit打开和允许多个UltraEdit

  4. oracle connect by用法篇 (包括树遍历)之二

    3.2查询当前时间往前的12周的开始时间.结束时间.第多少周 , ) - (rownum ) as startDate, sysdate , 'd'))) - (rownum ) as endDate ...

  5. contentvalue的探究(结构,用途)

    contentvalue类似HASHMAP,但是KEY只能为STRING 该类用于数据库操作时对数据的封装,可以避免使用SQL语句,为后期创建CONTENTPROVIDER提供便利. 如果没有上述需求 ...

  6. ReactNative安装配置

    1.安装jdk1.8,配置好path, javac,java -version 2.安装设置Android sdk a. 解压:D:\www\sdk\adt-bundle-windows-x86_64 ...

  7. 安装了多个php版本,如何编译扩展

    cd /data/php-5.5.35/ext/mysqli  找到安装包目录下面的ext目录 ./configure --with-php-config=/usr/local/php5/bin/ph ...

  8. Ubuntu Java Env

    From http://www.cnblogs.com/BigIdiot/archive/2012/03/26/2417547.html Java 环境变量 用户环境变量通常被存储在下面的文件中: ~ ...

  9. php学习笔记-include

    这个和C语言中的include是同样的用法,如果一个php文件中有一句include a.php,那么执行的时候就会把a.php的内容插入到这个php文件中. 举个例子,我现在有一个名为hellowo ...

  10. php学习笔记-foreach循环

    顾名思义,foreach是for each的连写,不是for reach.意思就是对数组中的每个元素都要处理一次. foreach只能用来处理数组. 有两种用法,先看第一种. foreach(arra ...