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

Python学生信息管理系统(完整代码)

引言:(假装不是一个大学生课设)在现代教育管理中,学生管理系统显得尤为重要。这种系统能够帮助教育机构有效地管理学生资料、成绩、出勤以及其他教育相关活动,从而提高管理效率并减少人为错误。通过使用Python,我们可以快速开发出灵活且功能强大的管理系统。

目录

分析

系统设计

数据模型设计

功能模块划分

于是我们有了:

完整项目

使用效果


分析

一个基本的学生管理系统应该具备以下几个核心功能:

  • 学生信息管理:允许管理员添加、编辑和删除学生的基本信息如姓名、年龄、性别和班级。
  • 成绩管理:管理学生的成绩数据,包括成绩录入、修改和查询。
  • 课程管理:添加和管理课程信息,以及课程与学生的关联。
  • 查询功能:能够按条件查询学生信息和成绩,如按姓名、班级等。
  • 报表生成:生成学生的成绩单、出勤记录等报表。

系统设计

数据模型设计

        数据模型主要包括三个对象:学生、课程和成绩。学生对象包含姓名、年龄等属性;课程对象包括课程名称和课程描述;成绩对象则关联学生和课程,并记录具体的分数。

功能模块划分
  • 信息管理模块:处理学生、教师和课程的基本信息录入和修改。
  • 成绩管理模块:实现成绩的添加、更新和查询。
  • 用户界面模块:通过图形界面与用户交互,实现数据的输入和显示。
于是我们有了:
class Student:def __init__(self, student_id, name, age):self.student_id = student_idself.name = nameself.age = agedef __str__(self):return f"Student ID: {self.student_id}, Name: {self.name}, Age: {self.age}"class StudentManager:def __init__(self):self.students = {}def add_student(self, student):self.students[student.student_id] = studentprint(f"Added: {student}")def remove_student(self, student_id):if student_id in self.students:del self.students[student_id]print(f"Removed student ID {student_id}")else:print(f"Student ID {student_id} not found")def show_all_students(self):for student_id, student in self.students.items():print(student)# 示例
manager = StudentManager()
manager.add_student(Student(1, "Alice", 20))
manager.add_student(Student(2, "Bob", 22))
manager.show_all_students()
manager.remove_student(1)
manager.show_all_students()

我们继续完善学生管理系统的代码。首先是学生、课程和成绩管理的基本类和方法的实现

添加功能以编辑学生信息

class Student:def __init__(self, student_id, name, age):self.student_id = student_idself.name = nameself.age = agedef update_info(self, name=None, age=None):if name is not None:self.name = nameif age is not None:self.age = agedef __str__(self):return f"Student ID: {self.student_id}, Name: {self.name}, Age: {self.age}"class StudentManager:def __init__(self):self.students = {}def add_student(self, student):if student.student_id in self.students:print("Error: Student already exists.")else:self.students[student.student_id] = studentprint(f"Added: {student}")def remove_student(self, student_id):if student_id in self.students:del self.students[student_id]print(f"Removed student ID {student_id}")else:print(f"Student ID {student_id} not found")def update_student(self, student_id, name=None, age=None):if student_id in self.students:self.students[student_id].update_info(name, age)print(f"Updated: {self.students[student_id]}")else:print(f"Student ID {student_id} not found")def show_all_students(self):for student in self.students.values():print(student)# 示例用法
manager = StudentManager()
manager.add_student(Student(1, "Alice", 20))
manager.add_student(Student(2, "Bob", 22))
manager.update_student(1, name="Alice Smith")
manager.show_all_students()
manager.remove_student(1)
manager.show_all_students()

同理,设计课程管理

class Course:def __init__(self, course_id, name, description):self.course_id = course_idself.name = nameself.description = descriptiondef __str__(self):return f"Course ID: {self.course_id}, Name: {self.name}, Description: {self.description}"class CourseManager:def __init__(self):self.courses = {}def add_course(self, course):if course.course_id in self.courses:print("Error: Course already exists.")else:self.courses[course.course_id] = courseprint(f"Added: {course}")def remove_course(self, course_id):if course_id in self.courses:del self.courses[course_id]print(f"Removed course ID {course_id}")else:print("Course ID not found")def show_all_courses(self):for course in self.courses.values():print(course)# 示例用法
course_manager = CourseManager()
course_manager.add_course(Course(101, "Mathematics", "Introduction to Algebra"))
course_manager.add_course(Course(102, "English", "Literature and Composition"))
course_manager.show_all_courses()
course_manager.remove_course(101)
course_manager.show_all_courses()

