首頁 > 軟體

python實現通訊錄管理系統

2022-05-16 16:00:09

本文範例為大家分享了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。


IT145.com E-mail:sddin#qq.com