日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

使用python写一个名片管理系统

發(fā)布時間:2025/3/20 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用python写一个名片管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

系統(tǒng)需求

* 1. 程序啟動,顯示名片管理系統(tǒng)歡迎界面,并顯示功能菜單 * 2. 用戶用數(shù)字選擇不同的功能 * 3. 根據(jù)功能選擇,執(zhí)行不同的功能 * 4. 用戶名片需要記錄用戶的 **姓名**、**電話**、**QQ**、**郵件** * 5. 如果查詢到指定的名片,用戶可以選擇 **修改** 或者 **刪除** 名片

步驟

  • 框架搭建

  • 新增名片

  • 顯示所有名片

  • 查詢名片

  • 查詢成功后修改、刪除名片

  • 讓 Python 程序能夠直接運行

  • 01. 框架搭建

    目標

    • 搭建名片管理系統(tǒng) 框架結(jié)構(gòu)

    • 準備文件,確定文件名,保證能夠 在需要的位置 編寫代碼

    • 編寫 主運行循環(huán),實現(xiàn)基本的 用戶輸入和判斷

    1.1 文件準備

  • 新建 cards_main.py 保存 主程序功能代碼

    • 程序的入口

    • 每一次啟動名片管理系統(tǒng)都通過 main 這個文件啟動

  • 新建 cards_tools.py 保存 所有名片功能函數(shù)

    • 將對名片的 新增查詢修改刪除 等功能封裝在不同的函數(shù)中

  • 1.2 編寫主運行循環(huán)

    • 在 cards_main 中添加一個 無限循環(huán)

    ? while True: ?# TODO(小明) 顯示系統(tǒng)菜單 ?action = input("請選擇操作功能:") ?print("您選擇的操作是:%s" % action) ?# 根據(jù)用戶輸入決定后續(xù)的操作if action in ["1", "2", "3"]:passelif action == "0":print("歡迎再次使用【名片管理系統(tǒng)】") ?breakelse:print("輸入錯誤,請重新輸入") ?

    字符串判斷

    if action in ["1", "2", "3"]: if action == "1" or action == "2" or action == "3":
  • 使用 in 針對 列表 判斷,避免使用 or 拼接復(fù)雜的邏輯條件

  • 沒有使用 int 轉(zhuǎn)換用戶輸入,可以避免 一旦用戶輸入的不是數(shù)字,導(dǎo)致程序運行出錯

  • pass

    • pass 就是一個空語句,不做任何事情,一般用做占位語句

    • 是為了保持程序結(jié)構(gòu)的完整性

    無限循環(huán)

    • 在開發(fā)軟件時,如果 不希望程序執(zhí)行后 立即退出

    • 可以在程序中增加一個 無限循環(huán)

    • 由用戶來決定 退出程序的時機

    TODO 注釋

    • 在 # 后跟上 TODO,用于標記需要去做的工作

    # TODO(作者/郵件) 顯示系統(tǒng)菜單

    1.3 在 cards_tools 中增加四個新函數(shù)

    def show_menu(): ?"""顯示菜單"""pass ? def new_card(): ?"""新建名片"""print("-" * 50)print("功能:新建名片") ? ? def show_all(): ?"""顯示全部"""print("-" * 50)print("功能:顯示全部") ? ? def search_card(): ?"""搜索名片"""print("-" * 50)print("功能:搜索名片") ?

    1.4 導(dǎo)入模塊

    • 在 cards_main.py 中使用 import 導(dǎo)入 cards_tools 模塊

    ? ?import cards_tools
    • 修改 while 循環(huán)的代碼如下:

    import cards_tools ? while True: ?cards_tools.show_menu() ?action = input("請選擇操作功能:") ?print("您選擇的操作是:%s" % action) ?# 根據(jù)用戶輸入決定后續(xù)的操作if action in ["1", "2", "3"]: ?if action == "1":cards_tools.new_card() ?elif action == "2":cards_tools.show_all() ?elif action == "3":cards_tools.search_card() ?elif action == "0":print("歡迎再次使用【名片管理系統(tǒng)】") ?breakelse:print("輸入錯誤,請重新輸入:") ?

    至此:cards_main 中的所有代碼全部開發(fā)完畢!

    1.5 完成 show_menu 函數(shù)

    def show_menu(): ?"""顯示菜單"""print("*" * 50)print("歡迎使用【菜單管理系統(tǒng)】V1.0")print("")print("1. 新建名片")print("2. 顯示全部")print("3. 查詢名片")print("")print("0. 退出系統(tǒng)")print("*" * 50) ?

    02. 保存名片數(shù)據(jù)的結(jié)構(gòu)

    程序就是用來處理數(shù)據(jù)的,而變量就是用來存儲數(shù)據(jù)的

    • 使用 字典 記錄 每一張名片 的詳細信息

    • 使用 列表 統(tǒng)一記錄所有的 名片字典

    ?

    定義名片列表變量

    • 在 cards_tools 文件的頂部增加一個 列表變量

    # 所有名片記錄的列表 card_list = []

    注意

  • 所有名片相關(guān)操作,都需要使用這個列表,所以應(yīng)該 定義在程序的頂部

  • 程序剛運行時,沒有數(shù)據(jù),所以是 空列表

  • 03. 新增名片

    3.1 功能分析

  • 提示用戶依次輸入名片信息

  • 將名片信息保存到一個字典

  • 將字典添加到名片列表

  • 提示名片添加完成

  • 3.2 實現(xiàn) new_card 方法

    • 根據(jù)步驟實現(xiàn)代碼

    def new_card(): ?"""新建名片"""print("-" * 50)print("功能:新建名片") ?# 1. 提示用戶輸入名片信息name = input("請輸入姓名:")phone = input("請輸入電話:")qq = input("請輸入 QQ 號碼:")email = input("請輸入郵箱:") ?# 2. 將用戶信息保存到一個字典card_dict = {"name": name,"phone": phone,"qq": qq,"email": email} ?# 3. 將用戶字典添加到名片列表card_list.append(card_dict) ?print(card_list)# 4. 提示添加成功信息print("成功添加 %s 的名片" % card_dict["name"]) ?

    技巧:在 PyCharm 中,可以使用 SHIFT + F6 統(tǒng)一修改變量名

    04. 顯示所有名片

    4.1 功能分析

    • 循環(huán)遍歷名片列表,順序顯示每一個字典的信息

    4.2 基礎(chǔ)代碼實現(xiàn)

    def show_all(): ?"""顯示全部"""print("-" * 50)print("功能:顯示全部") ?for card_dict in card_list: ?print(card_dict)
    • 顯示效果不好!

    4.3 增加標題和使用 \t 顯示

    def show_all():"""顯示全部"""print("-" * 50)print("功能:顯示全部") ?# 打印表頭for name in ["姓名", "電話", "QQ", "郵箱"]:print(name, end="\t\t") ?print("") ?# 打印分隔線print("=" * 50) ?for card_dict in card_list: ?print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],card_dict["phone"],card_dict["qq"],card_dict["email"]))

    4.4 增加沒有名片記錄判斷

    def show_all():"""顯示全部"""print("-" * 50)print("功能:顯示全部") ?# 1. 判斷是否有名片記錄if len(card_list) == 0:print("提示:沒有任何名片記錄") ?return ?

    注意

    • 在函數(shù)中使用 return 表示返回

    • 如果在 return 后沒有跟任何內(nèi)容,只是表示該函數(shù)執(zhí)行到此就不再執(zhí)行后續(xù)的代碼

    05. 查詢名片

    5.1 功能分析

  • 提示用戶要搜索的姓名

  • 根據(jù)用戶輸入的姓名遍歷列表

  • 搜索到指定的名片后,再執(zhí)行后續(xù)的操作

  • 5.2 代碼實現(xiàn)

    • 查詢功能實現(xiàn)

    def search_card(): ?"""搜索名片"""print("-" * 50)print("功能:搜索名片") ?# 1. 提示要搜索的姓名find_name = input("請輸入要搜索的姓名:") ?# 2. 遍歷字典for card_dict in card_list: ?if card_dict["name"] == find_name: ?print("姓名\t\t\t電話\t\t\tQQ\t\t\t郵箱")print("-" * 40)print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (card_dict["name"],card_dict["phone"],card_dict["qq"],card_dict["email"])) ?print("-" * 40)# TODO(小明) 針對找到的字典進行后續(xù)操作:修改/刪除 ?breakelse:print("沒有找到 %s" % find_name) ?
    • 增加名片操作函數(shù):修改/刪除/返回主菜單

    def deal_card(find_dict): ?"""操作搜索到的名片字典 ?:param find_dict:找到的名片字典"""print(find_dict) ?action_str = input("請選擇要執(zhí)行的操作 ""[1] 修改 [2] 刪除 [0] 返回上級菜單") ?if action == "1":print("修改")elif action == "2":print("刪除") ?

    06. 修改和刪除

    6.1 查詢成功后刪除名片

    • 由于找到的字典記錄已經(jīng)在列表中保存

    • 要刪除名片記錄,只需要把列表中對應(yīng)的字典刪除即可

    ? ?elif action == "2":card_list.remove(find_dict) ?print("刪除成功")

    6.2 修改名片

    • 由于找到的字典記錄已經(jīng)在列表中保存

    • 要修改名片記錄,只需要把列表中對應(yīng)的字典中每一個鍵值對的數(shù)據(jù)修改即可

    ? ?if action == "1": ?find_dict["name"] = input("請輸入姓名:")find_dict["phone"] = input("請輸入電話:")find_dict["qq"] = input("請輸入QQ:")find_dict["email"] = input("請輸入郵件:") ?print("%s 的名片修改成功" % find_dict["name"]) ?

    修改名片細化

    • 如果用戶在使用時,某些名片內(nèi)容并不想修改,應(yīng)該如何做呢?—— 既然系統(tǒng)提供的 input 函數(shù)不能滿足需求,那么就新定義一個函數(shù) input_card_info 對系統(tǒng)的 input 函數(shù)進行擴展

    def input_card_info(dict_value, tip_message): ?"""輸入名片信息 ?:param dict_value: 字典原有值:param tip_message: 輸入提示信息:return: 如果輸入,返回輸入內(nèi)容,否則返回字典原有值"""# 1. 提示用戶輸入內(nèi)容result_str = input(tip_message) ?# 2. 針對用戶的輸入進行判斷,如果用戶輸入了內(nèi)容,直接返回結(jié)果if len(result_str) > 0: ?return result_str# 3. 如果用戶沒有輸入內(nèi)容,返回 `字典中原有的值`else: ?return dict_value ?

    07. 最終代碼

    cards_tools.py

    card_list = []def show_menu():"""顯示菜單"""print("*" * 50)print("歡迎使用【名片管理系統(tǒng)】V1.0")print()print("1. 新建名片")print("2. 顯示全部")print("3. 查詢名片")print()print("0. 退出系統(tǒng)")print("*" * 50)def new_card():"""新建名片"""print("-" * 50)print("功能:新建名片")# 1. 提示用戶輸入名片信息name = input("請輸入姓名:")phone = input("請輸入電話:")qq = input("請輸入 QQ 號碼:")email = input("請輸入郵箱:")# 2. 將用戶信息保存到一個字典card_dict = {"name": name,"phone": phone,"qq": qq,"email": email}# 3. 將用戶字典添加到名片列表card_list.append(card_dict)# 4. 提示添加成功信息print("成功添加 %s 的名片" % card_dict["name"])def show_all():"""顯示全部"""print("-" * 50)print("功能:顯示全部")# 1. 判斷是否有名片記錄if len(card_list) == 0:print("提示:沒有任何名片記錄")return# 打印表頭for name in ["姓名", "電話", "QQ", "郵箱"]:print(name, end="\t\t")print("")# 打印分隔線print("=" * 50)for card_dict in card_list:print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],card_dict["phone"],card_dict["qq"],card_dict["email"]))def search_card():"""搜索名片"""print("-" * 50)print("功能:搜索名片")# 1. 提示要搜索的姓名find_name = input("請輸入要搜索的姓名:")# 2. 遍歷字典for card_dict in card_list:if card_dict["name"] == find_name:print("姓名\t\t\t電話\t\t\tQQ\t\t\t郵箱")print("-" * 40)print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (card_dict["name"],card_dict["phone"],card_dict["qq"],card_dict["email"]))print("-" * 40)# TODO(小明) 針對找到的字典進行后續(xù)操作:修改/刪除deal_card(card_dict)breakelse:print("沒有找到 %s" % find_name)def deal_card(find_dict):"""操作搜索到的名片字典:param find_dict:找到的名片字典"""action = input("請選擇要執(zhí)行的操作 ""[1] 修改 [2] 刪除 [0] 返回上級菜單")if action == "1":find_dict["name"] = input_card_info(find_dict["name"], "請輸入姓名:")find_dict["phone"] = input_card_info(find_dict["phone"], "請輸入電話:")find_dict["qq"] = input_card_info(find_dict["qq"], "請輸入QQ:")find_dict["email"] = input_card_info(find_dict["email"], "請輸入郵件:")print("%s 的名片修改成功" % find_dict["name"])elif action == "2":card_list.remove(find_dict)print("刪除成功")def input_card_info(dict_value, tip_message):"""輸入名片信息:param dict_value: 字典原有值:param tip_message: 輸入提示信息:return: 如果輸入,返回輸入內(nèi)容,否則返回字典原有值"""# 1. 提示用戶輸入內(nèi)容result_str = input(tip_message)# 2. 針對用戶的輸入進行判斷,如果用戶輸入了內(nèi)容,直接返回結(jié)果if len(result_str) > 0:return result_str# 3. 如果用戶沒有輸入內(nèi)容,返回 `字典中原有的值`else:return dict_value

    cards_main.py

    import cards_toolscards_tools.show_menu()while True:# TODO(小明) 顯示系統(tǒng)菜單action = input("請選擇操作功能:")if action in ["1", "2", "3"]:if action == "1":cards_tools.new_card()elif action == "2":cards_tools.show_all()else:cards_tools.search_card()elif action == "0":print("歡迎再次使用【名片管理系統(tǒng)】")breakelse:print("操作有誤,請重新輸入")

    ?

    《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的使用python写一个名片管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲一区欧美二区 | 亚洲五级片 | 亚洲天堂免费在线 | 蜜桃传媒 | 亚洲天堂第一区 | 午夜视频在线免费看 | 成人av在线一区二区 | 国产精品白浆一区二小说 | 久久伊人国产 | 黄色资源在线观看 | 揄拍自拍| 超碰在线人人草 | 天堂一区在线 | 色综合久久88色综合天天免费 | 成人性生生活性生交全黄 | 成人激情视频 | 91国产免费观看 | 有码一区二区三区 | 黄色免费网站观看 | 中出中文字幕 | 菊肠扩张playh| 黄色高清视频在线观看 | 五月婷婷激情综合 | 爱av导航 | 超碰在线天天 | 亚洲精品视频一二三区 | 青青成人网 | 国产真实乱人偷精品人妻 | 久久久久夜夜夜精品国产 | 日韩三区视频 | 麻豆chinese新婚xxx| 我和我的太阳泰剧在线观看泰剧 | 夜色88v精品国产亚洲 | 色老头在线一区二区三区 | 久久精品tv | 亚洲伊人网站 | 日本成人在线免费观看 | 3p在线播放 | 老司机精品福利视频 | 传媒视频在线观看 | 日本涩涩视频 | 日本www在线播放 | 国产精品福利网站 | 在线观看免费视频a | 日本护士体内she精2xxx | 在线观看视频你懂得 | xxxx视频在线 | 精品少妇无码av无码专区 | 大陆明星乱淫(高h)小说 | 精品久久视频 | 日韩成人短视频 | 爽爽影院免费观看 | 美女脱光内衣内裤 | 亚洲免费a | 亚洲逼| 想要视频在线 | 国产极品久久 | 91激情在线观看 | 亚洲天堂视频网站 | 91精品国产成人www | 香蕉久久久久 | 成人小视频在线免费观看 | 欧美日韩亚洲国产精品 | 色婷婷婷婷色 | 麻豆网站在线观看 | 菲律宾av | 久久精品黄aa片一区二区三区 | 91精品视频国产 | 在线观看网站 | 色婷婷av一区 | 亚洲爱av | 一区二区三区四区中文字幕 | 特黄做受又粗又大又硬老头 | 五月天久久久久久 | 国产精品99久久久久久动医院 | 日韩精品一区二区三区久久 | 一级黄色淫片 | 欧美顶级毛片在线播放 | 亚洲区视频在线观看 | 日韩av第一页 | 四季av中文字幕一区 | 国产午夜伦鲁鲁 | 51福利视频 | 亚洲天堂欧美在线 | 西比尔在线观看完整视频高清 | 恶虐女帝安卓汉化版最新版本 | 亚洲免费一级 | 九一精品在线 | 91麻豆国产 | 精品国产三级片在线观看 | 69精品无码成人久久久久久 | 黄网地址| 你懂的日韩| 极品在线播放 | 人妻久久一区二区三区 | 人人免费操 | 日韩视频一区二区三区在线播放免费观看 | www.亚洲.com| 久久视频网 |