作业3:week3-工资管理系统

## 第3周 工资管理系统(练习文件操作)
#### 作者:庞雄江
#### [博客地址,点击URL](http://www.cnblogs.com/pxj2017.html)

### 1 作业需求:
工资管理系统
Alex 100000
Rain 80000
Egon 50000
Yuan 30000
-----以上是info.txt文件-----
实现效果:
从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件。
效果演示:
1. 查询员工工资
2. 修改员工工资
3. 增加新员工记录
4. 退出
>>:1
请输入要查询的员工姓名(例如:Alex):Alex
Alex的工资是:100000。
1. 查询员工工资
2. 修改员工工资
3. 增加新员工记录
4. 退出
>>:2
请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):Alex 10
修改成功!
1. 查询员工工资
2. 修改员工工资
3. 增加新员工记录
4. 退出
>>:3
请输入要增加的员工姓名和工资,共空格分割(例如:Eric 100000):Eric 100000
增加成功!
1. 查询员工工资
2. 修改员工工资
3. 增加新员工记录
4. 退出
>>:4
再见!

### 2 需求分析
1.要有4个功能查询、增加、修改、退出
2.info.txt文件存放员工工资信息
3.增加和修改信息后写入info.txt
4.查询,增加和修改的员工姓名后,打印出员工的姓名和工资
5.修改的员工姓名和工资后,打印出员工的姓名和工资,修改成功!
6.增加员工姓名个工资,打印增加成功!
7.退出,打印再见!


### 3 测试
程序开始后输入1,2,3,4有如下操作:
1.输入1查询员工工资并打印;
2.输入2,3增加和修改员工姓名和工资后写入info.txt
3.输入4退出打印。


### 4 代码
# 导入模块
import sys
import os

# 员工信息存储文件
filename = 'info.txt'

# 过滤空行后的员工信息文件
new_filename = 'new_info.txt'

# 员工姓名列表
info_dict = {}
# 员工工资列表
user_dict = {}


# 提取用户信息
def info():
with open(filename, 'r') as f:
for i in f:
if not i.startswith('\n'):
i = i.strip()
# 把员工和工资信息加入字典
info_dict[i.split(' ')[0]] = i.split(' ')[1]


# 删除和移动文件
def file():
# 把原文件删除
os.remove(filename)
# 把新文件重命名为原文件名
os.rename(new_filename, filename)


# 查询
def select():
while True:
info()
user_info = input('请输入员工姓名:').strip()
if user_info in info_dict.keys():
print('%s的工资是:%s' % (user_info, info_dict[user_info]))
break
else:
print('用户不存在!!!')


# 新增
def insert():
while True:
info()
user_info = input('请输入要增加的员工姓名和工资:').strip()
# 把新员工的姓名和工资加入字典
user_dict[user_info.split(' ')[0]] = user_info.split(' ')[1]
# 把新员工信息转为列表
user_list = user_info.split(' ')
# 当新员工在当前员工信息文件中不存在
if user_list[0] not in info_dict.keys():
user_info = '\n' + user_info + '\n'
# 写入新员工信息到文件中
with open(filename, 'a+') as f:
f.write(user_info)
print('%s 添加成功!' % user_list[0])
break
else:
# 当新员工在当前员工信息文件中存在
print('用户已存在!!!')


# 修改
def update():
while True:
info()
user_info = input('请输入要修改的员工姓名和工资:').strip()
# user_dict[user_info.split(' ')[0]] = user_info.split(' ')[1]
# 把新员工信息转为列表
user_list = user_info.split(' ')
# 当前需要修改的员工信息
user_now = '%s %s' % (user_list[0], info_dict[user_list[0]])
# 当新员工在当前员工信息文件中存在
if user_list[0] in info_dict.keys():
with open(filename, 'r') as fr, open(new_filename, 'w') as fw:
tag = False
for i in fr:
if i.strip() == user_now:
tag = True
continue
if not tag:
fw.write(i)
else:
fw.write(user_info + '\n\n')
if tag and i.startswith('\n'):
tag = False
file()
print('%s 修改成功!' % user_list[0])
break
else:
# 当新员工在当前员工信息文件中不存在
print('用户不存在!!!')


# 删除
def delete():
while True:
info()
user_info = input('请输入要删除的员工姓名:').strip()
# 当前需要修改的员工信息
user_now = '%s %s' % (user_info, info_dict[user_info])
# 当删除的员工在当前员工信息文件中存在
if user_info in info_dict.keys():
with open(filename, 'r') as fr, open(new_filename, 'w') as fw:
tag = False
for i in fr:
if i.strip() == user_now:
tag = True
continue
if not tag:
fw.write(i)
if tag and i.startswith('\n'):
tag = False
file()
print('%s 删除成功!' % user_info)
break
else:
# 当删除的员工在当前员工信息文件中不存在
print('用户不存在!!!')


choose_msg = '''
1: 查询
2: 新增
3: 修改
4: 删除
5: 退出
'''

salary = {
'1': select,
'2': insert,
'3': update,
'4': delete,
'5': sys.exit,
}

while True:
print(choose_msg)
# 选择操作
choose = input('\033[31;1m请输入操作选项:\033[0m').strip()
if choose not in salary.keys():
continue
salary[choose]()

###备注
本次作业想了好久,没写出来,看了网上别人的代码才模仿出来,函数没学好很多代码没看明白,回头再看下视频,敷衍了事,惭愧。
posted @ 2018-01-22 23:54  姜戈2017  阅读(142)  评论(0编辑  收藏  举报