python学生成绩登记系统软件测试报告
一、单元测试
1.add_student()函数
该函数实现向系统中依据学生学号添加一个学生信息的功能,函数代码如下:

测试验证本函数功能共设计了2个测试例,详细如下:
(1)测试例1,在系统中未存入学号为001的学生信息时添加学号为001的学生信息,函数预期运行结果为所有学生信息列表中含有001学生信息。测试代码和测试结果如下:


(2)测试例2,在系统中已存有学号为001的学生信息时添加学号为001的学生信息。函数预期运行结果为控制台提示该学生已存在。测试代码和测试结果如下


2.update_student()函数
该函数实现向系统中依据学生学号修改一个学生信息的功能,函数代码如下:

测试验证本函数功能共设计了2个测试例,详细如下:
(1)测试例1,在系统中修改学号为001的学生信息的单科成绩,成绩范围在0-100之间,函数预期运行结果为学生信息列表中含有修改之后的001学生信息的单科成绩。测试代码和测试结果如下

(2)测试例2,在系统中修改学号为001的学生信息的单科成绩,成绩范围不在0-100之间,函数预期运行结果为修改001学生信息的单科成绩异常。测试代码和测试结果如下:


3.delete_student()函数
该函数实现向系统中依据学生学号删除一个学生信息的功能,函数代码如下:

测试验证本函数功能共设计了2个测试例,详细如下:
(1)测试例1,在系统中未存入学号为001的学生信息时删除学号为001的学生信息,函数预期运行结果为控制台提示该学生不存在,删除001学生信息异常。测试代码和测试结果如下:

(2)测试例2,在系统中已存有学号为001的学生信息时删除学号为001的学生信息。函数预期运行结果为所有学生信息列表中不含有001学生信息。测试代码和测试结果如下:


4.rank_subject(subject)函数
该函数实现向系统中对指定科目成绩进行排名功能,函数代码如下:

测试验证本函数功能共设计了2个测试例,详细如下:
(1)测试例1,在系统中已存入学生信息的单科成绩,函数预期运行结果为显示指定的学生信息的单科成绩排名。测试代码和测试结果如下:


(2)测试例2,在系统中未存入学生信息的单科成绩,函数预期运行结果为控制台提示该学生不存在。测试代码和测试结果如下:


5.rank_total()函数
该函数实现向系统中对总成绩进行排名功能,函数代码如下:

测试验证本函数功能共设计了2个测试例,详细如下:
(1)测试例1,在系统中已存入学生信息的所有成绩,函数预期运行结果为显示学生信息的所有成绩排名。测试结果如下:


(2)测试例2,在系统中未存入学生信息的成绩,函数预期运行结果为控制台提示该学生不存在。测试结果如下:


6.query_student()函数
该函数实现向系统中依据学生学号查询一个学生信息的功能,函数代码如下:

测试验证本函数功能共设计了2个测试例,详细如下:
(1)测试例1,在系统中未存入学号为001的学生信息时查询学号为001的学生信息,函数预期运行结果为不存在该学生信息。测试代码和测试结果如下:


(2)测试例2,在系统中已存有学号为001的学生信息时查询学号为001的学生信息。函数预期运行结果为显示001的学生的各科成绩。测试代码和测试结果如下:


二、系统测试
为验证系统完整运行过程,设计了3个系统测试例,涵盖软件所有功能。
(1)系统测试例1系统运行过程为:系统启动(显示初始启动成功);分别添加学号为001和002的学生信息(能正确添加);再次添加学号为001的学生信息(提示该学生信息已存在);查询学号为001的学生信息(显示信息);更新学号为001的学生信息(更新成功);查询学号为001的学生信息(显示信息);退出系统(提示文件保存成功,系统退出)。测试运行过程及文件结果如下:




(2)系统测试例2系统运行过程为:系统启动(显示读取文件成功,列出所有学生信息);查询学号为002学生信息(显示学生信息);删除学号为002的学生信息(删除成功);查询学号为002学生信息(显示学生不存在);再次删除学号为002的学生信息(提示不存在);分别添加学号为003、004、005和006的学生信息(能正确添加);退出系统(提示文件保存成功,系统退出)。测试运行过程及文件结果如下:






(3)系统测试例3系统运行过程为:系统启动(显示读取文件成功,列出所有学生信息);按总成绩排序学生信息(能按正确顺序显示学生信息);按语文成绩排序学生信息(能按正确顺序显示学生信息);按数学成绩排序学生信息(能按正确顺序显示学生信息);按英语成绩排序学生信息(能按正确顺序显示学生信息);退出系统(提示文件保存成功,系统退出)。测试运行过程及文件结果如下:




