定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和成绩; (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。
时间: 2023-05-12 19:03:08 浏览: 72
好的,这是一个典型的顺序表的应用,以下是代码实现:
```python
class Student:
def __init__(self, id, name, score):
self.id = id
self.name = name
self.score = score
class StudentList:
def __init__(self, size):
self.size = size
self.students = [None] * size
self.count = 0
def input_students(self):
for i in range(self.size):
id = input("请输入学生学号:")
name = input("请输入学生姓名:")
score = input("请输入学生成绩:")
self.students[i] = Student(id, name, score)
self.count += 1
def show_students(self):
for i in range(self.count):
print("学号:{},姓名:{},成绩:{}".format(self.students[i].id, self.students[i].name, self.students[i].score))
def search_by_name(self, name):
for i in range(self.count):
if self.students[i].name == name:
return self.students[i].id, self.students[i].score
return None
def get_by_index(self, index):
if index < 0 or index >= self.count:
return None
return self.students[index].id, self.students[index].name, self.students[index].score
def insert_student(self, index, student):
if index < 0 or index > self.count:
return False
if self.count == self.size:
return False
for i in range(self.count, index, -1):
self.students[i] = self.students[i-1]
self.students[index] = student
self.count += 1
return True
def delete_by_index(self, index):
if index < 0 or index >= self.count:
return False
for i in range(index, self.count-1):
self.students[i] = self.students[i+1]
self.count -= 1
return True
def count_students(self):
return self.count
```
使用方法如下:
```python
# 创建一个大小为10的学生表
sl = StudentList(10)
# 输入学生信息
sl.input_students()
# 显示学生表中所有学生的相关信息
sl.show_students()
# 根据姓名进行查找,返回此学生的学号和成绩
id, score = sl.search_by_name("张三")
if id and score:
print("学号:{},成绩:{}".format(id, score))
else:
print("未找到该学生")
# 根据指定的位置可返回相应的学生信息(学号,姓名,成绩)
id, name, score = sl.get_by_index(2)
if id and name and score:
print("学号:{},姓名:{},成绩:{}".format(id, name, score))
else:
print("未找到该学生")
# 给定一个学生信息,插入到表中指定的位置
student = Student("1003", "李四", "90")
if sl.insert_student(2, student):
print("插入成功")
else:
print("插入失败")
# 删除指定位置的学生记录
if sl.delete_by_index(2):
print("删除成功")
else:
print("删除失败")
# 统计表中学生个数
print("学生个数:{}".format(sl.count_students()))
```
希望这个代码能够帮到你!
阅读全文