第一次博客,就寫人生第一個系統吧–C++學生成績管理系統.該系統是樓主(菜鳥)大一上學期簡單學習C++兩個月老師佈置的作業.實現了較爲簡單的成績錄入,增刪改查,平均分以及排名功能,記錄一下.
實現功能
- 錄入、查看成績
- 學生增加,成績查詢、修改以及刪除
- 學生成績排名(冒泡排序)
- 各科情況分析(最高分、最低分以及平均分)
輸出首頁代碼
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;
}
該學生成績管理系統大致如上,有問題可留言,看到會盡量回復.