基于Python如何写通讯录管理系统,并实现基础的操作
Admin 2022-09-02 群英技术资讯 611 次浏览
=====欢迎使用通讯录管理系统=====
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("输入的序号不在范围内!")
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文将介绍5种基于Plotly的可视化方法,你会发现,原来可视化不仅可用直方图和箱形图,还能做得如此动态好看甚至可交互。那么,Plotly有哪些好处?Plotly的整合能力很强:可与Ju
用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等。要获取这些系统信息,Python可以通过subprocess模块调用并获取结果。但这样做显得很麻烦,尤其是要写很多解析代码。
这篇文章主要为大家介绍了python神经网络MobileNetV3 large模型的复现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
内容介绍开始之前查看屏幕大小获取当前鼠标的位置检查指定坐标是否在屏幕上设置暂停时间鼠标功能移动鼠标鼠标点击鼠标拖动鼠标滚动屏幕功能截屏功能定位功能消息框功能alert()函数confirm()函数pr
如何为list实现find方法方法1:独立函数法方法2:if三元表达式(本质同上)方法3:next(利用迭代器遍历的第二个参数)方法4:list元素bool类型Python List find方法报错TypeError:
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008