📄 极好的学生管理系统.cpp
字号:
//-----------------------------------------------------
//---------------学生成绩管理系统----------------------
//-----------------------------------------------------
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
//----------------------------------------------------
//----------------------------------------------------
const int n=100; //n为学生总数
const int m=4; //定义有四门课程
int g=1; //连续输入学生信息时表示人数的变量初始值为1
int p=-1; //非连续输入时所需加的值初始值为-1
float a[m]; //每个学生的各四门课程成绩
//----------------------------------------------------
//--------------------Stud----------------------------
class Stud //声明类Stud
{
public: //类的公有成员
void Input();
void Display();
void Cout();
void Quit();
private: //类的私有成员
int numb;
char name[20];
float score;
float sum;
};
//----------------------------------------------------------
//----------------------------------------------------------
Stud st[n];
void Stud::Input() //输入函数
{
char ch='y';
fstream outfile; //打开文件前先说明一个fstream类的对象
outfile.open("Stud.dat",ios::out|ios::app);//使用成员函数open()以追加写方式打开文件
if(!outfile) //看文件是否被打开
{
cout<<"Stud.dat can't open.\n";
abort();
}
while(ch=='y')
{
st[g+p].sum=0;
cout<<"请输入第"<<g+p<<"个学生的学号:";
cin>>st[g+p].numb;
cout<<"请输入"<<g+p<<"个学生的姓名:";
cin>>st[g+p].name;
cout<<"请输入"<<g+p<<"个学生的各四门课程成绩:"<<endl;
for(int j=0;j<m;j++) //四门课程的成绩相加得到st[g+p].sum
{
cin>>a[j];
st[g+p].sum+=a[j];
}
cout<<"第"<<g+p<<"个学生总分:"<<st[g+p].sum<<endl;
outfile.write((char *)&st[g+p].numb,sizeof(st[g+p].numb));//向文件中写入信息
outfile.write((char *)&st[g+p].name,sizeof(st[g+p].name));//向文件中写入信息
outfile.write((char *)&st[g+p].sum,sizeof(st[g+p].sum)); //向文件中写入信息
outfile.close();
cout<<"是否继续输入?(y or n)"<<endl; //提出是否再输入
cin>>ch;
switch(ch) //控制是否再输入
{
case 'y': //再输入人数加1
g++;
break;
case 'n': //不输入退出
break;
}
}
}
//------------------------------------------------------------
//------------------------------------------------------------
void Stud::Display() //显示函数
{
int i;
fstream infile ; //从文本文件中读取信息
infile.open("stud.dat",ios::in|ios::app);//以使用成员函数open()以追加读方式打开文件
if(!infile) //看文件是否被打开
{
cout<<"stud.dat can't open.\n";
abort();
}
for(i=1;i<=g+p;i++)
{
infile.read((char *)&st[i].numb,sizeof(st[i].numb));//用read()函数把信息读出来
infile.read((char *)&st[i].name,sizeof(st[i].name));//用read()函数把信息读出来
infile.read((char *)&st[i].sum,sizeof(st[i].sum)); //用read()函数把信息读出来
infile.close();
}
for(int j=1;j<g+p;j++) //按学生的成绩从高到低排序
for(int k=1;k<=g+p-j;k++)
if(st[k].sum<st[k+1].sum) //如符合条件进行交换
{
float t;
int b;
char na[20];
t=st[k].sum;
st[k].sum=st[k+1].sum;
st[k+1].sum=t;
b=st[k].numb;
st[k].numb=st[k+1].numb;
st[k+1].numb=b;
strcpy(na,st[k].name);
strcpy(st[k].name,st[k+1].name);
strcpy(st[k+1].name,na);
}
for(int m=1;m<=g+p;m++) //输出排序后的成绩
{
cout<<"第"<<m<<"名的学号为:"<<st[m].numb<<endl;
cout<<"第"<<m<<"名的姓名为:"<<st[m].name<<endl;
cout<<"第"<<m<<"名的总分为:"<<st[m].sum<<endl;
}
}
//---------------------------------------------------------
//---------------------------------------------------------
void Stud::Cout() //算平均成绩
{
float Tsum=0;
for(int i=1;i<=g+p;i++) //求各学生总成绩之和
{
Tsum+=st[i].sum;
}
float average=Tsum/(g+p); //平均成绩
cout<<"平均分为:"<<average<<endl;
}
//----------------------------------------------------------
//-----------------------主函数-----------------------------
void main()
{
char f;
int s;
bool t;
t=true;
while(t)
{
do{
cout<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"<<endl;
cout<<" 学生成绩管理系统 "<<endl;
cout<<" "<<endl;
cout<<" 1. 成绩输入 "<<endl;
cout<<" 2. 成绩显示 "<<endl;
cout<<" 3. 统 计 "<<endl;
cout<<" A.学生总数B.平均分数 "<<endl;
cout<<" 0. 退 出 "<<endl;
cout<<" "<<endl;
cout<<" 请输入一个选项! "<<endl;
cout<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"<<endl;
cin>>s;
}while (s!=1&&s!=2&&s!=3&&s!=0);
switch(s){ //switch语句
case 1:
p++;
st[n].Input();
break;
case 2:
st[n].Display();
break;
case 3:
cout<<"请选择统计的内容:A.学生人数B.平均分数(A OR B)?"<<endl;
do{
cin>>f;
}while (f!='A'&&f!='B');
switch(f){
case 'A':
cout<<"学生总数为:"<<g+p<<endl;
break;
case 'B':
st[n].Cout();
break;
default:
cout<<"输入错误,请重新输入!"<<endl;
}
break;
case 0:
t=false;
exit(0);
default:
cout<<"输入错误,请重新输入!";
}//switch语句的结束
} //while语句的结束
} //主函数的结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -