用C语言设计一个学生成绩统计系统?
发布网友
发布时间:2022-04-29 05:51
我来回答
共2个回答
热心网友
时间:2022-06-20 03:36
// Note:Your choice is C++ IDE
#include <iostream>
#include <string>
using namespace std;
//N代表科目数,M代表人数
#define N 2
#define M 3
class student
{public:
float score[N];
string name;
float average;
float total;
int rank;
student();
void inscore();
void calav();
void caltt();
void show();
};
void student::inscore()
{
int i;
cout<<"输入姓名:";
cin>>name;
cout<<"输入成绩:";
for(i=0;i<N;i++)
{
cin>>score[i];
}
caltt();
calav();
}
void student::calav()
{
average=total/N;
}
void student::caltt()
{
int i;
for(i=0;i<N;i++)
total+=score[i];
}
void student::show()
{
int i;
cout<<rank<<" "<<name<<" ";
for(i=0;i<N;i++)
cout<<score[i]<<" ";
cout<<endl;
}
void setrank(student sys[M])
{
int i,j;
student tmp=sys[0];
for(i=0;i<M-1;i++)
{
for(j=i+1;j<M;j++)
if(sys[j].average>sys[i].average)
{
tmp=sys[j];
sys[j]=sys[i];
sys[i]=tmp;
}
sys[i].rank=i+1;
}
sys[i].rank=i+1;
}
void findsc(student sys[M])
{
string n;
int i;
cout<<"请输入查询的名字:";
cin>>n;
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(i=0;i<M;i++)
if(sys[i].name==n)
{
sys[i].show();
}
}
void findrank(student sys[M])
{
string n;
int i;
cout<<"请输入查询的名字:";
cin>>n;
for(i=0;i<M;i++)
if(sys[i].name==n) cout<<sys[i].rank;
}
void find10(student sys[M])
{
int j;
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<10;j++)
sys[j].show();
}
void findgrade(student sys[M])
{
int i,j;
cout<<"1.>=85 2.>=75 3.>=60 4.<60"<<endl;
cin>>i;
switch(i)
{
case 1:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<M;j++)
sys[j].show();
}
break;
case 2:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<M;j++)
if(sys[j].average>=75 && sys[j].average<85) sys[j].show();
}
break;
case 3:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<M;j++)
sys[j].show();
}
break;
case 4:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<M;j++)
if(sys[j].average<60) sys[j].show();
}
break;
}
}
void findbad(student sys[M])
{
int i,j,k;
for(i=0;i<M;i++)
{
k=0;
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<N;j++)
{
if(sys[i].score[j]<60) k++;
if(k==3)
}
}
}
void pub(student sys[M])
{
int i;
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(i=0;i<M;i++)
sys[i].show();
}
int main()
{
student st[M];
int i,j;
while(1)
{
cout<<
"-------------------------------\n"<<
"1.输入成绩\n"<<
"2.查询任一学生成绩\n"<<
"3.查询任一学生排名\n"<<
"4.查询前十的学生\n"<<
"5.查询成绩级别的情况\n"<<
"6.查询三门不及格的学生\n"<<
"7.按成绩高低,顺序输入所有学生\n"<<
"-------------------------------"<<endl;
cin>>i;
switch(i)
{
case 1:
for(j=0;j<M;j++)
{
cout<<"输入第"<<j+1<<"个学生的成绩"<<endl;
st[j].inscore();
};
setrank(st);
break;
case 2:findsc(st);system("pause");break;
case 3:findrank(st);system("pause");break;
case 4:find10(st);system("pause");break;
case 5:findgrade(st);system("pause");break;
case 6:findbad(st);system("pause");break;
case 7:pub(st);system("pause");break;
}
}
return 0;
}
热心网友
时间:2022-06-20 03:36
实际上,你完全可以用现成的系统,比如“瑞文考试成绩统计分析系统”它不仅可以用来排名,而且还有很强大的功能,几乎你想要的它都可以提供给你,而且操作简单,还是免费软件。