工资管理系统

作业需求:
工资管理系统
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
再见!

流程图:

代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Lou

# 导入模块
import sys
import os

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

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

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


# 提取用户信息
def info():
    with open(filename, 'r',encoding='utf-8') as f:
        for i in f:
            if not i.startswith('\n'):
                i = i.strip() # 去除前后空格
                i = i.split(' ') #根据空格切片
                info_dict[i[0]] = i[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_list = user_info.split(' ') # 把新员工信息转为列表
        # 把新员工的姓名和工资加入字典
        user_dict[user_info.split(' ')[0]] = user_info.split(' ')[1]
        # 当新员工在当前员工信息文件中不存在
        if user_list[0] not in info_dict.keys():
            # 写入新员工信息到文件中
            with open(filename, 'a+') as f:
                f.write('\n'+ user_info)
            print('%s 添加成功!' % user_list[0])
            break
        else:
            # 当新员工在当前员工信息文件中存在
            print('用户已存在!!!')
    info_dict.clear()


# 修改
def update():
    while True:
        info()
        user_info = input('请输入要修改的员工姓名和工资:').strip()
        # 把新员工信息转为列表
        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',encoding='utf-8') as fr, open(new_filename, 'w',encoding='utf-8') as fw:
                for i in fr:
                    if i.strip() == user_now:
                        fw.write(user_info)
                    else:
                        fw.write(i)
            file()
            print('%s 修改成功!' % user_list[0])
            break
        else:
            # 当新员工在当前员工信息文件中不存在
            print('用户不存在!!!')
    info_dict.clear()


# 删除
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',encoding='utf-8') as fr, open(new_filename, 'w',encoding='utf-8') as fw:
                for i in fr:
                    if i.strip() == user_now:
                        continue
                    else :
                        fw.write(i)

            file()
            print('%s 删除成功!' % user_info)
            break
        else:
            # 当删除的员工在当前员工信息文件中不存在
            print('用户不存在!!!')
    info_dict.clear()

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 @ 2017-12-19 20:35  怪兽蜀黍  阅读(307)  评论(0)    收藏  举报