学生信息系统(json模块解决数据持久化)
将学生管理的案例,学生信息由原来的只有姓名,拓展为包含,姓名,年龄,两个属性;完成对应的增、删、查、改,操作
import json,os,time,sys
student_list = []
File_path = 'name.txt'
#从文件中读取之前存储的数据(考虑是否有对应文件的问题,要做文件是否存在的判断),然后将读取到的数据存储到列表
def dataRead(filepath):
# 判断filepath这个路径对应的文件是否存在:
if os.path.exists(filepath):
print('找到提取文件')
f1 = open(filepath,'r',encoding='utf-8')
global student_list
student_list = json.load(f1)
print('学生信息',student_list)
f1.close()
print('读取数据成功')
else:
print('文件不存在') def addStudent(): name = input('请输入学生姓名:')
age = int(input('请输入学生年龄:'))
stu_dict = {
'name':name,
'age':age
}
student_list.append(stu_dict)
print('学生信息添加成功,1秒后自动返回主菜单\n\n\n')
time.sleep(1) def delStudent():
name = input('请输入要删除的学生姓名:')
for stu in student_list:
if name == stu['name']:
student_list.remove(stu)
print('删除成功')
else:
print('该学生信息不存在') def updateStudent():
name = input("请输入要修改的学生姓名:")
for stu in student_list:
if name == stu['name']:
new_name = input("请输入修改后的姓名:")
new_age = eval(input("请输入修改后的年龄:"))
stu['name'] = new_name
stu['age'] = new_age
print('修改成功')
break
else:
print('该学生信息不存在')
# name = input('请输入要修改的学生姓名:')
# age = int(input('请输入修改学生的年龄:'))
# new_dict = {'name':name,'age':age}
# if new_dict in student_list :
# index = student_list.index(new_dict)
#
# new_name = input('请输入修改后的学生姓名:')
# new_age = int(input('请输入修改后的学生年龄:'))
#
#
# student_list[index]['name'] = new_name
# student_list[index]['age'] = new_age
# print('修改成功')
# else:
#
# print('该学生信息不存在') def queryStudent():
name = input('请输入要查询的学生姓名:')
for stu in student_list:
if name == stu['name']:
print('学生信息:',stu)
break
else: print('该学生信息不存在') def showAll():
print('所有学生信息如下:')
for stu in student_list:
print('姓名:{},年龄:{}'.format(stu.get('name'),stu.get('age'))) def systemExit():
dataWrite(File_path)
print('谢谢使用')
sys.exit() #将列表中的数据写入文件
def dataWrite(filepath):
f = open(filepath,'w',encoding='utf-8')
json.dump(student_list,f)
f.close()
print('数据写入成功')
#从文件中加载数据
dataRead(File_path)
while True:
print('1.添加学生')
print('2.删除学生')
print('3.修改学生')
print('4.查询学生')
print('5.展示所有')
print('6.退出系统')
num = input('请输入1-6的数字进入相应功能:')
print('------'*6)
if num == '':
addStudent()
elif num == '':
delStudent()
elif num == '':
updateStudent()
elif num == '':
queryStudent()
elif num == '':
showAll()
elif num == '':
systemExit()
else:
print('输入有误')
学生信息系统(json模块解决数据持久化)的更多相关文章
- iOS 两行代码解决数据持久化
在实际的iOS开发中,有些时候涉及到将程序的状态保存下来,以便下一次恢复,或者是记录用户的一些喜好和用户的登录信息等等. 这就需要涉及到数据的持久化了,所谓数据持久化就是数据的本地保存,将数据从内存中 ...
- json模块&xml
json模块将数据修改成字符串,方便其他语言进行识别. 只认双引号,不认单引号.使用json.dumps的操作步骤 先将单引号修改成单引号 将变量使用单引号引起来 将数据类型编程json字符串 jso ...
- 常用模块(数据序列化 json、pickle、shelve)
本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Py ...
- $.ajax返回的JSON格式的数据后无法执行success的解决方法
近段时间做项目,在项目使用了ajax技术,遇到了一个奇怪的问题:"$.ajax返回的JSON格式的数据无法执行success",代码是这样写的: 1 $.ajax({ 2 .. 3 ...
- 解决python中json模块loads出来的结构都是unicode的问题
在使用python的json模块对json字串反序列化成python对象的时候出现的字符串都是unicode类型,而不是python内置的str类型.在某种使用场景下用户必须做显式的转换才能正常使用, ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍
爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...
- [py]requests+json模块处理api数据,flask前台展示
需要处理接口json数据,过滤字段,处理字段等. 一大波json数据来了 参考: https://stedolan.github.io/jq/tutorial/ https://api.github. ...
- Python学习笔记:json模块和pickle模块(数据序列化)
Python中的json模块和pickle都是用于数据的序列化和反序列化,它们提供的方法也是一样的:dumps,dump,loads,load dumps(obj):将对象序列化为str. dump( ...
随机推荐
- [转]Spring 之 Log4j 的配置
- Unreal Enginer4特性介绍
转自:http://blog.csdn.net/cartzhang/article/details/39401991 一.特性说明 特性 Ue4是一款专业开发高质量游戏的平台开发工具.Ue4的渲染加快 ...
- 01:zabbix监控redis
一.zabbix 自动发现并监控redis多实例 1.1 编写脚本 1.1.1 redis_low_discovery.sh 用于发现redis多实例 [root@redis02 homed]# ca ...
- Android图片高斯模糊的一些方法
高斯模糊 高斯模糊就是将指定像素变换为其与周边像素加权平均后的值,权重就是高斯分布函数计算出来的值. 一种实现 点击打开链接<-这里是一片关于高斯模糊算法的介绍,我们需要首先根据高斯分布函数计算 ...
- 创建django的8大步骤xxx.setAttribute('name', 'user'); 添加属性和值 xxx.attr('name') 查看属性的值 $(xxx).addClass 添加样式 $().after() 添加在标签后面
第一步.创建django 方法一:django-admin startproject 方法二: 直接在python上创建 第二步:创建工程名cmdb python manage.py startapp ...
- 文本操作 $(..).text() $(..).html() $(..).val()最后一种主要用于input
文本操作: $(..).text() # 获取文本内容 $(..).text('<a>1</a>') # 设置文本内容 $(..).html() $(..).html('< ...
- 表单的编辑添加和删除 .removeClass() .append() .preAll() .attr('b') document.createElement()
1.$(..).removeClass() 去除属性 2$(..).append 把内容加在后面 3.$(..).preAll() 前面所有的兄弟属性 4.$(..).attr('b') 属性 ...
- 【322】python控制键盘鼠标:pynput
参考:python实战===python控制键盘鼠标:pynput 参考:[Python Study Notes]pynput实现对鼠标控制 参考:pynput doc 参考:pynput Packa ...
- TIME_WAIT和CLOSE_WAIT状态区别
[TIME_WAIT和CLOSE_WAIT状态区别] 常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭. TCP协议规定,对 ...
- Daylight Saving Time
[Daylight Saving Time] 夏时制,又称日光节约时制.日光節約時間(英语:Daylight saving time)或夏令时间(英语:Summer time),是一种为节约能源而人为 ...