题目6:通讯录程序设计(限2人)
设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。(用文件保存)实现功能:
(1)系统以菜单方式工作
(2)信息录入功能
(3)信息浏览功能
(4)信息查询功能
(5)信息修改功能
(6)系统退出功能
题目出自:山东科技大学 李成江老师
代码实现:https://gitee.com/ljhahu/address_list_design.git
注意:邮箱只允许输入数字/字母@xxx.xx,不允许出现其他符号
import re def login(): print('请输入用户名和密码') username=input('Username:') password=input('Password:') if username=='admin' and password=='qaz123': print('登录成功!') menu() else: print('登录失败,请重新登录!') login() def menu(): print('请输入您需要选择的功能:') print('1、信息录入') print('2、信息浏览') print('3、信息查询') print('4、信息修改') print('5、退出系统') x=input('请输入:') if x=='5': login() elif x=='1': print('欢迎录入信息') luruinfo() elif x=='2': print('欢迎浏览信息') liulanxinxi() elif x=='3': print('欢迎查询信息') exploreinfo() elif x=='4': print('欢迎修改信息') x = input('请输入你要修改的编号:') xiugaiinfo(x) def luruinfo(): f1=open('C:/Users/Administrator/Desktop/test/tongxunlu.txt','a')//存放通讯录文件 no=str(input('请输入编号:')) name=str(input('请输入姓名:')) address=str(input('请输入籍贯:')) cell1=str(input('请输入号码1:')) cell2=str(input('请输入号码2:')) email=str(input('请输入您的电子邮箱:')) remarks=str(input('请输入备注:')) novalue=re.compile('\d+') resultno=novalue.match(no) namevalue=re.compile('.+') resultname=namevalue.match(name) addressvalue=re.compile('.+') resultaddress=addressvalue.match(address) cell1value=re.compile('^[1]{1}([0-9]){10}') resultcell1=cell1value.match(cell1) cell2value = re.compile('^[1]{1}([0-9]){10}') resultcell2 = cell1value.match(cell2) emailvalue=re.compile('^\w+@(\w+\.)+\w+$') reslutemail=emailvalue.match(email) if reslutemail and resultaddress and resultcell1 and resultcell2 and resultcell2 and resultname and resultno: f1.write(no+' '+name+' '+address+' '+cell1+' '+cell2+' '+email+' '+remarks+'\n') f1.close() p=input('添加成功,继续添加请输入1,结束添加请输入0') if p=='1': luruinfo() elif p=='0': menu() else: print('输入格式有误,请重新输入!') luruinfo() def liulaninfo(): f2=open('C:/Users/Administrator/Desktop/test/tongxunlu.txt','r') li=f2.readlines() for line in li: print(line,end='') f2.close() menu() def liulanxinxi(): f3 = open('C:/Users/Administrator/Desktop/test/tongxunlu.txt', 'r') while True: line=f3.readline() if line=='': break print(line,end= '') f3.close() menu() def exploreinfo(): x=input('请输入您要搜索的名字:') f4=open('C:/Users/Administrator/Desktop/test/tongxunlu.txt','r') li=f4.readlines() for line in li: t=line.split() if t[1]==x: print(t) m=input('是否进行对其操作?Y/N:') if m=='Y': n=input('修改请输入1,删除请输入0:') if n=='1': xiugaiinfo(t[0]) if n=='0': deleteinfo(t[0]) elif m=='N': menu() f4.close() def xiugaiinfo(x): f5 = open('C:/Users/Administrator/Desktop/test/tongxunlu.txt', 'r+') f6 = open('C:/Users/Administrator/Desktop/test/temp.txt', 'w+') li = f5.readlines() for line in li: print(line) t = line.split() if t[0] == x: t[1] = input('请输入姓名:') t[2] = input('请输入籍贯:') t[3] = input('请输入号码1:') t[4] = input('请输入号码2:') t[5] = input('请输入您的电子邮箱:') t[6] = input('请输入备注:') f6.write( x + ' ' + t[1] + ' ' + t[2] + ' ' + t[3] + ' ' + t[4] + ' ' + t[5] + ' ' + t[6]+'\n') else: f6.write(line) f6.close() f5.close() chuandi() print('修改成功!') menu() def chuandi(): f7 = open('C:/Users/Administrator/Desktop/test/tongxunlu.txt', 'w') f8 = open('C:/Users/Administrator/Desktop/test/temp.txt', 'r')//暂时文件 li=f8.readlines() for line in li: f7.write(line) f7.close() f8.close() def deleteinfo(x): f9 = open('C:/Users/Administrator/Desktop/test/tongxunlu.txt', 'r+') f10 = open('C:/Users/Administrator/Desktop/test/temp.txt', 'w+') li = f9.readlines() for line in li: t = line.split() if t[0] == x: f10.write('') else: f10.write(line) f9.close() f10.close() chuandi() print('删除成功!') menu() login()