最近自学了python,想到之前学c++的通讯录课程设计,就试着用来检验python的学习成果。
import os
file_name='contact.txt'
def menu():
print("=====================欢迎使用通讯簿=====================")
print("*********************菜单*****************************")
print("* 1.新建联系人 *")
print("* 2.查找联系人 *")
print("* 3.删除联系人 *")
print("* 4.修改联系人 *")
print("* 5.显示联系人信息 *")
print("* 0.退出 *")
print("=====================================================")
def main():
while True:
menu()
choice=int(input("请输入0-5选择"))
if choice in [0,1,2,3,4,5]:
if choice==0:
print("谢谢使用")
break
elif choice==1:
insert()
elif choice==2:
search()
elif choice==3:
delete()
elif choice==4:
modify()
elif choice==5:
display()
def insert():
contact_list=[]
while True:
number=input("请输入联系人手机号:")
if not number:
break
name=input("请输入联系人姓名:")
if not name:
break
try:
sex=input("请输入联系人性别:")
address=input("请输入联系人籍贯:")
qq=input("请输入联系人qq号:")
except:
print("输入错误,请重新输入")
continue
contact={'number':number,'name':name,'sex':sex,'address':address,'qq':qq}
contact_list.append(contact)
answer=input('是否继续添加?y/n\n')
if answer=='y':
continue
else:
break
save(contact_list)
print("联系人输入完毕!")
def save(list):
try:
cont_txt=open(file_name,'a',encoding='utf-8')
except:
cont_txt=open(file_name,'w',encoding='utf-8')
for item in list:
cont_txt.write(str(item)+'\n')
cont_txt.close()
def search():
contact_query = []
while True:
number = ''
name = ''
if os.path.exists(file_name):
mode = input("按手机号查找请输入1,按姓名查找请输入2:")
if mode == '1':
number = input("请输入手机号:")
elif mode == '2':
name = input("请输入姓名:")
else:
print("===========输入错误,请重新输入==========")
search()
with open(file_name, 'r', encoding='utf-8') as rfile:
contact = rfile.readlines()
for item in contact:
d = dict(eval(item))
if number != '':
if d['number'] == number:
contact_query.append(d)
elif name != '':
if d['name'] == name:
contact_query.append(d)
display_contact(contact_query)
contact_query.clear()
answer = input('是否继续查询y/n\n')
if answer == 'y':
continue
else:
break
else:
print("暂未保存联系人信息")
return
def display_contact(list):
if len(list)==0:
print("没有查询到联系人信息,无数据显示!!")
return
format_title='{:^6}\t{:^12}\t{:^8}\t{:^10}'
print(format_title.format('手机号','姓名','性别','籍贯','qq'))
format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}'
for item in list:
print(format_data.format(item.get('number'),item.get('name'),
item.get('sex'),item.get('address'),
item.get('qq')))
def delete():
while True:
contact_number = input(("请输入删除联系人的手机号"))
if contact_number != ' ':
if os.path.exists(file_name):
with open(file_name, 'r', encoding='utf-8')as file:
contact_old = file.readlines()
else:
contact_old = []
flag = False
if contact_old:
with open(file_name, 'w', encoding='utf-8')as wfile:
d = {}
for item in contact_old:
d = dict(eval(item))
if d['number'] != contact_number:
wfile.write(str(d) + '\n')
else:
flag = True
if flag:
print(f'number为{contact_number}的联系人已被删除')
else:
print(f'没有找到number为{contact_number}的联系人')
else:
print('无联系人信息')
break
display()
answer = input('是否继续删除?y/n\n')
if answer == 'y':
continue
else:
break
def modify():
display()
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as rfile:
contact_old=rfile.readlines()
else:
return
contact_number=input("请输入要修改的联系人手机号:")
with open(file_name,'w',encoding='utf-8')as wfile:
for item in contact_old:
d=dict(eval(item))
if d['number']==contact_number:
print("找到该联系人")
while True:
try:
d['name']=input("请输入姓名:")
d['sex']=input("请输入性别:")
d['address']=input("请输入籍贯:")
d['qq']=input("请输入qq:")
except:
print("您的输入有误,请重新输入!")
else:
break
wfile.write(str(d)+'\n')
print("修改成功!")
else:
wfile.write(str(d)+'\n')
answer=input('是否继续修改其他联系人信息y/n\n')
if answer=='y':
modify()
def display():
contact_list=[]
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as rfile:
contacts=rfile.readlines()
for item in contacts:
contact_list.append(eval(item))
if contact_list:
display_contact(contact_list)
else:
print('暂未保存过数据!!!')
main()
生成exe:
cmd:
先安装 输入pip install PyInstaller
再输入
pyinstaller -F D:\pthon\Pythonxuexi\main.py
**大概就是这样,接下来再学吧~
============更新一下=
=============================**