'''python 员工信息表操作,刚学习,没有思路,参照网上某位朋友的写的'''
importsysimportosdefselect1():'''查看文件的函数
:return:'''with open('e:\\员工信息.txt',mode='r',encoding='utf-8') as f:
line=f.readlines()for i inline:print(i.strip())defselect():'''查询函数
: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 inf:
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 inf:
lis_dept= line.strip().split(',')if lis_dept[4] == eval(user_choice_input1[7]):
list_dept.append(lis_dept)for list_dept1 inlist_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 inf:
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 inlist_data:print(','.join(list_data1))print('符合条件的人数有 %s 人' %len(list_data))defalter():'''添加命令
: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] inlist_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)) #如果里面有内容,先进行换行,再进行写入
defdelete():'''删除函数
: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 inf:
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:continuef.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
defmain():'''主程序
:return:'''
print('员工信息表操作作业练习:')
msg= '''请输入要进行的操作
1.查询
2.添加
3.删除
4.退出'''
whileTrue: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()