最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)通訊錄管理系統(tǒng)

 更新時(shí)間:2022年05月16日 14:35:04   作者:雪人見(jiàn)花  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python實(shí)現(xiàn)通訊錄管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

題目

期末項(xiàng)目 

一. 項(xiàng)目要求

利用函數(shù)實(shí)現(xiàn)通訊錄管理系統(tǒng),通訊錄的內(nèi)容包含姓名、聯(lián)系方式、微信號(hào)、電子郵箱等需要保存的信息。至少要包含姓名和聯(lián)系方式兩種。管理系統(tǒng)的功能包括信息的添加、刪除、修改、查詢、顯示、保存的功能。

二.項(xiàng)目步驟

1.使用自定義函數(shù)實(shí)現(xiàn)每個(gè)功能

(1)功能菜單:顯示項(xiàng)目應(yīng)該具有的功能
(2)添加:輸入要添加的信息 
(3)刪除:輸入要?jiǎng)h除的聯(lián)系人姓名,刪除其所有的信息
(4)修改:輸入要修改的聯(lián)系人姓名,修改其信息
(5)查詢:輸入要查詢的聯(lián)系人姓名,遍歷列表,得到其信息
(6)顯示:顯示所有的聯(lián)系人信息
(7)保存:將數(shù)據(jù)保存到文件中
(8)主函數(shù):先顯示菜單,提示用戶輸入要進(jìn)行的操作代碼,調(diào)用相應(yīng)的函數(shù)

2. 當(dāng)添加、刪除、修改了信息后,要同步保存到文件中

用列表作為全局變量,當(dāng)列表信息發(fā)生變化,調(diào)用保存函數(shù)

3.編寫(xiě)一個(gè)模塊,在主函數(shù)中調(diào)用該模塊,測(cè)試其功能。完成一個(gè),測(cè)試一個(gè),保證所有模塊能正確運(yùn)行,信息存儲(chǔ)在文本文件中。

4.可以用列表,元組,字典存儲(chǔ)通訊錄信息。假如,現(xiàn)在只存儲(chǔ)姓名和手機(jī)號(hào),這里選擇字典,轉(zhuǎn)換為元組放在列表里保存。

5.初始時(shí),先創(chuàng)建了一個(gè)文本文件,文件名為學(xué)生姓名,并輸入空列表[]。

三、項(xiàng)目代碼要求:

1. 代碼要有必要的注釋,說(shuō)明其功能。
2. 要有每個(gè)模塊的測(cè)試結(jié)果。
3. 若有截圖,截圖要清晰。

代碼

1.代碼說(shuō)明

題目要求從模塊中調(diào)用函數(shù),因此需要在同一個(gè)文件夾下建立兩個(gè)python文件:manage.py和main.py. 其中,manage.py中設(shè)計(jì)函數(shù),main.py中調(diào)用manage.py中的函數(shù)并實(shí)現(xiàn)功能。

2.manage.py

'''
注意:
1.要求輸入的姓名默認(rèn)全部為合理輸入,并未對(duì)輸入內(nèi)容進(jìn)行判斷和過(guò)濾
2.默認(rèn)打開(kāi)的文件已經(jīng)存在,并沒(méi)對(duì)文件狀態(tài)進(jìn)行判斷,而是以列表信息中是否存在該學(xué)生為依據(jù)
3.沒(méi)有使用字典的任何操作
4.如果希望將所有學(xué)生信息保存在同一個(gè)txt文件中,只需將每個(gè)函數(shù)中file_name重新命名的部分注釋掉
5.修改信息采用的方法是:將原內(nèi)容刪除,并重新寫(xiě)入新內(nèi)容,這么做的原因是電腦要沒(méi)電了,這個(gè)可以作為自己的測(cè)試板塊,重新設(shè)計(jì)編寫(xiě)
6.實(shí)驗(yàn)步驟的最后一步 不知道是什么目的,并所以沒(méi)有這樣做
7.因?yàn)槎际遣捎昧斜韥?lái)判斷學(xué)生內(nèi)容,所以文件保存成功后重新運(yùn)行程序列表清空,即不可再查詢到信息
8.打印所有信息可以采取文件夾下多文件讀取的方法,遍歷該目錄下的所有txt文件,讀出內(nèi)容并打印,請(qǐng)自行編寫(xiě)

2021/6/16

新增注意:
1.修改文件內(nèi)容時(shí),如果將姓名一同修改,則會(huì)出現(xiàn)文件名與文件內(nèi)容中的姓名不同的情況
2.修改文件內(nèi)容時(shí),如果將該姓名修改為另一個(gè)已經(jīng)出現(xiàn)過(guò)的姓名,在列表中將會(huì)出現(xiàn)重名情況
3.先沒(méi)有處理重名情況的操作
4.同名情況下,如果修改該名字的信息,則將修改第一次出現(xiàn)該名稱的位置的信息
5.因此,如果錯(cuò)誤1和錯(cuò)誤2同時(shí)發(fā)生,文件就會(huì),嗯...串了,就亂套了

'''


