【路飞学城】第二模块作业二

【路飞学城】第二模块作业二现要求你写⼀个简单的员⼯信息增删改查程序,需求如下:该表在⽂件中的存储⽅式:⽂件名:staff_table(⽂件内容如下)每⼀句对应的内容:序号,姓名,年龄,⼿机号,部分,入职时间1,AlexLi,22,13651054608,IT,2013-04-012,JackWang,28,13451024608,HR,2015-01-073,RainWang,21,13451054608,IT,2017-04-014,MackQiao,44,15653354208,Sales,2016-02

现要求你写⼀个简单的员⼯信息增删改查程序,需求如下:
该表在⽂件中的存储⽅式:
在这里插入图片描述

⽂件名:staff_table(⽂件内容如下)

每⼀句对应的内容:序号,姓名,年龄,⼿机号,部分,入职时间

1,Alex Li,22,13651054608,IT,2013-04-01
2,Jack Wang,28,13451024608,HR,2015-01-07
3,Rain Wang,21,13451054608,IT,2017-04-01
4,Mack Qiao,44,15653354208,Sales,2016-02-01
5,Rachel Chen,23,13351024606,IT,2013-03-16
6,Eric Liu,19,18531054602,Marketing,2012-12-01
7,Chao Zhang,21,13235324334,Administration,2011-08-08
8,Kevin Chen,22,13151054603,Sales,2013-04-01
9,Shit Wen,20,13351024602,IT,2017-07-03
10,Shanshan Du,26,13698424612,Operation,2017-07-02

作业需求:

对⽤户输⼊的字符串进⾏解析,从⽂件中筛选出相应符合条件的结果集,对文件实现增删改查

小编累了,直接贴码吧,good job

import os

staff_msg = '''1,Alex Li,22,13651054608,IT,2013-04-01 2,Jack Wang,28,13451024608,HR,2015-01-07 3,Rain Wang,21,13451054608,IT,2017-04-01 4,Mack Qiao,44,15653354208,Sales,2016-02-01 5,Rachel Chen,23,13351024606,IT,2013-03-16 6,Eric Liu,19,18531054602,Marketing,2012-12-01 7,Chao Zhang,21,13235324334,Administration,2011-08-08 8,Kevin Chen,22,13151054603,Sales,2013-04-01 9,Shit Wen,20,13351024602,IT,2017-07-03 10,Shanshan Du,26,13698424612,Operation,2017-07-02 '''
def init_staff_msg():
    ''' 初始化员工信息表 :return: '''
    with open('staff_msg.txt','w') as f:
        f.writelines(staff_msg)

def print_staff_msg():
    ''' 打印出员工信息表 :return: '''
    print('员工信息表'.center(50,'*'))
    with open('staff_msg.txt','r') as f:
        for line in f:
            print(line)
#TODO:查询员工信息
def inquire_msg():
    ''' 模糊查询员工信息 :return: '''
    msg = ''' 请按照如下样例进行查询: 1. find name,age from staff_table where age > 22 2. find * from staff_table where dept = "IT" 3. find * from staff_table where enroll_date like "2013" '''
    update_staff_msg = []       # 存储满足查询条件的员工信息
    while True:
        print(msg)
        user_input = input('请输入查询命令,按照上面格式正确输入,别弄错了哦,大兄弟:>>>:').strip().split(' ') # 按照空格分割,得到一个列表
        if user_input[5] == 'age' and user_input[-2] == '>':      # 按照条件1查询
            with open('staff_msg.txt','r') as f:
                for line in f:
                    staff_msg_list = line.strip().split(',')        # 将字符串按照','分割成一个列表
                    if staff_msg_list[2] > user_input[7]:
                        update_staff_msg.append(staff_msg_list)     # 将满足条件的员工信息加入到列表
            break
        elif user_input[5] == 'age' and user_input[-2] == '<':  # 按照条件1查询
            with open('staff_msg.txt', 'r') as f:
                for line in f:
                    staff_msg_list = line.strip().split(',')  # 将字符串按照','分割成一个列表
                    if staff_msg_list[2] < user_input[7]:
                        update_staff_msg.append(staff_msg_list)  # 将满足条件的员工信息加入到列表
            break
        elif user_input[5] == 'age' and user_input[-2] == '=':  # 按照条件1查询
            with open('staff_msg.txt', 'r') as f:
                for line in f:
                    staff_msg_list = line.strip().split(',')  # 将字符串按照','分割成一个列表
                    if staff_msg_list[2] == user_input[7]:
                        update_staff_msg.append(staff_msg_list)  # 将满足条件的员工信息加入到列表
            break
        elif user_input[5] == 'dept':   # 按照条件2查询
            with open('staff_msg.txt','r') as f:
                for line in f:
                    staff_msg_list = line.strip().split(',')
                    if staff_msg_list[-2] == eval(user_input[7]):
                        update_staff_msg.append(staff_msg_list)
            break
        elif user_input[5] == 'enroll_date':    # 按照条件3查询
            with open('staff_msg.txt','r') as f:
                for line in f:
                    staff_msg_list = line.strip().split(',')
                    if staff_msg_list[5].split('-')[0] == eval(user_input[7]):
                        update_staff_msg.append(staff_msg_list)
            break
        else:
            print("输入错误,请重新输入。")
    print("满足查询条件的员工信息如下,人数为:\033[31;1m%d\033[0m。" % len(update_staff_msg))
    [print(update_staff_msg[i]) for i in range(len(update_staff_msg))]