完整项目

        接下来,我们将整合学生、课程和成绩管理功能,并添加一个简单的命令行交互界面,以便用户可以通过终端操作这个学生管理系统。

        这个程序允许用户通过命令行添加和查看学生、课程和成绩信息。用户可以通过输入选择来操作系统,如添加学生、课程、成绩,或者查看已录入的信息。这为用户提供了一个基本但完整的界面来与学生管理系统进行交互。

class Student:def __init__(self, student_id, name, age):self.student_id = student_idself.name = nameself.age = agedef update_info(self, name=None, age=None):if name is not None:self.name = nameif age is not None:self.age = agedef __str__(self):return f"学生ID: {self.student_id}, 姓名: {self.name}, 年龄: {self.age}"class Course:def __init__(self, course_id, name, description):self.course_id = course_idself.name = nameself.description = descriptiondef __str__(self):return f"课程ID: {self.course_id}, 课程名称: {self.name}, 描述: {self.description}"class Grade:def __init__(self, student_id, course_id, score):self.student_id = student_idself.course_id = course_idself.score = scoredef __str__(self):return f"学生ID: {self.student_id}, 课程ID: {self.course_id}, 成绩: {self.score}"class Manager:def __init__(self):self.students = {}self.courses = {}self.grades = []def add_student(self, student):self.students[student.student_id] = studentdef add_course(self, course):self.courses[course.course_id] = coursedef add_grade(self, grade):self.grades.append(grade)def show_students(self):for student in self.students.values():print(student)def show_courses(self):for course in self.courses.values():print(course)def show_grades(self):for grade in self.grades:print(grade)def main():manager = Manager()while True:print("\n菜单:")print("1. 添加学生")print("2. 添加课程")print("3. 添加成绩")print("4. 显示所有学生")print("5. 显示所有课程")print("6. 显示所有成绩")print("7. 退出")choice = input("请输入选项: ")if choice == '1':student_id = input("请输入学生ID: ")name = input("请输入姓名: ")age = input("请输入年龄: ")manager.add_student(Student(student_id, name, age))elif choice == '2':course_id = input("请输入课程ID: ")name = input("请输入课程名称: ")description = input("请输入课程描述: ")manager.add_course(Course(course_id, name, description))elif choice == '3':student_id = input("请输入学生ID以添加成绩: ")course_id = input("请输入课程ID以添加成绩: ")score = input("请输入成绩: ")manager.add_grade(Grade(student_id, course_id, score))elif choice == '4':manager.show_students()elif choice == '5':manager.show_courses()elif choice == '6':manager.show_grades()elif choice == '7':print("正在退出...")breakelse:print("无效选项,请输入1至7之间的数字。")if __name__ == "__main__":main()
使用效果

试用一下:

        可能发的有点晚,能救一个算一个吧

相关文章:

  • PhysioLLM 个性化健康洞察:手表可穿戴设备实时数据 + 大模型
  • 代码随想录训练营第二十八天 122买卖股票的最佳时间II 55跳跃游戏 45跳跃游戏II 1005K次取反后最大化的数组和
  • 使用React复刻ThreeJS官网示例——keyframes动画
  • #数据结构 笔记三
  • 上海市计算机学会竞赛平台2023年6月月赛丙组选取子段(二)
  • webrtc-m120编译 (m126)
  • 深入浅出mysql分库分表
  • JAVA学习笔记2
  • Python 学习之常用第三方库(五)
  • 逻辑这回事(七)---- 器件基础
  • Docker 容器网络互连 自定义网络 程序互相访问
  • Java中集中常见的算法
  • 【C++设计模式】(一)面向对象编程的八大原则
  • 打卡第2天----数组双指针,滑动窗口
  • 修改头文件版本需要修改的文件
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • C# 免费离线人脸识别 2.0 Demo
  • express.js的介绍及使用
  • gitlab-ci配置详解(一)
  • in typeof instanceof ===这些运算符有什么作用
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Laravel 实践之路: 数据库迁移与数据填充
  • Mithril.js 入门介绍
  • ng6--错误信息小结(持续更新)
  • Shadow DOM 内部构造及如何构建独立组件
  • 闭包--闭包之tab栏切换(四)
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 删除表内多余的重复数据
  • 我的zsh配置, 2019最新方案
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 追踪解析 FutureTask 源码
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • const的用法,特别是用在函数前面与后面的区别
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • ( 10 )MySQL中的外键
  • (1) caustics\
  • (7)STL算法之交换赋值
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (LeetCode C++)盛最多水的容器
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (安卓)跳转应用市场APP详情页的方式
  • (南京观海微电子)——COF介绍
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)四层和七层负载均衡的区别
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .axf 转化 .bin文件 的方法
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Core 中插件式开发实现
  • .NET/C# 使窗口永不获得焦点
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .Net程序帮助文档制作