⽤c语⾔编写班级成绩,C语⾔实现班级成绩管理系统C语⾔课程设计??班级成绩管理系统,供⼤家参考,具体内容如下
题⽬:
对⼀个有N个学⽣的班级,每个学⽣有M门课程。该系统实现对班级成绩的录⼊、显⽰、修改、排序、保存等操作的管理。功能要求:
(1)本系统采⽤⼀个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
(2)本系统显⽰这样的菜单:
请选择系统功能项:
a、成绩录⼊
b、成绩显⽰
c、成绩保存
d、成绩排序
e、成绩修改(要求先输⼊密码)
f、成绩统计
1)显⽰每门课程成绩最⾼的学⽣的基本信息
2)显⽰每门课程的平均成绩
3)显⽰超过某门课程平均成绩的学⽣⼈数
g、退出系统
1)执⾏⼀个具体的功能之后,程序将重新显⽰菜单。
2)将学⽣成绩保存到⽂件中。
代码:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef struct Student{
int ID; /*学⽣学号*/
char name[15]; /*学⽣姓名*/
vector subject; /*因未知课程数量,所以课程数量采⽤动态数组vector*/
double sum; /*学⽣各科成绩总分*/
}Student;
struct Rule{ /*排序规则*/
bool operator()(const Student &stu1,const Student &stu2)const
{
if(stu1.sum!=stu2.sum) /*总分不相等按照总分从⼤到⼩排序*/
return stu1.sum>stu2.sum;
return stu1.ID>stu2.ID; /*总分相等按照学号从⼤到⼩排序*/
}
};
int N,M,i,j; /*N为学⽣⼈数,M为课程数量*/
double score; /*临时变量*/
Student temp; /*临时变量*/
vector Stu; /*本课设采⽤动态数组vector,防⽌浪费内存空间*/
bool condition=true; /*系统运⾏状态*/
char choice; /*⽤于输⼊来选择功能*/
/*---------------------------------------------a.成绩录⼊---------------------------------------------*/ void InsertScore(){
cout<
cin>>N>>M;
cout<
for(i=0;i
cin>>temp.ID>>temp.name;
for(j=0;j
cin>>score;
temp.subject.push_back(score);
}
Stu.push_back(temp);
/*------------------------------这⼀⾏很重要------------------------------*/
/*------------------------------这⼀⾏很重要------------------------------*/
vector().swap(temp.subject);
/*------------------------------这⼀⾏很重要------------------------------*/
/*------------------------------这⼀⾏很重要------------------------------*/
}
cout<
/
*---------------------------------------------b.成绩显⽰---------------------------------------------*/ void ShowScore(){
cout<
for(i=0;i
cout<
cout<
for(i=0;i
cout<
for(int j=0;j
cout<
cout<
}
}
/*---------------------------------------------c.成绩保存---------------------------------------------*/ void SaveScore(){
FILE *fp;
if((fp=fopen("stu.dat","wb"))==NULL){
cout<
return;
}
for(i=0;i
if(fwrite(&Stu[i],sizeof(Student),1,fp)!=1)
cout<
}
fclose(fp);
cout<
}
/*---------------------------------------------d.成绩排序---------------------------------------------*/ void SortScore(){
for(i=0;i
Stu[i].sum=0;
for(j=0;j
Stu[i].sum+=Stu[i].subject[j];
sort(Stu.begin(),d(),Rule()); /*使⽤排序函数排序*/
cout<
}
/
*---------------------------------------------e.成绩修改---------------------------------------------*/ void ModifyScore(){
string password;
int id,no;
cout<
cin>>password;
/*------------------------------密码输⼊错误------------------------------*/
while(password!="GUXUNMEI"){
c语言培训班推荐cout<
cin>>password;
if(password=="Q")
return;
}
/*------------------------------密码输⼊正确------------------------------*/
cout<
while(1){
cout<
cin>>id;
if(id==-1){
cout<
return;
}
cin>>no>>score;
if(no>M){ /*课程不存在*/
cout<
continue;
}
for(i=0;i
if(Stu[i].ID==id){
Stu[i].subject[no-1]=score;
break;
}
}
if(i==N){ /*学⽣不存在*/
cout<
continue;
}
cout<
}
}
/*---------------------------------------------f.成绩统计---------------------------------------------*/ void CountScore(){
int maxn[M],count[M];
double k,average[M];
memset(maxn,0,sizeof(maxn));
/*--------------------显⽰每门课程成绩最⾼的学⽣的基本信息--------------------*/
for(i=0;i
for(j=0;j
if(Stu[i].subject[j]>Stu[i].subject[maxn[j]])
maxn[j]=i;
}
}
for(i=0;i
cout<
for(j=0;j
cout<
cout<
}
cout<
/*---------------------------显⽰每门课程的平均成绩---------------------------*/
for(j=0;j
k=0;
for(i=0;i
k+=Stu[i].subject[j];
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论