C++编程设计学生结构体student(包括三个成员:学号,姓名,成绩),创建学生数组stu[6],完成以下四个功能:能向学生数组中添加学生信息,能在学生数组中按照姓名查找学生信息,能向学生数组中按照学生号删除学生信息,能在学生数组中按照成绩从小到大排序
时间: 2024-01-02 16:02:40 浏览: 90
结构体数组的定义-C++程序设计
好的,我理解了你的问题。以下是C++代码实现:
```cpp
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
// 学生结构体
struct student {
int id; // 学号
string name; // 姓名
int score; // 成绩
};
// 添加学生信息
void add_student(student stu[], int& n) {
if (n >= 6) {
cout << "学生数组已满,无法添加新学生" << endl;
return;
}
student new_stu;
cout << "请输入学生学号:" << endl;
cin >> new_stu.id;
cout << "请输入学生姓名:" << endl;
cin >> new_stu.name;
cout << "请输入学生成绩:" << endl;
cin >> new_stu.score;
stu[n++] = new_stu;
cout << "添加学生成功!" << endl;
}
// 按姓名查找学生信息
void search_by_name(student stu[], int n) {
string name;
cout << "请输入要查找的学生姓名:" << endl;
cin >> name;
for (int i = 0; i < n; i++) {
if (stu[i].name == name) {
cout << "学号:" << stu[i].id << " 姓名:" << stu[i].name << " 成绩:" << stu[i].score << endl;
return;
}
}
cout << "未找到该学生信息!" << endl;
}
// 按学号删除学生信息
void delete_by_id(student stu[], int& n) {
int id;
cout << "请输入要删除的学生学号:" << endl;
cin >> id;
for (int i = 0; i < n; i++) {
if (stu[i].id == id) {
for (int j = i; j < n - 1; j++) {
stu[j] = stu[j + 1];
}
n--;
cout << "删除学生成功!" << endl;
return;
}
}
cout << "未找到该学生信息!" << endl;
}
// 按成绩排序
bool cmp(const student& a, const student& b) {
return a.score < b.score;
}
void sort_by_score(student stu[], int n) {
sort(stu, stu + n, cmp);
cout << "排序后的学生信息如下:" << endl;
for (int i = 0; i < n; i++) {
cout << "学号:" << stu[i].id << " 姓名:" << stu[i].name << " 成绩:" << stu[i].score << endl;
}
}
int main() {
student stu[6];
int n = 0; // 学生数组中已有的学生数量
while (true) {
cout << "请输入操作编号(1-添加学生信息,2-按姓名查找学生信息,3-按学号删除学生信息,4-按成绩排序,0-退出):" << endl;
int op;
cin >> op;
switch (op) {
case 1:
add_student(stu, n);
break;
case 2:
search_by_name(stu, n);
break;
case 3:
delete_by_id(stu, n);
break;
case 4:
sort_by_score(stu, n);
break;
case 0:
return 0;
default:
cout << "无效的操作编号,请重新输入!" << endl;
break;
}
}
return 0;
}
```
希望对你有所帮助!
阅读全文