欢迎访问宙启技术站
智能推送

用Python编写一个学生成绩管理系统

发布时间:2023-12-04 13:20:49

学生成绩管理系统是一个用于管理学生的学业成绩、课程表以及其他相关信息的软件系统。通过该系统,教师和学生可以方便地查询和管理学生的成绩信息,以便更好地指导学生学习,并及时了解学生的学习情况。

下面我将介绍如何用Python编写一个简单的学生成绩管理系统,并给出一些使用例子。

首先,我们需要定义一些基本的数据结构,如学生和课程。每个学生都有一个学生ID、姓名和成绩列表,其中成绩列表包含该学生所修的所有课程的成绩。每个课程都有一个课程ID和名称。

class Student:
    def __init__(self, student_id, name):
        self.student_id = student_id
        self.name = name
        self.grades = []

class Course:
    def __init__(self, course_id, name):
        self.course_id = course_id
        self.name = name

接下来,我们需要实现一些基本的功能,如添加学生、添加课程、录入成绩等。

class StudentManagementSystem:
    def __init__(self):
        self.students = []
        self.courses = []

    def add_student(self, student_id, name):
        student = Student(student_id, name)
        self.students.append(student)

    def add_course(self, course_id, name):
        course = Course(course_id, name)
        self.courses.append(course)

    def record_grade(self, student_id, course_id, grade):
        # 根据学生ID和课程ID查找学生和课程对象
        student = next((s for s in self.students if s.student_id == student_id), None)
        course = next((c for c in self.courses if c.course_id == course_id), None)
        
        # 如果学生和课程存在,则录入成绩
        if student and course:
            student.grades.append({"course_id": course_id, "grade": grade})
        
    def get_student_grades(self, student_id):
        student = next((s for s in self.students if s.student_id == student_id), None)
        if student:
            return student.grades
        else:
            return []

    def get_course_grades(self, course_id):
        course = next((c for c in self.courses if c.course_id == course_id), None)
        if course:
            return [s for s in self.students if any(g["course_id"] == course_id for g in s.grades)]
        else:
            return []

使用例子:

# 创建一个学生成绩管理系统
sms = StudentManagementSystem()

# 添加学生
sms.add_student(1, "张三")
sms.add_student(2, "李四")
sms.add_student(3, "王五")

# 添加课程
sms.add_course(101, "数学")
sms.add_course(102, "英语")
sms.add_course(103, "物理")

# 录入成绩
sms.record_grade(1, 101, 88)
sms.record_grade(1, 102, 95)
sms.record_grade(2, 101, 75)
sms.record_grade(3, 103, 90)

# 查询学生成绩
student_grades = sms.get_student_grades(1)
print("学生1的成绩:")
for grade in student_grades:
    course_name = next((c.name for c in sms.courses if c.course_id == grade["course_id"]), "")
    print(course_name, grade["grade"])

# 查询课程成绩
course_grades = sms.get_course_grades(101)
print("数学课程的成绩:")
for student in course_grades:
    student_name = student.name
    grade = next((g["grade"] for g in student.grades if g["course_id"] == 101), "")
    print(student_name, grade)

这是一个简单的学生成绩管理系统的示例,可以根据实际需求进行扩展和修改。例如,可以添加更多的功能,如删除学生、删除课程、修改成绩等。同时,也可以将数据持久化存储到文件或数据库中,以便长期保存和管理学生的成绩信息。