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

发布时间:2019-06-30 16:53:12编辑:auto阅读(1572)

    工资管理系统
    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 数据库文件

    Alex 100000
    Rain 80000
    Egon 50000
    Yuan 30000

    hrms.py 运行文件

    #!/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("请输入正确的选项")

关键字