学生信息系统(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( ...
随机推荐
- hackerrank Week of Code 31
https://www.hackerrank.com/contests/w31/challenges Beautiful Word 模拟 Accurate Sorting 检查每个数字距离原位是否都不 ...
- jmeter 目录内容分布
/bin 目录(常用文件介绍) examples:目录下包含Jmeter使用实例 ApacheJMeter.jar:JMeter源码包 jmeter.bat:windows下启动文件 jmeter.s ...
- MacBook设置定时关机
Mac定时关机.重启.休眠命令行 - 有梦想的蜗牛 - 博客频道 - CSDN.NET http://blog.csdn.net/showhilllee/article/details/4406727 ...
- Ngnix常用的操作
Nginx的常用参数如下: # /usr/local/nginx/sbin/nginx -h nginx version: nginx/0.7.63 Usage: nginx [-?hvVt] [-s ...
- ExtJS动态创建组件
J是代码动态创建dom: 或者 eval有后台组织代码,前台执 ======================= ExtJS组件的动态的创建: 程序中大多数时候需要在后台根据业务逻辑创建符合要求的组件, ...
- linux版飞信安装
下载安装包; http://www.it-adv.net/fetion/libraryrh4x32.tar.gz [支持库] http://www.it-adv.net/fetion/downloa ...
- 温故而知新-XML和WEB服务器
1 xml除了空元素外都是有开始标记和结束标记的 2 XML可以设置自己的标记
- java web作用域page request session application
转载自:http://blog.csdn.net/wyd458549392147/article/details/6944481 1.page指当前页面.只在一个jsp页面里有效 . 2.reques ...
- 2015年传智播客JavaEE 第168期就业班视频教程11-导入配置文件
资源文件放在Source Folder目录下面,这个目录同样会编译到classes目录下 web.xml的 <listener> <listener-class>org.spr ...
- errorlevel 续2
-------siwuxie095 %ERRORLEVEL%值一览表: ATTRIB.EXE (a) Target file/folder not found = ER ...