实现员工信息表展示功能

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('[31;1mplease select `staff_table`...[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'[=>, ':                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) ").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('[31;1mplease update `staff_table`...[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;1m-- staff_table --[0m[29;1mS. 查询   h. 帮助A. 新增   q. 退出E. 修改D. 删除[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('[31;1madd failed...[0m')continueelse:                    with open(staff_table, 'w') as f:                        f.writelines(result)elif choice == 'e':  # updateresult = update(staff, field)if not result:print('[31;1mupdate failed...[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('[31;1mdelete failed...[0m')continueelse:                    with open(staff_table, 'w') as f:                        f.writelines(result)else:continueexcept:print("[31;1minput error...[0m")continueif __name__ == '__main__':    main()

登录后复制

View Code

以上就是实现员工信息表展示功能的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2269551.html

(0)
上一篇 2025年2月27日 11:16:07
下一篇 2025年2月24日 06:22:15

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论