以下是一个可能的实现代码:\n\npython\nimport os\n\nclass Student:\n def __init__(self, student_id, name, chinese_grade, math_grade, english_grade):\n self.student_id = student_id\n self.name = name\n self.chinese_grade = chinese_grade\n self.math_grade = math_grade\n self.english_grade = english_grade\n\ndef add_student():\n student_id = input("请输入学生学号:")\n name = input("请输入学生姓名:")\n chinese_grade = input("请输入学生语文成绩:")\n math_grade = input("请输入学生数学成绩:")\n english_grade = input("请输入学生英语成绩:")\n if not student_id.isdigit():\n print("学号必须是数字,请重新输入。")\n return add_student()\n if student_id in students:\n print("学号已存在,无法添加。")\n return\n if not chinese_grade.isdigit() or not math_grade.isdigit() or not english_grade.isdigit():\n print("成绩必须是数字,请重新输入。")\n return add_student()\n students[student_id] = Student(student_id, name, int(chinese_grade), int(math_grade), int(english_grade))\n print("学生信息添加成功。")\n\ndef continue_add():\n choice = input("是否继续添加学生信息?(Y/N)")\n if choice.upper() == "Y":\n add_student_info()\n elif choice.upper() == "N":\n return\n else:\n print("无效的选择,请重新输入。")\n continue_add()\n\ndef show_students():\n if not students:\n print("没有学生成绩信息。")\n return\n sorted_students = sorted(students.values(), key=lambda x: x.chinese_grade + x.math_grade + x.english_grade, reverse=True)\n for student in sorted_students:\n print("学号:{},姓名:{},语文成绩:{},数学成绩:{},英语成绩:{}".format(student.student_id, student.name, student.chinese_grade, student.math_grade, student.english_grade))\n\ndef modify_student():\n student_id = input("请输入要修改的学生学号:")\n if not student_id.isdigit():\n print("学号必须是数字,请重新输入。")\n return modify_student()\n if student_id not in students:\n print("学号不存在。")\n return\n student = students[student_id]\n print("学号:{},姓名:{},语文成绩:{},数学成绩:{},英语成绩:{}".format(student.student_id, student.name, student.chinese_grade, student.math_grade, student.english_grade))\n chinese_grade = input("请输入新的语文成绩(直接回车保持原有数据):")\n math_grade = input("请输入新的数学成绩(直接回车保持原有数据):")\n english_grade = input("请输入新的英语成绩(直接回车保持原有数据):")\n if chinese_grade.isdigit():\n student.chinese_grade = int(chinese_grade)\n if math_grade.isdigit():\n student.math_grade = int(math_grade)\n if english_grade.isdigit():\n student.english_grade = int(english_grade)\n print("学生信息修改成功。")\n\ndef delete_student():\n student_id = input("请输入要删除的学生学号:")\n if not student_id.isdigit():\n print("学号必须是数字,请重新输入。")\n return delete_student()\n if student_id not in students:\n print("学号不存在。")\n return\n choice = input("确定要删除学生信息?(Y/N)")\n if choice.upper() == "Y":\n del students[student_id]\n print("学生信息删除成功。")\n elif choice.upper() == "N":\n return\n else:\n print("无效的选择,请重新输入。")\n delete_student()\n\ndef export_students():\n choice = input("是否保存学生成绩信息到文件?(Y/N)")\n if choice.upper() != "Y":\n return\n filename = input("请输入保存文件的路径和名称:")\n try:\n with open(filename, "w") as file:\n for student in students.values():\n file.write("学号:{},姓名:{},语文成绩:{},数学成绩:{},英语成绩:{} ".format(student.student_id, student.name, student.chinese_grade, student.math_grade, student.english_grade))\n print("学生成绩信息保存成功。")\n except:\n print("保存失败,请检查文件路径和权限。")\n\nstudents = {}\n\nwhile True:\n print("主菜单:")\n print("功能1:输入学生成绩信息")\n print("功能2:输出所有学生成绩")\n print("功能3:修改学生成绩")\n print("功能4:删除学生成绩")\n print("功能Q:结束程序")\n choice = input("请选择功能:")\n if choice == "1":\n add_student()\n continue_add()\n elif choice == "2":\n show_students()\n elif choice == "3":\n modify_student()\n elif choice == "4":\n delete_student()\n elif choice.upper() == "Q":\n export_students()\n break\n else:\n print("无效的选择,请重新输入。")\n\n\n这个代码使用了一个Student类来表示学生,其中包含学号、姓名、语文成绩、数学成绩和英语成绩。成绩信息通过一个字典students进行存储,键是学号,值是对应的Student对象。\n\n在主循环中,根据用户的选择执行相应的功能。功能1用于输入学生成绩信息,先进行输入验证和重复学号的判断,然后创建一个Student对象并将其添加到students字典中。之后询问用户是否继续添加,根据用户的选择决定是否继续执行功能1。\n\n功能2用于输出所有学生成绩,先判断students字典是否为空,如果不为空则按照总分排序后输出每个学生的信息。\n\n功能3用于修改学生成绩,先输入要修改的学生学号,然后输出该学生的信息,再根据用户的输入修改对应的成绩。\n\n功能4用于删除学生成绩,先输入要删除的学生学号,然后询问用户是否确认删除,根据用户的选择决定是否删除。\n\n功能Q用于结束程序,在结束之前会询问用户是否保存学生成绩信息到文件中,如果用户选择是,则输入保存文件的路径和名称,然后将学生成绩信息保存到文件中。\n\n请注意,这只是一种可能的实现方式,具体实现还可以根据实际需求进行调整和优化。


原文地址: https://www.cveoy.top/t/topic/pLkE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录