给出含有n个学生的成绩表,每条记录由学号、姓名和分数组成,编写具体函数完成下列操作:设计一个菜单操作界面,实现录入学生基本信息,直接插入排序,折半插入排序,冒泡排序,快速排序,简单选择排序,输出学生信息,退出等基本操作
时间: 2024-03-24 17:41:57 浏览: 99
好的,我会尽力回答你的问题。首先,为了实现这些操作,我们需要设计一个学生类来存储每个学生的信息,包括学号、姓名和分数。以下是一个可能的实现:
```python
class Student:
def __init__(self, id, name, score):
self.id = id
self.name = name
self.score = score
def __str__(self):
return f"学号:{self.id},姓名:{self.name},分数:{self.score}"
```
接下来,我们可以创建一个包含学生对象的列表作为成绩表:
```python
students = [
Student('001', '张三', 90),
Student('002', '李四', 80),
Student('003', '王五', 85),
Student('004', '赵六', 95),
Student('005', '钱七', 88),
]
```
为了实现菜单操作界面,我们可以使用一个无限循环,询问用户想要执行哪个操作,并根据用户输入调用对应的函数。以下是一个可能的实现:
```python
while True:
print("学生成绩管理系统\n1. 录入学生信息\n2. 直接插入排序\n3. 折半插入排序\n4. 冒泡排序\n5. 快速排序\n6. 简单选择排序\n7. 输出学生信息\n0. 退出")
choice = input("请选择操作:")
if choice == "1":
# 录入学生信息
pass
elif choice == "2":
# 直接插入排序
pass
elif choice == "3":
# 折半插入排序
pass
elif choice == "4":
# 冒泡排序
pass
elif choice == "5":
# 快速排序
pass
elif choice == "6":
# 简单选择排序
pass
elif choice == "7":
# 输出学生信息
pass
elif choice == "0":
# 退出
break
else:
print("无效输入!")
```
接下来,我们可以实现每个操作的具体函数。
1. 录入学生信息
这个函数可以询问用户输入每个学生的学号、姓名和分数,并将其添加到学生列表中。以下是一个可能的实现:
```python
def add_student():
id = input("请输入学生学号:")
name = input("请输入学生姓名:")
score = int(input("请输入学生分数:"))
students.append(Student(id, name, score))
print("学生信息已添加!")
```
2. 直接插入排序
这个函数使用直接插入排序算法对学生列表进行排序。以下是一个可能的实现:
```python
def insertion_sort():
for i in range(1, len(students)):
temp = students[i]
j = i - 1
while j >= 0 and students[j].score > temp.score:
students[j + 1] = students[j]
j -= 1
students[j + 1] = temp
print("学生成绩已排序!")
```
3. 折半插入排序
这个函数使用折半插入排序算法对学生列表进行排序。以下是一个可能的实现:
```python
def binary_insertion_sort():
for i in range(1, len(students)):
temp = students[i]
low, high = 0, i - 1
while low <= high:
mid = (low + high) // 2
if students[mid].score > temp.score:
high = mid - 1
else:
low = mid + 1
for j in range(i - 1, high, -1):
students[j + 1] = students[j]
students[high + 1] = temp
print("学生成绩已排序!")
```
4. 冒泡排序
这个函数使用冒泡排序算法对学生列表进行排序。以下是一个可能的实现:
```python
def bubble_sort():
for i in range(len(students) - 1):
for j in range(len(students) - i - 1):
if students[j].score > students[j + 1].score:
students[j], students[j + 1] = students[j + 1], students[j]
print("学生成绩已排序!")
```
5. 快速排序
这个函数使用快速排序算法对学生列表进行排序。以下是一个可能的实现:
```python
def quick_sort(students):
if len(students) <= 1:
return students
pivot = students[0].score
left = [s for s in students[1:] if s.score < pivot]
right = [s for s in students[1:] if s.score >= pivot]
return quick_sort(left) + [students[0]] + quick_sort(right)
def quick_sort_wrapper():
global students
students = quick_sort(students)
print("学生成绩已排序!")
```
6. 简单选择排序
这个函数使用简单选择排序算法对学生列表进行排序。以下是一个可能的实现:
```python
def selection_sort():
for i in range(len(students) - 1):
min_index = i
for j in range(i + 1, len(students)):
if students[j].score < students[min_index].score:
min_index = j
students[i], students[min_index] = students[min_index], students[i]
print("学生成绩已排序!")
```
7. 输出学生信息
这个函数可以遍历学生列表,并输出每个学生的信息。以下是一个可能的实现:
```python
def print_students():
for student in students:
print(student)
```
至此,我们已经完成了所有基本操作的实现。完整代码如下:
阅读全文