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

歡迎訪問 生活随笔!

生活随笔

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

python

python实现名片管理系统在哪里_python实现名片管理系统项目

發布時間:2025/3/19 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现名片管理系统在哪里_python实现名片管理系统项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

名片管理系統,供大家參考,具體內容如下

環境要求:linux系統、python2.x或python3.x

資源地址:GitHub地址

寫在前面的話:筆者之前在初學C/C++時,都曾寫過類似的管理系統。這次使用Python來書寫這個管理系統,深刻地感受到python對程序員的友好。如果使用C來實現,必然需要手寫一下鏈表;而使用C++,顯然需要使用STL中的vector或array以及map,語法都稍稍有些復雜。

基礎功能

1.循環顯示主菜單,顯示命令提示。

2.可以通過輸入命令來選擇新建名片、顯示所有名片、搜索名片。當搜索到名片時,可以對其進行刪改。

3.附加功能。對數據進行序列化,并且寫入文件。

代碼分析

一.程序入口cards_main.py

#! /usr/bin/python

import cards_tools

while True:

cards_tools.show_menu()

action_str = input("請下指令,主人\n")

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()

elif action_str == "0":

print("寨見了喲~主人sama")

break

else:

print("還不會鴨,請多調教")

1.這段代碼開頭shebang(#!)后標注了解釋器,可以通過./cards_main.py來執行本段代碼。如果執行ln -s? cards_main.py /usr/bin/cards, 就可以在終端中用“cards”命令呼出這個簡易的名片存儲系統。

2.這個程序使用死循環的方式維持主程序的運行,日后如果想增加上傳數據等功能時,可以使用多線程、協程等來增加一個并發,來實現。

3.通過判斷用戶輸入,分別調用不同的函數。實現了解耦合。

二.命令提示、新增名片、顯示名片

這部分代碼沒什么好說的,就不多贅述。需要注意的時,在文件開頭,定義了個card_list的全局空列表。

card_list = []

def show_menu():

print("*" * 50)

print("主人,讓我做點什么鴨:")

print("1.新建名片")

print("2.顯示全部")

print("3.搜索名片")

print("")

print("0.退出系統")

print("*" * 50)

def new_card():

print("新建名片")

print("-" * 50)

name_str = input("輸入姓名:")

phone_str = input("輸入手機號:")

qq_str = input("輸入QQ:")

email_str = input("輸入郵箱:")

card_dict = {

"name": name_str,

"phone": phone_str,

"qq": qq_str,

"email": email_str

}

card_list.append(card_dict)

print("我記下%s咯!" % name_str)

def show_all():

if card_list == []:

print("還沒有名片喲,告訴我幾個叭~")

return

else:

print("顯示全部名片")

print("-" * 50)

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\t\t" %

(card_dict["name"],

card_dict["phone"],

card_dict["qq"],

card_dict["email"]))

三、搜索名片

先貼代碼

def search_card():

print("找尋名片")

print("-" * 50)

search_name = input("查誰咧?")

for card_dict in card_list:

if card_dict["name"] == search_name:

for name in ["姓名", "電話", "QQ", "郵箱"]:

print(name, end="\t\t")

print("")

print("=" * 50)

print("%s\t\t%s\t\t%s\t\t%s\t\t" %

(card_dict["name"],

card_dict["phone"],

card_dict["qq"],

card_dict["email"]))

deal_card(card_dict)

break

else:

print("母雞呀!")

def deal_card(found_dict):

"""

處理查找到的名片

:param found_dict:傳遞找到的字典

:return:

"""

action_str = input("我做啥咧 "

"[1]修改 [2]刪除 [0]返回")

if action_str == "1":

found_dict["name"] = input_card_info(found_dict["name"], "姓名[回車不修改]:")

found_dict["phone"] = input_card_info(found_dict["phone"], "手機號[回車不修改]:")

found_dict["qq"] = input_card_info(found_dict["qq"], "QQ[回車不修改]:")

found_dict["email"] = input_card_info(found_dict["email"], "郵箱[回車不修改]:")

print("修改完成")

elif action_str == "2":

card_list.remove(found_dict)

print("吼,木有了")

else:

return

def input_card_info(dict_value, tip_message):

"""

輸入名片信息

:param dict_value:字典原有值

:param tip_message: 輸入提示文字

:return: 如果用戶輸入了內容,則返回內容;否則返回原有值

"""

result_str = input(tip_message)

if len(result_str) > 0:

return result_str

else:

return dict_value

1.傳遞存儲搜索到的字典,對列表進行修改。

2.為了讓用戶可以選擇用回車,避免需要重新輸入不需先修該的鍵值對兒,對內置函數input進行了封裝。

代碼不足

這段個玩具項目存在嚴重問題,其一數據都活在內存之中,完全可以通過序列化的方式將字典存儲在文件中,甚至可以使用md5對數據進行加密。

使用for循環使得效率低下、功能單一,完全可以使用多線程來增添新功能,不過鑒于本代碼只是個玩具,就不實現了。

可選手段

使用最基本的python列表真的時最好的方式嗎?列表的數據結構實際上是隊列,由于名片對于順序要求不大,大可以使用C++的STL中unorder_map之類數據結構來存儲數據信息。

另外使用字典并非唯一手段,C/C++、Go中的結構體,或是使用類來封裝數據,無疑都是可行的。在類中可以添加諸如打印函數等,簡化程序,在C++中可以重載流運算符<

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持dt貓。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python实现名片管理系统在哪里_python实现名片管理系统项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。