欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)名片管理系統(tǒng)項(xiàng)目

 更新時(shí)間:2019年04月26日 10:46:13   作者:虐貓狂魔薛定諤  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)名片管理系統(tǒng)項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

名片管理系統(tǒng),供大家參考,具體內(nèi)容如下

環(huán)境要求:linux系統(tǒng)、python2.x或python3.x
資源地址:GitHub地址

寫(xiě)在前面的話:筆者之前在初學(xué)C/C++時(shí),都曾寫(xiě)過(guò)類似的管理系統(tǒng)。這次使用Python來(lái)書(shū)寫(xiě)這個(gè)管理系統(tǒng),深刻地感受到python對(duì)程序員的友好。如果使用C來(lái)實(shí)現(xiàn),必然需要手寫(xiě)一下鏈表;而使用C++,顯然需要使用STL中的vector或array以及map,語(yǔ)法都稍稍有些復(fù)雜。

基礎(chǔ)功能

1.循環(huán)顯示主菜單,顯示命令提示。

2.可以通過(guò)輸入命令來(lái)選擇新建名片、顯示所有名片、搜索名片。當(dāng)搜索到名片時(shí),可以對(duì)其進(jìn)行刪改。

3.附加功能。對(duì)數(shù)據(jù)進(jìn)行序列化,并且寫(xiě)入文件。

代碼分析

一.程序入口cards_main.py

#! /usr/bin/python
import cards_tools
 
while True:
  cards_tools.show_menu()
  action_str = input("請(qǐng)下指令,主人\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("寨見(jiàn)了喲~主人sama")
    break
  else:
    print("還不會(huì)鴨,請(qǐng)多調(diào)教")

1.這段代碼開(kāi)頭shebang(#?。┖髽?biāo)注了解釋器,可以通過(guò)./cards_main.py來(lái)執(zhí)行本段代碼。如果執(zhí)行l(wèi)n -s  cards_main.py /usr/bin/cards, 就可以在終端中用“cards”命令呼出這個(gè)簡(jiǎn)易的名片存儲(chǔ)系統(tǒng)。
2.這個(gè)程序使用死循環(huán)的方式維持主程序的運(yùn)行,日后如果想增加上傳數(shù)據(jù)等功能時(shí),可以使用多線程、協(xié)程等來(lái)增加一個(gè)并發(fā),來(lái)實(shí)現(xiàn)。
3.通過(guò)判斷用戶輸入,分別調(diào)用不同的函數(shù)。實(shí)現(xiàn)了解耦合。

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

這部分代碼沒(méi)什么好說(shuō)的,就不多贅述。需要注意的時(shí),在文件開(kāi)頭,定義了個(gè)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ī)號(hào):")
  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("還沒(méi)有名片喲,告訴我?guī)讉€(gè)叭~")
    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("查誰(shuí)咧?")
  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ī)號(hào)[回車不修改]:")
    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.傳遞存儲(chǔ)搜索到的字典,對(duì)列表進(jìn)行修改。

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

代碼不足

這段個(gè)玩具項(xiàng)目存在嚴(yán)重問(wèn)題,其一數(shù)據(jù)都活在內(nèi)存之中,完全可以通過(guò)序列化的方式將字典存儲(chǔ)在文件中,甚至可以使用md5對(duì)數(shù)據(jù)進(jìn)行加密。

使用for循環(huán)使得效率低下、功能單一,完全可以使用多線程來(lái)增添新功能,不過(guò)鑒于本代碼只是個(gè)玩具,就不實(shí)現(xiàn)了。

可選手段

使用最基本的python列表真的時(shí)最好的方式嗎?列表的數(shù)據(jù)結(jié)構(gòu)實(shí)際上是隊(duì)列,由于名片對(duì)于順序要求不大,大可以使用C++的STL中unorder_map之類數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù)信息。

另外使用字典并非唯一手段,C/C++、Go中的結(jié)構(gòu)體,或是使用類來(lái)封裝數(shù)據(jù),無(wú)疑都是可行的。在類中可以添加諸如打印函數(shù)等,簡(jiǎn)化程序,在C++中可以重載流運(yùn)算符<<。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python+tkinter實(shí)現(xiàn)音樂(lè)下載軟件的制作

    Python+tkinter實(shí)現(xiàn)音樂(lè)下載軟件的制作

    平常我們下載的歌曲,都是各種妖魔鬼怪的格式橫行,想下載下來(lái)用一下都不行,還只能在它的播放器內(nèi)聽(tīng),這誰(shuí)受得了~本文就來(lái)用Python制作個(gè)音樂(lè)下載軟件,需要的可以參考一下
    2022-09-09
  • Pandas中DataFrame.replace()函數(shù)的實(shí)現(xiàn)

    Pandas中DataFrame.replace()函數(shù)的實(shí)現(xiàn)

    DataFrame.replace()用于替換DataFrame中的指定值,本文主要介紹了Pandas中DataFrame.replace()函數(shù)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • 如何使用Python?Matplotlib繪制條形圖

    如何使用Python?Matplotlib繪制條形圖

    當(dāng)我們使用plot方法繪圖時(shí),默認(rèn)繪制的是折線圖,下面這篇文章主要給大家介紹了關(guān)于如何使用Python?Matplotlib繪制條形圖的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 解決pycharm導(dǎo)入本地py文件時(shí),模塊下方出現(xiàn)紅色波浪線的問(wèn)題

    解決pycharm導(dǎo)入本地py文件時(shí),模塊下方出現(xiàn)紅色波浪線的問(wèn)題

    這篇文章主要介紹了解決pycharm導(dǎo)入本地py文件時(shí),模塊下方出現(xiàn)紅色波浪線的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python實(shí)戰(zhàn)小游戲之考驗(yàn)記憶力

    python實(shí)戰(zhàn)小游戲之考驗(yàn)記憶力

    本篇文章介紹了用python編寫(xiě)的曾經(jīng)風(fēng)靡的考驗(yàn)記憶力的小游戲,詳細(xì)介紹了整個(gè)思路和過(guò)程以及代碼,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Pandas過(guò)濾dataframe中包含特定字符串的數(shù)據(jù)方法

    Pandas過(guò)濾dataframe中包含特定字符串的數(shù)據(jù)方法

    今天小編就為大家分享一篇Pandas過(guò)濾dataframe中包含特定字符串的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Django中的AutoField字段使用

    Django中的AutoField字段使用

    這篇文章主要介紹了Django中的AutoField字段使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python人工智能tensorflow函數(shù)tensorboard使用方法

    python人工智能tensorflow函數(shù)tensorboard使用方法

    這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tensorboard使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python中文件讀取與保存代碼示例

    Python中文件讀取與保存代碼示例

    Python中保存文件是一項(xiàng)非?;镜娜蝿?wù),它允許我們將程序輸出保存到磁盤(pán)上,以便以后使用或與他人共享,這篇文章主要給大家介紹了關(guān)于Python中文件讀取與保存的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • PyCharm設(shè)置SSH遠(yuǎn)程調(diào)試的方法

    PyCharm設(shè)置SSH遠(yuǎn)程調(diào)試的方法

    這篇文章主要介紹了PyCharm設(shè)置SSH遠(yuǎn)程調(diào)試的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論