📄 studentgradeinformationmanagement.cpp
字号:
/*1. 定义学生类Student,包含学生姓名、学号、3门或更多门课程的成绩以及对这些成员的操作;
2. 定义Student的对象数组,然后录入学生信息并显示到屏幕,同时保存到文件;
3. 从文件读取数据并查询、修改和统计学生成绩。
4. 在录入信息前要有提示信息。
5. 屏幕输出和文件存取时可使用>>、<<运算符重载或用I/O流对象引用作参数的成员函数实现。*/
#define MAX 2
#include<iostream>
#include<iomanip>
#include<fstream>//输入输出文件流类的头文件
using namespace std;
#include<string.h>
#include<math.h>
class student
{
public:
char name[10];
long num;
float math,English,computer;
float total;
float aver;
student();//student类的构造函数
~student(){};//student类的析构函数
void serach_name(student s[MAX]);//按姓名查询学生的信息
void serach_num(student s[MAX]);//按学号查询学生的信息
void modify(student s[MAX]);//修改学生的信息
void counttotal_aver(student s[MAX]);//统计学生成绩
void input();//请输入学生的信息
void output();//输出所有学生成绩
};
student::student()
{
math=0;
English=0;
computer=0;
total=0;
aver=0;
}
void student::serach_name(student s[MAX])
{
int i,k=0;
ifstream rfile;
rfile.open("file1.txt",ios_base::binary);
if(rfile)
{
for(i=0;i<MAX;i++)
rfile>>s[i].name>>s[i].num>>s[i].math>>
s[i].English>>s[i].computer>>s[i].total>>s[i].aver;
}
else cout<<"不能打开此文件!"<<endl;
char a[10];
cout<<"输入要查询的学生姓名:"<<endl;
cin>>a;
for(i=0;i<MAX;i++)
{
if(strcmp(s[i].name,a)==0)
{
k=1;
cout<<"姓名 "<<"学号 "<<"数学 "<<"英语 "
<<"计算机 "<<"总分 "<<"平均分"<<endl;
s[i].output();
}
}
rfile.close();
if(k==0) cout<<"查询失败!"<<endl;
}
void student::serach_num(student s[MAX])
{
int i,k=0;
ifstream rfile;
rfile.open("file1.txt",ios_base::binary);
if(rfile)
{
for(i=0;i<MAX;i++)
{
rfile>>s[i].name>>s[i].num>>s[i].math>>
s[i].English>>s[i].computer>>s[i].total>>s[i].aver;
}
}
else cout<<"不能打开此文件!"<<endl;
long n;
cout<<"输入要查询的学生学号:"<<endl;
cin>>n;
for(i=0;i<MAX;i++)
if(s[i].num==n)
{
k=1;
cout<<"姓名 "<<"学号 "<<"数学 "<<"英语 "<<"计算机 "<<"总分 "<<"平均分"<<endl;
s[i].output();
}
rfile.close();
if(k==0) cout<<"查询失败!"<<endl;
}
void student::modify(student s[MAX])
{
int i,m,k=0;
ifstream rfile;
rfile.open("file1.txt",ios_base::binary);
if(rfile)
{
for(i=0;i<MAX;i++)
{
rfile>>s[i].name>>s[i].num>>s[i].math>>
s[i].English>>s[i].computer>>s[i].total>>s[i].aver;
}
}
else cout<<"不能打开此文件!"<<endl;
rfile.close();
char a[10];
cout<<"输入要修改的学生姓名:"<<endl;
cin>>a;
for(i=0;i<MAX;i++)
if(strcmp(s[i].name,a)==0)
{
k=1;
m=i;
cout<<"姓名 "<<"学号 "<<"数学 "<<"英语 "<<"计算机 "<<"总分 "<<"平均分"<<endl;
s[i].output();
}
if(k==0) cout<<"查询失败!"<<endl;
if(k==1)
{
cout<<"请输入新的学生姓名,学号,数学,英语,计算机成绩:"<<endl;
cin>>name>>num>>math>>English>>computer;
strcpy(s[m].name,name);
s[m].num=num;
s[m].math=math;
s[m].English=English;
s[m].computer=computer;
s[m].total=s[m].English+s[m].math+s[m].computer;
s[m].aver=s[m].total/3;
cout<<"你要修改的学生信息已修改为:"<<endl;
cout<<"姓名 "<<"学号 "<<"数学 "<<"英语 "<<"计算机 "<<"总分 "<<"平均分"<<endl;
s[m].output();
ofstream tfile;
tfile.open("file1.txt",ios_base::binary);
for(i=0;i<MAX;i++)
{
tfile<<s[i].name<<" "<<s[i].num<<" "<<s[i].math<<" "
<<s[i].English<<" "<<s[i].computer<<" "<<s[i].total<<" "
<<s[i].aver<<endl;
}
tfile.close();
}
}
void student::counttotal_aver(student s[MAX])
{
int i;
ifstream rfile;
rfile.open("file1.txt",ios_base::binary);
if(rfile)
{
for(i=0;i<MAX;i++)
{
rfile>>s[i].name>>s[i].num>>s[i].math>>
s[i].English>>s[i].computer>>s[i].total>>s[i].aver;
}
}
else cout<<"不能打开此文件!"<<endl;
rfile.close();
cout<<"姓名 "<<"学号 "<<"总分 "<<"平均分 "<<endl;
for(i=0;i<MAX;i++)
{
s[i].total=s[i].English+s[i].math+s[i].computer;
s[i].aver=s[i].total/3;
cout<<setiosflags(ios_base::left)<<setw(10)<<s[i].name
<<setw(10)<<s[i].num<<setw(6)<<s[i].total<<setw(6)<<s[i].aver<<endl;
}
ofstream tfile;
tfile.open("file1.txt",ios_base::binary);
for(i=0;i<MAX;i++)
{
tfile<<s[i].name<<" "<<s[i].num<<" "<<s[i].math<<" "
<<s[i].English<<" "<<s[i].computer<<" "<<s[i].total<<" "
<<s[i].aver<<endl;
}
}
void student::input()
{
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入学号:"<<endl;
cin>>num;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入英语成绩:"<<endl; //同上
cin>>English;
cout<<"请输入计算机成绩:"<<endl;
cin>>computer;
}
void student::output()
{
cout<<setiosflags(ios_base::left)<<setw(10)<<name<<setw(10)
<<num<<setw(6)<<math<<setw(6)<<English<<setw(6)<<computer
<<setw(6)<<total<<setw(6)<<aver<<endl;
}
//*************************************************************
void print1()
{
cout<<" * * * * * * * * * * * * * * * * * * * * *"<<endl;
cout<<" * * * * * * * * * * * * * * * * * * * * *"<<endl;
cout<<" * * * * *学生成绩管理系统 * * * * * * * *"<<endl;
cout<<" * * * * * * * * * * * * * * * * * * * * *"<<endl;
cout<<" * * * * * * * * * * * * * * * * * * * * *"<<endl;
}
//*************************************************************
void print2()
{
cout<<"*******************************************"<<endl;
cout<<"* * * * 该程序要实现的主要功能: * * * *"<<endl;
cout<<"* * * * * * * * * * * * *"<<endl;
cout<<"* * 1------统计学生的信息------counttotal_aver() * *"<<endl;
cout<<"* * 2------按姓名查询学生信息------serach_name() * *"<<endl;
cout<<"* * 3------按学号查询学生信息-------serach_num() * *"<<endl;
cout<<"* * 4------修改学生信息-----------------modify() * *"<<endl;
cout<<"* * 5------显示所有学生的信息-----------Output() * *"<<endl;
cout<<"* * 0------退出学生管理系统---------------exit() * *"<<endl;
cout<<"* * * * * * * * * * * * *"<<endl;
}
//*************************************************************
void main()
{
print1();
student stu[MAX],s;
int i,x;
for(i=0;i<MAX;i++)
{
cout<<"请输入第"<<i+1<<"个学生的姓名,学号及数学,英语,计算机成绩:"<<endl;
stu[i].input();
}
ofstream tfile;
tfile.open("file1.txt",ios_base::binary);
for(i=0;i<MAX;i++)
{
tfile<<stu[i].name<<" "<<stu[i].num<<" "<<stu[i].math<<" "
<<stu[i].English<<" "<<stu[i].computer<<" "<<stu[i].total<<" "
<<stu[i].aver<<endl;
}
tfile.close();
while(1)
{
print2();
cout<<"选择:";
cin>>x;
switch(x)
{
case 1: s.counttotal_aver(stu); break;
case 2: s.serach_name(stu); break;
case 3: s.serach_num(stu); break;
case 4: s.modify(stu); break;
case 5: cout<<"输出"<<MAX<<"个学生的信息"<<endl;
cout<<"姓名 "<<"学号 "<<"数学 "<<"英语 "
<<"计算机 "<<"总分 "<<"平均分"<<endl;
for(i=0;i<MAX;i++)
{
stu[i].output();
}
break;
case 0: exit(1); break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -