Python员工信息表作业

'''python 员工信息表操作,刚学习,没有思路,参照网上某位朋友的写的'''

import sys
import os

def select1():
    '''
    查看文件的函数
    :return:
    '''
    with open('e:\\员工信息.txt',mode='r',encoding='utf-8') as f:
        line = f.readlines()
        for i in line:
            print(i.strip())

def select():
    '''
    查询函数
    :return:
    '''
    msg = '''
    请输入或者复制查询命令,如:
    
        1.select name,age from staff_table where age > 22
        2.select * from staff_table where dept = "IT"
        3.select * from staff_table where enroll_date like "2013"
    '''
    print(msg)

    user_choice_input = input('>>>:')  # 让用户输入上面的命令
    user_choice_input1 = user_choice_input.split(' ')  # 用空格分割用户输入的命令

    if user_choice_input == 'select name,age from staff_table where age > %s' % user_choice_input1[7]:
        with open('e:\\员工信息.txt',mode='r+',encoding='utf-8') as f:
            list_age = []  # 定义一个列表。将符合查询条件的员工信息添加进去
            for line in f:
                lis_age = line.strip().split(',')
                if lis_age[2] > user_choice_input1[7]:
                    list_age.append(lis_age)

            for list_age1 in list_age:  # 将列表转换成字符串
                print(','.join(list_age1))
            print('符合条件的人数有 %s 人' %len(list_age))

    elif user_choice_input == 'select * from staff_table where dept = %s' % user_choice_input1[7]:
        with open('e:\\员工信息.txt', mode='r+', encoding='utf-8') as f:
            list_dept = []
            for line in f:
                lis_dept = line.strip().split(',')
                if lis_dept[4] == eval(user_choice_input1[7]):
                    list_dept.append(lis_dept)

            for list_dept1 in list_dept:
                print(','.join(list_dept1))
                print('符合条件的人数有 %s 人' % len(list_dept))
    elif user_choice_input == 'select * from staff_table where enroll_date like %s' % user_choice_input1[7]:
        with open('e:\\员工信息.txt',mode='r',encoding='utf-8') as f:
            list_data = []
            for line in f:
                lis_data = line.strip().split(',')
                lis_year = lis_data[5].strip().split('-')
                if lis_year[0] == eval(user_choice_input1[7]):
                    list_data.append(lis_data)
            for list_data1 in list_data:
                print(','.join(list_data1))
                print('符合条件的人数有 %s 人' % len(list_data))


def alter():
    '''
    添加命令
    :return:
    '''
    msg = '''
    如果要添加一项员工信息,按照如下格式填写,内容与内容之间以逗号隔开,如:
        Jack Wang,30,43304320533,INS,2015-05-03
    '''
    print(msg)
    user_choice_input = input('请输入要添加的内容>>>:')
    user_choice_input1 = user_choice_input.split(',')

    with open('e:\\员工信息.txt',mode='r+',encoding='utf-8') as f:
        list_id = []
        for line in f: # 将现在员工信息的ID号保存到一个列表中 这个ID是使用的员工信息的 10位数字来进行判断的
            if line == '\n':
                continue  # 这个地方是避免读取空行,如果读取空行,下面的添加代码会报错
            lis_msg = line.strip().split(',')
            list_id.append(lis_msg[3])

        if user_choice_input1[2] in list_id:
            print('已经有了这个ID了')
            main()

        else:
            # 设置员工信息的序号
            index = str(len(list_id) + 1)  # list_id 列表的长度其实就是现有员工信息的个数
            # 将需要插入到用户输入的最前面
            user_choice_input1.insert(0,index)  # 在用户输入的信息前面添加上序号
            if len(list_id) == 0:
                f.write(','.join(user_choice_input1))  # 如果里面没有内容,则直接写入,不换行
            else:
                f.write('\n')
                f.write(','.join(user_choice_input1))  # 如果里面有内容,先进行换行,再进行写入

def delete():
    '''
    删除函数
    :return:
    '''
    print('请输入要删除命令:输入用户的序号,既可以从列表中删除用户信息')
    msg = '''
    1.按 1 删除,直接删除用户的序号即可
    2.按 2 或者 q 退出
    3.按下其他任意键,返回上一层
    '''
    print(msg)

    user_choice_input = input('请输入命令:>>>')
    if user_choice_input == '1':
        print('目前用户信息为:')
        select1() # 输入现有用户的信息
        print('\n')
        user_choice_input1 = input('请输入需要删除的ID:>>>')
        with open('e:\\员工信息.txt',mode='r+',encoding='utf-8') as f ,open('e:\\员工信息.bak',mode='w+',encoding='utf-8') as f1:
            index = 1 # 删除的时候用来重新编号
            for line in f:
                lis_msg = line.strip().split(',')
                if user_choice_input1.strip() != lis_msg[0]:
                    lis_msg[0] = str(index)
                    f1.write(','.join(lis_msg))
                    f1.write('\n')
                    index += 1
                else:
                    continue
            f.close()
            f1.close()
            os.remove('e:\\员工信息.txt')
            os.rename('e:\\员工信息.bak','e:\\员工信息.txt')

        select1()


    elif user_choice_input == '2' or user_choice_input.lower() == 'q':
        sys.exit()
    return

def main():
    '''
    主程序
    :return:
    '''
    print('员工信息表操作作业练习:')
    msg = '''
    请输入要进行的操作
    1.查询
    2.添加
    3.删除
    4.退出
    '''
    while True:
        print(msg)
        user_choice_input = input('请输入选项:>>>')
        if user_choice_input.strip() == '1':
            select()
        elif user_choice_input.strip() == '2':
            alter()
        elif user_choice_input.strip() == '3':
            delete()
        elif user_choice_input.strip().lower() == '4' or 'q':
            sys.exit()
        else:
            print('输入有误!请重新输入')

main()

 

转载于:https://www.cnblogs.com/hongyu0518/p/9689779.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值