当前位置: 首页 > news >正文

Python学生信息管理系统的设计与实现

在本篇博客中,我们将深入探讨一个基于Python的简单学生信息管理系统的设计与实现过程。这个系统允许用户执行诸如添加、删除、修改和查询学生信息等操作。我们将逐步解析代码,理解其中的关键概念和编程实践。

1. 系统概述

该系统由几个核心功能组成:

  • 添加学生信息
  • 删除学生信息
  • 修改学生信息
  • 查询学生信息
  • 遍历所有学生信息
  • 退出系统
2. 主要代码结构

系统的核心在于一个循环,不断向用户展示菜单并根据用户的输入执行相应的功能。我们首先定义了一个showInfo()函数,用于显示功能列表。

def showInfo():print("-" * 30)print("     学生管理系统  v1.0")# ... 显示菜单 ...print('-' * 30)
3. 学生数据存储

为了保存学生信息,我们使用了一个列表students,其中每个元素都是一个字典,包含nameidage字段。

students = []
4. 功能实现
添加学生信息

在添加学生信息时,程序会提示用户输入姓名、学号和年龄,并检查学号是否已存在,以保证其唯一性。

if leap == 1:print("输入学生学号重复,添加失败!")
else:stuInfo = {'name': name, 'id': stuId, 'age': age}students.append(stuInfo)print("添加成功!")
删除学生信息

删除操作通过查找指定学号的学生信息并从列表中移除来实现。

if leap == 0:print("没有此学生学号,删除失败!")
else:del students[i]print("删除成功!")
修改学生信息

修改功能允许用户修改特定学生的学号、姓名或年龄,同时确保学号的唯一性。

if leap == 1:# 修改代码...
else:print("没有此学号,修改失败!")
查询学生信息

查询功能根据输入的学号查找并显示学生的详细信息。

if leap == 0:print("没有此学生学号,查询失败!")
else:print("找到此学生,信息如下:")print("学号:%s\n姓名:%s\n年龄:%s\n" % (temp['id'], temp['name'], temp['age']))
遍历所有学生信息

遍历功能用于显示系统中存储的所有学生信息。

print("*" * 20)
print("接下来进行遍历所有的学生信息...")
print("id      姓名         年龄")
for temp in students:print("%s     %s     %s" % (temp['id'], temp['name'], temp['age']))
print("*" * 20)
退出系统

最后,系统提供了退出选项,但通过询问确认来避免意外退出。

quitconfirm = input("亲,真的要退出么 (yes或者no)??~~(>_<)~~??")
if quitconfirm == 'yes':print("欢迎使用本系统,谢谢")break;
5. 完整代码
# encoding utf=8
# 定义一个函数,显示可以使用的功能列表给用户
def showInfo():print("-" * 30)print("     学生管理系统  v1.0")print(" 1.添加学生的信息")print(" 2.删除学生的信息")print(" 3.修改学生的信息")print(" 4.查询学生的信息")print(" 5.遍历所有学生的信息")print(" 6.退出系统")print('-' * 30)# 定义一个列表,用来存储多个学生的信息
students = []while True:# 把功能列表进行显示给用户showInfo()# 提示用户选择功能# 获取用户选择的功能key = int(input("请选择功能(序号):"))# 根据用户选择,完成相应功能if key == 1:print("您选择了添加学生信息功能")name = input("请输入学生姓名:")stuId = input("请输入学生学号(学号不可重复):")age = input("请输入学生年龄:")# 验证学号是否唯一i = 0leap = 0for temp in students:if temp['id'] == stuId:leap = 1breakelse:i = i + 1if leap == 1:print("输入学生学号重复,添加失败!")breakelse:# 定义一个字典,存放单个学生信息stuInfo = {}stuInfo['name'] = namestuInfo['id'] = stuIdstuInfo['age'] = age# 单个学生信息放入列表students.append(stuInfo)print("添加成功!")elif key == 2:print("您选择了删除学生功能")delId = input("请输入要删除的学生学号:")# i记录要删除的下标,leap为标志位,如果找到leap=1,否则为0i = 0leap = 0for temp in students:if temp['id'] == delId:leap = 1breakelse:i = i + 1if leap == 0:print("没有此学生学号,删除失败!")else:del students[i]print("删除成功!")elif key == 3:print("您选择了修改学生信息功能")alterId = input("请输入你要修改学生的学号:")# 检测是否有此学号,然后进行修改信息i = 0leap = 0for temp in students:if temp['id'] == alterId:leap = 1breakelse:i = i + 1if leap == 1:while True:alterNum = int(input(" 1.修改学号\n 2.修改姓名 \n 3.修改年龄 \n 4.退出修改\n"))if alterNum == 1:newId = input("输入更改后的学号:")# 修改后的学号要验证是否唯一i = 0leap1 = 0for temp1 in students:if temp1['id'] == newId:leap1 = 1breakelse:i = i + 1if leap1 == 1:print("输入学号不可重复,修改失败!")else:temp['id'] = newIdprint("学号修改成功")elif alterNum == 2:newName = input("输入更改后的姓名:")temp['name'] = newNameprint("姓名修改成功")elif alterNum == 3:newAge = input("输入更改后的年龄:")temp['age'] = newAgeprint("年龄修改成功")elif alterNum == 4:breakelse:print("输入错误请重新输入")else:print("没有此学号,修改失败!")elif key == 4:print("您选择了查询学生信息功能")searchID = input("请输入你要查询学生的学号:")# 验证是否有此学号i = 0leap = 0for temp in students:if temp['id'] == searchID:leap = 1breakelse:i = i + 1if leap == 0:print("没有此学生学号,查询失败!")else:print("找到此学生,信息如下:")print("学号:%s\n姓名:%s\n年龄:%s\n" % (temp['id'], temp['name'], temp['age']))elif key == 5:# 遍历并输出所有学生的信息print('*' * 20)print("接下来进行遍历所有的学生信息...")print("id      姓名         年龄")for temp in students:print("%s     %s     %s" % (temp['id'], temp['name'], temp['age']))print("*" * 20)elif key == 6:# 退出功能,尽量往不退出的方向引quitconfirm = input("亲,真的要退出么 (yes或者no)??~~(>_<)~~??")if quitconfirm == 'yes':print("欢迎使用本系统,谢谢")break;else:print("您输入有误,请重新输入")
6. 总结

