Python作业之工资管理

                                             作业之工资管理

工资管理实现要求:

工资管理系统

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

再见!

具体代码如下:

方法1:

import os
if not os.path.exists('d:\\users\\info.txt'):
    f = open('d:\\users\\info.txt','w')
    f.write('工资管理系统\nAlex 100000\nRain 80000\nEgon 50000\nYuan 30000\n')
    f.close()
menu = ['查询员工工资','修改员工工资','增加新员工记录','退出']
while True:
    print('欢迎来到工资管理系统!'.center(30,'*'))
    for index,option in enumerate(menu,1):#枚举并遍历菜单
        print(index,option)
    choice = input('请选择:').strip()
    if choice == str(1):
        name_c = input('请输入要查询的员工姓名(例如:Alex):').strip()
        f = open('d:\\users\\info.txt')
        f.readline()#先读取第一行内容(标题中间无空格,因此先读取标题)
        names = []#声明一个存储用户名的空列表
        salary = []#声明一个存储工资的空列表
        for line in f:#遍历文件内容
            names.append(line.strip().split()[0])#把文件中每行内容空格前面的内容添加到列表中
            salary.append(line.strip().split()[1])#把文件中每行内容空格后面的内容添加到列表中
        if name_c in names:
            print('%s的工资为:%s'%(name_c,salary[names.index(name_c)]))
        f.close()
    if choice == str(2):
        name_m = input('请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):')
        f = open('d:\\users\\info.txt')
        f.readline()
        if name_m.strip().split()[0] in [name.strip().split()[0] for name in f]:#判断输入的用户名是否存在于文件中
            modify = []#声明一个列表存储文件每行内容
            f.seek(0)#由于上述判断读取了文件,因此需要把指针跳指开始
            for line in f:
                if name_m.strip().split()[0] == line.strip().split()[0]:#判断输入的用户名是否存在该行内容中
                    line = name_m.strip()+'\n'
                modify.append(line)
            f.close()#关闭只读模式的文件
            print(modify)
            f = open('d:\\users\\info.txt','w')#再次打开文件,只写模式
            for m_line in modify:#编历列表,把每行内容写入到文件中
                f.write(m_line)
            f.close()
    if choice == str(3):
        name_a = input('请输入要增加的员工姓名和工资,用空格分隔(例如:Mary 10):')
        f = open('d:\\users\\info.txt','a')
        f.write(name_a.strip()+'\n')
        f.close()
        print('增加成功!')
    if choice == str(4):
        print('再见!')
        break

注:该代码在修改用户工资时只使用原文件,需要把文件内容先保存到内存中,如果文件比较大,速度会比较慢,不推荐使用!

方法2:

import os
if not os.path.exists('d:\\users\\info.txt'):
    f = open('d:\\users\\info.txt','w')
    f.write('工资管理系统\nAlex 100000\nRain 80000\nEgon 50000\nYuan 30000\n')
    f.close()
menu = ['查询员工工资','修改员工工资','增加新员工记录','退出']
while True:
    print('欢迎来到工资管理系统!'.center(30,'*'))
    for index,option in enumerate(menu,1):#枚举并遍历菜单
        print(index,option)
    choice = input('请选择:').strip()
    if choice == str(1):
        name_c = input('请输入要查询的员工姓名(例如:Alex):').strip()
        f = open('d:\\users\\info.txt')
        f.readline()#先读取第一行内容(标题中间无空格,因此先读取标题)
        names = []#声明一个存储用户名的空列表
        salary = []#声明一个存储工资的空列表
        for line in f:#遍历文件内容
            names.append(line.strip().split()[0])#把文件中每行内容空格前面的内容添加到列表中
            salary.append(line.strip().split()[1])#把文件中每行内容空格后面的内容添加到列表中
        if name_c in names:
            print('%s的工资为:%s'%(name_c,salary[names.index(name_c)]))
        f.close()
    if choice == str(2):
        name_m = input('请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):')
        f1 = open('d:\\users\\info.txt')
        f2 = open('d:\\users\\info2.txt','w')
        if name_m.strip().split()[0] in [i.strip().split()[0] for i in f1]:#判断输入的用户名是否存在于文件中
            f1.seek(0)#由于上述判断读取了文件,因此需要把指针跳指开始
            for line in f1:
                if name_m.strip().split()[0] == line.strip().split()[0]:#判断输入的用户名是否存在该行内容中
                    line = name_m.strip()
                f2.write(line+'\n')
            print('修改成功!')
        f1.close()
        f2.close()
        f1 = open('d:\\users\\info.txt','w')
        f2 = open('d:\\users\\info2.txt')
        for line in f2:#遍历文件把f2文件中的内容覆盖性地写入到f1文件中
            f1.write(line)
        f1.close()
        f2.close()
    if choice == str(3):
        name_a = input('请输入要增加的员工姓名和工资,用空格分隔(例如:Mary 10):')
        f = open('d:\\users\\info.txt','a')
        f.write(name_a.strip()+'\n')
        f.close()
        print('增加成功!')
    if choice == str(4):
        print('再见!')
        break

注:该代码在修改用户工资时使用到两个文件,然后把新创建的文件内容覆盖性写入到原文件,当文件比较大时,该方法比方法1速度要快。

posted @ 2017-09-17 17:58  Python改变生活  阅读(765)  评论(0编辑  收藏  举报