附:系统完整代码如下:
import os# 数据存储
students = []# 读取文件信息
def read_students():global studentstry:if os.path.exists("students.txt"):with open("students.txt", "r") as file:lines = file.readlines()for line in lines:data = line.strip().split(",")student = {"id": data[0], "math": int(data[1]), "english": int(data[2]), "chinese": int(data[3])}students.append(student)print("读取文件成功")print("以下是所有学生信息:")for student in students:print(f"学号: {student['id']}, 数学成绩: {student['math']}, 英语成绩: {student['english']}, 语文成绩: {student['chinese']}")except Exception as e:print("读取文件出现异常:", e)# 保存文件信息
def save_students():try:with open("students.txt", "w") as file:for student in students:line = "{},{},{},{}\n".format(student["id"], student["math"], student["english"], student["chinese"])file.write(line)except Exception as e:print("保存文件出现异常:", e)else:print("文件保存成功")# 添加学生成绩
def add_student():try:id = input("请输入学号:")for student in students:if student["id"] == id:print("学号已存在,请重新输入!")returnmath = int(input("请输入数学成绩:"))if not 0 <= math <= 100:print("成绩应在0到100之间,请重新输入!")returnenglish = int(input("请输入英语成绩:"))if not 0 <= english <= 100:print("成绩应在0到100之间,请重新输入!")returnchinese = int(input("请输入语文成绩:"))if not 0 <= chinese <= 100:print("成绩应在0到100之间,请重新输入!")returnstudent = {"id": id, "math": math, "english": english, "chinese": chinese}students.append(student)save_students()except Exception as e:print("添加学生成绩出现异常:", e)# 修改学生成绩
def update_student():try:id = input("请输入要修改成绩的学号:")found = Falsefor student in students:if student["id"] == id:found = Truemath = int(input("请输入数学成绩:"))if not 0 <= math <= 100:print("成绩应在0到100之间,请重新输入!")returnenglish = int(input("请输入英语成绩:"))if not 0 <= english <= 100:print("成绩应在0到100之间,请重新输入!")returnchinese = int(input("请输入语文成绩:"))if not 0 <= chinese <= 100:print("成绩应在0到100之间,请重新输入!")returnstudent["math"] = mathstudent["english"] = englishstudent["chinese"] = chinesesave_students()returnif not found:print("未找到该学号的学生!")except Exception as e:print("修改学生成绩出现异常:", e)# 删除学生成绩
def delete_student():try:id = input("请输入要删除成绩的学号:")found = Falsefor student in students:if student["id"] == id:found = Truestudents.remove(student)save_students()returnif not found:print("未找到该学号的学生!")except Exception as e:print("删除学生成绩出现异常:", e)# 单科成绩排名
def rank_subject(subject):found = Falsefor student in students:if student["id"] == subject or (subject in student and student[subject] is not None):found = Truebreakif not found:print("该学生不存在或暂无该科目成绩信息,请先添加成绩数据。")returntry:sorted_students = sorted(students, key=lambda x: x[subject], reverse=True)for i, student in enumerate(sorted_students):print("{}、学号:{},{}成绩:{}".format(i + 1, student["id"], subject, student[subject]))except Exception as e:print("单科成绩排名出现异常:", e)# 总成绩排名
def rank_total():found = Falsefor student in students:if student["id"] is not None:found = Truebreakif not found:print("系统中暂无学生成绩信息,请先添加成绩数据。")returntry:for student in students:student["total"] = student["math"] + student["english"] + student["chinese"]sorted_students = sorted(students, key=lambda x: x["total"], reverse=True)for i, student in enumerate(sorted_students):print("{}、学号:{},总成绩:{}".format(i + 1, student["id"], student["total"]))except Exception as e:print("总成绩排名出现异常:", e)# 查询学生成绩
def query_student():try:id = input("请输入要查询成绩的学号:")found = Falsefor student in students:if student["id"] == id:found = Trueprint("学号:{},数学成绩:{},英语成绩:{},语文成绩:{}".format(student["id"], student["math"], student["english"], student["chinese"]))returnif not found:print("未找到该学号的学生!")except Exception as e:print("查询学生成绩出现异常:", e)# 主函数
def main():read_students()while True:try:print("1. 添加学生成绩")print("2. 修改学生成绩")print("3. 删除学生成绩")print("4. 数学成绩排名")print("5. 英语成绩排名")print("6. 语文成绩排名")print("7. 总成绩排名")print("8. 查询学生成绩")print("9. 退出")choice = input("请选择操作:")if choice == "1":add_student()elif choice == "2":update_student()elif choice == "3":delete_student()elif choice == "4":rank_subject("math")elif choice == "5":rank_subject("english")elif choice == "6":rank_subject("chinese")elif choice == "7":rank_total()elif choice == "8":query_student()elif choice == "9":print("文件保存成功,系统退出")breakexcept Exception as e:print("主菜单操作出现异常:", e)if __name__ == "__main__":main()