ホームページ バックエンド開発 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 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Microsoft Word で作成者と最終変更情報を削除する方法 Microsoft Word で作成者と最終変更情報を削除する方法 Apr 15, 2023 am 11:43 AM

Microsoft Word ドキュメントには、保存時にいくつかのメタデータが含まれます。これらの詳細は、作成日、作成者、変更日など、ドキュメントの識別に使用されます。文字数、単語数、段落数などの他の情報もあります。他の人に値が知られないよう、作成者や最終更新情報、その他の情報を削除したい場合は、方法があります。この記事では、ドキュメントの作成者と最終変更情報を削除する方法を見てみましょう。 Microsoft Word 文書から作成者と最終変更情報を削除する ステップ 1 – 次のページに移動します。

Windows 11 で GPU を取得し、グラフィックス カードの詳細を確認する方法 Windows 11 で GPU を取得し、グラフィックス カードの詳細を確認する方法 Nov 07, 2023 am 11:21 AM

システム情報の使用 [スタート] をクリックし、システム情報を入力します。下の画像に示すようにプログラムをクリックするだけです。ここではほとんどのシステム情報が見つかりますが、グラフィック カード情報も見つかります。システム情報プログラムで、「コンポーネント」を展開し、「表示」をクリックします。プログラムに必要な情報をすべて収集させ、準備が完了すると、システム上でグラフィックス カード固有の名前やその他の情報を見つけることができます。複数のグラフィックス カードをお持ちの場合でも、コンピュータに接続されている専用および統合グラフィックス カードに関連するほとんどのコンテンツをここから見つけることができます。デバイス マネージャーの使用 Windows 11 他のほとんどのバージョンの Windows と同様に、デバイス マネージャーからコンピューター上のグラフィック カードを見つけることもできます。 「開始」をクリックしてから、

NameDrop で連絡先の詳細を共有する方法: iOS 17 のハウツー ガイド NameDrop で連絡先の詳細を共有する方法: iOS 17 のハウツー ガイド Sep 16, 2023 pm 06:09 PM

iOS 17には、2台のiPhoneをタッチすることで誰かと連絡先情報を交換できる新しいAirDrop機能があります。これは NameDrop と呼ばれるもので、その仕組みは次のとおりです。 NameDrop を使用すると、新しい相手の電話番号を入力して電話したりテキストメッセージを送信したりする代わりに、iPhone を相手の iPhone の近くに置くだけで連絡先の詳細を交換できるため、相手はあなたの番号を知ることができます。 2 つのデバイスを組み合わせると、連絡先共有インターフェイスが自動的にポップアップ表示されます。ポップアップをクリックすると、個人の連絡先情報と連絡先ポスターが表示されます(自分の写真をカスタマイズして編集できます。これも iOS17 の新機能です)。この画面には、「受信のみ」するか、応答として自分の連絡先情報を共有するかのオプションも含まれています。

任天堂の新入社員定着率は98.8%、昨年の平均年収は988万円 任天堂の新入社員定着率は98.8%、昨年の平均年収は988万円 Sep 14, 2023 am 08:49 AM

9月2日の当サイトのニュースによると、任天堂の公式サイトで従業員データが公開されたところ、新入社員の定着率(2019年4月入社の新卒者のうち、2022年4月までに継続勤務している人の割合)が過去最高を記録したとのこと。 98.8%、うち男性100%、女性100%、96%。これは、日本の平均新入社員定着率が70%であるのに対し、任天堂が新入社員を100人採用するごとに約1人が退職を決意することを意味する。株式会社UZUZ 代表取締役社長の岡本啓武氏は、「大企業は通常、給与が高く福利厚生も充実しているため、従業員の定着率が高く、特に任天堂は日本を代表する人気企業です。」と述べています。年収は988万円(約49万2,000元)だが、ゲーム業界には任天堂より年収の高い企業もある。

シングルビュー NeRF アルゴリズム S^3-NeRF は、マルチイルミネーション情報を使用してシーンのジオメトリとマテリアル情報を復元します。 シングルビュー NeRF アルゴリズム S^3-NeRF は、マルチイルミネーション情報を使用してシーンのジオメトリとマテリアル情報を復元します。 Apr 13, 2023 am 10:58 AM

