c++编写一个学生成绩管理程序,利用指针数组完成学生信息输入、修改、统计和输出等功能。程序运行后先输入学生人数,动态创建学生信息(结构体)数组,然后循环显示功能操作菜单,提示用户根据菜单选择相应操作要求用指针的方式对数组进行操作。。
时间: 2024-02-22 14:59:37 浏览: 55
好的,我可以帮你实现这个程序。首先,我们需要定义一个学生信息的结构体,包括姓名、学号、成绩等字段。代码如下:
```c++
#include <iostream>
using namespace std;
struct Student {
string name;
string id;
float score;
};
```
接下来,我们需要利用指针数组完成学生信息的输入、修改、统计和输出等功能。可以定义一个函数来实现每个功能,然后在主函数中根据用户选择来调用相应的函数。代码如下:
```c++
// 添加学生信息
void addStudent(Student** students, int& count) {
cout << "请输入学生姓名:";
cin >> students[count]->name;
cout << "请输入学生学号:";
cin >> students[count]->id;
cout << "请输入学生成绩:";
cin >> students[count]->score;
count++; // 更新学生人数
}
// 修改学生信息
void modifyStudent(Student** students, int count) {
string id;
cout << "请输入要修改的学生学号:";
cin >> id;
for (int i = 0; i < count; i++) {
if (students[i]->id == id) {
cout << "请输入新的学生姓名:";
cin >> students[i]->name;
cout << "请输入新的学生成绩:";
cin >> students[i]->score;
cout << "修改成功!" << endl;
return;
}
}
cout << "未找到该学生信息!" << endl;
}
// 统计学生成绩
void calculateScore(Student** students, int count) {
float sum = 0;
float average = 0;
for (int i = 0; i < count; i++) {
sum += students[i]->score;
}
average = sum / count;
cout << "学生总人数为:" << count << endl;
cout << "学生总成绩为:" << sum << endl;
cout << "学生平均成绩为:" << average << endl;
}
// 输出学生信息
void printStudent(Student** students, int count) {
for (int i = 0; i < count; i++) {
cout << "姓名:" << students[i]->name << ",学号:" << students[i]->id << ",成绩:" << students[i]->score << endl;
}
}
// 主函数
int main() {
int count = 0;
cout << "请输入学生人数:";
cin >> count;
Student** students = new Student*[count]; // 动态创建指针数组
for (int i = 0; i < count; i++) {
students[i] = new Student; // 动态创建学生信息结构体
}
int choice;
while (true) {
cout << endl;
cout << "请选择操作:" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 修改学生信息" << endl;
cout << "3. 统计学生成绩" << endl;
cout << "4. 输出学生信息" << endl;
cout << "5. 退出程序" << endl;
cout << "请选择:";
cin >> choice;
switch (choice) {
case 1:
addStudent(students, count);
break;
case 2:
modifyStudent(students, count);
break;
case 3:
calculateScore(students, count);
break;
case 4:
printStudent(students, count);
break;
case 5:
cout << "程序已退出!" << endl;
for (int i = 0; i < count; i++) {
delete students[i]; // 释放动态创建的学生信息结构体
}
delete[] students; // 释放动态创建的指针数组
return 0;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
}
return 0;
}
```
这个程序利用指针数组完成了学生信息的输入、修改、统计和输出等功能。希望可以帮助到你!
阅读全文