c++ 学生成绩管理系统
时间: 2023-07-19 11:45:54 浏览: 146
好的,我可以为您提供一些关于 C++ 学生成绩管理系统的建议。一般来说,学生成绩管理系统需要实现以下功能:
1. 添加学生信息:包括学生的姓名、学号、班级等信息。
2. 添加学生成绩:包括学生的课程成绩、总成绩、排名等信息。
3. 查询学生成绩:可以根据学生的姓名、学号等信息查询学生成绩。
4. 修改学生成绩:可以修改学生的成绩信息。
5. 删除学生成绩:可以删除学生的成绩信息。
在 C++ 中,可以使用结构体或类来表示学生信息和成绩信息。可以使用数组或链表来存储多个学生的信息。可以使用文件来保存学生信息和成绩信息,以便下次程序启动时可以读取之前保存的信息。
以下是一个简单的 C++ 学生成绩管理系统的示例代码:
```cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Student {
string name;
string id;
string cls;
int score[3];
int total_score;
int rank;
};
const int MAX_NUM = 100; // 最大学生数
Student students[MAX_NUM]; // 存储学生信息的数组
int num = 0; // 当前学生数
// 添加学生信息
void add_student() {
if (num >= MAX_NUM) {
cout << "已达到最大学生数,无法添加!" << endl;
return;
}
Student student;
cout << "请输入学生姓名:";
cin >> student.name;
cout << "请输入学生学号:";
cin >> student.id;
cout << "请输入学生班级:";
cin >> student.cls;
for (int i = 0; i < 3; i++) {
cout << "请输入学生第" << i+1 << "门课程成绩:";
cin >> student.score[i];
student.total_score += student.score[i];
}
student.rank = -1; // 初始排名为-1,表示未排名
students[num++] = student;
cout << "添加成功!" << endl;
}
// 显示学生信息
void show_student(const Student& student) {
cout << student.name << "\t" << student.id << "\t" << student.cls << "\t";
for (int i = 0; i < 3; i++) {
cout << student.score[i] << "\t";
}
cout << student.total_score << "\t";
if (student.rank != -1) {
cout << student.rank << endl;
} else {
cout << "未排名" << endl;
}
}
// 查询学生成绩
void query_student() {
string name;
cout << "请输入要查询的学生姓名:";
cin >> name;
bool found = false;
for (int i = 0; i < num; i++) {
if (students[i].name == name) {
show_student(students[i]);
found = true;
break;
}
}
if (!found) {
cout << "未找到该学生!" << endl;
}
}
// 修改学生成绩
void modify_student() {
string name;
cout << "请输入要修改的学生姓名:";
cin >> name;
bool found = false;
for (int i = 0; i < num; i++) {
if (students[i].name == name) {
show_student(students[i]);
cout << "请输入要修改的成绩序号(1-3):";
int index;
cin >> index;
cout << "请输入新的成绩:";
cin >> students[i].score[index-1];
students[i].total_score = 0;
for (int j = 0; j < 3; j++) {
students[i].total_score += students[i].score[j];
}
cout << "修改成功!" << endl;
found = true;
break;
}
}
if (!found) {
cout << "未找到该学生!" << endl;
}
}
// 删除学生成绩
void delete_student() {
string name;
cout << "请输入要删除的学生姓名:";
cin >> name;
bool found = false;
for (int i = 0; i < num; i++) {
if (students[i].name == name) {
for (int j = i; j < num-1; j++) {
students[j] = students[j+1];
}
num--;
cout << "删除成功!" << endl;
found = true;
break;
}
}
if (!found) {
cout << "未找到该学生!" << endl;
}
}
// 排名
void rank_students() {
for (int i = 0; i < num; i++) {
int rank = 1;
for (int j = 0; j < num; j++) {
if (students[j].total_score > students[i].total_score) {
rank++;
}
}
students[i].rank = rank;
}
cout << "排名完成!" << endl;
}
// 保存学生信息到文件
void save_students() {
ofstream ofs("students.txt");
ofs << num << endl;
for (int i = 0; i < num; i++) {
ofs << students[i].name << "\t" << students[i].id << "\t" << students[i].cls << "\t";
for (int j = 0; j < 3; j++) {
ofs << students[i].score[j] << "\t";
}
ofs << students[i].total_score << "\t" << students[i].rank << endl;
}
ofs.close();
cout << "保存成功!" << endl;
}
// 从文件中读取学生信息
void load_students() {
ifstream ifs("students.txt");
if (!ifs) {
cout << "未找到学生信息文件!" << endl;
return;
}
ifs >> num;
for (int i = 0; i < num; i++) {
ifs >> students[i].name >> students[i].id >> students[i].cls;
for (int j = 0; j < 3; j++) {
ifs >> students[i].score[j];
}
ifs >> students[i].total_score >> students[i].rank;
}
ifs.close();
cout << "读取成功!" << endl;
}
// 显示菜单
void show_menu() {
cout << "1. 添加学生信息" << endl;
cout << "2. 查询学生成绩" << endl;
cout << "3. 修改学生成绩" << endl;
cout << "4. 删除学生成绩" << endl;
cout << "5. 排名学生成绩" << endl;
cout << "6. 保存学生信息" << endl;
cout << "7. 读取学生信息" << endl;
cout << "0. 退出程序" << endl;
}
int main() {
int choice;
do {
show_menu();
cout << "请输入选项:";
cin >> choice;
switch (choice) {
case 1:
add_student();
break;
case 2:
query_student();
break;
case 3:
modify_student();
break;
case 4:
delete_student();
break;
case 5:
rank_students();
break;
case 6:
save_students();
break;
case 7:
load_students();
break;
case 0:
cout << "退出程序!" << endl;
break;
default:
cout << "无效选项,请重新输入!" << endl;
break;
}
} while (choice != 0);
return 0;
}
```
以上是一个简单的 C++ 学生成绩管理系统示例程序,仅供参考。如果您有更多需求,可以根据实际情况进行修改和扩展。
阅读全文