目录
题目概述
- 采用JSON文件保存数据。通信录设计为字典{name:tel}。程序开始时从addressbook.json文件中读取通信录,然后显示主菜单,具体包括如下功能:
- (1)显示通讯录清单。如果通信录字典中存在用户信息,则显示通讯录清单,包括姓名和电话号码;如果通信录字典中不存在任何用户信息,则提示“通讯录为空”
- (2)查询联系人。提示用户输入姓名name,在通信录字典中查询该键,如果存在,输出联系人信息;如果不存在,提示是否新建联系人
- (3)插入新的联系人。提示用户输入姓名name,在通信录字典中查询该键,如果存在,提示是否更新联系人信息;如果不存在,提示输入电话号码,并插入字典键-值对
- (4)删除已有联系人。提示用户输入姓名name,在通信录字典中查询该键,如果不存在,输出“联系人不存在”的提示信息;如果存在,从通信录字典中删除键-值对,并输出信息
- (5)退出。保存通信录字典到addressbook.json中,退出循环
关于json的几个函数
将 Python 对象编码成 JSON 字符串 | json.dumps(s) |
将 Python 对象编码成 JSON 字符串并存到文件中 | json.dump(s,fp,..) |
将已编码的 JSON 字符串解码为 Python 对象 | json.loads(s) |
将已编码的 JSON 字符串从文件中解码为 Python 对象 | json.load(s,fp,...) |
将python对象变成json字符串 | encode |
将json字符串变成python对象 | decode |
格式化参数 | indent=4 |
json 类型转换到 python 的类型:
JSON | PYTHON |
object | dict |
array | list |
string | unicode |
number(int) | int, long |
number(real) | float |
true | True |
false | False |
null | None |
首先定义菜单函数
def caidan():
print(" ---欢迎使用通讯录系统--- ")
print(" ---1:显示通讯录清单--- ")
print(" ---2:查询联系人资料--- ")
print(" ---3:插入新的联系人--- ")
print(" ---4:删除已有联系人--- ")
print(" ---0:退出。。。。。--- ")
print(" 请选择功能(0-4):")
定义显示信息的函数
def xianshi():
print(ab)
定义查询的函数
def chaxun(a):
cx=ab.get(a)
if cx==None:
print("不存在该用户!")
print("是否添加改联系人(0添加,1不添加)")
nn=int(input())
if nn==0:
print("请输入号码")
bb=str(input())
charu(a,bb)
else:
print("已放弃添加该用户!")
else:
print(cx)
定义插入新成员的函数
def charu(a,b):
ab[a]=b
json.dump(ab, open('addressbook.json','w'),indent=4)
print("已成功增添!")
定义删除的函数
def shanchu(a):
if a not in ab:
print("没有该用户!")
else:
ab.pop(a)
json.dump(ab, open('addressbook.json','w'),indent=4)
print("已成功删除!")
完整的代码
import os
import json
ab = {}
if os.path.exists("addressbook.json"):
with open(r'addressbook.json', 'r', encoding='utf-8') as f:
ab = json.load(f)
def caidan():
print(" ---欢迎使用通讯录系统--- ")
print(" ---1:显示通讯录清单--- ")
print(" ---2:查询联系人资料--- ")
print(" ---3:插入新的联系人--- ")
print(" ---4:删除已有联系人--- ")
print(" ---0:退出。。。。。--- ")
print(" 请选择功能(0-4):")
def xianshi():
print(ab)
def chaxun(a):
cx=ab.get(a)
if cx==None:
print("不存在该用户!")
print("是否添加改联系人(0添加,1不添加)")
nn=int(input())
if nn==0:
print("请输入号码")
bb=str(input())
charu(a,bb)
else:
print("已放弃添加该用户!")
else:
print(cx)
def charu(a,b):
ab[a]=b
json.dump(ab, open('addressbook.json','w'),indent=4)
print("已成功增添!")
def shanchu(a):
if a not in ab:
print("没有该用户!")
else:
ab.pop(a)
json.dump(ab, open('addressbook.json','w'),indent=4)
print("已成功删除!")
def tuichu():
print("欢迎下次再来!!")
def main():
caidan()
while True:
print("请选择功能:")
select_num=int(input())
if select_num==1:
print("通讯录如下:")
xianshi()
elif select_num==2:
print("请输入查询的姓名:")
aa=str(input())
chaxun(aa)
elif select_num==3:
print("请输入姓名:")
aa=str(input())
print("请输入号码")
bb=str(input())
charu(aa,bb)
elif select_num==4:
print("请输入要删除的机主:")
aa=str(input())
shanchu(aa)
else:
break
tuichu()
if __name__ == '__main__':
main()
json的文件要在该项目的同一目录下