设计一个学生信息管理系统,学生对象至少要包含:学号、姓名、性别、成绩1、成绩2、总成绩等信息。要求实现以下功能: 1.总成绩要求自动计算; 2.查询:分别给定学生学号、姓名、性别,能够查找到学生的基本信息(要求至少用两种查找算法实现); 3. 排序:分别按学生的学号、成绩1、成绩2、总成绩进行排序(要求至少用两种排序算法实现)。
时间: 2023-07-10 19:23:02 浏览: 102
好的,这是您的问题:设计一个学生信息管理系统,学生对象至少要包含:学号、姓名、性别、成绩1、成绩2、总成绩等信息。要求实现以下功能: 1.总成绩要求自动计算; 2.查询:分别给定学生学号、姓名、性别,能够查找到学生的基本信息(要求至少用两种查找算法实现); 3.排序:分别按学生的学号、成绩1、成绩2、总成绩进行排序(要求至少用两种排序算法实现)。
以下是一个简单的 Python 实现:
```python
class Student:
def __init__(self, student_id, name, gender, score1, score2):
self.student_id = student_id
self.name = name
self.gender = gender
self.score1 = score1
self.score2 = score2
self.total_score = score1 + score2
def __str__(self):
return f'{self.student_id}\t{self.name}\t{self.gender}\t{self.score1}\t{self.score2}\t{self.total_score}'
class StudentManagementSystem:
def __init__(self):
self.students = []
def add_student(self, student):
self.students.append(student)
def calculate_total_score(self):
for student in self.students:
student.total_score = student.score1 + student.score2
def find_by_student_id(self, student_id):
for student in self.students:
if student.student_id == student_id:
return student
return None
def find_by_name(self, name):
result = []
for student in self.students:
if student.name == name:
result.append(student)
return result
def find_by_gender(self, gender):
result = []
for student in self.students:
if student.gender == gender:
result.append(student)
return result
def sort_by_student_id(self):
self.students.sort(key=lambda student: student.student_id)
def sort_by_score1(self):
self.students.sort(key=lambda student: student.score1)
def sort_by_score2(self):
self.students.sort(key=lambda student: student.score2)
def sort_by_total_score(self):
self.students.sort(key=lambda student: student.total_score)
```
这里我们建立了两个类:学生和学生信息管理系统。学生类存储学生的信息,包括学号、姓名、性别、成绩1、成绩2、总成绩等。学生信息管理系统类包含了各种功能,如添加学生、计算总成绩、按照学号、成绩1、成绩2、总成绩排序以及按照学号、姓名、性别查找学生等。
您可以用以下代码测试这个学生信息管理系统:
```python
# 创建学生信息管理系统对象
sms = StudentManagementSystem()
# 添加学生
sms.add_student(Student('001', 'Alice', 'Female', 90, 85))
sms.add_student(Student('002', 'Bob', 'Male', 80, 95))
sms.add_student(Student('003', 'Charlie', 'Male', 95, 90))
# 计算总成绩
sms.calculate_total_score()
# 按照学号排序并输出信息
sms.sort_by_student_id()
for student in sms.students:
print(student)
# 按照成绩1排序并输出信息
sms.sort_by_score1()
for student in sms.students:
print(student)
# 按照成绩2排序并输出信息
sms.sort_by_score2()
for student in sms.students:
print(student)
# 按照总成绩排序并输出信息
sms.sort_by_total_score()
for student in sms.students:
print(student)
# 按照学号查找学生
student = sms.find_by_student_id('002')
if student:
print(student)
else:
print('Student not found')
# 按照姓名查找学生
students = sms.find_by_name('Charlie')
if students:
for student in students:
print(student)
else:
print('Student not found')
# 按照性别查找学生
students = sms.find_by_gender('Female')
if students:
for student in students:
print(student)
else:
print('Student not found')
```
这个程序将会输出按照不同方式排序后的学生信息以及按照不同条件查找到的学生信息。
阅读全文