最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

实现员工信息表展示功能

来源:动视网 责编:小采 时间:2020-11-27 14:14:07
文档

实现员工信息表展示功能

实现员工信息表展示功能:README: 1. 员工信息表程序,实现增删改查操作: 1).可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select * from staff_table where dept = "IT" selec
推荐度:
导读实现员工信息表展示功能:README: 1. 员工信息表程序,实现增删改查操作: 1).可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select * from staff_table where dept = "IT" selec
 README:

 1. 员工信息表程序,实现增删改查操作:

  1).可进行模糊查询,语法至少支持下面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"
    最后显示有查到的条数
  2).可创建新员工纪录,以phone做唯一键,staff_id需自增
  3).可删除指定员工信息纪录,输入员工id,即可删除
  4).可修改员工信息,语法如下:
    UPDATE staff_table SET dept="Market" WHERE dept = "IT"

流程图:

代码:

# coding:utf8import sysimport redef select(staff, field):
 cmd = input("cmd>").strip()
 cmd = cmd.replace('FROM', 'from')
 cmd = cmd.replace('WHERE', 'where')if '*' in cmd:for i in field.keys():
 sys.stdout.write(str(i) + ' ')print('')for line in staff:
 info_list = re.split(r',+', line.strip('
'))
 cmd_list = re.split(r'[ ,;]+', cmd)
 f_index = cmd_list.index('from')
 search_field = cmd_list[1:f_index]
 from_field = cmd_list[f_index + 1]if from_field != 'staff_table':print('33[31;1mplease select `staff_table`...33[0m')breakif 'where' not in cmd_list:# 不存在where条件,显示所有view_list = []for i in range(len(search_field)):if search_field[i] == '*':
 view_list = info_list[:]else:
 view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))else:# 存在where条件w_index = cmd_list.index('where')
 where_str = ''.join(cmd_list[w_index + 1:])if re.search(r'like', where_str):
 sizeof = 'like'where_list = re.split(r'like', where_str)else:
 sizeof = re.search(r'[=><]+', where_str).group()
 where_list = re.split(r'[=><]+', where_str)
 where_field = where_list[0]
 value = where_list[1]if re.search(r'['"]+', value): # 带'和"的表示字符,处理掉'和"value = value.replace('"', '')
 value = value.replace(''', '')else:
 value = float(value)# print(where_str, where_field, sizeof, value)# 条件判断 >, <, =, likeif sizeof == '>':
 v = info_list[field.get(where_field)]if float(v) > value:
 view_list = []for i in range(len(search_field)):if search_field[i] == '*':
 view_list = info_list[:]else:
 view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))elif sizeof == '<':
 v = info_list[field.get(where_field)]if float(v) < value:
 view_list = []for i in range(len(search_field)):if search_field[i] == '*':
 view_list = info_list[:]else:
 view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))elif sizeof == '=':
 v = info_list[field.get(where_field)]if field.get(where_field) == 2:
 v = float(v)if v == value:
 view_list = []for i in range(len(search_field)):if search_field[i] == '*':
 view_list = info_list[:]else:
 view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))elif sizeof == 'like':
 v = info_list[field.get(where_field)]if value in v:
 view_list = []for i in range(len(search_field)):if search_field[i] == '*':
 view_list = info_list[:]else:
 view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))else:passdef add(staff):
 staff.sort()
 num = int(re.split(r',', staff[-1])[0]) + 1phone = input("phone:").strip()for line in staff:if phone == line[3]:print("already exists...")return Falseif not re.match(r'^d+$', phone) or len(phone) < 7:print("format error...")return False
 name = input("name:").strip()
 age = input("age:").strip()
 dept = input("dept:").strip()
 enroll_date = input("enroll_date:").strip()for s in (name, age, dept, enroll_date):if not len(s):print("input is null...")return Falseelse:
 staff.append('%s,%s,%s,%s,%s,%s
' % (num, name, age, phone, dept, enroll_date))return staffdef update(staff, field):
 cmd = input("cmd>").strip()
 up_list = []
 cmd = cmd.replace('SET', 'set')
 cmd = cmd.replace('WHERE', 'where')for line in staff:
 info_list = re.split(r',+', line.strip('
'))
 cmd_list = re.split(r'[ ,;]+', cmd)if cmd_list[1] != 'staff_table':print('33[31;1mplease update `staff_table`...33[0m')breakset_index = cmd_list.index('set')
 where_index = cmd_list.index('where')
 set_list = re.split(r'=', ''.join(cmd_list[set_index + 1:where_index]))
 set_field = set_list[0]
 set_value = set_list[1]if re.search(r'['"]+', set_value):
 set_value = set_value.replace(''', '')
 set_value = set_value.replace('"', '')
 where_list = re.split(r'=', ''.join(cmd_list[where_index + 1:]))
 where_field = where_list[0]
 where_value = where_list[1]if re.search(r'['"]+', where_value):
 where_value = where_value.replace(''', '')
 where_value = where_value.replace('"', '')if info_list[field.get(where_field)] == where_value:
 info_list[field.get(set_field)] = set_valueprint(','.join(info_list))
 up_list.append(','.join(info_list))else:return up_listdef delete(staff):
 del_id = input("delete id:").strip()for i in range(len(staff)):if re.split(r',', staff[i])[0] == del_id:
 staff.pop(i)print("id:%s delete success." % del_id)return staffelse:return Falsedef main():
 staff_table = 'staff_table.txt'field = {'staff_id': 0,'name': 1,'age': 2,'phone': 3,'dept': 4,'enroll_date': 5}
 menu = '''33[33;1m-- staff_table --33[0m33[29;1m
S. 查询 h. 帮助
A. 新增 q. 退出
E. 修改
D. 删除33[0m'''print(menu)while True:try:
 with open(staff_table, 'r') as f:
 staff = f.readlines()
 choice = input(">>").strip().lower()if choice == 'h': # helpprint(menu)elif choice == 'q':breakelif choice == 's': # search select(staff, field)elif choice == 'a': # addresult = add(staff)if not result:print('33[31;1madd failed...33[0m')continueelse:
 with open(staff_table, 'w') as f:
 f.writelines(result)elif choice == 'e': # updateresult = update(staff, field)if not result:print('33[31;1mupdate failed...33[0m')continueelse:
 with open(staff_table, 'w') as f:for line in result:
 f.write(line + '
')elif choice == 'd': # deleteresult = delete(staff)if not result:print('33[31;1mdelete failed...33[0m')continueelse:
 with open(staff_table, 'w') as f:
 f.writelines(result)else:continueexcept:print("33[31;1minput error...33[0m")continueif __name__ == '__main__':
 main()

View Code

文档

实现员工信息表展示功能

实现员工信息表展示功能:README: 1. 员工信息表程序,实现增删改查操作: 1).可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select * from staff_table where dept = "IT" selec
推荐度:
标签: 信息 显示 功能
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top