1. 程式人生 > 實用技巧 >Python 知識要點:名片管理系統 2.0

Python 知識要點:名片管理系統 2.0

主程式cards_main.py呼叫cards_tools.py裡的方法,實現名片管理的功能,程式碼上更加簡潔。

【cards_main.py】

複製程式碼

! /usr/bin/python3

import cards_tools

無限迴圈,由使用者主動決定什麼時候退出迴圈!

while True:
# 每次迴圈顯示選單
cards_tools.show_menu()

action_str = input("請選擇希望執行的操作:")
print("您選擇的操作是【%s】" % action_str)

# 1,2,3針對名片的操作
if action_str in ["1", "2", "3"]:
    # TODO 新增名片
    if action_str == "1":
        cards_tools.new_card()

    # 顯示全部
    elif action_str == "2":
        cards_tools.show_all()

    # 查詢名片
    elif action_str == "3":
        cards_tools.search_card()

# 0 退出系統
elif action_str == "0":
    print("歡迎再次使用【名片管理系統】")
    break
    # 如果在開發程式時,不希望立刻編寫分支內部的程式碼
    # 可以使用 pass 關鍵字,表示一個佔位符
    # 能夠保證程式的程式碼結構正確
    # pass

# 其他內容輸入錯誤,需要提示使用者
else:
    print("您輸入的不正確,請重新選擇")

複製程式碼

【cards_tools.py】

複製程式碼

記錄所有的名片字典

card_list = []

def show_menu():
print("" * 30)
print("歡迎使用【名片管理系統 2.0】")
print()
print("1.新建名片")
print("2.顯示全部")
print("3.查詢名片")
print()
print("0.退出系統")
print("
" * 30)

def new_card():
"""新增名片"""
print("-" * 30)
print("新增名片")
print("-" * 30)

# 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】的名片已新增成功!" % name_str)

def show_all():
"""顯示所有名片"""
print("-" * 30)
print("顯示所有名片")
print("-" * 30)

# 判斷是否存在名片記錄,如果沒有,提示使用者並且返回
if len(card_list) == 0:
    print("當前沒有任何的名片記錄,請使用新增功能新增名片!")
    # return 可以返回一個函式的執行結果
    # 下方的程式碼不會被執行
    # 如果 return 後面沒有任何內容
    # 表示會返回到呼叫函式的位置,並不會返回任何的結果
    return

# 打印表頭
for name_tab in ["姓名", "電話", "QQ", "郵箱"]:
    print(name_tab, end="\t\t")
print()

# 列印分割線
print("=" * 30)

# 遍歷名片列表依次輸出字典資訊
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("-" * 30)
print("搜尋名片")
print("-" * 30)

# 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"]))

        # TODO 針對找到的名片進行修改刪除操作
        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":
    # print("%s的名片已刪除" % find_dict["name"])
    card_list.remove(find_dict)
    print("【%s】的名片已刪除" % find_dict["name"])

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

原作者:顆粒成倉
訪問地址:https://www.cnblogs.com/dc2019/p/13172056.html