#d = {} ?#字典儲(chǔ)存信息

Student = []
path = "D:\\" ?#文件保存路徑 默認(rèn)為空即保存在當(dāng)前文件夾下 建議新建文件夾并修改路徑
file_name = path + "student.txt" #文件默認(rèn)保存位置

#顯示命令
def print_message():
? ? print("**************************************")
? ? print(" ? ? **1.添加學(xué)生信息")
? ? print(" ? ? **2.刪除學(xué)生信息")
? ? print(" ? ? **3.修改學(xué)生信息")
? ? print(" ? ? **4.查找學(xué)生信息")
? ? print(" ? ? **5.查看所有信息")
? ? print(" ? ? **6.查看操作菜單")


#添加信息
def add():
? ? ? ? print("請(qǐng)輸入需要添加到姓名、手機(jī)號(hào),以空格隔開(kāi):")
? ? ? ? #列表
? ? ? ? A = input().split(" ")
? ? ? ? temp_str = ""
? ? ? ? for i in A:
? ? ? ? ? ? temp_str += i+" ?"
? ? ? ? if temp_str != '/n': #防止錯(cuò)誤輸入
? ? ? ? ? ? ?Student.append(A) ?#加入列表
? ? ? ? ? ? ?file_name = path+A[0] +".txt"
? ? ? ? ? ? ?print(temp_str, file=open(file_name, 'w')) ?#創(chuàng)建文件,并寫(xiě)入文件 ?如果存在同名文件,則原內(nèi)容會(huì)被覆蓋
? ? ? ? #字典
? ? ? ? # A = input().split(" ")
? ? ? ? # Name.append(A[0])
? ? ? ? # d[A[0]] = A[1]
? ? ? ? # print("添加成功")
? ? ? ? # save(A[0]) ?# 更新學(xué)生信息

#刪除信息
def delete():
? ? print("請(qǐng)輸入需要?jiǎng)h除的姓名:")
? ? name = input()
? ? #字典刪除
? ? # del d[name]
? ? # Name.remove(name)
? ? #從文件中刪除學(xué)生信息
? ? exist = 0
? ? for i in range(len(Student)):
? ? ? ? #存在該學(xué)生
? ? ? ? if Student[i].count(name) > 0:
? ? ? ? ? ? if name == Student[i][0]:
? ? ? ? ? ? ? ? file_name = path + name + ".txt"
? ? ? ? ? ? ? ? #刪除列表中的信息
? ? ? ? ? ? ? ? Student.pop(i)
? ? ? ? ? ? ? ? #刪除文件中的信息
? ? ? ? ? ? ? ? lines = [l for l in open(file_name, "r") if l.find(name, 0, len(name)) != 0] #暫時(shí)的刪除方式
? ? ? ? ? ? ? ? fd = open(file_name, "w") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#如: 要?jiǎng)h除'張三‘,但‘張三四'也會(huì)被刪除
? ? ? ? ? ? ? ? fd.writelines(lines)
? ? ? ? ? ? ? ? fd.close()
? ? ? ? ? ? ? ? print("刪除成功")
? ? ? ? ? ? ? ? exist = 1 ?#判斷學(xué)生是否存在的標(biāo)簽
? ? ? ? ? ? ? ? break
? ? ? ? else :
? ? ? ? ? ? exist = 0
? ? if exist == 0:
? ? ? ? ?print("未找到該學(xué)生的信息!")


