- 第一次博客,就写人生第一个系统吧–C++学生成绩管理系统.该系统是楼主(菜鸟)大一上学期简单学习C++两个月老师布置的作业.实现了较为简单的成绩录入,增删改查,平均分以及排名功能,记录一下.
- 2021年7月16日新增头文件和变量定义,全部代码齐,复制可直接跑!!!
实现功能
- 录入、查看成绩
- 学生增加,成绩查询、修改以及删除
- 学生成绩排名(冒泡排序)
- 各科情况分析(最高分、最低分以及平均分)
头文件及变量定义(新增)
#include <iostream>
#include <string>
using namespace std;
string name[100],sex[100]; /*定义各个数组类型*/
float yw[100],sx[100],yy[100],zf[100],ave[100];
int n,zhiling,x[100],pai[100]; /*全局变量*/
输出首页代码
void shouye() /*输出首页*/
{
cout<<endl;cout<<endl;
cout<<"\t"<<"\t"<<"\t"<<" 欢迎来到学生成绩管理系统 "<<endl;
cout<<"\t"<<"\t"<<"\t"<<"---------------------------"<<endl;
cout<<"\t"<<"\t"<<"\t"<<" 1.继续"<<endl;
cout<<"\t"<<"\t"<<"\t"<<" 2.退出"<<endl;
cout<<"\t"<<"\t"<<"\t"<<"---------------------------"<<endl;
cout<<"\t"<<"\t"<<"\t"<<" 您选择的是:";
}
void mingling()
{
int ling;
cin>>ling; /*输入指令*/
cout<<endl;
switch(ling)
{
case 2:cout<<"\t"<<"即将退出,请稍候......"<<endl;exit(1); /*退出系统*/
case 1:cout<<"\t"<<"即将进入系统......"<<endl;system("cls"); break;//清屏,然后break
default:cout<<"\t"<<"选择错误,请重新输入!!!"<<endl;
mingling(); /*重新选择*/
}
}
主菜单代码
void menu() /*输出主菜单*/
{
cout<<endl<<"\t"<<" 菜单"<<endl;
cout<<"\t"<<"——————————————————"<<endl;
cout<<"\t"<<"\t"<<"1.录入学生成绩"<<endl;
cout<<"\t"<<"\t"<<"2.显示完整成绩表"<<endl;
cout<<"\t"<<"\t"<<"3.查看成绩排名"<<endl;
cout<<"\t"<<"\t"<<"4.各科情况分析"<<endl;
cout<<"\t"<<"\t"<<"5.查询学生成绩"<<endl;
cout<<"\t"<<"\t"<<"6.增加学生成绩"<<endl;
cout<<"\t"<<"\t"<<"7.修改学生成绩"<<endl;
cout<<"\t"<<"\t"<<"8.删除学生成绩"<<endl;
cout<<"\t"<<"\t"<<"9.离开"<<endl;
cout<<"\t"<<"——————————————————"<<endl;
cout<<endl;
}
录入学生成绩代码,限制语数英成绩在0~100之间
void luru() /*1.输入学生信息*/
{
int r;
cout<<endl;
cout<<"\t"<<"请输入学生人数:"; /*学生人数*/
cin>>n;
for(r=0;r<n;r++)
{
cout<<"\t"<<"请输入第"<<r+1<<"个学生的学号:";
cin>>x[r];
cout<<"\t"<<" 姓名:";
cin>>name[r];
cout<<"\t"<<" 性别:";
cin>>sex[r];
if(sex[r]!="男"&sex[r]!="女") /*限制性别只能为男或女*/
{
cout<<"\t"<<" 输入错误,请重新输入:";
cin>>sex[r];
}
cout<<"\t"<<" 语文成绩:";
cin>>yw[r];
if(yw[r]>100||yw[r]<0) /*限制分数在0-100之间*/
{
cout<<"\t"<<" 输入错误,请重新输入:";
cin>>yw[r];
}
cout<<"\t"<<" 数学成绩:";
cin>>sx[r];
if(sx[r]>100||sx[r]<0)
{
cout<<"\t"<<" 输入错误,请重新输入:";
cin>>sx[r];
}
cout<<"\t"<<" 英语成绩:";
cin>>yy[r];
if(yy[r]>100||yy[r]<0)
{
cout<<"\t"<<" 输入错误,请重新输入:";
cin>>yy[r];
}
cout<<endl;
}
}
效果图如下
排名功能代码,采用冒泡排序,同分情况,按语数英顺序优先
void paiming() /*3.显示成绩排名*/
{
int i,r,j,k,z[100],pai_x[100];
string y[100],pai_name[100],pai_sex[100];
float t[100],pai_yw[100],pai_sx[100],pai_yy[100],pai_zf[100],pai_ave[100]; /*pai_[]用来存放成绩排名的数组*/
cout<<endl;
cout<<"\t"<<"-------------------------------------------------------------------"<<endl;
cout<<"\t"<<"学号 姓名 性别 语文 数学 英语 总分 平均分 排名"<<endl;
for(i=0;i<n;i++)
{
pai_x[i]=x[i];pai_name[i]=name[i];pai_sex[i]=sex[i];pai_yw[i]=yw[i];pai_sx[i]=sx[i];pai_yy[i]=yy[i];
pai_zf[i]=pai_yw[i]+pai_sx[i]+pai_yy[i];
pai_ave[i]=pai_zf[i]/3;
}
for(r=0;r<n-1;r++)
{
for(j=0;j<n-r-1;j++)
{
if(pai_zf[j+1]>pai_zf[j]) /*将各项用冒泡排序法按总分高到低排序*/
{
z[j]=pai_x[j];pai_x[j]=pai_x[j+1];pai_x[j+1]=z[j]; /*z[]用来暂存整数数据*/
y[j]=pai_name[j];pai_name[j]=pai_name[j+1];pai_name[j+1]=y[j]; /*y[]用来暂存字符数据*/
y[j]=pai_sex[j];pai_sex[j]=pai_sex[j+1];pai_sex[j+1]=y[j];
t[j]=pai_yw[j];pai_yw[j]=pai_yw[j+1];pai_yw[j+1]=t[j]; /*t[]用来暂存数字数据*/
t[j]=pai_sx[j];pai_sx[j]=pai_sx[j+1];pai_sx[j+1]=t[j];
t[j]=pai_yy[j];pai_yy[j]=pai_yy[j+1];pai_yy[j+1]=t[j];
t[j]=pai_zf[j];pai_zf[j]=pai_zf[j+1];pai_zf[j+1]=t[j];
t[j]=pai_ave[j];pai_ave[j]=pai_ave[j+1];pai_ave[j+1]=t[j];
}
else if(pai_zf[j+1]==pai_zf[j])
{
if(pai_sx[j+1]>pai_sx[j]) /*总分相同按数学优先排名*/
{
z[j]=pai_x[j];pai_x[j]=pai_x[j+1];pai_x[j+1]=z[j];
y[j]=pai_name[j];pai_name[j]=pai_name[j+1];pai_name[j+1]=y[j];
y[j]=pai_sex[j];pai_sex[j]=pai_sex[j+1];pai_sex[j+1]=y[j];
t[j]=pai_yw[j];pai_yw[j]=pai_yw[j+1];pai_yw[j+1]=t[j];
t[j]=pai_sx[j];pai_sx[j]=pai_sx[j+1];pai_sx[j+1]=t[j];
t[j]=pai_yy[j];pai_yy[j]=pai_yy[j+1];pai_yy[j+1]=t[j];
t[j]=pai_zf[j];pai_zf[j]=pai_zf[j+1];pai_zf[j+1]=t[j];
t[j]=pai_ave[j];pai_ave[j]=pai_ave[j+1];pai_ave[j+1]=t[j];
}
else if(pai_sx[j+1]==pai_sx[j])
{
if(pai_yw[j+1]>pai_yw[j]) /*总分,数学相同按语文排名*/
{
z[j]=pai_x[j];pai_x[j]=pai_x[j+1];pai_x[j+1]=z[j];
y[j]=pai_name[j];pai_name[j]=pai_name[j+1];pai_name[j+1]=y[j];
y[j]=pai_sex[j];pai_sex[j]=pai_sex[j+1];pai_sex[j+1]=y[j];
t[j]=pai_yw[j];pai_yw[j]=pai_yw[j+1];pai_yw[j+1]=t[j];
t[j]=pai_sx[j];pai_sx[j]=pai_sx[j+1];pai_sx[j+1]=t[j];
t[j]=pai_yy[j];pai_yy[j]=pai_yy[j+1];pai_yy[j+1]=t[j];
t[j]=pai_zf[j];pai_zf[j]=pai_zf[j+1];pai_zf[j+1]=t[j];
t[j]=pai_ave[j];pai_ave[j]=pai_ave[j+1];pai_ave[j+1]=t[j];
}
else if(pai_yy[j+1]>pai_yy[j]) /*总分,数学相同,先按语文再按英语排*/
{
z[j]=pai_x[j];pai_x[j]=pai_x[j+1];pai_x[j+1]=z[j];
y[j]=pai_name[j];pai_name[j]=pai_name[j+1];pai_name[j+1]=y[j];
y[j]=pai_sex[j];pai_sex[j]=pai_sex[j+1];pai_sex[j+1]=y[j];
t[j]=pai_yw[j];pai_yw[j]=pai_yw[j+1];pai_yw[j+1]=t[j];
t[j]=pai_sx[j];pai_sx[j]=pai_sx[j+1];pai_sx[j+1]=t[j];
t[j]=pai_yy[j];pai_yy[j]=pai_yy[j+1];pai_yy[j+1]=t[j];
t[j]=pai_zf[j];pai_zf[j]=pai_zf[j+1];pai_zf[j+1]=t[j];
t[j]=pai_ave[j];pai_ave[j]=pai_ave[j+1];pai_ave[j+1]=t[j];
}
}
}
}
}
for(k=0;k<n;k++)
{
pai[k]=k+1;
cout<<"\t"<<pai_x[k]<<"\t"<<pai_name[k]<<"\t"<<pai_sex[k]<<"\t"<<pai_yw[k]<<"\t"<<pai_sx[k]<<"\t"<<pai_yy[k]<<"\t"<<pai_zf[k]<<"\t"<<pai_ave[k]<<"\t"<<pai[k]<<endl;
}
cout<<"\t"<<"-------------------------------------------------------------------"<<endl;
}
各科情况分析代码
void gekeqingkuang() /*4.各科情况分析*/
{
int i,r,j,yw_overn=0,yw_youliang=0,yw_jige=0,sx_overn=0,sx_youliang=0,sx_jige=0,yy_overn=0,yy_youliang=0,yy_jige=0;
float ave_yw,yw_max=0,yw_min=100,yw_sum=0, /*语文的变量*/
ave_sx,sx_max=0,sx_min=100,sx_sum=0, /*数学的变量*/
ave_yy,yy_max=0,yy_min=100,yy_sum=0; /*英语的变量*/
{
for(i=0;i<n;i++)
{
yw_sum=yw[i]+yw_sum;
if(yw[i]>yw_max)
yw_max=yw[i];
if(yw[i]<yw_min)
yw_min=yw[i];
}
ave_yw=yw_sum/n;
for(i=0;i<n;i++)
{
if(yw[i]>=60)
yw_jige++;
}
for(j=0;j<n;j++)
{
if(yw[j]>=80)
yw_youliang++;
}
for(r=0;r<n;r++)
{
if(yw[r]>=ave_yw)
yw_overn++;
}
cout<<endl;
cout<<"\t"<<"语文成绩情况如下:"<<endl;
cout<<"\t"<<"---------------------------------------------------------------"<<endl;
cout<<"\t"<<"最高分 最低分 平均分 优良人数 及格人数 超过平均分的人数"<<endl;
cout<<"\t"<<yw_max<<"\t"<<yw_min<<"\t"<<ave_yw<<"\t"<<"\t"<<yw_youliang<<"\t"<<yw_jige<<"\t"<<"\t"<<yw_overn<<endl;
cout<<"\t"<<"---------------------------------------------------------------"<<endl;
cout<<endl;
}
{
for(i=0;i<n;i++)
{
sx_sum=sx[i]+sx_sum;
if(sx[i]>sx_max)
sx_max=sx[i];
if(sx[i]<sx_min)
sx_min=sx[i];
}
ave_sx=sx_sum/n;
for(i=0;i<n;i++)
{
if(sx[i]>=60)
sx_jige++;
}
for(j=0;j<n;j++)
{
if(sx[j]>=80)
sx_youliang++;
}
for(r=0;r<n;r++)
{
if(sx[r]>=ave_sx)
sx_overn++;
}
cout<<"\t"<<"数学成绩情况如下:"<<endl;
cout<<"\t"<<"---------------------------------------------------------------"<<endl;
cout<<"\t"<<"最高分 最低分 平均分 优良人数 及格人数 超过平均分的人数"<<endl;
cout<<"\t"<<sx_max<<"\t"<<sx_min<<"\t"<<ave_sx<<"\t"<<"\t"<<sx_youliang<<"\t"<<sx_jige<<"\t"<<"\t"<<sx_overn<<endl;
cout<<"\t"<<"---------------------------------------------------------------"<<endl;
cout<<endl;
}
{
for(i=0;i<n;i++)
{
yy_sum=yy[i]+yy_sum;
if(yy[i]>yy_max)
yy_max=yy[i];
if(yy[i]<yy_min)
yy_min=yy[i];
}
ave_yy=yy_sum/n;
for(i=0;i<n;i++)
{
if(yy[i]>=60)
yy_jige++;
}
for(j=0;j<n;j++)
{
if(yy[j]>=80)
yy_youliang++;
}
for(r=0;r<n;r++)
{
if(yy[r]>=ave_yy)
yy_overn++;
}
cout<<"\t"<<"英语成绩情况如下:"<<endl;
cout<<"\t"<<"---------------------------------------------------------------"<<endl;
cout<<"\t"<<"最高分 最低分 平均分 优良人数 及格人数 超过平均分的人数"<<endl;
cout<<"\t"<<yy_max<<"\t"<<yy_min<<"\t"<<ave_yy<<"\t"<<"\t"<<yy_youliang<<"\t"<<yy_jige<<"\t"<<"\t"<<yy_overn<<endl;
cout<<"\t"<<"---------------------------------------------------------------"<<endl;
cout<<endl;
}
}
效果图如下
查询学生成绩代码,输入学生姓名查询
void chaxun() /*5.查询学生信息*/
{
int r;string find_name;
cout<<"\t"<<"请输入你要查找的学生的姓名:";
cin>>find_name;
cout<<endl;
bool flag=false;
for(r=0;r<n;r++)
{ if(name[r]==find_name)
{
cout<<"\t"<<"该学生的信息为:"<<endl;
cout<<"\t"<<"------------------------------------------------------"<<endl;
cout<<"\t"<<"学号 姓名 语文 数学 英语 总分 平均分"<<endl;
cout<<"\t"<<x[r]<<"\t"<<name[r]<<"\t"<<yw[r]<<"\t"<<sx[r]<<"\t"<<yy[r]<<"\t"<<zf[r]<<"\t"<<ave[r]<<endl;
cout<<"\t"<<"------------------------------------------------------"<<endl;
flag=true;
break;
}
}
if(flag==false)
cout<<"\t"<<"查无此人!!!"<<endl;
}
效果图如下
删除功能代码,同样是输入姓名进行删除,增加和修改的代码与录入差不多,就不再列出来
void shanchu() /*8.删除学生信息*/
{
int i,r;
string shan_name;
cout<<endl;
cout<<"\t"<<"请输入你要删除的学生的姓名:";
cin>>shan_name;
cout<<endl;
bool flag=false;
for(r=0;r<n;r++)
{
if(name[r]==shan_name)
{
for(i=r;i<n;i++)
{
x[i]=x[i+1];name[i]=name[i+1];sex[i]=sex[i+1];yw[i]=yw[i+1];sx[i]=sx[i+1];yy[i]=yy[i+1];zf[i]=zf[i+1];ave[i]=ave[i+1];pai[i]=pai[i]+1;
}
n--;
cout<<"\t"<<"删除成功!!!";
flag=true;
break;
}
}
if(flag==false)
cout<<"查无此人!!!"<<endl;
}
主函数实现菜单循环
int main()
{
shouye();
mingling();
cout<<endl;
cout<<"\t"<<"请先录入学生信息,才能执行其它操作!";
luru();
for(;zhiling<10;) /*菜单循环*/
{
menu();
cout<<"\t"<<"请输入你想执行的功能:";
cin>>zhiling;
switch (zhiling)
{
case 1:luru();break;
case 2:chengjibiao();break;
case 3:paiming();break;
case 4:gekeqingkuang();break;
case 5:chaxun();break;
case 6:zengjia();break;
case 7:xiugai();break;
case 8:shanchu();break;
case 9:cout<<endl<<"\t"<<"即将退出,请稍侯......";exit(1); /*结束程序*/
default:cout<<"\t"<<"选择错误,按任意数字键即可返回菜单!!!"<<endl; /*输入数字指令,返回菜单*/
cout<<"\t";cin>>zhiling;
}
}
return 0;
}
该学生成绩管理系统大致如上,有问题可留言,看到会尽量回复.