数据结构课程设计学生成绩名次表.docx
- 文档编号:28290471
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:9
- 大小:15.83KB
数据结构课程设计学生成绩名次表.docx
《数据结构课程设计学生成绩名次表.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计学生成绩名次表.docx(9页珍藏版)》请在冰豆网上搜索。
数据结构课程设计学生成绩名次表
数据结构课程设计-学生成绩名次表
问题描述:
建设一个年级(M个班)的学生参加某门课程的考试,每个班最多有N个学生,请输出各班的成绩名次表(M个)、以班级为单位的成绩名次表(1个)、以及以年级为单位的成绩名次表(1个)。
设计要求:
1.功能:
每个班级的学生记录按学号顺序排列,每个学生记录至少包含排列名次、学号、成绩3个字段。
2.输入:
随机产生M*N个成绩。
3.输出:
(1)输出每个班级的成绩名次表,具有相同成绩的名次相同;
(2)输出以班级为单位的成绩名次表。
(3)输出以年级为单位的成绩名次表,具有相同成绩的名次相同。
#include
#include
#include
#include
#defineMAX15
#defineMAX215
typedefstructstudent
{
intnum;//学号
intscore;//成绩
}DataType1;//学生结点信息
typedefstructbanji
{
DataType1*data;
charclassname[10];//班级名称
intclassnum;//班级人数
}Stu;//班级结点信息
intM;
intCreate(StuS[MAX1][MAX2],intN)
{
intV;
inti,j,k;
srand(time(NULL));
printf("请输入你创建多少个年级:
");
scanf("%d",&M);
printf("请输入你创建的一个年级有多少个班:
");
scanf("%d",&N);
for(i=0;i { for(j=0;j { printf("---------------------创建第%d个年级第%d个班级的信息--------\n",i+1,j+1); printf("请输入第%d个年级第%d个班级的名称: ",i+1,j+1); scanf("%s",S[i][j].classname); printf("请输入第%d个年级第%d个班级的人数: ",i+1,j+1); scanf("%d",&V); S[i][j].data=(DataType1*)malloc(sizeof(DataType1)*V); getchar(); S[i][j].classnum=V; for(k=0;k { intx=S[i][j].data[k].num=(i+1)*1000+(j+1)*100+k; printf("产生该班第%d个学生的学号: %d\n",k+1,x);inty=S[i][j].data[k].score=rand()%5+95; printf("随机产生该班该学生的成绩: %d\n",y);} } } returnN; } intclassorder(StuS[MAX1][MAX2],intN)//查询每个班级的成绩名次表 { intx,y,i,j,V,k,p=0; DataType1temp; charb[10]; printf("请输入你要查询班级的名称: "); scanf("%s",b); for(x=0;x { for(y=0;y { if(strcmp(S[x][y].classname,b)==0) gotoOK; if(x==M-1&&y==N-1) { printf("你查找的班级不存在! \n"); return-1; } } } OK: V=S[x][y].classnum; for(i=0;i for(j=i+1;j { if(S[x][y].data[i].score { temp=S[x][y].data[i]; S[x][y].data[i]=S[x][y].data[j]; S[x][y].data[j]=temp; } } printf("%d班排名: \n学号\t成绩\t名次\t班级名称\n",y+1); for(k=0;k {p++; printf("%4d\t%4d\t%4d\t%s\n",S[x][y].data[k].num,S[x][y].data[k].score,p,S[x][y].classname); if(k } printf("\n"); return1; } intAllclassorder(StuS[MAX1][MAX2],intN)//查询以班级为单位的成绩名次表 { inty,i,j,V,k; intc,p; DataType1temp; printf("请输入你要查询那个年级的全部班级名次表<1-%d>: ",M); scanf("%d",&c); if(c>M||c<1) { printf("输入错误! \n"); return-1; } printf("----打印你要查询的第%d个年级的全部班级名次表----\n",c); for(y=0;y { V=S[c-1][y].classnum; for(i=0;i for(j=i+1;j { if(S[c-1][y].data[i].score { temp=S[c-1][y].data[i]; S[c-1][y].data[i]=S[c-1][y].data[j]; S[c-1][y].data[j]=temp; } } p=0; printf("%d班排名: \n学号\t成绩\t名次\t班级名称\n",y+1); for(k=0;k { p++; printf("%4d\t%4d\t%4d\t%s\n",S[c-1][y].data[k].num,S[c-1][y].data[k].score,p,S[c-1][y].classname); if(k } printf("\n"); } return1; } intgradeorder(StuS[MAX1][MAX2],intN)//查询以年级为单位的成绩名次表 { intV; intc; intx,y,i,j,k=0,p=0; DataType1r[100],temp; printf("请输入你要查询哪个年级的名次表<1-%d>: ",M); scanf("%d",&c); if(c>M||c<1) { printf("输入错误! \n"); return-1; } for(x=0;x { V=S[c-1][x].classnum; for(y=0;y r[k++]=S[c-1][x].data[y]; } for(i=0;i for(j=i+1;j { if(r[i].score { temp=r[i]; r[i]=r[j]; r[j]=temp; } } printf("\t--------第%d年级总排名-------\n",c); printf("学号\t成绩\t名次\n"); for(i=0;i { p++; printf("%4d\t%4d\t%4d\n",r[i].num,r[i].score,p); if(i } return1; } voidshowface()//显示桌面菜单 { printf("********欢迎进入彭强学生成绩名次表查询系统*******\n"); printf("*1创建年级和班级信息2查询每个班级的成绩名次表*\n"); printf("*3查询以班级为单位的成绩名次表*\n"); printf("*4查询以年级为单位的成绩名次表0退出管理系统*\n"); printf("*************************************************\n"); } voidmain() { StuS[MAX1][MAX2]; intN; chari; do { showface();//调用菜单函数 printf("请选择菜单0—5: "); scanf("%s",&i); switch(i) { case'1': N=Create(S,N);break; case'2': classorder(S,N);break; case'3': Allclassorder(S,N);break; case'4': gradeorder(S,N);break; case'0': exit(0);break; default: printf("选择菜单错误,请重新选择! \n"); } }while(i! =0); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 学生 成绩 名次