def delete_2(name,f_n):
? ? ? # 從列表里刪除該學(xué)生
? ? ? ? for i in range(len(Student)):
? ? ? ? ? ? # 存在該學(xué)生
? ? ? ? ? ? if Student[i].count(name) > 0:
? ? ? ? ? ? ? ? if name == Student[i][0]:
? ? ? ? ? ? ? ? ? ? del Student[i]
? ? ? ? ? ? ? ? ? ? break

? ? ? ? #從文件中刪除學(xué)生信息
? ? ? ? lines = [l for l in open(f_n, "r") if l.find(name, 0, len(name)) != 0]
? ? ? ? fd = open(f_n, "w")
? ? ? ? fd.writelines(lines)
? ? ? ? fd.close()


#查詢信息
def search():
? ? print("請(qǐng)輸入需要查詢的姓名:")
? ? name ?= input()
? ? #字典查詢
? ? #print("查詢結(jié)果:",name,d[name])
? ? exist = 0
? ? for i in range(len(Student)):
? ? ? ? #存在該學(xué)生 這一步判斷有點(diǎn)多余 但是為了簡(jiǎn)化打印未找到的結(jié)果還是這樣做了
? ? ? ? if Student[i].count(name) > 0:
? ? ? ? ? ? if name == Student[i][0]:
? ? ? ? ? ? ? ? print("查詢結(jié)果: ")
? ? ? ? ? ? ? ? for temp in Student[i]:
? ? ? ? ? ? ? ? ? ? print(temp,end=" ")
? ? ? ? ? ? ? ? print()
? ? ? ? ? ? ? ? exist = 1 ?# 判斷學(xué)生是否存在的標(biāo)簽
? ? ? ? ? ? ? ? break
? ? ? ? else:
? ? ? ? ? ? ? ? exist = 0
? ? if exist == 0:
? ? ? ? ? ? ? ? print("未找到該學(xué)生的信息!")

#更改文件信息
def change_file():
? ? print("輸入需要修改信息的學(xué)生姓名:")
? ? name = input()
? ? exist = 0
? ? for i in range(len(Student)):
? ? ? ? #存在該學(xué)生
? ? ? ? if Student[i].count(name) > 0:
? ? ? ? ? ? if name == Student[i][0]:
? ? ? ? ? ? ? ? # 找到了該學(xué)生
? ? ? ? ? ? ? ? # 下面進(jìn)行修改信息的操作
? ? ? ? ? ? ? ? file_name = path + name + ".txt"
? ? ? ? ? ? ? ? print("輸入修改后該學(xué)生的所有信息:")
? ? ? ? ? ? ? ? A = input().split(" ")
? ? ? ? ? ? ? ? temp_str = ""
? ? ? ? ? ? ? ? for i in A:
? ? ? ? ? ? ? ? ? ? temp_str += i + " ?"
? ? ? ? ? ? ? ? if temp_str != '/n': ?# 防止錯(cuò)誤輸入
? ? ? ? ? ? ? ? ? ? Student.append(A) ?# 加入列表
? ? ? ? ? ? ? ? ? ? delete_2(name,file_name) # 先刪除該信息

? ? ? ? ? ? ? ? ? ? print(temp_str, file=open(file_name, 'a')) ?# 創(chuàng)建文件,并重新寫(xiě)入文件
? ? ? ? ? ? ? ? print("修改成功")
? ? ? ? ? ? ? ? exist = 1 ?# 判斷學(xué)生是否存在的標(biāo)簽
? ? ? ? ? ? ? ? break
? ? ? ? else:
? ? ? ? ? ? ? ? exist = 0
? ? if exist == 0:
? ? ? ? ? ? ? ? print("未找到該學(xué)生的信息!")


#顯示信息
def printf():
? ? print("所有信息如下:")
? ? for i in Student:
? ? ? ? for j in i:
? ? ? ? ? ? print(j,end=" ")
? ? ? ? print()

3.main.py

import manage

print("**************************************")
print(" ? ?歡迎來(lái)到學(xué)生信息管理系統(tǒng)")
manage.print_message() #打印命令指令
print("**************************************")
while(True):

