Python基础案例练习:制作学生信息管理系统
一.前言
学生信息管理系统,相信大家或多或少都有做过
最近看很多学生作业都是制作一个学生信息管理系统
于是,今天带大家做一个简单的学生信息管理系统
二.开发环境:
我用到的开发环境
- Python 3.8
- Pycharm 2021.2
三.涉及知识点
- Python基础语法
- 基本的数据类型与结构
- 基本的逻辑控制语句
- 实战小项目
四.接下来我们开始敲代码
我们一步步来完成学生信息管理系统
第一步:制作学生信息管理系统的界面
- 程序启动,显示信息管理系统欢迎界面,并显示功能菜单 (print)
- 用户用数字选择不同的功能 (input)
- 根据功能选择,执行不同的功能 (if 判断 多分支选择)
- 需要记录学生的 姓名、语文成绩、数学成绩、英语成绩 、总分 (input, 数据容器存储输入的学生信息)
- 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息 (多分支选择里面的逻辑)
- 进入或退出时加载或保存数据 (文件操作)
"""
str_info = """**************************************************
欢迎使用【学生信息管理系统】V1.0
请选择你想要进行的操作
1. 新建学生信息
2. 显示全部信息
3. 查询学生信息
4. 删除学生信息
5. 修改学生信息
0. 退出系统
**************************************************"""
while True:
# 1. 程序启动,显示信息管理系统欢迎界面,并显示功能菜单 (print)
print(str_info)
# 2.用户用数字选择不同的功能(input)
action = input('请选择你要进行的操作(输入数字):')
if action == '1':
print('1. 新建学生信息')
elif action == '2':
print('2. 显示全部信息')
elif action == '3':
print('3. 查询学生信息')
elif action == '4':
print('4. 删除学生信息')
elif action == '5':
print('5. 修改学生信息')
elif action == '0':
print('0. 退出系统')
break
else:
print('请输入正确的选项!')
效果:
**************************************************
欢迎使用【学生信息管理系统】V1.0
请选择你想要进行的操作
1. 新建学生信息
2. 显示全部信息
3. 查询学生信息
4. 删除学生信息
5. 修改学生信息
0. 退出系统
**************************************************
第二步:新建学生信息
需要记录学生的 姓名、语文成绩、数学成绩、英语成绩 、总分 (input, 数据容器存储输入的学生信息)
name = input('请输入学生的姓名:')
chinese = int(input('请输入学生的语文成绩:'))
math = int(input('请输入学生的数学成绩:'))
english = int(input('请输入学生的英语成绩:'))
total = chinese + math + english
# 用什么数据容器接受比较好? 存储信息, 取值 采用字典
students = [
{'name': name, 'chinese': chinese, 'math': math, 'english': english, 'total': total}
]
print(students)
第三步:显示全部学生信息
students = [
{'name': '正心', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '张三', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '李四', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '王五', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
]
print('姓名\t语文\t数学\t英语\t总分')
for stu in students:
# print(stu)
print(f'{stu["name"]}\t{stu["chinese"]}\t\t{stu["math"]}\t\t{stu["english"]}\t\t{stu["total"]}')
第四步:查询学生信息
students = [
{'name': '正心', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '张三', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '李四', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '王五', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
]
# 5. 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息 (多分支选择里面的逻辑)
name = input('请输入你要查询学生的姓名:')
# 先遍历所有学生
for stu in students:
# 如果满足条件, 就是查询到了
if name == stu['name']:
print('姓名\t语文\t数学\t英语\t总分')
print(f'{stu["name"]}\t{stu["chinese"]}\t\t{stu["math"]}\t\t{stu["english"]}\t\t{stu["total"]}')
# 一旦查询到了就停止查询
break
else:
# 没找到
print('该学生不存在, 请检查名字是否输入正确!')
第五步:修改学生信息
import pprint
students = [
{'name': '正心', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '张三', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '李四', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '王五', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
]
# 5. 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息 (多分支选择里面的逻辑)
name = input('请输入你要修改学生的姓名:')
# 先遍历所有学生
for stu in students:
# 如果满足条件, 就是查询到了, 找到了这个学生
# 找到了需要修改的学生
if name == stu['name']:
# 不想修改, 直接回车
print('(如果不想修改,直接回车!)')
name = input('请重新输入学生的姓名:')
chinese = input('请重新输入学生的语文成绩:')
math = input('请重新输入学生的数学成绩:')
english = input('请重新输入学生的英语成绩:')
# total = chinese + math + english
# 用户输入了数据才修改
if name:
stu['name'] = name
if chinese:
stu['chinese'] = int(chinese)
if math:
stu['math'] = int(math)
if english:
stu['english'] = int(english)
stu['total'] = stu['chinese'] + stu['math'] + stu['english']
break
else:
# 没找到
print('该学生不存在, 请检查名字是否输入正确!')
pprint.pprint(students)
第六步: 删除学生信息
import pprint
students = [
{'name': '正心', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '张三', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '李四', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
{'name': '王五', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
]
# 5. 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息 (多分支选择里面的逻辑)
name = input('请输入你要删除学生的姓名:')
# 先遍历所有学生
for stu in students:
# 找到学生
if name == stu['name']:
# 删除学生
students.remove(stu)
break
else:
# 没找到
print('该学生不存在, 请检查名字是否输入正确!')
pprint.pprint(students)
然后把他们拼接起来,就完成了我们简单的一个学生管理系统!
五、最后代码
import json
str_info = """**************************************************
欢迎使用【学生信息管理系统】V1.0
请选择你想要进行的操作
1. 新建学生信息
2. 显示全部信息
3. 查询学生信息
4. 删除学生信息
5. 修改学生信息
0. 退出系统
**************************************************"""
# 读取文件
with open('students.json', mode='r', encoding='utf-8') as f:
students_str = f.read()
students = json.loads(students_str)
while True:
# 1. 程序启动,显示信息管理系统欢迎界面,并显示功能菜单 (print)
print(str_info)
# 2.用户用数字选择不同的功能(input)
action = input('请选择你要进行的操作(输入数字):')
if action == '1':
print('1. 新建学生信息')
name = input('请输入学生的姓名:')
chinese = int(input('请输入学生的语文成绩:'))
math = int(input('请输入学生的数学成绩:'))
english = int(input('请输入学生的英语成绩:'))
total = chinese + math + english
# 新的学生
stu = {'name': name, 'chinese': chinese, 'math': math, 'english': english, 'total': total}
students.append(stu)
elif action == '2':
print('2. 显示全部信息')
print('姓名\t语文\t数学\t英语\t总分')
for stu in students:
print(f'{stu["name"]}\t{stu["chinese"]}\t\t{stu["math"]}\t\t{stu["english"]}\t\t{stu["total"]}')
elif action == '3':
print('3. 查询学生信息')
name = input('请输入你要查询学生的姓名:')
# 先遍历所有学生
for stu in students:
# 如果满足条件, 就是查询到了
if name == stu['name']:
print('姓名\t语文\t数学\t英语\t总分')
print(f'{stu["name"]}\t{stu["chinese"]}\t\t{stu["math"]}\t\t{stu["english"]}\t\t{stu["total"]}')
# 一旦查询到了就停止查询
break
else:
# 没找到
print('该学生不存在, 请检查名字是否输入正确!')
elif action == '4':
print('4. 删除学生信息')
name = input('请输入你要删除学生的姓名:')
# 先遍历所有学生
for stu in students:
# 找到学生
if name == stu['name']:
# 删除学生
students.remove(stu)
break
else:
# 没找到
print('该学生不存在, 请检查名字是否输入正确!')
elif action == '5':
print('5. 修改学生信息')
name = input('请输入你要修改学生的姓名:')
# 先遍历所有学生
for stu in students:
# 如果满足条件, 就是查询到了, 找到了这个学生
# 找到了需要修改的学生
if name == stu['name']:
# 不想修改, 直接回车
print('(如果不想修改,直接回车!)')
name = input('请重新输入学生的姓名:')
chinese = input('请重新输入学生的语文成绩:')
math = input('请重新输入学生的数学成绩:')
english = input('请重新输入学生的英语成绩:')
# total = chinese + math + english
# 用户输入了数据才修改
if name:
stu['name'] = name
if chinese:
stu['chinese'] = int(chinese)
if math:
stu['math'] = int(math)
if english:
stu['english'] = int(english)
stu['total'] = stu['chinese'] + stu['math'] + stu['english']
break
else:
# 没找到
print('该学生不存在, 请检查名字是否输入正确!')
elif action == '0':
print('0. 退出系统')
with open('students.json', mode='w', encoding='utf-8') as f:
# 把列表对象转化成字符串 ascii 编码
students_str = json.dumps(students, ensure_ascii=False)
f.write(students_str)
print(students_str)
break
else:
print('请输入正确的选项!')
是不是很简单!欢迎留言讨论!
喜欢记得点赞哦!
最后要是代码看不懂,还有视频教程
学生管理系统视频教程地址:←点击左边蓝色文字就可以跳转观看了
Python基础入门教程推荐:←点击左边蓝色文字就可以跳转观看了
Python基础案例练习:制作学生信息管理系统的更多相关文章
- 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】
资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...
- Android(java)学习笔记195:学生信息管理系统案例(SQLite + ListView)
1.首先说明一个知识点,通常我们显示布局文件xml都是如下: setContentView(R.layout.activity_main): 其实每一个xml布局文件就好像一个气球,我们可以使用Vie ...
- Py学生信息管理系统 案例(优化版)
# 第一题:设计一个全局变量,来保存很多个学生信息:学生(学号, 姓名,年龄):思考要用怎样的结构来保存:# 第二题:在第一题基础上,完成:让用户输入一个新的学生信息(学号,姓名,年龄):你将其保存在 ...
- Python学生信息管理系统的开发
# 第一题:设计一个全局变量,来保存很多个学生信息:学生(学号, 姓名,年龄):思考要用怎样的结构来保存:# 第二题:在第一题基础上,完成:让用户输入一个新的学生信息(学号,姓名,年龄):你将其保存在 ...
- Android(java)学习笔记188:学生信息管理系统案例(SQLite + ListView)
1.首先说明一个知识点,通常我们显示布局文件xml都是如下: setContentView(R.layout.activity_main): 其实每一个xml布局文件就好像一个气球,我们可以使用Vie ...
- 面向对象案例-学生信息管理系统V0.6
更新版本 面向对象案例 - 学生信息管理系统V1.0 项目要求: 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的方法 1. ...
- python 04 学生信息管理系统
今天任务不多,做了学生信息管理系统1.0,使用字典存储学生个体信息,列表存储学生字典.注意dict定义要在循环体内,若定义成全局变量或循环体外,则旧数据会被新数据覆盖.dict属于可变类型数据,内容改 ...
- 【python免费代码】设计一个简单的学生信息管理系统
文章目录 前言 一.理解 二.部分截图展示 三.代码 四.总结 前言 设计一个简单的学生信息管理系统,实现以下功能(bug) : 录入学生信息,信息以文件方式存储 以学生学号或者学生姓名为条件查询该学 ...
- PHP实现简单的学生信息管理系统(web版)
(∩_∩) 1.概述 学了php的一些基础,包括HTML,php,pdo,mysql操作等,一直都没有将它们有机结合.最近写了一个简单的网页版学生信息管理系统,前台用HTML,脚本用到了JavaScr ...
随机推荐
- Function overloading and return type
In C++ and Java, functions can not be overloaded if they differ only in the return type. For example ...
- jstl中的foreach标签
<%@ page import="java.util.ArrayList" %><%@ page import="java.util.List" ...
- C++STL标准库学习笔记(五)set
前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来,这一篇后面主要都是我的记录了,为了防止大片蓝色字体出现,后面就不改蓝色 ...
- py脚本 获取当前运行服务的相关信息
一.简介 最近在统计系统中都部署了什么服务,但服务器太多,在没有标准化之前进行整理,还是写脚本收集方便一些. 当然还是需要人工去判断整理表格,为后面标准化做准备.脚本是python2.7的,默认的ce ...
- 【Python机器学习实战】聚类算法(2)——层次聚类(HAC)和DBSCAN
层次聚类和DBSCAN 前面说到K-means聚类算法,K-Means聚类是一种分散性聚类算法,本节主要是基于数据结构的聚类算法--层次聚类和基于密度的聚类算法--DBSCAN两种算法. 1.层次聚类 ...
- LightningChart .NET v.10.2.1已经发布了!
LightningChart .NET v.10.2.1已经发布了! 了解更多关于兼容性和优化方面的最新改进. 主要改进 我们很高兴地宣布LightningChart .NET产品系列的第三个主要版本 ...
- XGBoost特征选择
1. 特征选择的思维导图 2. XGBoost特征选择算法 (1) XGBoost算法背景 2016年,陈天奇在论文< XGBoost:A Scalable Tree Boosting Sys ...
- js Date()获取时间,格式化输出,时间比较大小
1.获取时间并且格式化输出 new Date().toLocaleString('cn',{hour12:false}) //2018/12/6 17:57:15 new Date().toLocal ...
- flexpaper上传带中文名字的文档,在页面显示若出现404错误时,请在server.xml文件中进行编码utf-8
flexpaper上传带中文名字的文档,在页面显示若出现404错误时,请在server.xml文件中进行编码utf-8
- TURN协议(RFC5766详解)
如果一台主机处于NAT后面,那么在一定条件下两台主机无法之间进行通讯.在这种条件下,那么使用中继服务提供通讯是有必要的. 这个规范定义了一个名为TURN(使用中继穿越NAT)的协议,它允许一台主机使用 ...