PYTHON:json文件写小型的通讯录数据库

目录

题目概述

关于json的几个函数

json 类型转换到 python 的类型:

首先定义菜单函数

定义显示信息的函数

定义查询的函数

定义插入新成员的函数

定义删除的函数

完整的代码

题目概述

  • 采用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 的类型:

JSONPYTHON
objectdict
arraylist
stringunicode
number(int)int, long
number(real)float
trueTrue
falseFalse
nullNone

首先定义菜单函数

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的文件要在该项目的同一目录下

 

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值