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 的类型:
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文件写小型的通讯录数据库相关推荐
- python 读文件写数据库_python读文件写数据库
Python 读文件,写数据库 Python 读文件 打开文件 Python读写文件在计算机语言中被广泛的应用,如果你想了解其应用的程序,以下的文章会给你详细的介绍相关内容,会你在以后的学习的过程中有 ...
- python读文件写文件-python 文件读写操作
读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...
- java解析json文件并保存到mysql数据库
一.数据是从"聚合数据"这个网站获取的,点我下载json文件,访问相应的地址,就返回很长的json格式的数据.因为不太了解json数据格式,我自己另外加了双引号(其实值的部分可以是 ...
- python打开文件写文件乱码_Python读写文件乱码问题
对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...
- python json文件_python读写json文件的简单实现
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
- python json文件操作_python对json的操作总结
引言 你一定听说过 JSON 吧.JSON 是当前最常用的数据传输格式之一,纯文本,容易使用,方便阅读,最重要的是在多个场合都被大量被使用. 既然 JSON 这么好,那就让我们继续探险,去掌握 pyt ...
- 如何使用java解析json文件并将其写入数据库
JAVA解析JSON数据文件 在使用第三方的api文档时,会得到相应的JSON数据文件,那么我们怎样将JSON文件写入数据库从而测试数据呢?下面我将给大家做一个简单的展示. 一.什么是JSON JSO ...
- python json文件太大_python - python json.dump创建的文件太大 - 堆栈内存溢出
所以我有这个CSV文件,大小为380 MB左右. 我为此创建了一个空数据结构:{ID1 {day1:[[flow,hour1],[flow,hour2] ... [flow,hour23]],day2 ...
- python json文件遍历所有key、value 及替换key对于的value
对于接口自动化测试,一般接口以json形式发送返回,往往我们就需要遍历json文件中所有key,value以及修改替换key对于的value. 例如json发送/接收的文件: SendRegister ...
最新文章
- 1099 Build A Binary Search Tree
- 实验室管理好助手——Bio-lab
- Pix2Pix代码解析
- JSP面试题都在这里 1
- OCR如何识别PDF图片中的文字
- 常用iOS开发网站资源
- mysql 访问被拒绝如何解决
- 测试打分用什么软件,测名软件哪个比较好
- c语言 程序设计 题库答案 p,《C语言程序设计》复习题库答案.doc
- 树莓派命令连接wifi_使用命令行设置树莓派的wifi网络
- Candence学习篇(4)allegro软件中class 和subclass的概念
- echarts实现中国地图和各省市地图
- html5手机电商网页设计代码_一部手机,万物皆可复制粘贴,这位兼职写代码的设计师将AR玩出了新高度...
- 推荐一个超好用的免费屏幕录制软件
- 可以ping通外网,ping不通内网,同时可以Ping网关,但是外部ping不到IP
- Mybatis日志源码探究
- DPABI详细使用教材——数据准备、预处理流程、数据分析流程
- Flask开发实现在线问答系统的问题发布功能
- Android - 键值对存储 SharedPreference、DataStore、MMKV
- 计算机正在更新,计算机打开时“致命错误c0000034正在应用更新”的解决方案