12. 保存班级信息功能的实现
csv文件格式
文件名:
- students.csv
格式
班级名称
学生姓名
语文成绩
数学成绩
一年一班
张三
100
99
一年一班
李四
98
97
一年2班
王五
96
95
一年2班
赵六
94
93
实现方法
- 学校相关模块:
school.py
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()
- 班级相关模块:
class_room.py
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()