Python实现通讯录管理系统代码分享及功能要求详解

本文实例将为大家分享实现通讯录管理系统的 python 具体代码,以供大家参考,具体内容如下

Python实现通讯录管理系统代码分享及功能要求详解

=====欢迎使用通讯录管理系统=====

1.添加

2.修改

3.册除

4.查询

5.排序

6.退出

=========================

请选择你要执行的操作的序号,具体要求:

通讯录需以文件形式存储于硬盘,例如 D:\tongxunlu 。每条数据(包含联系人姓名与手机号码)占一行,若一个联系人有多个手机号,也都存储在同一行,也就是说通讯录中每个联系人的数据占据一行。

系统运行时,初始菜单呈现如上内容。用户可根据所选择的序号,执行相应的操作。

添加功能:提醒角户输入姓名和手机号码。同时要进行手机号码格式检查。如果手机号码格式合法,就将该姓名和手机号码插入到通讯录的最后一行。

可以根据用户指定的联系人姓名来修改其手机号码,并且修改后要保存文件。还可以根据用户输入的姓名来删除相应的记录。

排序功能:需要用户选定按联系人姓名进行升序或者降序排列,以此对通讯录进行排序。

程序运行的结束方式为退出功能。需注意,仅当选择序号 6(退出)时,程序的运行才会终止,若未选择此序号,程序将一直循环,等待用户进行增删改查操作。

这里我利用openpyxl对Excel操作

源码:

打开 openpyxl 库并使用 load_workbook 函数来加载工作簿。
fn = r'd:\tongxunlu.xlsx'
# 打印操作菜单
def showMenu():
打印("========欢迎使用通讯录管理系统========")
    print("     1.添加")
    print("     2.修改")
    print("     3.删除")
    print("     4.查询")
    print("     5.排序")
    print("     6.退出")
打印("==================================")
# 打开文件
def openFile():
    wb = load_workbook(fn)
    ws = wb.active
    return ws, wb
# 判断手机号是否合法
def isLegal(s):
如果字符串 s 的长度为 11 且 s 全是数字
        return True
    else:
        return False
# 添加手机号
def addData():
输入姓名和号码(空格分开),然后将输入的内容用 split(" ")方法进行拆分,拆分后的结果赋值给 data 。
对于 i 而言,在 range(len(data), 1, -1)这个范围内  # 从最后一个手机号开始
s 等于对 data[i - 1] 进行 isLegal 操作的结果
    if not s:
输出“手机号码必须为 11 位数字!”
        addData()
    else:
        w1, w2 = openFile()
        w1.append(data)
        print("添加成功!")
        w2.save(fn)
# 更改手机号
def changeData():
    flag = False
data 等于输入的内容,该内容是需要修改的姓名和新的手机号码,且两者用空格分开,然后将输入的内容进行分割,以空格为分隔符,得到一个列表。
    if not isLegal(data[1]):
        print("手机号码必须为11位数字!")
        changeData()
    else:
        w1, w2 = openFile()
        for row in w1.rows:
如果行的第一个元素的值等于数据的第一个元素。
                flag = True
row 的 value 是 data 中的第 1 个数据。
        if not flag:
输出的内容为:通讯录中不存在此人。
            changeData()
        else:
            print("修改成功!")
            w2.save(fn)
# 删除人
def delete():
    flag = False
    x = 0
输入要删除的姓名,将其赋值给变量 name,即 name = input("请输入要删除的姓名:")
    w1, w2 = openFile()
    for row in w1.rows:
        x += 1
如果 row 的第一个元素的值等于 name 。
            flag = True
            w1.delete_rows(x)
    if not flag:
        print("通讯录中没有此人!")
    else:
        print("删除成功!")
        w2.save(fn)
# 查找手机号或者姓名
def search():
    flag = False
data 被赋值为输入的该内容。
    w1, w2 = openFile()
    for row in w1.rows:
如果 row 的第一个元素的值等于 data 。
            flag = True
打印(row[1].value)
如果行[2]的值不为空。
打印(row[2].value)
如果 row[1] 的值等于 data ,或者 row[2] 的值等于 data 。
            flag = True
输出 row[0] 的值
    if not flag:
在通讯录中没有找到此人或者其手机号。
        search()
# 排序
def sort():
输入的内容为:请输入正序或逆序(正序输入 F,逆序输入 T),并将其赋值给变量 s 。
    if s == "F":
        flag = False
    elif s == "T":
        flag = True
    data = []
    w1, w2 = openFile()
    for row in w1.rows:
        data1 = []
        for cell in row:
将 cell.value 添加到 data1 中。
        data.append(data1)
使用 lambda 函数作为 key 对 data 进行排序,排序依据是每个元素的第一个索引值 x[0],并且可以根据 flag 的值决定是升序还是降序排列,如果 flag 为 True 则降序排列,否则升序排列。
    w2.remove(w1)
    w1 = w2.create_sheet()
    for i in data:
        w1.append(i)
    w2.save(fn)
# 循环函数
while True:
    showMenu()
输入“请输入操作序号:”,然后将其转换为整数赋值给 num 。
    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("输入的序号不在范围内!")

本文就到此结束啦,希望能对大家的学习起到帮助作用,同时也期待大家多多支持编程网。

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读