学生信息系统(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( ...
随机推荐
- DllMain 用法
1.1 DllMain简介 跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain.以“DllMain”为关键字,来看看MSDN帮助文档怎么介绍这个函数的. ...
- ylbtech-Tool:
ylbtech-Tool: 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9.返回顶部 10. ...
- 设置putty标题栏显示固定信息
设置好后,登录服务器后,发现标题栏又显示root@sit:/opt/ihome,没有显示成我设置的title内容.原因是: 在Terminal->Features中一定要勾选Disable re ...
- jQuery ajax 当async为false时解决同步操作失败的问题
jQuery的ajax,当async为false时,同步操作失败.解决方案,jqueryasync 最近做项目遇到jQuery的ajax,当async为false时,同步操作失败的问题,上网搜索下,得 ...
- 我对商业模式O2O的理解
过这个文章不是来吐槽项目经理多麽困难的,而且对商业模式的一点心得和讨论. 在这个公司,从项目建设上讲,老实说贡献不是很大,做项目经理团队带的不好,当然小创业公司本身资源真的非常有限,自己也特别累,有老 ...
- SpringBoot入门篇--对于JSON数据的返回以及处理二
我们在进行开发的过程的难免会进行对象的返回,比如一个用户对象User,以及一个集合list,Map等等.在这篇博客中我们就是需要学习一下怎么对一个对象中某些属性的处理.需要补充的一点就是SpringB ...
- SQL Server修改表结构后批量更新所有视图
最近修改了数据库表结构,数据同步的时候出了问题,发现很多数据明明已经修改,但是通过视图筛选出来的还是原来的数据,所以怀疑应该是视图缓存了数据,在园子里找到下面的博文,在这里做个记录备忘. 原文链接:h ...
- tensorflow-eagerAPI
调用该API可以不通过 tensorflow.Session.run()调用 定义的张量constant tensor,可以直接print # -*- coding: utf-8 -*- from _ ...
- uva-10879-因数分解
把一个数分解成n*m的形式,一定存在 解题思路: 一个大于1的正整数最小因数一定是素数 ac时间80ms,感觉慢了,可惜看不到0ms的大神代码 #include <iostream> #i ...
- LUA table.sort的问题,数组与表的区别
t = { [] = , [] = , [] = , [] = , } t1 = { , , , , } t2 = { 'a', 'b','d','c', } function cmp(v1, v2) ...