微專案:名片管理系統

書劍發表於2022-01-22

  名片管理系統是一個檢驗Python初學者入門的實戰小專案,它覆蓋了Python程式設計的一些基礎知識,其中包括有模組、輸入/輸出、while語句、if…elif…else語句、for迴圈語句、佔位符/製表符、列表和字典等知識點。

功能描述

1. 程式啟動,顯示名片管理系統歡迎介面,並顯示功能選單,如下:

 

2. 使用者選擇不同數字進入與數字對應的功能

3. 根據功能選擇,執行不同的功能

4. 名片需要記錄使用者的姓名、電話、QQ、郵件

5. 查詢指定的名片,使用者可以修改和刪除名片

 問題分析

      準備兩個檔案,一個是cards_main.py儲存主程式功能程式碼,它是程式的入口,另一個是cards_tools.py儲存所有名片功能函式,對名片進行新增、顯示、查詢、修改、刪除等功能操作。

主程式:cards_main.py

from card_manage_system import cards_tools
while True:
    cards_tools.show_menu()
    action = input("請輸入操作功能:")
    print("你輸入的操作是:%s"%action)
    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("退出系統,歡迎下次使用名片管理系統")
        break
    else:
        print("輸入錯誤,請重新輸入")

名片功能函式:cards_tools.py

  此模組包含show_menu()、new_card()、show_all()、search_card()、deal_card()、input_card_info()等六個不同的功能函式。以下是原始碼:

card_list = []
 
def show_menu():
    '''顯示選單'''
    print("*"*60)
    print("歡迎使用【名片管理系統】V1.0")
    print("1. 新建名片")
    print("2. 顯示全部")
    print("3. 查詢名片")
    print("0. 退出系統")
    print("*"*60)
 
def new_card():
    '''新建名片'''
    # 1.提示使用者輸入名片資訊
    name = input("請輸入你的姓名:")
    number = int(input("請輸入你的手機號碼:"))
    QQnumber = int(input("請輸入你的QQ號碼:"))
    email = input("請輸入你的郵箱;")
    # 2.使用使用者輸入的資訊建立一個名片字典
    card_dict = {"name":name,"phonenumber":number,"QQnumber":QQnumber,"email":email}
    # 3.將名片字典新增到列表中
    card_list.append(card_dict)
    # 4.提示使用者名稱片新增成功
    print("新增%s的名片成功"%name)
 
def show_all():
    '''顯示全部名片 '''
    print('*'*60)
    print('顯示所有名片')
    # 判斷列表中是否存在名片,如果沒有,提示使用者並返回
    if len(card_list) == 0:
        print("名片系統中沒有名片")
        return
    # 列印表頭
    print("姓名\t\t手機號碼\t\tQQ號碼\t\t郵箱")
    # 遍歷名片列表依次輸出字典資訊
    for card_dict in card_list:
        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phonenumber"],
                                        card_dict["QQnumber"],
                                        card_dict["email"]))
 
def search_card():
    '''查詢名片'''
    # 1.提示使用者輸入要搜尋的姓名
    find_name = input("請輸入你要查詢的名片:")
    # 2.遍歷名片列表,查詢要搜尋的姓名,如果沒有搜尋到,提示給使用者
    for card_dict in card_list:
        if card_dict["name"] == find_name:
            for name in ["姓名","手機號碼","QQ號碼","郵箱"]:
                print(name,end="\t\t")
            print("")
            print("-"*60)
            print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                            card_dict["phonenumber"],
                                            card_dict["QQnumber"],
                                            card_dict["email"]))
            print("-"*60)
            deal_card(card_dict)
            break
    else:
        print("沒有找到%s的名片"%find_name)
 
def deal_card(find_dict):
    '''操作搜尋到的名片'''
    print(find_dict)
    action_str = input("請選擇要執行的操作【1】修改【2】刪除")
    # 替換已經存在的鍵值對
    if action_str == "1":
        find_dict["name"] = input_card_info(find_dict['name'],'姓名:')
        find_dict["phonenumber"] = input_card_info(find_dict['phonenumber'],'電話:')
        find_dict["QQnumber"] = input_card_info(find_dict['QQnumber'],'QQ:')
        find_dict["email"] = input_card_info(find_dict['email'],'郵箱:')
        print("%s的名片修改成功"%find_dict)
    elif action_str == "2":
        card_list.remove(find_dict)
        print("刪除成功")
 
def input_card_info(dict_value,tip_message):
    # 1.提示使用者出入內容
    result_str = input(tip_message)
    # 2.如果使用者輸入內容,則返回輸入值,否則返回字典值
    if len(result_str) > 0:
        return result_str
    else:
        return dict_value

相關文章