学生信息系统(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( ...
随机推荐
- mongodb与SQL常见语句对照
inert into users value(3,5) db.users.insert({a:3,b:5}) select a,b from users db.users.find({}, { ...
- Centos命令行窗口显示一大串前缀,777;notify;Command completed;的解决方法
How to remove the return code from the terminal prompt In addition to the PS1 environment variable, ...
- lnmp架构实现动态php
目录 LNMP动态网站php 1.PHP-FastCGI概述 PHP-FPM安装配置 配置PHP与数据库连接 配置PHP新增扩展模块 配置PHP-FPM主要配置 配置PHP-FPM错误日志 1.编译安 ...
- Vue项目中将table组件导出Excel表格以及打印页面内容
体验更优排版请移步原文:http://blog.kwin.wang/programming/vue-table-export-excel-and-print.html 页面中显示的table表格,经常 ...
- ffmpeg源码分析--av_find_best_stream <转>
1. av_find_best_streama. 就是要获取音视频及字幕的stream_indexb.以前没有函数av_find_best_stream时,获取索引可以通过如下 ; i<is-& ...
- k8s问题记录
1. kubectl run 起来的pod 用 kubectl delete po删不掉 kubectl delete deployment my-nginx kubelet# 看到最后一行:erro ...
- FD_CLOEXEC
[FD_CLOEXEC] 通过fcntl设置FD_CLOEXEC标志有什么用? close on exec, 意为如果对描述符设置了FD_CLOEXEC,使用execl执行的程序里,此描述符被关闭,不 ...
- Python all() 函数
Python all() 函数 Python 内置函数 描述 all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False. ...
- 转)bash快捷键
粗体表示推荐,也许对每个人不同. Ctrl-A 相当于HOME键,用于将光标定位到本行最前面 Ctrl-E 相当于End键,即将光标移动到本行末尾 Ctrl-B 相当于左箭头键,用于将光标向左移动一格 ...
- 通过http流发送post请求
一般都是用curl扩展来完成,看了手册的通过stream的方式更加简单. 请求脚本stream.php $url = 'http://localhost/stream_api.php'; $body ...