这个学生信息管理系统虽然简单,但它涵盖了Python编程中的许多关键概念,包括列表、字典、循环、条件判断和用户输入处理。此外,它还展示了如何在实际应用中使用这些概念来构建一个实用的系统。通过理解和修改这段代码,你可以进一步扩展其功能,例如增加文件读写功能,使得数据可以持久化存储。

http://www.lryc.cn/news/399397.html

相关文章:

  • 最优雅的PHP框架 Laravel
  • log4j2的日志框架(详细,springboot和异步日志的实现)
  • taocms 3.0.1 本地文件泄露漏洞(CVE-2021-44983)
  • SpringBoot实战:处理全局异常
  • pdf只要前几页,pdf中只要前几页怎么处理
  • 实变函数精解【4】
  • 【BUG】Python3|COPY 指令合并 ts 文件为 mp4 文件时长不对(含三种可执行源代码和解决方法)
  • AI克隆声音,基于函数计算部署GPT-Sovits语音生成模型
  • DP讨论——建造者模式
  • 【JavaScript】解决 JavaScript 语言报错:Uncaught SyntaxError: Unexpected token
  • oracle数据库的plsql免安装版安装
  • stm32使用通用定时器生成pwm
  • 老物件线上3D回忆展拓宽了艺术作品的展示空间和时间-深圳华锐视点
  • 对于多个表多个字段进行查询、F12查看网页的返回数据帮助开发、数据库的各种查询方式(多对多、多表查询、子查询等)。
  • 护网HW面试常问——组件中间件框架漏洞(包含流量特征)
  • 招投标数据采集:为企业决策提供数据支持
  • 02:项目二:感应开关盖垃圾桶
  • eNsp公司管理的网络NAT策略搭建
  • MUR2060CTR-ASEMI无人机专用MUR2060CTR
  • Manim的代码练习02:在manim中Dot ,Arrow和NumberPlane对象的使用
  • datawhale - 基于术语词典干预的机器翻译挑战赛 (一)
  • 【JavaScript脚本宇宙】提升用户体验:探索 JavaScript 命令行界面开发工具
  • ubuntu18.04安装显卡驱动后无法进入桌面的解决办法
  • javaScript的面试重点--预解析
  • Gitea 仓库事件触发Jenkins远程构建
  • springboot+vue 开发记录(九)后端打包部署运行
  • 昇思25天学习打卡营第20天 | 基于MindNLP+MusicGen生成自己的个性化音乐
  • windows USB 设备驱动开发-USB主控制开发(一)
  • Dubbo 负载均衡(Load Balance)
  • ArcGIS Pro SDK (九)几何 3 点