python實(shí)現(xiàn)名片管理系統(tǒng)項(xiàng)目
名片管理系統(tǒng),供大家參考,具體內(nèi)容如下
環(huán)境要求:linux系統(tǒng)、python2.x或python3.x
資源地址:GitHub地址
寫在前面的話:筆者之前在初學(xué)C/C++時,都曾寫過類似的管理系統(tǒng)。這次使用Python來書寫這個管理系統(tǒng),深刻地感受到python對程序員的友好。如果使用C來實(shí)現(xiàn),必然需要手寫一下鏈表;而使用C++,顯然需要使用STL中的vector或array以及map,語法都稍稍有些復(fù)雜。
基礎(chǔ)功能
1.循環(huán)顯示主菜單,顯示命令提示。

2.可以通過輸入命令來選擇新建名片、顯示所有名片、搜索名片。當(dāng)搜索到名片時,可以對其進(jìn)行刪改。
3.附加功能。對數(shù)據(jù)進(jìn)行序列化,并且寫入文件。
代碼分析
一.程序入口cards_main.py
#! /usr/bin/python
import cards_tools
while True:
cards_tools.show_menu()
action_str = input("請下指令,主人\n")
print("你的選項(xiàng)是 [%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("還不會鴨,請多調(diào)教")
1.這段代碼開頭shebang(#?。┖髽?biāo)注了解釋器,可以通過./cards_main.py來執(zhí)行本段代碼。如果執(zhí)行l(wèi)n -s cards_main.py /usr/bin/cards, 就可以在終端中用“cards”命令呼出這個簡易的名片存儲系統(tǒng)。
2.這個程序使用死循環(huán)的方式維持主程序的運(yùn)行,日后如果想增加上傳數(shù)據(jù)等功能時,可以使用多線程、協(xié)程等來增加一個并發(fā),來實(shí)現(xiàn)。
3.通過判斷用戶輸入,分別調(diào)用不同的函數(shù)。實(shí)現(xiàn)了解耦合。
二.命令提示、新增名片、顯示名片
這部分代碼沒什么好說的,就不多贅述。需要注意的時,在文件開頭,定義了個card_list的全局空列表。
card_list = []
def show_menu():
print("*" * 50)
print("主人,讓我做點(diǎn)什么鴨:")
print("1.新建名片")
print("2.顯示全部")
print("3.搜索名片")
print("")
print("0.退出系統(tǒng)")
print("*" * 50)
def new_card():
print("新建名片")
print("-" * 50)
name_str = input("輸入姓名:")
phone_str = input("輸入手機(jī)號:")
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("還沒有名片喲,告訴我?guī)讉€叭~")
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"], "手機(jī)號[回車不修改]:")
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: 如果用戶輸入了內(nèi)容,則返回內(nèi)容;否則返回原有值
"""
result_str = input(tip_message)
if len(result_str) > 0:
return result_str
else:
return dict_value
1.傳遞存儲搜索到的字典,對列表進(jìn)行修改。
2.為了讓用戶可以選擇用回車,避免需要重新輸入不需先修該的鍵值對兒,對內(nèi)置函數(shù)input進(jìn)行了封裝。
代碼不足
這段個玩具項(xiàng)目存在嚴(yán)重問題,其一數(shù)據(jù)都活在內(nèi)存之中,完全可以通過序列化的方式將字典存儲在文件中,甚至可以使用md5對數(shù)據(jù)進(jìn)行加密。
使用for循環(huán)使得效率低下、功能單一,完全可以使用多線程來增添新功能,不過鑒于本代碼只是個玩具,就不實(shí)現(xiàn)了。
可選手段
使用最基本的python列表真的時最好的方式嗎?列表的數(shù)據(jù)結(jié)構(gòu)實(shí)際上是隊(duì)列,由于名片對于順序要求不大,大可以使用C++的STL中unorder_map之類數(shù)據(jù)結(jié)構(gòu)來存儲數(shù)據(jù)信息。
另外使用字典并非唯一手段,C/C++、Go中的結(jié)構(gòu)體,或是使用類來封裝數(shù)據(jù),無疑都是可行的。在類中可以添加諸如打印函數(shù)等,簡化程序,在C++中可以重載流運(yùn)算符<<。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用python實(shí)現(xiàn)名片管理系統(tǒng)
- 用python實(shí)現(xiàn)名片管理系統(tǒng)
- Python實(shí)現(xiàn)名片管理系統(tǒng)
- python面向?qū)ο髮?shí)現(xiàn)名片管理系統(tǒng)文件版
- Python版名片管理系統(tǒng)
- python3實(shí)現(xiàn)名片管理系統(tǒng)
- 基于python實(shí)現(xiàn)名片管理系統(tǒng)
- python實(shí)現(xiàn)簡單名片管理系統(tǒng)
- python實(shí)現(xiàn)名片管理系統(tǒng)
- 名片管理系統(tǒng)python版
- 一個簡單的Python名片管理系統(tǒng)
- python名片管理系統(tǒng)開發(fā)
相關(guān)文章
Python+tkinter實(shí)現(xiàn)音樂下載軟件的制作
平常我們下載的歌曲,都是各種妖魔鬼怪的格式橫行,想下載下來用一下都不行,還只能在它的播放器內(nèi)聽,這誰受得了~本文就來用Python制作個音樂下載軟件,需要的可以參考一下2022-09-09
Pandas中DataFrame.replace()函數(shù)的實(shí)現(xiàn)
DataFrame.replace()用于替換DataFrame中的指定值,本文主要介紹了Pandas中DataFrame.replace()函數(shù)的實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-07-07
解決pycharm導(dǎo)入本地py文件時,模塊下方出現(xiàn)紅色波浪線的問題
這篇文章主要介紹了解決pycharm導(dǎo)入本地py文件時,模塊下方出現(xiàn)紅色波浪線的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python實(shí)戰(zhàn)小游戲之考驗(yàn)記憶力
本篇文章介紹了用python編寫的曾經(jīng)風(fēng)靡的考驗(yàn)記憶力的小游戲,詳細(xì)介紹了整個思路和過程以及代碼,通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下2021-09-09
Pandas過濾dataframe中包含特定字符串的數(shù)據(jù)方法
今天小編就為大家分享一篇Pandas過濾dataframe中包含特定字符串的數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python人工智能tensorflow函數(shù)tensorboard使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tensorboard使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
PyCharm設(shè)置SSH遠(yuǎn)程調(diào)試的方法
這篇文章主要介紹了PyCharm設(shè)置SSH遠(yuǎn)程調(diào)試的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07

