Python第三周作业--工资管理系统

2020-01-15 12:26:47 浏览数 (1)

代码语言:javascript复制
工资管理系统
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
再见!

info.txt 数据库文件

代码语言:javascript复制
Alex 100000
Rain 80000
Egon 50000
Yuan 30000

hrms.py 运行文件

代码语言:javascript复制
#!/use/bin/env python
# -*- coding:utf-8 -*-
import os
def select(): # 查询员工工资
    with open("info.txt", "r", encoding="utf-8") as f:
        fsb = f.readlines()
    user_choice = input("请输入你要查询的员工姓名:")
    for line in fsb:
        if user_choice.split()[0] in line.split()[0]:
            print(user_choice, "的工资是:",line.split()[1])

def update(): # 修改员工工资
    user_choice_1 = input("请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):").strip()
    with open("info.txt", "r", encoding="utf-8") as f,open("info.bak", "w", encoding="utf-8") as f1:
        for user_list in f:
            if user_list=="n": # 判断文本中有空行的话直接跳过
                continue
            if user_choice_1.split()[0] in user_list.split()[0]: #判断输入的员工是否在文本中
                user_list = user_list.replace(user_list.split()[1], user_choice_1.split()[1]) # 修改员工工资
            f1.write(user_list)# info.txt文本内容已经重新写入info.bak
        f.close()# 关闭f
        f1.close()# 关闭f1
        os.remove("info.txt")# 删除info.txt文件
        os.rename("info.bak","info.txt")# 把info.bak文本重新命名为info.txt
    print("修改成功")

def add(): # 添加新员工
    user_add = input("请输入要增加的员工姓名和工资(例如:Eric 100000):")
    with open("info.txt", "a", encoding="utf-8") as f:
        # f.seek(0)
        f.write('n'   user_add)
        print("添加成功")

def delete(): # 删除员工
    user_choice = input("请输入要删除的员工姓名:").strip()
    with open("info.txt", "r", encoding="utf-8") as f, open("info.bak", "w", encoding="utf-8") as f1:
        for user_list in f:
            if user_list =="n": # 判断文本中有空行的话直接跳过
                continue
            if user_choice in user_list.split()[0]:  # 判断输入的员工是否在文本中
                continue # 直接跳过输入的用户,这样也相当于删除了
            f1.write(user_list) # 输入的用户直接跳过了,所以不会加载到文本中
        f.close() # 关闭f
        f1.close() # 关闭f1
        os.remove("info.txt") # 删除info.txt文件
        os.rename("info.bak", "info.txt") # 把info.bak文本重新命名为info.txt
    print("删除成功")

while True:
    user_chioce = '''
    1.查询员工工资
    2.修改员工工资
    3.增加新员工记录
    4.删除员工
    5.退出
    '''
    print(user_chioce)
    user_choice = input("请输入你的选择:")
    if user_choice.isdigit(): # 判断输入的是否数字类型
        if user_choice == '1':
            select() # 查询
        elif user_choice == '2':
            update() # 修改
        elif user_choice == '3':
            add() # 添加
        elif user_choice == '4':
            delete() # 删除
        elif user_choice == '5':
            exit() # 退出
        else:
            print("请输入正确的选项")
    else:
        print("请输入正确的选项")

0 人点赞