Python_從零開始學習_(30) 名片管理系統原始碼
阿新 • • 發佈:2018-11-02
cards_main.py (主流程)
import cards_tools while True: # 顯示功能選單 cards_tools.show_menu() action_str = input("請選擇希望執行的操作: ") print("您選擇的操作是 %s" % action_str) # 根據使用者輸入決定後續的操作 if action_str in ["1", "2", "3"]: # 新增名片 if action_str == "1": cards_tools.new_card() # 顯示全部 elif action_str == "2": cards_tools.show_all() # 查詢名片 elif action_str == "3": cards_tools.search_card() pass # 0 退出系統 elif action_str == "0": print("歡迎再次使用【名片管理系統】") break # 如果在開發程式時, 不希望立刻寫分支內部的程式碼 # 可以使用 pass 關鍵字, 表示一個佔位符, 能夠保證程式的程式碼結構正確! # 程式執行時, pass 關鍵字不會執行任何的操作! # pass # 其他內容輸入錯誤, 需要提示使用者 else: print("您輸入的不正確, 請重新選擇")
cards_tools.py (工具程式碼)
# 記錄所有名片的列表 card_list = [] def show_menu(): """顯示選單""" print("*" * 30) print("歡迎使用【名片管理系統】v 8.0") print("") print("1 . 新建名片") print("2 . 顯示全部") print("3 . 搜尋名片") print("") print("0 . 退出系統") print("*" * 30) def new_card(): """新增名片""" print("-" * 30) print("新增名片") # 1. 提示使用者輸入名片的詳細資訊 name_str = input("請輸入姓名: ") phone_str = input("請輸入電話: ") qq_str = input("請輸入QQ: ") email_str = input("請輸入郵箱: ") # 2. 使用使用者輸入資訊建立一個名片字典 card_dict = { "name": name_str, "phone": phone_str, "qq": qq_str, "email": email_str } # 3. 將名片字典新增到列表中 card_list.append(card_dict) print(card_list) # 4. 提示使用者新增名片成功 print("新增 %s 的名片成功" % card_dict['name']) def show_all(): """顯示所有名片""" print("-" * 30) print("顯示所有名片") # 判斷是否存在名片記錄, 如果沒有, 提示使用者並且返回 if len(card_list) == 0: print("當前沒有任何的名片記錄, 請使用新增功能新增名片") # return 可以返回一個函式的執行結果 # 下方的程式碼不會被執行 # 如果 return 後面沒有任何的內容, 表示會返回到呼叫函式的位置 # 並且不返回任何的結果 return # 打印表頭 for name in ["姓名", "電話", "QQ", "郵箱"]: print(name, end="\t\t") print("") # 列印分割線 print("=" * 30) # 遍歷名片列表一次輸入字典資訊 for card_dict in card_list: # 遍歷名片資訊 for item in card_dict: print(card_dict[item], end="\t\t") print("") def search_card(): """搜尋名片""" print("-" * 30) print("搜尋名片") # 1. 提示使用者輸入要搜尋的姓名 find_name = input("請輸入要搜尋的姓名: ") # 2. 遍歷名片列表, 查詢要搜尋的姓名, 如果沒有找到, 需要提示使用者 for card_dict in card_list: if card_dict["name"] == find_name: print("姓名\t\t電話\t\tQQ\t\t郵箱") print("=" * 30) print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"], card_dict["phone"], card_dict["qq"], card_dict["email"])) # 針對找到的名片記錄執行修改和刪除的操作 deal_card(card_dict) break else: print("抱歉, 沒有找到 %s" % find_name) def deal_card(find_dict): """處理查詢到的名片 :param find_dict: 查詢到的名片 """ print(find_dict) # action_str = input("請輸入對名片的操作: 1. 修改 2. 刪除 0. 返回上級選單") if action_str == "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("修改名片成功! ") elif action_str == "2": card_list.remove(find_dict) print("刪除名片成功!") def input_card_info(dict_value, tip_message): """輸入名片資訊 :param dict_value: 字典中原有的值 :param tip_message: 輸入的提示文字 :return: """ # 1. 提示使用者輸入內容 result_str = input(tip_message) # 2. 針對使用者的輸入進行判斷, 如果使用者輸入了內容, 直接返回結果 if len(result_str) > 0: return result_str # 3.如果使用者沒有輸入內容, 返回 "字典中原有的值" else: return dict_value