广东石油化工学院学生成绩管理系统第六份.docx
《广东石油化工学院学生成绩管理系统第六份.docx》由会员分享,可在线阅读,更多相关《广东石油化工学院学生成绩管理系统第六份.docx(14页珍藏版)》请在冰豆网上搜索。
![广东石油化工学院学生成绩管理系统第六份.docx](https://file1.bdocx.com/fileroot1/2023-8/5/3ea3844f-d423-4205-a4dc-4399fc123c2e/3ea3844f-d423-4205-a4dc-4399fc123c2e1.gif)
广东石油化工学院学生成绩管理系统第六份
成绩
评阅人
评阅日期
广东石油化工学院
C++程序设计训练
专业
班级
学号
姓名
指导教师
完成时间
一、上机内容
用C++语言设计一个简单的学生成绩管理系统,主要功能包括:
1.输入学生的各科成绩;
2.计算总分;
3.计算平均分;
4.计算名次(按平均分);
5.可查询任一学生的成绩情况;
6.计算可科目的优秀率和合格率。
二、程序源代码
#include
#include
#include
#include
usingnamespacestd;
intn;
chary;
doubleaverage;
structstudent
{
doublescore1;
doublescore2;
doublescore3;
doublescore4;
doublescore5;
doublesum;
doublenum;
charname[8];
doubleavr;
}stu[1000];
intmain()
{
voidsprint();//声明sprint函数
voidending();//声明ending函数
voidsort(studentstu[]);//声明sort函数
voidrate(studentstu[]);//声明rate函数
voidsearch(charfind_name[]);//声明search函数
voidinput();//声明input函数
voidoutput();//声明output函数
inti;
charfind_name[8];
sprint();
cout<<"pleaseinputnumberofthisclass(最多不超过1000人):
";
cin>>n;
system("cls");
input();//录入学生信息
system("cls");//清屏
for(i=0;i{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4+stu[i].score5;
stu[i].avr=stu[i].sum/5.0;
}
output();
cout<rate(stu);
cout<sort(stu);
cout<cout<<"输入你想查询的学生姓名:
"<cin>>find_name;
cout<search(find_name);
cout<cout<<"quit?
";
cin>>y;
if(y=='y'||y=='Y')
{system("cls");
ending();}
elseif(y=='n'||y=='N')main();
elsecout<<"对不起,没有该操作!
!
!
";
cout<//system("cls");
return0;
}
voidinput()//定义input函数
{inti;
for(i=0;i{
cout<<"inputscoresofstudent"<
cout<<"NO.:
";
cin>>stu[i].num;
cout<<"name:
";
cin>>stu[i].name;
cout<<"请按顺序输入"<<""<cout<<"score1:
";
cin>>stu[i].score1;
cout<<"score2:
";
cin>>stu[i].score2;
cout<<"score3:
";
cin>>stu[i].score3;
cout<<"score4:
";
cin>>stu[i].score4;
cout<<"score5:
";
cin>>stu[i].score5;
cout<}
}
voidoutput()//定义output函数
{inti;
cout<<"NO.namescore1score2score3score4score5average"<for(i=0;i{cout<cout<cout<}
}
voidsort(studentstu[])//按平均分由小到大排序
{
inti,j,k;
doubletemp1;
charq[8];
for(i=0;i{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4+stu[i].score5;
stu[i].avr=stu[i].sum/5.0;
}
for(i=0;i{
for(j=i+1;j<(n-1);j++)
{
if(stu[i].avr{
temp1=stu[j].avr;
stu[j].avr=stu[i].avr;
stu[i].avr=temp1;
temp1=stu[j].num;
stu[j].num=stu[i].num;
stu[i].num=stu[j].num;
strcpy(q,stu[i].name);
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,q);
}
}
}
cout<cout<<"按平均分计算名次如下:
"<cout<<"名次学号姓名平均分"<for(i=0,k=0;i{
cout<}
}
voidrate(studentstu[])//定义rate函数
{
inti;
doubleA=0;
doubleB=0;
doubleC=0;
doubleD=0;
doubleE=0;
doubleF=0;
doubleG=0;
doubleH=0;
doubleI=0;
doubleJ=0;
for(i=0;i{
if(stu[i].score1>=60)A++;
if(stu[i].score2>=60)B++;
if(stu[i].score3>=60)C++;
if(stu[i].score4>=60)D++;
if(stu[i].score5>=60)E++;
if(stu[i].score1>=90)F++;
if(stu[i].score2>=90)G++;
if(stu[i].score3>=90)H++;
if(stu[i].score4>=90)I++;
if(stu[i].score5>=90)J++;
}
cout<cout<<"各科及格率"<cout<<"科目1科目2科目3科目4科目5"<cout<<""<:
fixed)<(2)<cout<<""<:
fixed)<(2)<
cout<<""<:
fixed)<(2)<cout<<""<:
fixed)<(2)<cout<<""<:
fixed)<(2)<cout<cout<<"各科优秀率"<cout<<"科目1科目2科目3科目4科目5"<cout<<""<:
fixed)<cout<<""<:
fixed)<cout<<""<:
fixed)<cout<<""<:
fixed)<
cout<<""<:
fixed)<cout<}
voidsearch(charfind_name[])//定义search函数
{
inti;
for(i=0;iif(strcmp(stu[i].name,find_name)==0)
{cout<"<cout<<""<<"学生学号:
"<cout<<"score1score2score3score4score5average"<cout<break;
}
if(strcmp(stu[i].name,find_name)!
=0)cout<<"找不到该学生信息";
}
voidsprint()//定义sprint函数
{cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<骆颖达**********************"<cout<cout<cout<cout<cout<cout<cout<}
voidending()//定义ending函数
{
cout<cout<cout<cout<cout<cout<cout<cout<cout<}
三、程序运行
四、分析与总结
本次实验涉及的操作有多个,所以我选择由一个主函数带多个子函数,这样容易读代码并且可操作性高,其中使用了自定义结构体,定义学生的属性,再利用数组把所有信息连接起来,使用头文件include以在后面的排序和计算优秀合格率可以通过字符串变量操作,大大提高程序简洁性和可读性。
在写这个程序时其实思绪很重要,想分清各个子函数功能,再一个一个完成,在主函数中调用必要的子函数,做到这一点就能够很快捷,清晰的写出代码。
这个程序可以有多种写法,利用指针变量同样可以打到很好的效果。