'''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()