zoukankan      html  css  js  c++  java
  • 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 == '
    ':
                    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('
    ')
                    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('
    ')
            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('
    ')
                        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()
  • 相关阅读:
    转载:c++内存泄露机制
    推荐一款不错的dialog小工具:artDialog
    写的一些推广方法 拿出来分享下
    struts2标签具体解释
    父亲节:再见,总有一天
    Hadoop是什么
    熊猫烟花集团完美见证异速联远程接入系统
    OpenStack Networking
    管道(Pipe)/createPipe
    百度2014校园招聘算法——给出一组数据A=[a_0, a_1, a-2, ... a_n](当中n可变),打印出该数值元素的全部组合。
  • 原文地址:https://www.cnblogs.com/hongyu0518/p/9689779.html
Copyright © 2011-2022 走看看