将学生管理的案例,学生信息由原来的只有姓名,拓展为包含,姓名,年龄,两个属性;完成对应的增、删、查、改,操作

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模块解决数据持久化)的更多相关文章

  1. iOS 两行代码解决数据持久化

    在实际的iOS开发中,有些时候涉及到将程序的状态保存下来,以便下一次恢复,或者是记录用户的一些喜好和用户的登录信息等等. 这就需要涉及到数据的持久化了,所谓数据持久化就是数据的本地保存,将数据从内存中 ...

  2. json模块&xml

    json模块将数据修改成字符串,方便其他语言进行识别. 只认双引号,不认单引号.使用json.dumps的操作步骤 先将单引号修改成单引号 将变量使用单引号引起来 将数据类型编程json字符串 jso ...

  3. 常用模块(数据序列化 json、pickle、shelve)

    本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Py ...

  4. $.ajax返回的JSON格式的数据后无法执行success的解决方法

    近段时间做项目,在项目使用了ajax技术,遇到了一个奇怪的问题:"$.ajax返回的JSON格式的数据无法执行success",代码是这样写的: 1 $.ajax({ 2 .. 3 ...

  5. 解决python中json模块loads出来的结构都是unicode的问题

    在使用python的json模块对json字串反序列化成python对象的时候出现的字符串都是unicode类型,而不是python内置的str类型.在某种使用场景下用户必须做显式的转换才能正常使用, ...

  6. IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

    IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...

  7. 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍

    爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...

  8. [py]requests+json模块处理api数据,flask前台展示

    需要处理接口json数据,过滤字段,处理字段等. 一大波json数据来了 参考: https://stedolan.github.io/jq/tutorial/ https://api.github. ...

  9. Python学习笔记:json模块和pickle模块(数据序列化)

    Python中的json模块和pickle都是用于数据的序列化和反序列化,它们提供的方法也是一样的:dumps,dump,loads,load dumps(obj):将对象序列化为str. dump( ...

随机推荐

  1. 10-28质量监控ELK

    监控业务范围 app崩溃监控(Bugly) 应用性能监控(APM) 业务监控(TalkingData.友盟) 质量监控(缺位) 质量监控平台ELK elk官网 数据构造 线上错误状态分布 故障影响范围 ...

  2. canvas填充规则

    canvas填充规则 const canvas = document.getElementById('canvas'); const ctx = canvas.getContext('2d'); ct ...

  3. ubantu环境下fidder安装

    转自:http://www.cnblogs.com/jcli/p/4474332.html Linux(Ubuntu)环境下使用Fiddler 自己的开发环境是Ubuntu, 对于很多优秀的软件但是又 ...

  4. Wasserstein距离 和 Lipschitz连续

    EMD(earth mover distance)距离: 在计算机科学与技术中,地球移动距离(EMD)是一种在D区域两个概率分布距离的度量,就是被熟知的Wasserstein度量标准.不正式的说,如果 ...

  5. 「小程序JAVA实战」小程序的视频展示页面初始化(63)

    转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudeshipinzhanshiyemianchushihua62/ 进 ...

  6. 一次点击两次触发addEventListener

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 归纳整理Linux下C语言常用的库函数----内存及字符串控制及操作

    在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. ...

  8. python's nonlocal

    [python's nonlocal] nonlocal是python3.x中新加的关键字,用于引用本作用域外层作用域的名字 参考:http://blog.csdn.net/chain2012/art ...

  9. pymysql.err.IntegrityError: (1062, "Duplicate entry 'roxml-ROXML' for key 'PRIMARY'")

    在<Python数据挖掘-概念.方法与实践>一书的第3章实体匹配中,如果一路按照作者的代码及SQL语句进行配置运行的话,会出现如题目所示的错误.根据python脚本的执行错误提示显示,错误 ...

  10. 2015年传智播客JavaEE 第168期就业班视频教程day45-ERP项目-01 10-类图结构分析设计

    运行astah-pro.bat,这是windows下运行的.astah-run.sh是Linux下运行的. 类结构视图的作用是描述类模型和模型与模型之间的关系,也就是说我们在这要把这个一对多和多对多的 ...