首頁 > 軟體

python實現簡單通訊錄管理系統

2022-05-16 19:00:24

本文範例為大家分享了python實現通訊錄管理系統的具體程式碼,供大家參考,具體內容如下

=====歡迎使用通訊錄管理系統=====
1.新增
2.修改
3.冊除
4.查詢
5.排序
6.退出
=========================

請選擇你要執行的操作的序號,具體要求:

1)通訊錄要以檔案的形式儲存在硬碟上(比如D:tongxunlu) ,每一條資料(聯絡人姓名和手機號碼)儲存一行,如果一個聯絡人有多個手機號,則都儲存在同一行,即通訊錄中每個聯絡入的資料佔一行。

2)系統執行時初始選單如上,根據使用者選擇的序號執行相應的操作:

新增功能:提醒角戶輸入姓名和手機號碼,同時進行手機號碼格式檢查,合法則該姓名和手機號碼插入到通訊錄最後一行。
修改功能:根據使用者指定的聯絡人姓名修改其手機號碼,修改後儲存檔案。 刪除功能:根據使用者輸人的姓名刪除該條記錄。
查詢功能:可以根據聯絡人姓名查詢其手機號,也可以根據手機號查詢聯絡人姓名。 排序功能:要求使用者選擇按聯絡人姓名升序或降序,對通訊錄進行排序。
退出功能:結束程式的執行。 注意:只有選擇序號6(退出)時,程式的執行才會結束,否則一直迴圈等待使用者進行增刪改查操作。

這裡我利用openpyxl對Excel操作

原始碼:

from openpyxl import load_workbook

fn = r'd:tongxunlu.xlsx'


# 列印操作選單
def showMenu():
    print("========歡迎使用通訊錄管理系統========")
    print("     1.新增")
    print("     2.修改")
    print("     3.刪除")
    print("     4.查詢")
    print("     5.排序")
    print("     6.退出")
    print("==================================")


# 開啟檔案
def openFile():
    wb = load_workbook(fn)
    ws = wb.active
    return ws, wb


# 判斷手機號是否合法
def isLegal(s):
    if len(s) == 11 and s.isdigit():
        return True
    else:
        return False


# 新增手機號
def addData():
    data = input("輸入姓名和號碼(空格分開):").split(" ")
    for i in range(len(data), 1, -1):                # 從最後一個手機號開始
        s = isLegal(data[i - 1])
    if not s:
        print("手機號碼必須為11位數位!")
        addData()
    else:
        w1, w2 = openFile()
        w1.append(data)
        print("新增成功!")
        w2.save(fn)


# 更改手機號
def changeData():
    flag = False
    data = input("請輸入需要修改的姓名和新的手機號碼(空格分開):").split(" ")
    if not isLegal(data[1]):
        print("手機號碼必須為11位數位!")
        changeData()
    else:
        w1, w2 = openFile()
        for row in w1.rows:
            if row[0].value == data[0]:
                flag = True
                row[1].value = data[1]
        if not flag:
            print("通訊錄中沒有此人!")
            changeData()
        else:
            print("修改成功!")
            w2.save(fn)


# 刪除人
def delete():
    flag = False
    x = 0
    name = input("請輸入要刪除的姓名:")
    w1, w2 = openFile()
    for row in w1.rows:
        x += 1
        if row[0].value == name:
            flag = True
            w1.delete_rows(x)
    if not flag:
        print("通訊錄中沒有此人!")
    else:
        print("刪除成功!")
        w2.save(fn)


# 查詢手機號或者姓名
def search():
    flag = False
    data = input("請輸入姓名或手機號碼:")
    w1, w2 = openFile()
    for row in w1.rows:
        if row[0].value == data:
            flag = True
            print(row[1].value)
            if row[2].value is not None:
                print(row[2].value)
        elif row[1].value == data or row[2].value == data:
            flag = True
            print(row[0].value)
    if not flag:
        print("通訊錄中沒有此人或手機號!")
        search()


# 排序
def sort():
    s = input("請輸入正序或逆序(正序輸入F,逆序輸入T):")
    if s == "F":
        flag = False
    elif s == "T":
        flag = True
    data = []
    w1, w2 = openFile()
    for row in w1.rows:
        data1 = []
        for cell in row:
            data1.append(cell.value)
        data.append(data1)
    data.sort(key=lambda x: x[0], reverse=flag)
    w2.remove(w1)
    w1 = w2.create_sheet()
    for i in data:
        w1.append(i)
    w2.save(fn)


# 迴圈函數
while True:
    showMenu()
    num = int(input("請輸入操作序號:"))
    if num == 1:
        addData()
    elif num == 2:
        changeData()
    elif num == 3:
        delete()
    elif num == 4:
        search()
    elif num == 5:
        sort()
    elif num == 6:
        print("再見!")
        break
    else:
        print("輸入的序號不在範圍內!")

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


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