<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了python實現通訊錄管理系統的具體程式碼,供大家參考,具體內容如下
期末專案
一. 專案要求
利用函數實現通訊錄管理系統,通訊錄的內容包含姓名、聯絡方式、微訊號、電子郵箱等需要儲存的資訊。至少要包含姓名和聯絡方式兩種。管理系統的功能包括資訊的新增、刪除、修改、查詢、顯示、儲存的功能。
二.專案步驟
1.使用自定義函數實現每個功能
(1)功能選單:顯示專案應該具有的功能
(2)新增:輸入要新增的資訊
(3)刪除:輸入要刪除的聯絡人姓名,刪除其所有的資訊
(4)修改:輸入要修改的聯絡人姓名,修改其資訊
(5)查詢:輸入要查詢的聯絡人姓名,遍歷列表,得到其資訊
(6)顯示:顯示所有的聯絡人資訊
(7)儲存:將資料儲存到檔案中
(8)主函數:先顯示選單,提示使用者輸入要進行的操作程式碼,呼叫相應的函數
2. 當新增、刪除、修改了資訊後,要同步儲存到檔案中
用列表作為全域性變數,當列表資訊發生變化,呼叫儲存函數
3.編寫一個模組,在主函數中呼叫該模組,測試其功能。完成一個,測試一個,保證所有模組能正確執行,資訊儲存在文字檔案中。
4.可以用列表,元組,字典儲存通訊錄資訊。假如,現在只儲存姓名和手機號,這裡選擇字典,轉換為元組放在列表裡儲存。
5.初始時,先建立了一個文字檔案,檔名為學生姓名,並輸入空列表[]。
三、專案程式碼要求:
1. 程式碼要有必要的註釋,說明其功能。
2. 要有每個模組的測試結果。
3. 若有截圖,截圖要清晰。
1.程式碼說明
題目要求從模組中呼叫函數,因此需要在同一個資料夾下建立兩個python檔案:manage.py和main.py. 其中,manage.py中設計函數,main.py中呼叫manage.py中的函數並實現功能。
2.manage.py
''' 注意: 1.要求輸入的姓名預設全部為合理輸入,並未對輸入內容進行判斷和過濾 2.預設開啟的檔案已經存在,並沒對檔案狀態進行判斷,而是以列表資訊中是否存在該學生為依據 3.沒有使用字典的任何操作 4.如果希望將所有學生資訊儲存在同一個txt檔案中,只需將每個函數中file_name重新命名的部分註釋掉 5.修改資訊採用的方法是:將原內容刪除,並重新寫入新內容,這麼做的原因是電腦要沒電了,這個可以作為自己的測試板塊,重新設計編寫 6.實驗步驟的最後一步 不知道是什麼目的,並所以沒有這樣做 7.因為都是採用列表來判斷學生內容,所以檔案儲存成功後重新執行程式列表清空,即不可再查詢到資訊 8.列印所有資訊可以採取資料夾下多檔案讀取的方法,遍歷該目錄下的所有txt檔案,讀出內容並列印,請自行編寫 2021/6/16 新增注意: 1.修改檔案內容時,如果將姓名一同修改,則會出現檔名與檔案內容中的姓名不同的情況 2.修改檔案內容時,如果將該姓名修改為另一個已經出現過的姓名,在列表中將會出現重名情況 3.先沒有處理重名情況的操作 4.同名情況下,如果修改該名字的資訊,則將修改第一次出現該名稱的位置的資訊 5.因此,如果錯誤1和錯誤2同時發生,檔案就會,嗯...串了,就亂套了 ''' #d = {} #字典儲存資訊 Student = [] path = "D:\" #檔案儲存路徑 預設為空即儲存在當前資料夾下 建議新建資料夾並修改路徑 file_name = path + "student.txt" #檔案預設儲存位置 #顯示命令 def print_message(): print("**************************************") print(" **1.新增學生資訊") print(" **2.刪除學生資訊") print(" **3.修改學生資訊") print(" **4.查詢學生資訊") print(" **5.檢視所有資訊") print(" **6.檢視操作選單") #新增資訊 def add(): print("請輸入需要新增到姓名、手機號,以空格隔開:") #列表 A = input().split(" ") temp_str = "" for i in A: temp_str += i+" " if temp_str != '/n': #防止錯誤輸入 Student.append(A) #加入列表 file_name = path+A[0] +".txt" print(temp_str, file=open(file_name, 'w')) #建立檔案,並寫入檔案 如果存在同名檔案,則原內容會被覆蓋 #字典 # A = input().split(" ") # Name.append(A[0]) # d[A[0]] = A[1] # print("新增成功") # save(A[0]) # 更新學生資訊 #刪除資訊 def delete(): print("請輸入需要刪除的姓名:") name = input() #字典刪除 # del d[name] # Name.remove(name) #從檔案中刪除學生資訊 exist = 0 for i in range(len(Student)): #存在該學生 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] #暫時的刪除方式 fd = open(file_name, "w") #如: 要刪除'張三‘,但‘張三四'也會被刪除 fd.writelines(lines) fd.close() print("刪除成功") exist = 1 #判斷學生是否存在的標籤 break else : exist = 0 if exist == 0: print("未找到該學生的資訊!") def delete_2(name,f_n): # 從列表裡刪除該學生 for i in range(len(Student)): # 存在該學生 if Student[i].count(name) > 0: if name == Student[i][0]: del Student[i] break #從檔案中刪除學生資訊 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("請輸入需要查詢的姓名:") name = input() #字典查詢 #print("查詢結果:",name,d[name]) exist = 0 for i in range(len(Student)): #存在該學生 這一步判斷有點多餘 但是為了簡化列印未找到的結果還是這樣做了 if Student[i].count(name) > 0: if name == Student[i][0]: print("查詢結果: ") for temp in Student[i]: print(temp,end=" ") print() exist = 1 # 判斷學生是否存在的標籤 break else: exist = 0 if exist == 0: print("未找到該學生的資訊!") #更改檔案資訊 def change_file(): print("輸入需要修改資訊的學生姓名:") name = input() exist = 0 for i in range(len(Student)): #存在該學生 if Student[i].count(name) > 0: if name == Student[i][0]: # 找到了該學生 # 下面進行修改資訊的操作 file_name = path + name + ".txt" print("輸入修改後該學生的所有資訊:") A = input().split(" ") temp_str = "" for i in A: temp_str += i + " " if temp_str != '/n': # 防止錯誤輸入 Student.append(A) # 加入列表 delete_2(name,file_name) # 先刪除該資訊 print(temp_str, file=open(file_name, 'a')) # 建立檔案,並重新寫入檔案 print("修改成功") exist = 1 # 判斷學生是否存在的標籤 break else: exist = 0 if exist == 0: print("未找到該學生的資訊!") #顯示資訊 def printf(): print("所有資訊如下:") for i in Student: for j in i: print(j,end=" ") print()
3.main.py
import manage print("**************************************") print(" 歡迎來到學生資訊管理系統") manage.print_message() #列印命令指令 print("**************************************") while(True): print("請輸入需要執行的操作(輸入'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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45