現在の画像 3D 再構成作業では、通常、一定の自然光条件下で複数の視点 (マルチビュー) からターゲット シーンをキャプチャする多視点ステレオ再構成手法 (マルチビュー ステレオ) が使用されます。ただし、これらの方法は通常、ランバート曲面を前提としており、高周波の詳細を復元するのが困難です。シーン再構築のもう 1 つのアプローチは、固定視点から異なる点光源でキャプチャされた画像を利用することです。たとえば、フォトメトリック ステレオ法では、この設定を採用し、そのシェーディング情報を使用して、非ランバーシアン オブジェクトの表面の詳細を再構成します。ただし、既存のシングルビュー手法は通常、可視領域を表現するために法線マップまたは深度マップを使用します。

iPhone での NameDrop の仕組み (および無効にする方法) iPhone での NameDrop の仕組み (および無効にする方法) Nov 30, 2023 am 11:53 AM

iOS17では、2台のiPhoneを同時にタッチすることで連絡先を交換できるAirDrop機能が新たに搭載されました。これは NameDrop と呼ばれるもので、実際にどのように機能するかは次のとおりです。 NameDrop を使用すると、新しい相手に電話をかけたりテキストメッセージを送信したりする際に相手の番号を入力する必要がなく、相手があなたの番号を知ることができるので、iPhone を相手の iPhone に近づけるだけで連絡先情報を交換できます。 2 つのデバイスを組み合わせると、連絡先共有インターフェイスが自動的にポップアップ表示されます。ポップアップをクリックすると、個人の連絡先情報と連絡先ポスター (カスタマイズおよび編集できる自分の写真、これも iOS 17 の新機能) が表示されます。この画面には、「受信のみ」または応答として自分の連絡先情報を共有することも含まれます

WeChat でメッセージの受信が遅れる理由は何ですか? WeChat でメッセージの受信が遅れる理由は何ですか? Sep 19, 2023 pm 03:02 PM

WeChat の情報受信が遅れる理由には、ネットワークの問題、サーバーの負荷、バージョンの問題、デバイスの問題、メッセージ送信の問題、またはその他の要因が考えられます。詳細な紹介: 1. ネットワークの問題。WeChat での情報受信の遅延は、ネットワーク接続に関連している可能性があります。ネットワーク接続が不安定または信号が弱い場合、情報送信に遅延が発生する可能性があります。携帯電話が正常に動作していることを確認してください。安定したネットワークに接続されており、ネットワーク信号強度が良好であること; 2. サーバー負荷 WeChat サーバーの負荷が高い場合、特に繁忙期や多数のユーザーが WeChat を使用している場合、情報送信に遅延が発生する可能性があります。同じ時間など。

AIによる仕事の獲得は現実です! 500 社近くの米国企業が従業員を ChatGPT に置き換え、10 万ドル以上を節約した企業もあります。 AIによる仕事の獲得は現実です! 500 社近くの米国企業が従業員を ChatGPT に置き換え、10 万ドル以上を節約した企業もあります。 Apr 07, 2023 pm 02:57 PM

ChatGPT が波を起こして以来、多くの人が AI が人間の仕事を奪おうとしているのではないかと心配しています。しかし、現実はさらに残酷かもしれません QAQ... 雇用サービス プラットフォーム Resume Builder の調査統計によると、調査対象となった 1,000 社以上のアメリカ企業のうち、一部の従業員の置き換えに ChatGPT を使用している割合は驚くべき 48% に達しています。これらの企業のうち、49% はすでに ChatGPT を有効にしており、30% は現在有効化中です。 CCTV Financeさえもこれに関する特別レポートを発行し、関連トピックはかつてZhihuホットリストに殺到しましたが、多くのネチズンは、ChatGPTなどのAIGCツールが今や止められなくなっていることを認めざるを得ないと述べました - その波は来ていますが、前進するのは難しいでしょう。 退却。一部のプログラマは次のようにも指摘しました: Copil を使用した後

See all articles