编写一个学生类具有以下属性:
类属性role,赋值'student'
实例属性:
信息列表,包含: 学号,姓名,性别,年龄,成绩列表
类方法:
更改类属性值
实例方法:
构造函数
打印学生信息函数
修改学生信息函数
main函数主体:
创建学生类信息空列表
输入学生信息,
将学生信息放入学生类信息列表
将该列表写入到一个cvs文件中保存
(1)程序代码(程序运行最终正确代码):
(2)程序结果(截图Alt+PrtSc):
(3)程序分析(程序运行错误修改或运行结果分析):
- 选择功能:代码首先等待用户输入一个选择(choice),这个选择决定了程序将执行哪个功能(录入信息或修改信息)。
- 录入信息(choice == 1):
- 如果用户选择录入信息,代码将执行一个循环,使用 writer.writerow() 将学生信息(假设已经存储在 student1.inform 中)逐行写入CSV文件。这里假设 student1.inform 是一个包含多个字典的列表,每个字典代表一个学生的信息。
- 修改信息(choice == 2):
- 如果用户选择修改信息,代码将执行以下步骤:
- 读取CSV文件的内容到一个列表 new_inform 中,列表中的每个元素是一个字典,代表一个学生的信息。
- 提示用户输入要修改的学生编号、要修改的字段和新的内容。
- 创建一个 Student 对象 student2,使用 new_inform 列表初始化。但是,这里存在一个逻辑上的疑问,因为 Student 类的初始化和 update 方法并没有在代码中给出,所以我们假设 Student 类有相应的方法来更新学生的信息。
- 调用 student2.update() 方法来更新学生的信息(尽管具体实现没有在代码中给出)。
- 重新打开CSV文件以写入模式,并创建一个 csv.DictWriter 对象来写入更新后的学生信息。
- 写入CSV文件的头部,并遍历 new_inform 列表(这里实际上应该遍历更新后的学生信息列表,但代码中使用了 student2.inform,这可能是一个错误,因为 student2.update() 方法并没有修改 student2.inform)。
- 如果用户选择修改信息,代码将执行以下步骤: