学生信息管理系统说明文档
系统概述
学生信息管理系统是一个用于管理学生个人信息、成绩以及进行基本操作(如增加、删除、查找、修改学生信息)的系统。该系统通过控制台输入操作,并提供了文本文件存储功能。
功能列表
- 录入学生信息
- 查找学生信息
- 删除学生信息
- 修改学生信息
- 对学生成绩排序
- 统计学生总人数
- 显示所有学生信息
- 退出系统
类设计
系统主要包含以下类:
Student
: 存储单个学生的信息。StudentManager
: 管理学生集合及其相关操作。Menu
: 提供用户界面菜单及用户输入。
Student
类
属性
student_id
: 学生ID(字符串类型)name
: 学生姓名(字符串类型)english
: 英语成绩(整数类型)python
: Python成绩(整数类型)java
: Java成绩(整数类型)
方法
total_score
: 计算学生总成绩。__str__
: 格式化输出学生信息。
StudentManager
类
属性
students
: 存储所有学生信息的字典。
方法
add_student
: 添加新学生。find_student
: 查找学生。remove_student
: 删除学生。modify_student
: 修改学生信息。sort_students
: 根据成绩排序学生。save_students
: 保存学生信息到文件。load_students
: 从文件加载学生信息。show_students
: 显示所有学生信息。
Menu
类
静态方法
display_menu
: 显示操作菜单。get_choice
: 获取用户的选择。
系统使用方法
- 启动程序,将显示操作菜单。
- 根据提示输入选择的操作编号。
- 根据屏幕提示输入必要信息。
- 系统将处理您的请求并提供反馈。
import os
class Student:
def __init__(self, student_id, name, english, python, java):
self.student_id = student_id
self.name = name
self.english = english
self.python = python
self.java = java
def total_score(self):
return self.english + self.python + self.java
def __str__(self):
return f"{self.student_id}\t{self.name}\t{self.english}\t{self.python}\t{self.java}\t{self.total_score()}"
class StudentManager:
def __init__(self):
self.students = {}
def add_student(self):
# 添加
student_id = input('请输入id(如1001):')
name = input('请输入名字(如张三):')
english = int(input('请输入英语成绩:'))
python = int(input('请输入python成绩:'))
java = int(input('请输入java成绩:'))
student = Student(student_id, name, english, python, java)
self.students[student.student_id] = student
print("学生信息录入完毕!")
def find_student(self):
# 查找
student_id = input("请输入学生ID:")
student = self.students.get(student_id)
if student:
print("找到学生信息:")
print(student)
else:
print("没有找到该学生信息。")
def remove_student(self):
# 删除
student_id = input("请输入要删除学生的id:")
if student_id in self.students:
del self.students[student_id]
print(f"id为{student_id}的学生信息已被删除。")
else:
print(f"没有找到ID为{student_id}的学生信息。")
def save_students(self, filename="student.txt"):
with open(filename, 'w', encoding='UTF-8') as file:
for student in self.students.values():
file.write(f"{student}\n")
def load_students(self, filename="student.txt"):
if os.path.exists(filename):
with open(filename, 'r', encoding='UTF-8') as file:
for line in file:
student_data = line.strip().split('\t')
student = Student(*student_data)
self.students[student.student_id] = student
def show_students(self):
for student in self.students.values():
print(student)
def modify_student(self):
# 修改
student_id = input('请输入要修改的学生id: ')
if student_id in self.students:
student = self.students[student_id]
print("找到学生信息,可以修改他的相关信息了!")
student.name = input("请输入姓名:")
student.english = int(input("请输入英语成绩:"))
student.python = int(input("请输入python成绩:"))
student.java = int(input('请输入java成绩:'))
print('修改成功!')
else:
print("没有找到该学生的信息。")
def sort_students(self):
# 排序
sort_key = input("请选择排序方式(1.按英语成绩 2.按Python成绩 3.按Java成绩 0.按总成绩): ")
reverse = input("请选择排序方式(0.升序 1.降序): ") == '1'
if sort_key == '1':
sorted_students = sorted(self.students.values(), key=lambda s: s.english, reverse=reverse)
elif sort_key == '2':
sorted_students = sorted(self.students.values(), key=lambda s: s.python, reverse=reverse)
elif sort_key == '3':
sorted_students = sorted(self.students.values(), key=lambda s: s.java, reverse=reverse)
elif sort_key == '0':
sorted_students = sorted(self.students.values(), key=lambda s: s.total_score(), reverse=reverse)
else:
print("您输入有误,请重新输入。")
return
for student in sorted_students:
print(student)
class Menu:
# 菜单
@staticmethod
def display_menu():
print("===========================学生信息管理系统==========================")
print('-------------------------------功能菜单----------------------------')
print('\t\t\t\t\t\t1.录入学生信息')
print('\t\t\t\t\t\t2.查找学生信息')
print('\t\t\t\t\t\t3.删除学生信息')
print('\t\t\t\t\t\t4.修改学生信息')
print('\t\t\t\t\t\t5.对学生成绩排序')
print('\t\t\t\t\t\t6.统计学生总人数')
print('\t\t\t\t\t\t7.显示所有学生信息')
print('\t\t\t\t\t\t0.退出系统')
print('-----------------------------------------------------------------------')
@staticmethod
def get_choice():
choice = input("请选择:")
return choice
def main():
# 主函数
student_manager = StudentManager()
student_manager.load_students()
while True:
Menu.display_menu()
choice = Menu.get_choice()
if choice == '1':
student_manager.add_student()
elif choice == '2':
student_manager.find_student()
elif choice == '3':
student_manager.remove_student()
elif choice == '4':
student_manager.modify_student()
elif choice == '5':
student_manager.sort_students()
elif choice == '6':
print(f"一共有{len(student_manager.students)}名学生。")
elif choice == '7':
student_manager.show_students()
elif choice == '0':
student_manager.save_students()
print("谢谢您的使用。")
break
else:
print("您输入的有误,请重新输入。")
if __name__ == "__main__":
main()