本文实例为大家分享了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("输入的序号不在范围内!")以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
查看更多关于python实现简单通讯录管理系统的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did17311