1)录入学生信息首先输入学生人数,然后根据学生人数开辟动态数组; 2)学生信息包括学号、姓名、性别、三门课成绩、总分;其中学号、姓名、 性别、三门课成绩是需要从键盘录入的,而总分是由程序计算的,而不 是用户自己算了再输入。 3)显示结果(学生信息)要以列表的形式显示,注意美观性; 4)要有必要的容错措施,比如输入各科分数要在0-100之间,输入错误给 用户提示,让其重新输入;
时间: 2024-02-21 11:02:18 浏览: 55
好的,以下是一个简单的学生信息管理系统的C++代码,按照您提供的要求实现了录入学生信息、计算总分、容错等功能。请注意,这只是一个基础的实现,您可以根据实际需要进行修改和完善。
```c++
#include <iostream>
#include <string>
using namespace std;
// 定义学生结构体
struct Student {
string id; // 学号
string name; // 姓名
string gender; // 性别
int score1; // 第一门课成绩
int score2; // 第二门课成绩
int score3; // 第三门课成绩
int total_score; // 总分
};
int main() {
int num; // 学生人数
cout << "请输入学生人数:";
cin >> num;
// 动态分配学生数组
Student* students = new Student[num];
// 录入学生信息
for (int i = 0; i < num; i++) {
cout << "请输入第" << i+1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> students[i].id;
cout << "姓名:";
cin >> students[i].name;
cout << "性别:";
cin >> students[i].gender;
cout << "第一门课成绩:";
cin >> students[i].score1;
while (students[i].score1 < 0 || students[i].score1 > 100) {
cout << "成绩必须在0-100之间,请重新输入:";
cin >> students[i].score1;
}
cout << "第二门课成绩:";
cin >> students[i].score2;
while (students[i].score2 < 0 || students[i].score2 > 100) {
cout << "成绩必须在0-100之间,请重新输入:";
cin >> students[i].score2;
}
cout << "第三门课成绩:";
cin >> students[i].score3;
while (students[i].score3 < 0 || students[i].score3 > 100) {
cout << "成绩必须在0-100之间,请重新输入:";
cin >> students[i].score3;
}
students[i].total_score = students[i].score1 + students[i].score2 + students[i].score3;
}
// 显示学生信息
cout << "学生信息如下:" << endl;
cout << "-------------------------------------------------------" << endl;
cout << "学号\t姓名\t性别\t第一门课成绩\t第二门课成绩\t第三门课成绩\t总分" << endl;
cout << "-------------------------------------------------------" << endl;
for (int i = 0; i < num; i++) {
cout << students[i].id << "\t" << students[i].name << "\t" << students[i].gender << "\t"
<< students[i].score1 << "\t\t" << students[i].score2 << "\t\t" << students[i].score3 << "\t\t"
<< students[i].total_score << endl;
}
cout << "-------------------------------------------------------" << endl;
// 释放动态分配的内存
delete[] students;
return 0;
}
```
在上面的代码中,我们使用了 `Student` 结构体来存储每个学生的信息,利用 `new` 运算符动态分配了一个长度为 `num` 的学生数组。然后,我们使用 `for` 循环录入每个学生的信息,并计算出总分。在录入成绩时,我们使用了 `while` 循环来判断成绩是否在0-100之间,并给出提示让用户重新输入。最后,我们使用 `for` 循环遍历学生数组,以表格的形式输出学生信息。输出时,我们使用了制表符 `\t` 来对齐表格,并使用了分隔线 `-------` 来增强美观性。最后,我们使用 `delete` 运算符释放了动态分配的内存。
阅读全文