首頁 後端開發 Python教學 實現員工資訊表展示功能

實現員工資訊表展示功能

May 21, 2018 am 09:14 AM
資訊 員工

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

以上是實現員工資訊表展示功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在Microsoft Word中刪除作者和上次修改的訊息 如何在Microsoft Word中刪除作者和上次修改的訊息 Apr 15, 2023 am 11:43 AM

Microsoft Word文件在儲存時包含一些元資料。這些詳細資訊用於在文件上識別,例如建立時間、作者是誰、修改日期等。它還具有其他信息,例如字元數,字數,段落數等等。如果您可能想要刪除作者或上次修改的資訊或任何其他訊息,以便其他人不知道這些值,那麼有一種方法。在本文中,讓我們看看如何刪除文件的作者和上次修改的資訊。刪除微軟Word文件中的作者和最後修改的資訊步驟 1 –前往

任天堂新進員工留存率達 98.8%,去年平均年薪 988 萬日圓 任天堂新進員工留存率達 98.8%,去年平均年薪 988 萬日圓 Sep 14, 2023 am 08:49 AM

本站9月2日消息,任天堂官網揭露員工數據,新進員工留存率(2019年4月入職並於2022年4月繼續在公司工作的應屆畢業生比例)高達98.8%,其中男性100%、女性96%。這意味著任天堂每聘用100名新員工,約有一人決定辭職,而日本平均新進員工留存率為70%。岡本啟武,UZUZ株式會社的首席執行官,表示:「大公司通常提供高薪和良好福利,因此員工留存率較高,尤其是任天堂作為日本受歡迎的代表公司。」「去年,任天堂的平均年薪988萬日圓(約49.2萬元),雖然遊戲產業中有些公司的年薪比任天堂更

取得 Windows 11 中 GPU 的方法及顯示卡詳細資料檢查 取得 Windows 11 中 GPU 的方法及顯示卡詳細資料檢查 Nov 07, 2023 am 11:21 AM

使用系統資訊按一下“開始”,然後輸入“系統資訊”。只需單擊程序,如下圖所示。在這裡,您可以找到大多數系統訊息,而顯示卡資訊也是您可以找到的一件事。在“系統資訊”程式中,展開“組件”,然後按一下“顯示”。讓程式收集所有必要的信息,一旦準備就緒,您就可以在系統上找到特定於顯示卡的名稱和其他資訊。即使您有多個顯示卡,您也可以從這裡找到與連接到電腦的專用和整合式顯示卡相關的大多數內容。使用裝置管理員Windows11就像大多數其他版本的Windows一樣,您也可以從裝置管理員中找到電腦上的顯示卡。按一下“開始”,然後

利用多光照資訊的單視角NeRF演算法S^3-NeRF,可恢復場景幾何與材質訊息 利用多光照資訊的單視角NeRF演算法S^3-NeRF,可恢復場景幾何與材質訊息 Apr 13, 2023 am 10:58 AM

目前影像 3D 重建工作通常採用恆定自然光照條件下從多個視點(multi-view)捕捉目標場景的多視圖立體重建方法(Multi-view Stereo)。然而,這些方法通常假設朗伯表面,並且難以恢復高頻細節。另一種場景重建方法是利用固定視點但在不同點光源下捕捉的影像。例如光度立體 (Photometric Stereo) 方法就採用這種設定並利用其 shading 資訊來重建非朗伯物體的表面細節。然而,現有的單視圖方法通常採用法線貼圖(normal map)或深度圖(depth map)來表徵可

如何與NameDrop分享聯絡人詳細資訊:iOS 17的操作指南 如何與NameDrop分享聯絡人詳細資訊:iOS 17的操作指南 Sep 16, 2023 pm 06:09 PM

在iOS17中,有一個新的AirDrop功能,讓你透過觸摸兩部iPhone來與某人交換聯絡資訊。它被稱為NameDrop,這是它的工作原理。 NameDrop允許您簡單地將iPhone放在他們的iPhone附近以交換聯繫方式,而不是輸入新人的號碼來給他們打電話或發短信,以便他們擁有您的號碼。將兩個設備放在一起將自動彈出聯絡人共享介面。點擊彈出視窗會顯示一個人的聯絡資訊及其聯絡人海報(您可以自訂和編輯自己的照片,也是iOS17的新功能)。該畫面還包括「僅接收」或分享您自己的聯絡資訊作為回應的選項。

AI搶飯碗成真!近500家美國企業用ChatGPT取代員工,有公司省下超10萬美元 AI搶飯碗成真!近500家美國企業用ChatGPT取代員工,有公司省下超10萬美元 Apr 07, 2023 pm 02:57 PM

自從ChatGPT掀起浪潮,不少人都在擔心AI快要搶人類飯碗了。然鵝,現實可能更殘酷QAQ......根據就業服務平台Resume Builder調查統計,在1000多家受訪美國企業中,用ChatGPT取代部分員工的,比例已達到驚人的48%。在這些企業中,有49%已經啟用ChatGPT,還有30%正在趕來的路上。就連央視財經也為此專門發過一個報道:相關話題還曾一度衝上了知乎熱榜,眾網友表示,不得不承認,現在ChatGPT等AIGC工具已勢不可擋——浪潮既來,不進則退。有程式設計師也指出:用過Copil

NameDrop 如何在 iPhone 上運作(以及如何停用它) NameDrop 如何在 iPhone 上運作(以及如何停用它) Nov 30, 2023 am 11:53 AM

在iOS17中,有一個新的AirDrop功能,可讓您透過同時觸摸兩部iPhone來與某人交換聯絡資訊。它被稱為NameDrop,這是它的實際工作原理。 NameDrop無需輸入新人的號碼來給他們打電話或發短信,以便他們擁有您的號碼,您只需將iPhone靠近他們的iPhone即可交換聯絡方式。將兩台裝置放在一起會自動彈出聯絡人共用介面。點擊彈出視窗會顯示一個人的聯絡資訊和他們的聯絡人海報(您可以自訂和編輯的您自己的照片,也是iOS17的新功能)。該畫面還包括「僅接收」或分享您自己的聯絡資訊作為回應

微信收到訊息延遲是怎麼回事 微信收到訊息延遲是怎麼回事 Sep 19, 2023 pm 03:02 PM

微信收到訊息延遲的原因可能是網路問題、伺服器負載、版本問題、裝置問題、訊息傳送問題或其他因素等。詳細介紹:1、網路問題,微信收到訊息的延遲可能與網路連線有關,如果網路連線不穩定或訊號弱,可能導致訊息傳輸延遲,請確保手機已經連接到穩定的網絡,並且網路訊號強度良好;2、伺服器負載,當微信伺服器負載較高時,可能會導致資訊傳輸的延遲,特別是在繁忙的時間段或大量用戶同時使用微信時等等。

See all articles