Heim >Backend-Entwicklung >Python-Tutorial >Implementieren Sie die Funktion zur Anzeige der Mitarbeiterinformationstabelle

Implementieren Sie die Funktion zur Anzeige der Mitarbeiterinformationstabelle

巴扎黑
巴扎黑Original
2018-05-21 09:14:253537Durchsuche

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('\n'))
        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('\033[31;1mplease select `staff_table`...\033[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'[=><]+&#39;, where_str).group()
                where_list = re.split(r&#39;[=><]+&#39;, where_str)
            where_field = where_list[0]
            value = where_list[1]if re.search(r&#39;[\&#39;\"]+&#39;, value):  # 带&#39;和"的表示字符,处理掉&#39;和"value = value.replace(&#39;\"&#39;, &#39;&#39;)
                value = value.replace(&#39;\&#39;&#39;, &#39;&#39;)else:
                value = float(value)# print(where_str, where_field, sizeof, value)# 条件判断 >, <, =, likeif sizeof == &#39;>':
                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 == '<&#39;:
                v = info_list[field.get(where_field)]if float(v) < value:
                    view_list = []for i in range(len(search_field)):if search_field[i] == &#39;*&#39;:
                            view_list = info_list[:]else:
                            view_list.append(info_list[field.get(search_field[i])])else:print(&#39;,&#39;.join(view_list))elif sizeof == &#39;=&#39;:
                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] == &#39;*&#39;:
                            view_list = info_list[:]else:
                            view_list.append(info_list[field.get(search_field[i])])else:print(&#39;,&#39;.join(view_list))elif sizeof == &#39;like&#39;:
                v = info_list[field.get(where_field)]if value in v:
                    view_list = []for i in range(len(search_field)):if search_field[i] == &#39;*&#39;:
                            view_list = info_list[:]else:
                            view_list.append(info_list[field.get(search_field[i])])else:print(&#39;,&#39;.join(view_list))else:passdef add(staff):
    staff.sort()
    num = int(re.split(r&#39;,&#39;, staff[-1])[0]) + 1phone = input("phone:").strip()for line in staff:if phone == line[3]:print("already exists...")return Falseif not re.match(r&#39;^\d+$&#39;, 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(&#39;%s,%s,%s,%s,%s,%s\n&#39; % (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('\n'))
        cmd_list = re.split(r'[ ,;]+', cmd)if cmd_list[1] != 'staff_table':print('\033[31;1mplease update `staff_table`...\033[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 = '''\033[33;1m-- staff_table --\033[0m\033[29;1m
S. 查询   h. 帮助
A. 新增   q. 退出
E. 修改
D. 删除\033[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('\033[31;1madd failed...\033[0m')continueelse:
                    with open(staff_table, 'w') as f:
                        f.writelines(result)elif choice == 'e':  # updateresult = update(staff, field)if not result:print('\033[31;1mupdate failed...\033[0m')continueelse:
                    with open(staff_table, 'w') as f:for line in result:
                            f.write(line + '\n')elif choice == 'd':  # deleteresult = delete(staff)if not result:print('\033[31;1mdelete failed...\033[0m')continueelse:
                    with open(staff_table, 'w') as f:
                        f.writelines(result)else:continueexcept:print("\033[31;1minput error...\033[0m")continueif __name__ == '__main__':
    main()

View Code

Das obige ist der detaillierte Inhalt vonImplementieren Sie die Funktion zur Anzeige der Mitarbeiterinformationstabelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn