一.前言

学生信息管理系统,相信大家或多或少都有做过

最近看很多学生作业都是制作一个学生信息管理系统

于是,今天带大家做一个简单的学生信息管理系统

二.开发环境:

我用到的开发环境

  • Python 3.8
  • Pycharm 2021.2

三.涉及知识点

  • Python基础语法
  • 基本的数据类型与结构
  • 基本的逻辑控制语句
  • 实战小项目

四.接下来我们开始敲代码

我们一步步来完成学生信息管理系统

第一步:制作学生信息管理系统的界面

  1. 程序启动,显示信息管理系统欢迎界面,并显示功能菜单 (print)
  2. 用户用数字选择不同的功能 (input)
  3. 根据功能选择,执行不同的功能 (if 判断 多分支选择)
  4. 需要记录学生的 姓名、语文成绩、数学成绩、英语成绩 、总分 (input, 数据容器存储输入的学生信息)
  5. 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息 (多分支选择里面的逻辑)
  6. 进入或退出时加载或保存数据 (文件操作)
"""
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基础案例练习:制作学生信息管理系统的更多相关文章

  1. 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...

  2. Android(java)学习笔记195:学生信息管理系统案例(SQLite + ListView)

    1.首先说明一个知识点,通常我们显示布局文件xml都是如下: setContentView(R.layout.activity_main): 其实每一个xml布局文件就好像一个气球,我们可以使用Vie ...

  3. Py学生信息管理系统 案例(优化版)

    # 第一题:设计一个全局变量,来保存很多个学生信息:学生(学号, 姓名,年龄):思考要用怎样的结构来保存:# 第二题:在第一题基础上,完成:让用户输入一个新的学生信息(学号,姓名,年龄):你将其保存在 ...

  4. Python学生信息管理系统的开发

    # 第一题:设计一个全局变量,来保存很多个学生信息:学生(学号, 姓名,年龄):思考要用怎样的结构来保存:# 第二题:在第一题基础上,完成:让用户输入一个新的学生信息(学号,姓名,年龄):你将其保存在 ...

  5. Android(java)学习笔记188:学生信息管理系统案例(SQLite + ListView)

    1.首先说明一个知识点,通常我们显示布局文件xml都是如下: setContentView(R.layout.activity_main): 其实每一个xml布局文件就好像一个气球,我们可以使用Vie ...

  6. 面向对象案例-学生信息管理系统V0.6

    更新版本 面向对象案例 - 学生信息管理系统V1.0 项目要求: 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的方法 1. ...

  7. python 04 学生信息管理系统

    今天任务不多,做了学生信息管理系统1.0,使用字典存储学生个体信息,列表存储学生字典.注意dict定义要在循环体内,若定义成全局变量或循环体外,则旧数据会被新数据覆盖.dict属于可变类型数据,内容改 ...

  8. 【python免费代码】设计一个简单的学生信息管理系统

    文章目录 前言 一.理解 二.部分截图展示 三.代码 四.总结 前言 设计一个简单的学生信息管理系统,实现以下功能(bug) : 录入学生信息,信息以文件方式存储 以学生学号或者学生姓名为条件查询该学 ...

  9. PHP实现简单的学生信息管理系统(web版)

    (∩_∩) 1.概述 学了php的一些基础,包括HTML,php,pdo,mysql操作等,一直都没有将它们有机结合.最近写了一个简单的网页版学生信息管理系统,前台用HTML,脚本用到了JavaScr ...

随机推荐

  1. 【Spring Framework】12种spring中定义bean的方法

    前言 在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜.我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工 ...

  2. 【Linux】【Shell】【text】awk

    基本用法:gawk [options] 'program' FILE ...             program: PATTERN{ACTION STATEMENTS}               ...

  3. 【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决

    前言:随着.Net6的发布,Minimal API成了当下受人追捧的角儿.而这之前,程序之间通信效率的王者也许可以算得上是gRPC了.那么以下咱们先通过开发一个gRPC服务的教程,然后顺势而为,再接着 ...

  4. Identity Server 4 从入门到落地(十二)—— 使用Nginx集成认证服务

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  5. 有了代码变更分解提交工具SmartCommit,再也不担心复合提交了

    摘要:文将介绍一个代码提交辅助工具SmartCommit,其主要功能是通过杂糅变更分解算法自动生成分组提交方案,接受开发者的反馈和交互式调整,渐进式地引导和辅助开发者做出符合最佳实践的原子提交. 本文 ...

  6. 车载以太网第二弹|测试之实锤-1000BASE-T1 IOP测试实践

    背景 车载以太网通信技术在汽车行业的应用速度远超预期,去年本土OEM已经上市了应用100BASE -T1的车型.今年,应用1000BASE -T1的车型预计也将会量产上市.针对测试而言,带来另外一个难 ...

  7. [BUUCTF]PWN——[HarekazeCTF2019]baby_rop2

    [HarekazeCTF2019]baby_rop2 题目附件 步骤: 例行检查,64位,开启了nx保护 运行了一下程序,了解大概的执行情况 64位ida载入,shift+f12检索程序里的字符串,没 ...

  8. js实现数组去重的方式(7种)

    JS数组去重的方式 例:将下面数组去除重复元素(以多种数据类型为例) const arr = [1, 2, 2, 'abc', 'abc', true, true, false, false, und ...

  9. LuoguP6904 [ICPC2015 WF]Amalgamated Artichokes 题解

    Content 已知常数 \(p,a,b,c,d\),我们知道,第 \(k\) 天的股价公式为 \(price_k=p\times(\sin(a\times k+b)+\cos(c\times k+d ...

  10. vc mfc listctrl使用虚拟列表 虚拟列表用法

    note 虚拟列表可有效加载大量数据 需要处理listctrl的 LVN_GETDISPINFO 消息 使用虚拟列表 不能 使用 insert的方法插入数据,而是告诉listctrl 当前要显示多少行 ...