#TODO:添加新员工信息
def add_new_staff():
    ''' 创建新员工记录 :return: '''
    msg = ''' 请按照如下样例创建新员工记录: add staff_table Alex Li,25,134435344,IT,2015-10-29 '''
    while True:
        print(msg)
        user_input = input("请输入查询命令,按照上面格式正确输入,别弄错了哦,大兄弟>>>:").strip().split(',')
        if user_input[0].split(' ')[0] == 'add':        # 输入格式正确
            user_input[0] = ' '.join(user_input[0].split(' ')[2:])
            with open('staff_msg.txt','r+') as f:
                staff_phone = []                # 存储员工信息的电话号码phone
                for line in f:
                    staff_phone.append(line.strip().split(',')[3])
                if user_input[2] in staff_phone:
                    print("这条记录已经存在。不能重复插入信息!!!")
                else:
                    new_staff_index = str(len(staff_phone) + 1)         # 得到新添加员工的索引
                    user_input.insert(0,new_staff_index)                # 将索引值插入到最前面
                    user_input = ','.join(user_input)                   # 列表-->字符串
                    f.write(user_input)
                    f.write('\n')
                    print("新员工记录添加完成。")
                    break
        else:
            print("输入错误,请重新输入。")

#TODO:删除相关员工信息
def delete_staff():
    ''' 删除员工信息 :return: '''
    msg = ''' 请按照如下样例删除员工信息: del from staff where id=3 '''
    while True:
        print(msg)
        user_input = input('请输入查询命令,按照上面格式正确输入,别弄错了哦,大兄弟>>>:').strip().split(' ')
        if user_input[0] == 'del':
            file_old = open('staff_msg.txt','r+')
            file_new = open('staff_msg_new.txt','w')
            for line in file_old:
                line_split = line.strip().split(',')
                if user_input[4].split('=')[1] != line_split[0]:    # 不符合条件的员工信息保存下来,写入新的文件
                    file_new.write(line)
            file_new.close()
            file_old.close()
            os.remove('staff_msg.txt')          # 删除旧文件
            os.rename('staff_msg_new.txt','staff_msg.txt')      # 重命名新文件
            print("员工信息删除成功。")
            break
        else:
            print("输入错误,请重新输入")
#TODO:更新员工信息
def update_staff_msg():
    ''' 更新员工信息 :return: '''
    msg = ''' 请按照如下样例更新员工信息: UPDATE staff_table SET dept="Market" WHERE dept="IT" UPDATE staff_table SET age=25 WHERE name="Alex Li" '''
    while True:
        print(msg)
        user_input_raw = input('请输入查询命令,按照上面格式正确输入,别弄错了哦,大兄弟>>>:').strip()
        user_input = user_input_raw.split(' ')
        if user_input[0].lower() == 'update':
            count = 0       # 计数,记录的改动次数
            file_old = open('staff_msg.txt','r+')
            file_new = open('staff_msg_new.txt','w+')
            update_msg_new = []             # 存储更新后的员工信息
            update_msg_old = []             # 存储更新前的员工信息
            for line in file_old:
                line = line.strip().split(',')          # 字符串-->列表
                if user_input[5].split('=')[0] == 'dept':   # 按照样例1更新员工信息
                    if line[4] == eval(user_input[5].split('=')[1]):
                        update_msg_old.append(','.join(line))
                        line[4] = eval(user_input[3].split('=')[1])
                        line = ','.join(line)
                        count+=1
                        update_msg_new.append(line)
                    else:
                        line = ','.join(line)

                elif user_input[5].split('=')[0] == 'name': # 按照样例2更新员工信息
                    if line[1] ==  eval(user_input_raw.split('=')[2]):
                        update_msg_old.append(','.join(line))
                        line[2] = user_input[3].split('=')[1]
                        line = ','.join(line)
                        count+=1
                        update_msg_new.append(line)
                    else:
                        line = ','.join(line)

                else:
                    pass
                file_new.write(line)
                file_new.write('\n')
            print("您总共修改了\033[31;1m%d\033[0m条记录" % count)
            print("修改前的\033[31;1m%d\033[0m个员工信息" % count)
            [print(update_msg_old[i]) for i in range(len(update_msg_old))]
            print("修改后的\033[31;1m%d\033[0m个员工信息" % count)
            [print(update_msg_new[i]) for i in range(len(update_msg_new))]

            file_old.close()
            file_new.close()
            os.remove('staff_msg.txt')
            os.rename('staff_msg_new.txt','staff_msg.txt')
            break
        else:
            print("输入错误,请重新输入。")

def main():
    ''' 主函数 :return: '''
    msg = ''' 1、查询员工信息 2、添加新员工信息 3、删除员工信息 4、更改员工信息 5、打印所有员工信息 6、退出程序 '''
    init_staff_msg()
    while True:
        print(msg)
        user_choose = input("请输入你的选择>>>")
        if user_choose == '1':
            inquire_msg()
        elif user_choose == '2':
            add_new_staff()
        elif user_choose == '3':
            delete_staff()
        elif user_choose == '4':
            update_staff_msg()
        elif user_choose == '5':
            print_staff_msg()
        elif user_choose == '6':
            exit("程序结束!!!")
        else:
            print("您的选择有误,请重新输入")

if __name__ == '__main__':
    main()

今天的文章【路飞学城】第二模块作业二分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/29733.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注