? ? print("請(qǐng)輸入需要執(zhí)行的操作(輸入'q‘退出程序):")
? ? choice = input()
? ? if choice == '1':
? ? ? ? manage.add() ? #增
? ? if choice == '2':
? ? ? ?manage.delete() #刪
? ? if choice == '3':
? ? ? ?manage.change_file() ?#改
? ? if choice == '4':
? ? ? ?manage.search() ?#查
? ? if choice == '5':
? ? ? ?manage.printf() ?#打印
? ? if choice == '6':
? ? ? ? manage.print_message() ?# 打印命令指令
? ? if choice == 'q':
? ? ? ? print("退出!")
? ? ? ? break

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

相關(guān)文章

  • 基于python使用Pillow做動(dòng)態(tài)圖在圖中生成二維碼以及圖像處理

    基于python使用Pillow做動(dòng)態(tài)圖在圖中生成二維碼以及圖像處理

    這篇文章主要介紹了基于python使用Pillow做動(dòng)態(tài)圖在圖中生成二維碼以及圖像處理,分享pillow的一些簡(jiǎn)單使用,喜歡的話大家可以參考文章內(nèi)容下去試試奧
    2022-02-02
  • Pytorch使用visdom可視化問(wèn)題

    Pytorch使用visdom可視化問(wèn)題

    這篇文章主要介紹了Pytorch使用visdom可視化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • RC4文件加密的python實(shí)現(xiàn)方法

    RC4文件加密的python實(shí)現(xiàn)方法

    這篇文章主要介紹了RC4文件加密的python實(shí)現(xiàn)方法,實(shí)例分析了RC4文件加密的原理與Python實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • 淺談python元素如何去重,去重后如何保持原來(lái)元素的順序不變

    淺談python元素如何去重,去重后如何保持原來(lái)元素的順序不變

    這篇文章主要介紹了淺談python元素如何去重,去重后如何保持原來(lái)元素的順序不變?具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python中如何用time方法生成當(dāng)前時(shí)間年月日時(shí)分秒

    python中如何用time方法生成當(dāng)前時(shí)間年月日時(shí)分秒

    這篇文章主要給大家介紹了關(guān)于python中如何用time方法生成當(dāng)前時(shí)間年月日時(shí)分秒的相關(guān)資料,在Python中與時(shí)間處理有關(guān)的模塊就包括:time,datetime以及calendar,Time模塊用以取得系統(tǒng)時(shí)間相關(guān)的信息和時(shí)間的格式化等操作,需要的朋友可以參考下
    2023-08-08
  • Python生成任意范圍任意精度的隨機(jī)數(shù)方法

    Python生成任意范圍任意精度的隨機(jī)數(shù)方法

    下面小編就為大家分享一篇Python生成任意范圍任意精度的隨機(jī)數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 配置python連接oracle讀取excel數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)的操作流程

    配置python連接oracle讀取excel數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)的操作流程

    這篇文章主要介紹了配置python連接oracle,讀取excel數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • numpy 對(duì)矩陣中Nan的處理:采用平均值的方法

    numpy 對(duì)矩陣中Nan的處理:采用平均值的方法

    今天小編就為大家分享一篇numpy 對(duì)矩陣中Nan的處理:采用平均值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 深入理解Python對(duì)Json的解析

    深入理解Python對(duì)Json的解析

    Json是一種常用的數(shù)據(jù)交換結(jié)構(gòu),由于輕量、易于閱讀和編寫(xiě)等特點(diǎn),在網(wǎng)絡(luò)方面應(yīng)用很廣。下面這篇文章主要介紹了Python對(duì)Json解析的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-02-02
  • 如何基于pythonnet調(diào)用halcon腳本

    如何基于pythonnet調(diào)用halcon腳本

    這篇文章主要介紹了如何基于pythonnet調(diào)用halcon腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論

宁武县| 双流县| 兴山县| 宝鸡市| 申扎县| 武鸣县| 逊克县| 嘉荫县| 靖宇县| 闽清县| 罗定市| 怀安县| 饶平县| 茌平县| 浑源县| 海南省| 靖远县| 永新县| 惠水县| 凤凰县| 青铜峡市| 石柱| 长春市| 布尔津县| 屏边| 湟源县| 黄浦区| 枝江市| 九江市| 尤溪县| 清涧县| 康定县| 南部县| 阳原县| 政和县| 古交市| 莱西市| 宜良县| 介休市| 谷城县| 漯河市|