根据线性表的特性,设计学生成绩表相关函数
时间: 2024-10-03 08:02:46 浏览: 34
设计一个基于线性表的学生成绩表功能,我们可以考虑创建一个动态数组或者链表结构来存储学生的各项信息,包括姓名、学号和成绩等。下面是一些基本的函数设计:
1. **初始化函数** (`createStudentList()`):
- 用于创建一个新的空的学生列表。
```c++
struct Student {
string name;
int studentId;
float score;
};
vector<Student> studentList;
Student* createStudentList() {
studentList.clear();
return &studentList;
}
```
2. **添加学生函数** (`addStudent()`):
- 接受新学生的数据并添加到列表中。
```c++
void addStudent(Student* list, string name, int id, float score) {
Student newStudent = {name, id, score};
list->push_back(newStudent);
}
```
3. **查找学生函数** (`findStudentById()`):
- 根据学号搜索并返回对应的学生记录,如果没有找到则返回 nullptr。
```c++
Student* findStudentById(Student* list, int id) {
for (auto& student : *list) {
if (student.studentId == id) {
return &student;
}
}
return nullptr;
}
```
4. **更新成绩函数** (`updateScore()`):
- 接收学生学号和新成绩,更新相应位置的成绩。
```c++
bool updateScore(Student* list, int id, float newScore) {
auto it = findStudentById(list, id);
if (it != nullptr) {
it->score = newScore;
return true;
}
return false;
}
```
5. **删除学生函数** (`deleteStudent()`):
- 删除指定学号的学生。
```c++
bool deleteStudent(Student* list, int id) {
auto it = findStudentById(list, id);
if (it != nullptr) {
list->erase(remove_if(list->begin(), list->end(),
[id](const Student& student) { return student.studentId == id; }),
list->end());
return true;
}
return false;
}
```
6. **显示所有学生函数** (`displayStudents()`):
- 打印列表中的所有学生信息。
```c++
void displayStudents(Student* list) {
for (const auto& student : *list) {
cout << "Name: " << student.name << ", ID: " << student.studentId << ", Score: " << student.score << endl;
}
}
```
阅读全文