目录

题目概述

关于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 的类型:

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]=bjson.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]=bjson.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:breaktuichu()if __name__ == '__main__':main()          

json的文件要在该项目的同一目录下

PYTHON:json文件写小型的通讯录数据库相关推荐

  1. python 读文件写数据库_python读文件写数据库

    Python 读文件,写数据库 Python 读文件 打开文件 Python读写文件在计算机语言中被广泛的应用,如果你想了解其应用的程序,以下的文章会给你详细的介绍相关内容,会你在以后的学习的过程中有 ...

  2. python读文件写文件-python 文件读写操作

    读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...

  3. java解析json文件并保存到mysql数据库

    一.数据是从"聚合数据"这个网站获取的,点我下载json文件,访问相应的地址,就返回很长的json格式的数据.因为不太了解json数据格式,我自己另外加了双引号(其实值的部分可以是 ...

  4. python打开文件写文件乱码_Python读写文件乱码问题

    对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...

  5. python json文件_python读写json文件的简单实现

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  6. python json文件操作_python对json的操作总结

    引言 你一定听说过 JSON 吧.JSON 是当前最常用的数据传输格式之一,纯文本,容易使用,方便阅读,最重要的是在多个场合都被大量被使用. 既然 JSON 这么好,那就让我们继续探险,去掌握 pyt ...

  7. 如何使用java解析json文件并将其写入数据库

    JAVA解析JSON数据文件 在使用第三方的api文档时,会得到相应的JSON数据文件,那么我们怎样将JSON文件写入数据库从而测试数据呢?下面我将给大家做一个简单的展示. 一.什么是JSON JSO ...

  8. python json文件太大_python - python json.dump创建的文件太大 - 堆栈内存溢出

    所以我有这个CSV文件,大小为380 MB左右. 我为此创建了一个空数据结构:{ID1 {day1:[[flow,hour1],[flow,hour2] ... [flow,hour23]],day2 ...

  9. python json文件遍历所有key、value 及替换key对于的value

    对于接口自动化测试,一般接口以json形式发送返回,往往我们就需要遍历json文件中所有key,value以及修改替换key对于的value. 例如json发送/接收的文件: SendRegister ...

最新文章

  1. 1099 Build A Binary Search Tree
  2. 实验室管理好助手——Bio-lab
  3. Pix2Pix代码解析
  4. JSP面试题都在这里 1
  5. OCR如何识别PDF图片中的文字
  6. 常用iOS开发网站资源
  7. mysql 访问被拒绝如何解决
  8. 测试打分用什么软件,测名软件哪个比较好
  9. c语言 程序设计 题库答案 p,《C语言程序设计》复习题库答案.doc
  10. 树莓派命令连接wifi_使用命令行设置树莓派的wifi网络
  11. Candence学习篇(4)allegro软件中class 和subclass的概念
  12. echarts实现中国地图和各省市地图
  13. html5手机电商网页设计代码_一部手机,万物皆可复制粘贴,这位兼职写代码的设计师将AR玩出了新高度...
  14. 推荐一个超好用的免费屏幕录制软件
  15. 可以ping通外网,ping不通内网,同时可以Ping网关,但是外部ping不到IP
  16. Mybatis日志源码探究
  17. DPABI详细使用教材——数据准备、预处理流程、数据分析流程
  18. Flask开发实现在线问答系统的问题发布功能
  19. Android - 键值对存储 SharedPreference、DataStore、MMKV
  20. 计算机正在更新,计算机打开时“致命错误c0000034正在应用更新”的解决方案

热门文章

  1. Android英文名词
  2. APP漏洞扫描器之本地拒绝服务检测详解
  3. FM25V01铁电存储器驱动移植
  4. xposed android 5,还不能愉快玩耍 Android 5.1怎么安装Xposed框架
  5. 计算机cad模板大小,CAD如何设置尺寸标注样式
  6. VB6.0—编程入门
  7. 一人一机一密码:锐捷灵活办公为鲁嘉涂料配备“Wi-Fi安全钥匙”
  8. Ant Design of Vue 中 日期时间控件 禁止选中的(日期——)设置
  9. Ngrok服务器+客户端搭建教程
  10. VirtualBox虚拟化应用