通讯录管理系统
一.设计的任务与要求
1.1设计任务
设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。(用文件保存)实现功能。
1.2任务要求
能够实现:系统以菜单方式工作
(1)信息录入功能
(2)信息浏览功能
(3)信息查询功能
(4)信息修改功能
(5)系统退出功能
二. 程序设计思路
2.1主程序
通过主函数的调用实现对通讯录的查询,浏览,录入,修改等功能。
def main():
print(‘你所需要的功能:’)
print(’’’
1.信息录入
2.信息查询
3.信息修改
4.信息浏览
5.系统退出功能
‘’’)
key=input(’’‘请输入:’’’)
if key==‘1’:
luru()
elif key==‘2’:
chaxun()
elif key==‘3’:
x = input(“输入序号:”)
xiugai(x)
elif key==‘4’:
liulan()
elif key==‘5’:
print(‘已退出’)
exit()
main()
在此函数下调用luru(),chaxun(),xiugai()等函数,实现通讯录的基本功能,
2.2流程图
三. 程序测试
3.1录入测试
def luru():
f1=open(‘F:\python\通信录.txt’,‘a’)
number=str(input(‘请输入编号:’))
name=str(input(‘请输入姓名:’))
print(‘只需精确到市县即可’)
jiguan=str(input(‘请输入籍贯:’))
callnumber1=str(input(‘请输入电话号码1:’))
callnumber2=str(input(‘请输入电话号码2:’))
email=str(input(‘请输入电子邮箱:’))
numbervalue=re.compile(’\d+’)
resultnumber=numbervalue.match(number)
namevalue=re.compile(’.+’)
resultname=namevalue.match(name)
jiguanvalue=re.compile(’.+’)
resultjiguan=jiguanvalue.match(jiguan)
callnumber1value=re.compile(’1{1}([0-9]){10}’)
resultcallnumber1=callnumber1value.match(callnumber1)
callnumber2value = re.compile(’2{1}([0-9]){10}’)
resultcallnumber2 = callnumber1value.match(callnumber2)
emailvalue=re.compile(’^\w+@(\w+.)+\w+$’)
reslutemail=emailvalue.match(email)
if reslutemail and resultjiguan and resultcallnumber1 and resultcallnumber2 and resultcallnumber2 and resultname and resultnumber:
f1.write(number+’ ‘+name+’ ‘+jiguan+’ ‘+callnumber1+’ ‘+callnumber2+’ ‘+email+’ ‘+’\n’)
f1.close()
p=input(‘添加成功,继续添加请输入1,结束添加请输入0’)
if p==‘1’:
luru()
elif p==‘0’:
main()
else:
s=input(‘输入格式有误,是否请重新输入! Y/N:’)
if s==‘Y’ or s==‘y’:
luru()
elif s==‘N’ or s==‘n’:
main()
3.2查询测试
def chaxun():
f=input(‘请输入需要查询的名字:’)
f2=open(‘F:\python\通信录.txt’,‘r’)
li=f2.readlines()
count,flag = 0,0
for line in li:
count += 1
while True:
for line in li:
flag += 1
t=line.split()
if t[1]f:
print(t)
m=input(‘是否对其进行操作 Y/N:’)
if m’Y’ or m==‘y’:
n=input(‘修改请输入1,删除请按2’)
if n==‘1’:
xiugai(t[0])
break
elif n==‘2’:
delete(t[0])
break
elif m==‘N’ or m==‘n’:
main()
break
else:
if flag == count:
f = input(“姓名不存在,请重新输入:”)
else:
pass
f2.close()
3.3修改测试
def xiugai(x):
f3=open(‘F:\python\通信录.txt’,‘r+’)
f4=open(‘F:/python/temp.txt’,‘w+’)
li=f3.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(‘请输入电子邮箱:’)
if re.search(’3{1}([0-9]){10}’,t[3]) and re.search(’4{1}([0-9]){10}’,t[4]) and re.search(’^\w+@(\w+.)+\w+$’,t[5]):
f4.write( x + ’ ’ + t[1] + ’ ’ + t[2] + ’ ’ + t[3] + ’ ’ + t[4] + ’ ’ + t[5] + ’ ’ + ‘\n’)
else:
s=input(‘输入格式有误,是否请重新输入! Y/N:’)
if s’Y’ or s==‘y’:
xiugai(x)
elif s==‘N’ or s==‘n’:
print(‘修改失败!’)
main()
else:
f4.write(line)
f3.close()
f4.close()
chuandi()
main()
3.4浏览测试
def liulan():
f9 = open(‘F:\python\通信录.txt’,‘r’)
while True:
line=f9.readline()
if line==’’:
break
print(line,end= ‘’)
f9.close()
main()
代码:
import os
import re
def luru():
f1=open(‘F:\python\通信录.txt’,‘a’)
number=str(input(‘请输入编号:’))
name=str(input(‘请输入姓名:’))
print(‘只需精确到市县即可’)
jiguan=str(input(‘请输入籍贯:’))
callnumber1=str(input(‘请输入电话号码1:’))
callnumber2=str(input(‘请输入电话号码2:’))
email=str(input(‘请输入电子邮箱:’))
numbervalue=re.compile(’\d+’)
resultnumber=numbervalue.match(number)
namevalue=re.compile(’.+’)
resultname=namevalue.match(name)
jiguanvalue=re.compile(’.+’)
resultjiguan=jiguanvalue.match(jiguan)
callnumber1value=re.compile(’5{1}([0-9]){10}’)
resultcallnumber1=callnumber1value.match(callnumber1)
callnumber2value = re.compile(’6{1}([0-9]){10}’)
resultcallnumber2 = callnumber1value.match(callnumber2)
emailvalue=re.compile(’^\w+@(\w+.)+\w+KaTeX parse error: Double superscript at position 209: …(number+' '̲+name+' …’,t[5]):
f4.write( x + ’ ’ + t[1] + ’ ’ + t[2] + ’ ’ + t[3] + ’ ’ + t[4] + ’ ’ + t[5] + ’ ’ + ‘\n’)
else:
s=input(‘输入格式有误,是否请重新输入! Y/N:’)
if s==‘Y’ or s==‘y’:
xiugai(x)
elif s==‘N’ or s==‘n’:
print(‘修改失败!’)
main()
else:
f4.write(line)
f3.close()
f4.close()
chuandi()
main()
def chuandi():
f5 = open(‘F:\python\通信录.txt’,‘w’)
f6 = open(‘F:/python/temp.txt’,‘r’)
li=f6.readlines()
for line in li:
f5.write(line)
f5.close()
f6.close()
def delete(x):
f7 = open(‘F:\python\飞机\通信录.txt’,‘r+’)
f8 = open(‘F:/python/飞机/temp.txt’,‘w+’)
li = f7.readlines()
for line in li:
t = line.split()
if t[0] == x:
f8.write(’’)
else:
f8.write(line)
f7.close()
f8.close()
chuandi()
print(‘删除成功!’)
main()
def liulan():
f9 = open(‘F:\python\飞机\通信录.txt’,‘r’)
while True:
line=f9.readline()
if line==’’:
break
print(line,end= ‘’)
f9.close()
main()
def main():
print(‘你所需要的功能:’)
print(’’’
1.信息录入
2.信息查询
3.信息修改
4.信息浏览
5.系统退出功能
‘’’)
key=input(’’‘请输入:’’’)
if key==‘1’:
luru()
elif key==‘2’:
chaxun()
elif key==‘3’:
x = input(“输入序号:”)
xiugai(x)
elif key==‘4’:
liulan()
elif key==‘5’:
print(‘已退出’)
exit()
main()
1 ↩︎
1 ↩︎
1 ↩︎
1 ↩︎
1 ↩︎
1 ↩︎