我想要C++的代码,要求是(1)实现简单的菜单设计,如下所示: 1 添加学生信息 2 显示学生信息 3 查找学生信息 4 成绩计算 5 按总分降序输出 0 退出 (2)每个学生的信息至少包括姓名、学号、3门课程的成绩、班级等信息。 (3)“添加学生信息”:输入新的学生信息以后,系统将把相关信息存储到文件中。以班级为单位存放到不同的文件中。至少有3个班,每个班级至少10个学生。 (4)“显示学生信息”:系统将从文件中读取数据,按要求显示所有的学生信息。为使界面美观,可考虑用二维表格的形式输出。
时间: 2024-03-21 22:41:45 浏览: 37
好的,以下是满足你要求的 C++ 代码:
```c++
#include<iostream>
#include<fstream>
#include<iomanip>
#include<string>
using namespace std;
// 学生信息结构体
struct Student {
string name;
string id;
double score[3];
double totalScore;
};
// 添加学生信息
void addStudentInfo() {
ofstream fout;
string className;
cout << "请输入学生所在班级名称:";
cin >> className;
fout.open(className + ".txt", ios::app);
if (!fout) {
cout << "文件打开失败!" << endl;
return;
}
int n;
cout << "请输入要添加的学生数量:";
cin >> n;
for (int i = 0; i < n; i++) {
Student s;
cout << "请输入第" << i + 1 << "个学生的姓名、学号和三门课程的成绩(用空格分隔):";
cin >> s.name >> s.id >> s.score[0] >> s.score[1] >> s.score[2];
s.totalScore = s.score[0] + s.score[1] + s.score[2];
fout << s.name << " " << s.id << " " << s.score[0] << " " << s.score[1] << " " << s.score[2] << " " << s.totalScore << endl;
}
fout.close();
cout << "添加成功!" << endl;
}
// 显示学生信息
void showStudentInfo() {
ifstream fin;
string className;
cout << "请输入要显示的班级名称:";
cin >> className;
fin.open(className + ".txt");
if (!fin) {
cout << "文件打开失败!" << endl;
return;
}
int count = 0;
Student s;
cout << setw(10) << "姓名" << setw(10) << "学号" << setw(10) << "成绩1" << setw(10) << "成绩2" << setw(10) << "成绩3" << setw(10) << "总分" << endl;
while (fin >> s.name >> s.id >> s.score[0] >> s.score[1] >> s.score[2] >> s.totalScore) {
cout << setw(10) << s.name << setw(10) << s.id << setw(10) << s.score[0] << setw(10) << s.score[1] << setw(10) << s.score[2] << setw(10) << s.totalScore << endl;
count++;
}
fin.close();
if (count == 0) {
cout << "该班级还没有学生信息!" << endl;
}
}
// 查找学生信息
void searchStudentInfo() {
ifstream fin;
string className, id;
cout << "请输入要查找的班级名称:";
cin >> className;
fin.open(className + ".txt");
if (!fin) {
cout << "文件打开失败!" << endl;
return;
}
cout << "请输入要查找的学生学号:";
cin >> id;
Student s;
while (fin >> s.name >> s.id >> s.score[0] >> s.score[1] >> s.score[2] >> s.totalScore) {
if (s.id == id) {
cout << setw(10) << "姓名" << setw(10) << "学号" << setw(10) << "成绩1" << setw(10) << "成绩2" << setw(10) << "成绩3" << setw(10) << "总分" << endl;
cout << setw(10) << s.name << setw(10) << s.id << setw(10) << s.score[0] << setw(10) << s.score[1] << setw(10) << s.score[2] << setw(10) << s.totalScore << endl;
fin.close();
return;
}
}
fin.close();
cout << "未找到该学生信息!" << endl;
}
// 计算总分
void calculateScore() {
ifstream fin;
string className;
cout << "请输入要计算总分的班级名称:";
cin >> className;
fin.open(className + ".txt");
if (!fin) {
cout << "文件打开失败!" << endl;
return;
}
Student s;
while (fin >> s.name >> s.id >> s.score[0] >> s.score[1] >> s.score[2] >> s.totalScore) {
s.totalScore = s.score[0] + s.score[1] + s.score[2];
cout << "学生" << s.name << "的总分为:" << s.totalScore << endl;
}
fin.close();
}
// 按总分降序输出
void sortStudentInfo() {
ifstream fin;
string className;
cout << "请输入要排序的班级名称:";
cin >> className;
fin.open(className + ".txt");
if (!fin) {
cout << "文件打开失败!" << endl;
return;
}
Student s[30];
int count = 0;
while (fin >> s[count].name >> s[count].id >> s[count].score[0] >> s[count].score[1] >> s[count].score[2] >> s[count].totalScore) {
count++;
}
fin.close();
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (s[j].totalScore < s[j + 1].totalScore) {
Student temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
cout << setw(10) << "姓名" << setw(10) << "学号" << setw(10) << "成绩1" << setw(10) << "成绩2" << setw(10) << "成绩3" << setw(10) << "总分" << endl;
for (int i = 0; i < count; i++) {
cout << setw(10) << s[i].name << setw(10) << s[i].id << setw(10) << s[i].score[0] << setw(10) << s[i].score[1] << setw(10) << s[i].score[2] << setw(10) << s[i].totalScore << endl;
}
}
int main() {
int choice;
do {
cout << endl;
cout << "1.添加学生信息" << endl;
cout << "2.显示学生信息" << endl;
cout << "3.查找学生信息" << endl;
cout << "4.成绩计算" << endl;
cout << "5.按总分降序输出" << endl;
cout << "0.退出" << endl;
cout << "请输入你的选择:";
cin >> choice;
switch (choice) {
case 1:
addStudentInfo();
break;
case 2:
showStudentInfo();
break;
case 3:
searchStudentInfo();
break;
case 4:
calculateScore();
break;
case 5:
sortStudentInfo();
break;
case 0:
cout << "退出系统!" << endl;
break;
default:
cout << "输入错误,请重新输入!" << endl;
break;
}
} while (choice != 0);
return 0;
}
```
这个程序实现了你要求的菜单设计,并且可以进行学生信息的添加、显示、查找、成绩计算和按总分降序输出。每个学生的信息都存储在以班级名称命名的文件中。
阅读全文