12. 保存班级信息功能的实现

csv文件格式

文件名:

格式

班级名称
学生姓名
语文成绩
数学成绩
一年一班
张三
100
99
一年一班
李四
98
97
一年2班
王五
96
95
一年2班
赵六
94
93

实现方法

import csv
from class_room import ClassRoom
import tools

class_rooms = []  # 用于存放班级对象

...

def save_to_csv_file(path_name='students.csv'):
    '''保存班级信息'''
    header = ['班级名称', '学生姓名', '语文成绩', '数学成绩']
    file = open(path_name, 'w')
    writer = csv.writer(file)
    writer.writerow(header)
    for cr in class_rooms:
        cr.writer_to_csv_writer(writer)

    file.close()

...

def class_manager():
    '''此函数用来管理班级数据'''
    while True:
        show_school_menu()
        sel = input('请选择:')
        match sel:
            case '1':  # 1) 添加班级
                add_class_room()
            case '2':  # 2) 删除班级
                del_class_room()
            case '3':  # 3) 进入管理班级
                enter_class_manager()
            case '4':  # 4) 列出所用班级
                list_all_class_room()
            case '5':  # 5) 列出班级排名(平均成绩高 - 低)
                list_class_room_order_by_average_score()
            case '6':  # 6) 保存班级信息
                save_to_csv_file('students.csv')
            case '7':  # 7) 加载班级信息
...

if __name__ == '__main__':
    from student import Student
    cr1 = ClassRoom('一年一班')
    cr1.student.append(Student('张三', 100, 61))
    cr1.student.append(Student('李四', 70, 81))
    cr1.student.append(Student('王五', 90, 71))
    cr1.student.append(Student('赵六', 80, 91))
    class_rooms.append(cr1)
    cr2 = ClassRoom('一年2班')
    cr2.student.append(Student('张3', 7, 1))
    cr2.student.append(Student('李4', 8, 2))
    cr2.student.append(Student('王5', 9, 3))
    cr2.student.append(Student('赵7', 6, 4))
    class_rooms.append(cr2)
    cr3 = ClassRoom('一年三班')
    cr3.student.append(Student('aaa', 100, 99))
    cr3.student.append(Student('bbb', 98, 98))
    cr3.student.append(Student('cccc', 99, 97))
    class_rooms.append(cr3)
    cr4 = ClassRoom('一年4班')
    cr4.student.append(Student('xxx', 60, 80))
    cr4.student.append(Student('yyy', 70, 50))
    class_rooms.append(cr4)
    class_manager()

import student
from student import Student
import tools


class ClassRoom:
    '''班级类型'''
    def __init__(self, class_name):
        self.class_name = class_name  # 班级名称
        self.student = []  # 保存学生信息

...

    def writer_to_csv_writer(self, csv_writer):
        '''写入一个班级的学生数据'''
        for a_stu in self.student:
            a_item = [
                self.class_name,
                a_stu.name,
                str(a_stu.chinese_score),
                str(a_stu.math_score)
            ]
            csv_writer.writerow(a_item)

...



if __name__ == '__main__':
    cr1 = ClassRoom('一年1班')
    cr1.student.append(Student('张三', 100, 61))
    cr1.student.append(Student('李四', 70, 81))
    cr1.student.append(Student('王五', 90, 71))
    cr1.student.append(Student('赵六', 80, 91))
    print('平均分:', cr1.get_average_score())
    cr1.student_manager()