用c++语言编写一个学生成绩管理系统,实现学生基本信息(包括学号、姓名、数学成绩、英语成绩、计算机课成绩)的录入、计算学生的总成绩和平均成绩、学生基本信息的删除、学生基本信息的查询、学生基本信息的修改,并且实现对学生基本信息的存盘(保存为文本文件)和读盘
时间: 2023-08-27 10:04:01 浏览: 137
好的,我了解了您的要求。以下是一个简单的C++学生成绩管理系统的示例代码:
```cpp
#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
//定义学生结构体
struct student{
string id; //学号
string name; //姓名
float math; //数学成绩
float english; //英语成绩
float computer; //计算机课成绩
float total; //总成绩
float avg; //平均成绩
};
//声明函数
void menu();
void add_student(student[], int&);
void calculate_score(student[], int);
void delete_student(student[], int&);
void search_student(student[], int);
void update_student(student[], int);
void save_file(student[], int);
void load_file(student[], int&);
int main(){
student stu[100]; //最多存储100个学生信息
int num = 0; //当前学生数量
int choice;
do{
menu();
cin>>choice;
switch(choice){
case 1:
add_student(stu, num);
break;
case 2:
calculate_score(stu, num);
break;
case 3:
delete_student(stu, num);
break;
case 4:
search_student(stu, num);
break;
case 5:
update_student(stu, num);
break;
case 6:
save_file(stu, num);
break;
case 7:
load_file(stu, num);
break;
case 0:
cout<<"退出程序"<<endl;
break;
default:
cout<<"输入错误,请重新输入"<<endl;
break;
}
cout<<endl;
}while(choice != 0);
return 0;
}
//显示菜单
void menu(){
cout<<"**********学生成绩管理系统**********"<<endl;
cout<<"1. 添加学生信息"<<endl;
cout<<"2. 计算学生总成绩和平均成绩"<<endl;
cout<<"3. 删除学生信息"<<endl;
cout<<"4. 查询学生信息"<<endl;
cout<<"5. 修改学生信息"<<endl;
cout<<"6. 存储学生信息到文件"<<endl;
cout<<"7. 从文件中读取学生信息"<<endl;
cout<<"0. 退出程序"<<endl;
cout<<"************************************"<<endl;
cout<<"请输入您的选择:";
}
//添加学生信息
void add_student(student stu[], int& num){
if(num >= 100){
cout<<"已达到最大学生数量,无法继续添加"<<endl;
return;
}
student new_stu;
cout<<"请输入学生信息:"<<endl;
cout<<"学号:";
cin>>new_stu.id;
cout<<"姓名:";
cin>>new_stu.name;
cout<<"数学成绩:";
cin>>new_stu.math;
cout<<"英语成绩:";
cin>>new_stu.english;
cout<<"计算机课成绩:";
cin>>new_stu.computer;
new_stu.total = new_stu.math + new_stu.english + new_stu.computer;
new_stu.avg = new_stu.total / 3;
stu[num++] = new_stu;
cout<<"添加成功!"<<endl;
}
//计算学生总成绩和平均成绩
void calculate_score(student stu[], int num){
cout<<"学号\t姓名\t数学\t英语\t计算机\t总成绩\t平均成绩"<<endl;
for(int i = 0; i < num; i++){
cout<<stu[i].id<<"\t"<<stu[i].name<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].computer<<"\t"<<stu[i].total<<"\t"<<stu[i].avg<<endl;
}
}
//删除学生信息
void delete_student(student stu[], int& num){
if(num <= 0){
cout<<"没有学生信息可供删除"<<endl;
return;
}
string id;
cout<<"请输入要删除的学生学号:";
cin>>id;
for(int i = 0; i < num; i++){
if(stu[i].id == id){
for(int j = i; j < num - 1; j++){
stu[j] = stu[j + 1];
}
num--;
cout<<"删除成功!"<<endl;
return;
}
}
cout<<"未找到该学生信息"<<endl;
}
//查询学生信息
void search_student(student stu[], int num){
if(num <= 0){
cout<<"没有学生信息可供查询"<<endl;
return;
}
string id;
cout<<"请输入要查询的学生学号:";
cin>>id;
for(int i = 0; i < num; i++){
if(stu[i].id == id){
cout<<"学号\t姓名\t数学\t英语\t计算机\t总成绩\t平均成绩"<<endl;
cout<<stu[i].id<<"\t"<<stu[i].name<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].computer<<"\t"<<stu[i].total<<"\t"<<stu[i].avg<<endl;
return;
}
}
cout<<"未找到该学生信息"<<endl;
}
//修改学生信息
void update_student(student stu[], int num){
if(num <= 0){
cout<<"没有学生信息可供修改"<<endl;
return;
}
string id;
cout<<"请输入要修改的学生学号:";
cin>>id;
for(int i = 0; i < num; i++){
if(stu[i].id == id){
cout<<"请输入新的学生信息:"<<endl;
cout<<"学号:";
cin>>stu[i].id;
cout<<"姓名:";
cin>>stu[i].name;
cout<<"数学成绩:";
cin>>stu[i].math;
cout<<"英语成绩:";
cin>>stu[i].english;
cout<<"计算机课成绩:";
cin>>stu[i].computer;
stu[i].total = stu[i].math + stu[i].english + stu[i].computer;
stu[i].avg = stu[i].total / 3;
cout<<"修改成功!"<<endl;
return;
}
}
cout<<"未找到该学生信息"<<endl;
}
//存储学生信息到文件
void save_file(student stu[], int num){
ofstream out_file("students.txt");
if(!out_file){
cout<<"无法打开文件"<<endl;
return;
}
for(int i = 0; i < num; i++){
out_file<<stu[i].id<<" "<<stu[i].name<<" "<<stu[i].math<<" "<<stu[i].english<<" "<<stu[i].computer<<" "<<stu[i].total<<" "<<stu[i].avg<<endl;
}
out_file.close();
cout<<"保存成功!"<<endl;
}
//从文件中读取学生信息
void load_file(student stu[], int& num){
ifstream in_file("students.txt");
if(!in_file){
cout<<"无法打开文件"<<endl;
return;
}
num = 0;
while(!in_file.eof()){
in_file>>stu[num].id>>stu[num].name>>stu[num].math>>stu[num].english>>stu[num].computer>>stu[num].total>>stu[num].avg;
if(num >= 100){
cout<<"文件中的学生信息已达到最大数量,无法继续读取"<<endl;
break;
}
num++;
}
in_file.close();
cout<<"读取成功!"<<endl;
}
```
这个程序实现了您所要求的功能,包括学生信息的录入、计算总成绩和平均成绩、信息的删除、查询和修改,以及将信息存储到文件和从文件中读取信息。您可以根据需要进行修改和优化。
阅读全文