python作业员工信息表程序(第四周)
作业需求:
1. 员工信息表程序,实现增删改查操作:
2. 可进行模糊查询,语法至少支持下面3种:
select name,age from staff_table where age > 22
select * from staff_table where dept = "IT"
select * from staff_table where enroll_date like "2013"
查到的信息,打印后,最后面还要显示查到的条数
3. 可创建新员工纪录,以phone做唯一键,staff_id需自增
4. 可删除指定员工信息纪录,输入员工id,即可删除
5. 可修改员工信息,语法如下:
UPDATE staff_table SET dept="Market" where dept = "IT"
6. 注意:以上需求,要充分使用函数,请尽你的最大限度来减少重复代码
思路解析:
1. 将原始员工信息记录到文件
2. 读取文件并添加到列表,进行添加删除更新操作,并写入到文件中
程序核心代码:
peopledb
1,Jack Wang,30,43304320533,INS,2015-05-03 2,Alex Li,22,23651054608,IT,2013-04-01
员工信息表.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Colin Yao
"""python 员工信息表操作"""
import sys
import os def select1():
'''
查看文件函数
:return:
'''
with open('peopledb', 'r', encoding='utf-8') as f:
line = f.readlines()
for i in line:
print(i)
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('peopledb', 'r+', encoding='utf-8') as f:
list1 = []
count = 0
for line in f:
i = line.strip().split(',')
if i[2] > user_choice_input1[7]:
list1.append(i)
for s in list1:
count = count + 1
for j in list1:
print(j)
print('满足条件的个数为>>:%s' % (count))
elif user_choice_input == ('select * from staff_table where dept = %s' % (user_choice_input1[7])):
with open('peopledb', 'r+', encoding='utf-8') as f:
list2 = []
count = 0
for line in f:
i1 = line.strip().split(',')
if i1[4] == eval(user_choice_input1[7]):
list2.append(i1)
for s1 in list2:
count = count + 1
# print(list1)
for j1 in list2:
print(j1)
print('满足条件的个数为>>:%s' % (count))
elif user_choice_input == ('select * from staff_table where enroll_date like %s' % (user_choice_input1[7])):
with open('peopledb', 'r+', encoding='utf-8') as f:
list3 = []
list4 = []
count = 0
for line in f:
i = line.strip().split(',')
list3.append(i)
for j in list3:
m = j[5].split('-')
if m[0] == eval(user_choice_input1[7]):
list4.append(j)
for s in list4:
count = count + 1
if count < 1:
print("没有找到类似的条目:")
pass
else:
pass
for j in list4:
print(j)
print('满足条件的条数为>>:%s' % (count))
return () def alter():
'''
添加函数
:return:
'''
msg = ''' 1)添加命令如下:Jack Wang,30,13304320533,HR,2015-05-03 '''
print(msg)
user_choice_input = input("请输入命令>>>:")
user_choice_input1 = user_choice_input.split(',')
with open('peopledb', 'r+', encoding='utf-8') as f:
list = []
for line in f:
s2 = line.strip().split(',')
m = s2[3]
list.append(m)
if user_choice_input1[2] in list:
print('这条记录已经存在')
main()
else:
my_index = str(len(list) + 1)
user_choice_input1.insert(0, my_index)
user_choice_input1 = ','.join(user_choice_input1)
f.write('\n')
f.write(user_choice_input1)
f.close()
print("记录添加完成", '\n')
select1()
return () def delect():
'''
删除函数
:return:
'''
print("请输入删除命令例如: 输入用户ID 既可以从staff_table里删除")
msg = '''
1)按1 删除、直接删除ID即可
2)按2或者q退出
3)按任意返回上一层
'''
print(msg)
user_choice_input = input("请输入命令>>>: ")
if user_choice_input == '':
print("现有的用户为:")
select1()
print('\n')
user_choice_input1 = input("请输入需要删除的用户ID:")
user_choice_input2 = user_choice_input1[0]
f = open('peopledb', 'r+', encoding='utf-8')
f1 = open('new_peopledb', 'w+', encoding='utf-8')
for line in f:
i = line.strip().split(',')
i1 = i[0]
if user_choice_input2 != i1:
i = ','.join(i)
f1.write(i)
f1.write('\n')
else:
continue
f.close()
f1.close()
os.remove('peopledb')
os.rename('new_peopledb', 'peopledb')
print('\n')
select1()
elif user_choice_input == '' or 'q':
sys.exit()
return () def update():
'''
更新函数
:return:
'''
msg = '''
1)这里第一个等号按照没有空格的格式划分
2)命令范例:UPDATE staff_table SET dept="INS" where dept = "HR"
'''
print(msg)
user_choice_input = input("请输入命令>>>:")
user_choice_input1 = user_choice_input.split(' ')
dept = user_choice_input1[3].split('=')
dept_new = dept[1]
dept_old = user_choice_input1[7]
if user_choice_input == ('UPDATE staff_table SET dept=%s where dept = %s' % (dept_new, dept_old)):
dept_new1 = eval(dept_new)
dept_old1 = eval(dept_old)
f = open('peopledb', 'r+', encoding='utf-8')
f1 = open('new_peopledb', 'w+', encoding='utf-8')
for line in f:
i = line.strip().split(',')
dept_change = i[4]
if dept_change == dept_old1:
i[4] = eval(dept_new)
i = ','.join(i)
f1.write(i)
f1.write('\n')
f.close()
f1.close()
os.remove('peopledb')
os.rename('new_peopledb', 'peopledb')
print('\n')
select1()
pass
return () def main():
'''
交互程序
:return:
'''
print("员工信息表操作作业练习")
msg = '''
1)查询
2)添加
3)删除
4)更新
5) 退出
'''
exit_flag = False
while not exit_flag:
print(msg)
user_choice = input("请选择>>:")
if user_choice == '':
select()
elif user_choice == '':
alter()
elif user_choice == '':
delect()
elif user_choice == '':
update()
elif user_choice == '' or 'q':
sys.exit()
else:
print("您的选择有误、请重新输入") main()
python作业员工信息表程序(第四周)的更多相关文章
- day12 python作业:员工信息表
作业要求: 周末大作业:实现员工信息表文件存储格式如下:id,name,age,phone,job1,Alex,22,13651054608,IT2,Egon,23,13304320533,Tearc ...
- python练习题-员工信息表
周末大作业:实现员工信息表文件存储格式如下:id,name,age,phone,job1,Alex,22,13651054608,IT2,Egon,23,13304320533,Tearcher3,n ...
- python写员工信息表作业笔记
需求 流程图
- python-查询员工信息表
python查询员工信息表 基本要求: 用户可以模糊查询员工信息 显示匹配了多少条,匹配字符需要高亮显示 代码: #!/usr/env python #coding:utf-8 import time ...
- python基础之员工信息表作业
周末大礼包 文件存储格式如下: id, name, age, phone, job 1, Alex, 22, 13651054608, IT 2, Egon, 23, 13304320533, Tea ...
- s9.16作业,员工信息表
转载https://blog.csdn.net/qq_35883464/article/details/83151464 实现员工信息表文件存储格式如下:id,name,age,phone,job1, ...
- python's sixteenth day for me 员工信息表
import os user_dic = { 'username':None, 'password':None, 'login':True } flag = False name_list = ['i ...
- python-打印简单公司员工信息表
python-打印简单公司员工信息表 要求,输入name不为空,输入次数最多3次,3次后跳出程序: 知识点: raw_input str转int whil if elif else continue ...
- python3 员工信息表
这是最后一条NLP了......来吧 十二,动机和情绪总不会错,只是行为没有效果而已 动机在潜意识里,总是正面的.潜意识从来不会伤害自己,只会误会的以为某行为可以满足该动机,而又不知道有其他做法的可能 ...
随机推荐
- IDEA中Git的更新/提交/还原方法
记录一下在IDEA上怎样将写的代码提交到GitHub远程库: 下面这个图是基本的提交代码的顺序: 1. 将代码Add到stage暂存区本地修改了代码后,需先将代码add到暂存区,最后才能真正提价到gi ...
- 定制安全的PHP环境
除了熟悉各种PHP漏洞外,还可以通过配置php.ini来加固PHP的运行环境.PHP官方也曾经多次修改php.ini的默认设置.在本书中,推荐php.ini中一些安全相关参数的配置. register ...
- floyd最短路
floyd可以在O(n^3)的时间复杂度,O(n^2)的空间复杂度下求解正权图中任意两点间的最短路长度. 本质是动态规划. 定义f[k][i][j]表示从i出发,途中只允许经过编号小于等于k的点时的最 ...
- 题解 P1765 【手机_NOI导刊2010普及(10)】
说实话,打表真的很累! 所以小金羊又开始暴力出奇迹了! 这个题解适合初学者使用. 知识点:string里面的str.find()函数: 可以查找字符串和字符,有就返回位置(开头是0), 没有就返回st ...
- RabbitMQ 使用详细介绍
1. 实现最简单的队列通信 2. producer端 # !/usr/bin/env python import pika #通过这个实例,先去建立一个socket,默认端口15672 connect ...
- [ZJOI2007]棋盘制作 【最大同色矩形】
题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳. 而我们的 ...
- [学习笔记]FHQ-Treap及其可持久化
感觉范浩强真的巨 博主只刷了模板所以就讲基础 fhq-treap 又形象的称为非旋转treap 顾名思义 保留了treap的随机数堆的特点,并以此作为复杂度正确的条件 并且所有的实现不用旋转! 思路自 ...
- C++中Vector求最大值最小值
vector<int> v: 最大值: int max = *max_element(v.begin(),v.end()); 最小值: int min = *min_element(v.b ...
- Extjs treePanel过滤查询功能【转】
Extjs4.2中,对于treeStore中未实现filterBy函数进行实现,treestore并未继承与Ext.data.Store,对于treePanel的过滤查询功能,可有以下两种实现思路: ...
- GitLab安装部署与管理
一.安装Gitlab前系统预配置准备工作 操作系统:centos 7.3 1.关闭firewalld防火墙 #systemctl stop firewalld //关闭防火墙 #systemctl d ...