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("输入的序号不在范围内!")
本文就到此结束啦,希望能对大家的学习起到帮助作用,同时也期待大家多多支持编程网。
« 上一篇
沈阳童程童美推荐:专业奥赛辅导,多区设校