基于C++的学生成绩管理系统含菜单.docx
《基于C++的学生成绩管理系统含菜单.docx》由会员分享,可在线阅读,更多相关《基于C++的学生成绩管理系统含菜单.docx(12页珍藏版)》请在冰豆网上搜索。
![基于C++的学生成绩管理系统含菜单.docx](https://file1.bdocx.com/fileroot1/2023-1/26/5beab382-908d-4090-89d9-1f8aba8976e1/5beab382-908d-4090-89d9-1f8aba8976e11.gif)
基于C++的学生成绩管理系统含菜单
学生成绩管理系统
#include
#include
#include
usingnamespacestd;
#definemax100
//############################################################################################
structstu//学生资料结构体
{
charname[10];
intnum;
floatx,y,z,score;
};
//############################################################################################
intcount=0;
inttemp=0;
classstudent//学生类
{
private:
studata[max];
charstart;
public:
voidinput(char*ch1,intnum,floatx,floaty,floatz);//输入
voidfind(intnum);//查找
voiddel(intnum);//删除
voidxiugai(intnum);//修改
intcheck_num(intnum)//确定没有重复学号
{
intm=0;
while(m<=count)
if(num==data[m++].num)
break;
if(m>count)
return0;
else
return1;
}
voidtaxis();//排序
voidshow();//输出
voidtongji();//统计
};
//############################################################################################
voidstudent:
:
input(char*ch1,intnum,floatx,floaty,floatz)
{
strcpy(data[count].name,ch1);
data[count].num=num;
data[count].x=x;data[count].y=y;data[count].z=z;
count++;
}
voidstudent:
:
find(intnum)
{
intm=0;
while(m<=count)
if(num==data[m++].num)
break;
if(m>count)
{
cout<<"很抱歉,没有该学号的学生"<start='n';
getch();
}
else
{
temp=count;count=m;start='y';
cout<<"该学生的资料为"<<<"序号\t姓名\t学号\t高数\t英语\t计算机"<show();
count=temp;getch();
}
}
//############################################################################################
voidstudent:
:
del(intnum)
{
charchose;
find(num);
if(start=='y')
{
cout<<"确实要删除该学生资料?
Y/N"<cin>>chose;
if(chose=='y'||chose=='Y')
{
intm=0;
while(m<=count)
if(num==data[m++].num)
break;
temp=count;count=m;
while(count{
strcpy(data[count-1].name,data[count].name);data[count-1].num=data[count].num;
data[count-1].x=data[count].x;
data[count-1].y=data[count].y;data[count-1].z=data[count].z;
count++;
}
count=temp-1;
cout<<"该学生资料已删除"<}
else
cout<<"学生资料未删除"<getch();
}
}
//############################################################################################
voidstudent:
:
xiugai(intnum)
{
charchose;
intk;
find(num);
intm=0;
while(m<=count)
if(num==data[m++].num)
break;
if(start=='y')
{
cout<<"确实要修改该学生资料?
Y/N"<cin>>chose;
if(chose=='y'||chose=='Y')
{
cout<<"请选择要修改的信息"<cout<<"*** 1.学号 2.高数 3.英语 4.计算机***"<cout<<"***请选择(1-4)***"<cin>>k;
while(k<1||k>4)
{
cout<<"输入有误,请重新输入:
"<cin>>k;
}
switch(k)
{
case1:
{
intnum2;
cout<<"请输入新的学号:
";
cin>>num2;
/**/while(check_num(num2))/**/
{cout<<"学号重复,请重新输入"<cin>>num2;}
data[m-1].num=num2;
}break;
case2:
{intx1;cout<<"请输入新的数学成绩:
";cin>>x1;data[m-1].x=x1;}break;
case3:
{inty1;cout<<"请输入新的数学成绩:
";cin>>y1;data[m-1].y=y1;}break;
case4:
{intz1;cout<<"请输入新的计算机成绩:
";cin>>z1;data[m-1].z=z1;}break;
}
}
cout<<"该学生资料已修改"<}
else
cout<<"学生资料未修改"<getch();
}
//############################################################################################
voidstudent:
:
taxis()
{
intx,y,k,array[max];
intchange;
stuchange1;
for(x=0;xarray[x]=data[x].score=data[x].x+data[x].y+data[x].z;
cout<<"*****************请选择排序方式************"<cout<<"1.按学号排序"<cout<<"2.按姓名排序"<cout<<"3.按成绩排序"<cout<<"*******************************************"<cin>>k;
while(k<1||k>3)
{cout<<"选择有误,请重新选择:
";cin>>k;}
switch(k)
{
case1:
{
for(x=0;xfor(y=0;yif(data[y].num>data[y+1].num)
{
change1=data[y];
data[y]=data[y+1];
data[y+1]=change1;
}
cout<<"姓名\t学号\t高数\t英语\t计算机\t总分"<for(x=0;xfor(y=0;yif(data[x].num==data[y].num)
{
cout<<<<}
break;
}
case2:
{
for(x=0;xfor(y=0;yif(strcmp(data[y].name,data[y+1].name)>0)
{
change1=data[y];
data[y]=data[y+1];
data[y+1]=change1;
}
cout<<"姓名\t学号\t高数\t英语\t计算机\t总分"<for(x=0;xfor(y=0;yif(data[x].name==data[y].name)
{
cout<<<<}
break;
}
case3:
{
for(x=0;xfor(y=0;yif(array[y]{
change=array[y];
array[y]=array[y+1];
array[y+1]=change;
}
cout<<"姓名\t学号\t高数\t英语\t计算机\t总分"<for(x=0;xfor(y=0;yif(array[x]==data[y].score)
{
cout<<<<}
}
}
getch();
}
//############################################################################################
voidstudent:
:
tongji()
{
inti,k=0,m=0;
for(i=0;i{
if(data[i].x<60||data[i].y<60||data[i].z<60)
k++;
elsem++;
}
cout<<"及格人数为:
"<cout<<"不及格人数为:
"<getch();
}
//############################################################################################
voidstudent:
:
show()
{
cout<<<}
//############################################################################################
voidmain()
{
studentst;
char*ch1,chose;
intnum,num1,find,del;
floatx,y,z;
while
(1)
{
cout<<"----------------学生成绩管理系统----------------"<cout<<"*1.添加学生成绩*"<cout<<"*2.输出学生成绩*"<cout<<"*3.查找*"<cout<<"*4.修改*"<cout<<"*5.删除*"<cout<<"*6.排序*"<cout<<"*7.统计*"<cout<<"*8.退出*"<cout<<"------------------------------------------------"<cout<<"*请选择(1-8)*"<cout<cin>>chose;
if(chose=='8')break;
switch(chose)
{
case'1':
{
cout<<"请输入学生信息和成绩"<ch1=newchar[];
cout<<"姓名:
";
cin>>ch1;
cout<<"学号:
";
cin>>num;
while(st.check_num(num))
{
cout<<"学号重复,请重新输入"<cin>>num;
}
cout<<"高数:
";
cin>>x;
cout<<"英语:
";
cin>>y;
cout<<"计算机:
";
cin>>z;
st.input(ch1,num,x,y,z);
}break;
case'2':
{
temp=count;count=1;
cout<<"序号\t姓名\t学号\t高数\t英语\t计算机"<while(count<=temp)
{
st.show();count++;
}
count--;getch();
}break;
case'3':
{
cout<<"请输入你要查找学生的学号:
"<cin>>find;
st.find(find);
}break;
case'4':
{
cout<<"请输入你要修改的学生学号:
"<cin>>num1;
st.xiugai(num1);
}break;
case'5':
{
cout<<"请输入你要删除的学生学号:
"<cin>>del;
st.del(del);
}break;
case'6':
{
st.taxis();
}break;
case'7':
{
st.tongji();
}break;
default:
{
cout<<"输入错误!
!
!
请重新输入"<getch();
}
}
}
getch();
}
//############################################################################################