C语言问题。设计学生成绩管理系统,要求可以输入m个学生n门科目的成绩!

2024-12-22 16:00:01
推荐回答(3个)
回答1:

// Note:Your choice is C++ IDE
#include
#include
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 {
cin>>score[i];
}
caltt();
calav();

}

void student::calav()
{
average=total/N;
}

void student::caltt()
{
int i;
for(i=0;i total+=score[i];
}

void student::show()
{
int i;
cout< for(i=0;i cout<
cout<}

void setrank(student sys[M])
{
int i,j;
student tmp=sys[0];

for(i=0;i {
for(j=i+1;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<<"排名 "<<"姓名 "<<"--成绩--"< for(i=0;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 if(sys[i].name==n) cout<
}

void find10(student sys[M])
{
int j;
cout<<"排名 "<<"姓名 "<<"--成绩--"< 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"< cin>>i;
switch(i)
{
case 1:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"< for(j=0;j sys[j].show();

}
break;

case 2:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"< for(j=0;j if(sys[j].average>=75 && sys[j].average<85) sys[j].show();

}
break;
case 3:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"< for(j=0;j sys[j].show();

}
break;

case 4:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"< for(j=0;j if(sys[j].average<60) sys[j].show();

}
break;

}

}

void findbad(student sys[M])
{
int i,j,k;
for(i=0;i {
k=0;

cout<<"排名 "<<"姓名 "<<"--成绩--"< for(j=0;j {
if(sys[i].score[j]<60) k++;
if(k==3)
}
}
}

void pub(student sys[M])
{
int i;
cout<<"排名 "<<"姓名 "<<"--成绩--"< for(i=0;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"<<
"-------------------------------"< cin>>i;
switch(i)
{
case 1:
for(j=0;j {
cout<<"输入第"< 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;
}

回答2:

用链表,设计三个结构体如下
typedef struct
{
int id;
char name[20];
......../*学生的其他属性*/
}Student,*PStudent;
typedef struct
{
int id;
char name[20] ;
float score;
}Cause,*PCause;
typedef struct
{
Student student;
PCause nextCause;
}StudentCause,*PStudentCause;

看看再想想,不会了再来问

回答3:

N门课的原理是一样的 根据需要输入