📄 xsglxt.cpp
字号:
#include<iostream.h>
#include<string.h>
#include<fstream.h>
class person
{
public:
person(){}
person(char na[20],char sx[10],int ag){strcpy(name,na);strcpy(sex,sx);age=ag;}
protected:
char name[20],sex[10];int age;
};
class student:public person
{
private:
long stu_num;
double english,math,cjj,aver,sum;
public:
student(){};
student(long st_num,char na[20],char sx[10],int ag,double mat,double eng,double cj):person(na,sx,ag)
{
stu_num=st_num;math=mat;english=eng;cjj=cj;
}
double getsum()
{
sum=english+cjj+math;
return sum;
}
double getaver()
{
aver=sum/3;
return aver;
}
friend void main();
};
void main()
{
cout<<"欢迎进入学生管理系统\n";
cout<<"请选取所要进行的操作\n";
cout<<"学生数据输入请按0\n";
cout<<"添加人员请按键1\n";
cout<<"删除人员请按键2\n";
cout<<"修改人员请按键3\n";
cout<<"查询:\n";
cout<<"按姓名查询按键4\n";
cout<<"输出各科平时成绩,各等级人数,及比例请按5\n";
cout<<"排名:\n";
cout<<"按总成绩排名请按6\n";
cout<<"按C++排名请按7\n";
cout<<"输出所有学生得数据按键8\n";
student *stu[40];
char t;
int i=0;
int j=0;
char v;
ofstream *file[40];
bool flag2=0;
do
{
do
{
cin>>t;
if(t>='0'&&t<='8')
flag2=1;
else
cout<<"指令错误,请从新输入:"<<endl;
}while(flag2=0);
switch(t)
{
case '0':
{
char c;
char name[20],sex[10];
long stu_num;int age;
double math,english,cjj;
do
{
cout<<"输入学号:\n";
cin>>stu_num;
cout<<"输入姓名:\n";
cin>>name;
cout<<"输入性别:\n";
cin>>sex;
cout<<"输入年龄:\n";
cin>>age;
cout<<"输入英语成绩:.\n";
cin>>english;
cout<<"输入数学成绩:.\n";
cin>>math;
cout<<"输入C++成绩:.\n";
cin>>cjj;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"英语成绩"<<english<<"C++成绩"<<cjj<<endl;
j++;
stu[i]=new student(stu_num,name,sex,age,math,english,cjj);
i++;
cout<<"数据录入成功,想再录入吗(y\n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
flag2=0;
cout<<"指令错误,重新输入!\n";
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '4':
{
char na[20];
char c;
bool flag1=0;
do
{
cout<<"请输入所要查询学生的姓名:"<<endl;
cin>>na;
for(int f=0;f<i;f++)
{
if(strcmp(na,(*stu[f]).name)==0)
{
flag1=1;
cout<<"您要查询学生是:"<<(*stu[f]).name<<endl;
{
cout<<"学号"<<(*stu[f]).stu_num<<"性别"<<(*stu[f]).sex<<"年龄"<<(*stu[f]).age
<<"他的平均成绩:"<<(*stu[f]).getaver()<<"总成绩:"<<(*stu[f]).getsum()<<"数学成绩:"
<<(*stu[f]).math<<"英语成绩:"<<(*stu[f]).english<<"C++成绩:"<<(*stu[f]).cjj<<endl;
}
}
}
if(flag1==0)
{
cout<<"对不起您要查询学生不存在."<<endl;
cout<<"还要继续查询吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误,请从新输入"<<endl;
cin>>c;
}
}
}while(c=='y');
break;
}
case '7':
{
int t;
student li;
cout<<"所有学生按C++成绩排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if(stu[t]->cjj<stu[y+1]->cjj)
t=y;
if(t!=x)
{
li=*stu[t];
*stu[t]=*stu[x];
*stu[x]=li;
}
}
}
if(i==0)
cout<<"管理系统里没有录入者或者录入者已被删除";
for(int k=0;k<i;k++)
{
cout<<k+1<<"学号"<<stu[k]->stu_num<<"姓名"<<stu[k]->name<<"性别"<<stu[k]->sex
<<"年龄"<<stu[k]->age<<"平均成绩"<<stu[k]->aver<<"英语:"<<stu[k]->english<<"C++:"
<<stu[k]->cjj<<"数学:"<<stu[k]->math<<"总成绩:"<<stu[k]->sum<<endl;
}
break;
}
case '6':
{
int t;
student ligui;
cout<<"所有学生成绩排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if(stu[t]->getsum()<stu[y+1]->getsum())
t=y;
if(t!=x)
{
ligui=*stu[t];
*stu[t]=*stu[x];
*stu[x]=ligui;
}
}
}
if(i==0)
cout<<"管理系统里没有录入者或者录入者已被删除";
for(int k=0;k<i;k++)
{
cout<<k+1<<"学号"<<stu[k]->stu_num<<"姓名"<<stu[k]->name<<"性别"<<stu[k]->sex
<<"年龄"<<stu[k]->age<<"平均成绩"<<stu[k]->aver<<"英语:"<<stu[k]->english<<"C++:"
<<stu[k]->cjj<<"数学:"<<stu[k]->math<<"总成绩:"<<stu[k]->sum<<endl;
}
break;
}
case '3':
{
char na[20],sx[10];
int ag;
long st_num;
double mat,eng,cj;
char c;
bool flag7=0;
do
{
cout<<"请输入您要修改学生的姓名:";
cin>>na;
for(int h=0;h<i;h++)
{
if(strcmp(na,stu[h]->name)==0)
{
flag7=1;
cout<<"请输入新的学号"<<endl;
cin>>st_num;
cout<<"请输入新的性别"<<endl;
cin>>sx;
cout<<"请输入新的年龄"<<endl;
cin>>ag;
cout<<"请输入新的英语成绩:"<<endl;
cin>>eng;
cout<<"请输入新的数学成绩"<<endl;
cin>>mat;
cout<<"请输入新的C++成绩"<<endl;
cin>>cj;
stu[h]->stu_num=st_num;
strcpy(stu[h]->sex,sx);
stu[h]->age=ag;
stu[h]->english=eng;
stu[h]->math=mat;
stu[h]->cjj=cj;
cout<<"数据修改成功";
}
}
if(flag7==0)
cout<<"你要修改的学生不存在,请检查从新输入"<<endl;
cout<<"想继续修改(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误,请从新输入"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '5':
{
double esum(0),msum(0),csum(0),e_aver,m_aver,c_aver;
int eA(0),eB(0),eC(0),eD(0);
int cA(0),cB(0),cC(0),cD(0);
int mA(0),mB(0),mC(0),mD(0);
for(int k7=0;k7<i;k7++)
esum+=stu[k7]->english;
e_aver=esum/i;
for(int k6=0;k6<i;k6++)
{
if(stu[k6]->english>=85)
eA++;
else if(stu[k6]->english>=75)
eB++;
else if(stu[k6]->english>=60)
eC++;
else
eD++;
{
cout<<"英语平均成绩:"<<e_aver<<"优秀人数及比例:"<<eA<<' '<<eA/i<<"良好人数及比例:"<<eB<<' '<<eB/i
<<"中等人数及比例:"<<eC<<' '<<eC/i<<"不及格人数及比例:"<<eD<<' '<<eD/i<<endl;
}
}
for(int k1=0;k1<i;k1++)
msum+=stu[k1]->math;
m_aver=msum/i;
for(int k2=0;k2<i;k2++)
{
if(stu[k2]->math>=85)
mA++;
else if(stu[k2]->math>=75)
mB++;
else if(stu[k2]->math>=60)
mC++;
else
mD++;
{
cout<<"数学平均成绩:"<<m_aver<<"优秀人数及比例:"<<mA<<' '<<mA/i<<"良好人数及比例:"<<mB<<' '<<mB/i
<<"中等人数及比例:"<<mC<<' '<<mC/i<<"不及格人数及比例:"<<mD<<' '<<mD/i<<endl;
}
}
for(int k3=0;k3<i;k3++)
csum+=stu[k3]->cjj;
c_aver=csum/i;
for(int k4=0;k4<i;k4++)
{
if(stu[k4]->cjj>=85)
cA++;
else if(stu[k4]->cjj>=75)
cB++;
else if(stu[k4]->english>=60)
cC++;
else
cD++;
{
cout<<"c++平均成绩:"<<c_aver<<"优秀人数及比例:"<<cA<<' '<<cA/i<<"良好人数及比例:"<<cB<<' '<<cB/i
<<"中等人数及比例:"<<cC<<' '<<cC/i<<"不及格人数及比例:"<<cD<<' '<<cD/i<<endl;
}
}
break;
}
case '1':
{
char name[8],sex[2];
long stu_num;int age;
double math,english,cjj;
char c;
do
{
cout<<"请输入你要添加学生的学号\n";
cin>>stu_num;
cout<<"请输入你所要添加学生的姓名:"<<endl;
cin>>name;
cout<<"请输入你要添加学生的性别\n";
cin>>sex;
cout<<"请输入年龄\n";
cin>>age;
cout<<"英语成绩:"<<endl;
cin>>english;
cout<<"数学成绩:"<<endl;
cin>>math;
cout<<"C++成绩:"<<endl;
cin>>cjj;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"学号"<<stu_num<<"姓名"<<name<<"性别"<<sex<<"年龄"<<age<<"英语成绩"<<english<<"数学成绩"<<math<<"C++成绩"<<cjj<<endl;
j++;
stu[i]=new student(stu_num,name,sex,age,math,english,cjj);
i++;
cout<<"数据录入成功,想输入数据吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误,请从新输入"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '2':
{
char name[10];bool flag3=0;
char c;
do
{
cout<<"请输入您要删除学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,stu[h]->name)==0)
{
flag3=1;
i--;
do{
stu[h]=stu[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要删除对象不存在,请检查"<<endl;
cout<<"要继续删除吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误,请从新输入"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '8':
{
cout<<"本系统所有学生数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或数据已被删除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"学号"<<" "<<stu[k]->stu_num<<" "<<"姓名"<<" "<<stu[k]->name<<" "<<"年龄"<<" "<<stu[k]->age
<<" "<<"英语成绩"<<" "<<stu[k]->english<<" "<<"数学成绩"<<" "<<stu[k]->math
<<" "<<"c++成绩"<<" "<<stu[k]->cjj<<endl;
}
break;
}
}
cout<<"你想在进行其他的操作吗?(y/n)\n";
bool flag5=0;
do
{
cin>>v;
if(v!='y'&&v!='n')
cout<<"指令错误!重新输入!\n";
else
flag5=1;
}while(flag5==0);
if(v=='y')
{
cout<<" 请选择你要进行的操作\n";
cout<<" 学生数据输入0\n";
cout<<" 添加人员1\n";
cout<<" 删除人员2\n";
cout<<" 修改人员3\n";
cout<<" 按姓名查询4\n";
cout<<" 输出各科平时成绩,各等级人数,及比例请按5\n";
cout<<" 按总成绩排名6\n";
cout<<" 按C++排名请按7\n";
cout<<" 输出所有学生的数据8\n";
}
}while(v=='y');
for(int x=0;x<i;x++)
{
delete stu[x];
cout<<"删除所有数据!"<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -