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

news/2024/7/7 17:03:54 标签: python, 开发语言

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

目录

分析

系统设计

数据模型设计

功能模块划分

于是我们有了:

完整项目

使用效果


分析

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

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

系统设计

数据模型设计

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

功能模块划分
  • 信息管理模块:处理学生、教师和课程的基本信息录入和修改。
  • 成绩管理模块:实现成绩的添加、更新和查询。
  • 用户界面模块:通过图形界面与用户交互,实现数据的输入和显示。
于是我们有了:
class Student:
    def __init__(self, student_id, name, age):
        self.student_id = student_id
        self.name = name
        self.age = age

    def __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] = student
        print(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_id
        self.name = name
        self.age = age

    def update_info(self, name=None, age=None):
        if name is not None:
            self.name = name
        if age is not None:
            self.age = age

    def __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] = student
            print(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_id
        self.name = name
        self.description = description

    def __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] = course
            print(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_id
        self.name = name
        self.age = age

    def update_info(self, name=None, age=None):
        if name is not None:
            self.name = name
        if age is not None:
            self.age = age

    def __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_id
        self.name = name
        self.description = description

    def __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_id
        self.course_id = course_id
        self.score = score

    def __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] = student

    def add_course(self, course):
        self.courses[course.course_id] = course

    def 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("正在退出...")
            break
        else:
            print("无效选项,请输入1至7之间的数字。")

if __name__ == "__main__":
    main()
使用效果

试用一下:

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


http://www.niftyadmin.cn/n/5534636.html

相关文章

被裁了(9年)

那年(2015年)我刚毕业有一年多(20出头),阴差阳错来到了现在的单位。 那时互联网腾起,单位也迅速发展,部门从起初的不到30号人发展到500人;A轮、B轮.....D轮,一轮轮的融资…

前后端分离:四种开发模式与实践指南

前后端分离:四种开发模式与实践指南 什么是前后端分离 当业务变得越来越复杂或产品线越来越多时,原有的开发模式就无法满足业务需求了。 产品越来越多,展现层的变化越来越快、越来越多,此时应该进行前后端分离的分层抽象&#…

UE5.4新功能 - Texture Graph上手简介

TextureGraph是UE5.4还在实验(Experimental)阶段的新功能,该功能旨在材质生成方面达到类似Subtance Designer的效果,从而程序化的生成一些纹理。 本文就来简要学习一下。 1.使用UE5.4或以上版本,激活TextureGraph插件 2.内容视图中右键找到…

信创产业政策,信创测试方面

信创产业的政策支持主要体现在多个方面,这些政策旨在推动产业的快速发展,加强自主创新能力,保障国家信息安全,以及促进产业结构的优化升级。 首先,政府通过财政支持、税收优惠等方式,加大对信创产业的资金…

【云计算】阿里云、腾讯云、华为云RocketMQ、Kafka、RabbitMq消息队列对比

目录 一、云平台中间件关键信息对比 1、RocketMQ 2、Kafka 3、RabbitMQ 二、中间件详细信息 1、阿里云MQ (一)消息队列RocketMQ (二)消息队列Kafka (三)消息队列RabbitMQ 2、腾讯云MQ (一)消息队列RocketMQ (二)消息队列CKafka (三)消息队列RabbitMQ 3、华为云MQ…

K8S之网络深度剖析(一)(持续更新ing)

K8S之网络深度剖析 一 、关于K8S的网络模型 在K8s的世界上,IP是以Pod为单位进行分配的。一个Pod内部的所有容器共享一个网络堆栈(相当于一个网络命名空间,它们的IP地址、网络设备、配置等都是共享的)。按照这个网络原则抽象出来的为每个Pod都设置一个IP地址的模型也被称作为I…

智能猫砂盆到底哪家好用?自费实测聚宠、糯雪、CEWEY真实反馈!

快到夏天了,是不是还有人因为没挑选到喜欢的智能猫砂盆而苦恼着?太便宜怕不好用,太贵怕质量比不上价格。来来去去拖到现在还没决定,我作为养了四年猫的资深铲屎官,今天就来给大家传授经验,关于我是怎么从好…

gin框架 HTML 模板加载,渲染 使用详解和总结

gin框架中默认的HTML模板渲染使用 LoadHTMLGlob() 或者 LoadHTMLFiles() , 这个地方如果是使用的LoadHTMLGlob() 这个方法的话是有坑的,即当你的模板文件放在不同的文件夹中时,使用这个方式加载会将文件夹也作为文件加载进去,从而…