logo资料库

学生运动会成绩数据库.doc

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
数据结构 课程设计报告 设计题目:学生运动会成绩数据库 专 班 学 学 业 级 生 号 指导教师 起止时间 学年第 学期 - 1 -
数据结构课程设计报告 ●问题描述 题目: 学生运动会成绩数据库 功能: 学生运动会成绩数据库系统记录某校运动会上全部运动项目,各系获得的分数及排名的情 况,包括 50、100、200,400,1500 米,跳高,跳远,标枪,铅球铁饼等。进入系统后可以输 入和修改某个项目的结果情况,可以按各系院编号输出总分;按总分排序;按男团体总分排序 ; 按系院编号查询;按项目编号查询;按女团体总分排序。 分步实施: 1) 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2) 完成最低要求:建立一个文件,包括某个系,5 个项目的得分情况,能对文件中的信 息进行扩充(追加),修改和删除; 3) 进一步要求:完成对多个系,多个项目的得分排序,以及完成系统查询功能。有兴 趣的同学可以自己扩充系统功能。 键盘输入:系院数目,男子项目数女子项目数,(每项目取前三名,分别为 10,5,2 分) 要求:1)界面友好,函数功能要划分好 2)总体设计应画一流程图 3)程序要加必要的注释 4) 要提供程序测试方案 5) 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没 有价值的。 ●软件环境 Turboc C 2.0 ●设计思路 项目 1 项目 2 男子 女子 男子 女子 管工 计算机 5 2 5 10 10 2 - 2 -
机械 10 2 5 如上图所示,即是为学生运动会所列出的表格,根据此表格即可定义 Academy 和 Score 两个结 构体,定义且完成数据的输入操作后再对其进行添加系院、添加项目、更改数据、查询总分、 按总分男子团体总分和女子团体总分分别查询排名等操作即可。 ●数据结构定义 结构原型由上表所示,建立包含学院名称和编号的代表学院的结构体 Academy、代表整个 表格的 Score 结构体和交换变量结构体 change。具体数据结构定义如下: typedef struct{char name[20]; int num; }Academy; typedef struct{Academy Aca[Maxnum]; struct{int male; int female; }score[Maxnum][Maxnum]; int m,n,b,g; }Score; typedef struct{int score; char name[20]; }change; name[20]和 num 分别为系院名称和编号,score[Maxnum][Maxnum]为表格中的数值,m、n、b、 g 分别代表系院数目、项目数目、男子项目数和女子项目数。 ●系统功能模块介绍 程序中除了 main 主函数外还包括八个函数(即实现八种功能)和将这八种功能集成在一起 的功能函数 Mainmenu。这八个函数分别为: 1、 Push(Score*p) 功能:在定义好的学生运动会数据库中添加新的系院或者项目,并为新添加的系院或项目输入 成绩数据。 操作:输入标示符 flag 和要添加的数目 f,若 flag 为 0,则再输入系院名称、编号以及成绩数据; 若 flag 为 1,则再输入每个系院在新项目中的成绩数据。 2、Correct(Score*p) 功能:更改某一个系院项目的分数。 操作:输入要更改系院项目的系院编号 i、项目编号 j、男子或女子选项 sex 和更改后的分数 f。 3、Addupscore(Score*p) 功能:核算各个系院的总分。 操作:按系院编号输出核算后的结果。 4、Sort(Score*p) 功能:核算各个系院的总分,并按分数高低进行排名。 - 3 -
操作:按排名先后输出系院总分。 5、Malesort(Score*p) 功能:核算各个系院的男子项目总分,并按分数高低进行排名。 操作:按排名先后输出系院男子项目总分。 6、Femalesort(Score*p) 功能:核算各个系院的女子项目总分,并按分数高低进行排名。 操作:按排名先后输出系院女子项目总分。 7、Acasearch(Score*p) 功能:查找特定系院所有项目的分数。 操作:输入待查找的系院编号 i,并输出该系院所有项目的分数。 8、Itemsearch(Score*p) 功能:查找特定项目的所有系院分数。 操作:输入待查找的项目编号 i,并输出该项目所有系院的分数。 ●程序清单 # include # include # define Maxnum 50 typedef struct{char name[20]; int num; }Academy; typedef struct{Academy Aca[Maxnum]; struct{int male; int female; }score[Maxnum][Maxnum]; int m,n,b,g; }Score; typedef struct{int score; char name[20]; }change; void Mainmenu(Score *p); void Push(Score*p) {int flag,i,j,f,b=0,g=0; clrscr(); printf("Please put in flag and number:\n"); scanf("%d %d",&flag,&f); if(flag==0) {printf("please put in the academy score and the academy name and num:\n"); - 4 -
for(i=p->m;im+f;i++) for(j=0;jn;j++) scanf("%d %d",&p->score[i][j].male,&p->score[i][j].female); p->m+=f; printf("Put in the new name and number:\n"); for(i=p->m-1;im+f-1;i++) scanf("%s %d",p->Aca[i].name,&p->Aca[i].num); } if(flag==1) {printf("please put in the item score:\n"); for(j=p->n;jn+f;j++) {for(i=0;im;i++) scanf("%d %d",&p->score[i][j].male,&p->score[i][j].female); if(p->score[i][j].male!=-1)b++; if(p->score[i][j].female!=-1)g++; } p->n+=f; p->b+=b; p->g+=g; } Mainmenu(p); } void Correct(Score*p) {int i,j,sex,f; clrscr(); printf("Please put in the academy num,the item num ,male or female and the score:\n"); scanf("%d %d %d %d",&i,&j,&sex,&f); if(sex==0)p->score[i][j].male=f; if(sex==1)p->score[i][j].female=f; Mainmenu(p); } void Addupscore(Score*p) {int i,j,f; clrscr(); for(i=0;im;i++) {f=0; for(j=0;jn;j++) {if(p->score[i][j].male!=-1)f+=p->score[i][j].male; if(p->score[i][j].female!=-1)f+=p->score[i][j].female; } printf("%s:%10d\n",p->Aca[i].name,f); - 5 -
} Mainmenu(p); } void Sort(Score*p) {int i,j; change a[Maxnum],t; clrscr(); for(i=0;im;i++) {a[i].score=0; strcpy(a[i].name,p->Aca[i].name); for(j=0;jn;j++) {if(p->score[i][j].male!=-1)a[i].score+=p->score[i][j].male; if(p->score[i][j].female!=-1)a[i].score+=p->score[i][j].female; } } for(i=0;im-1;i++) for(j=i+1;jm;j++) if(a[i].scorem;i++) printf("%s:%10d\n",a[i].name,a[i].score); Mainmenu(p); } void Malesort(Score*p) {int i,j; change a[Maxnum],t; clrscr(); for(i=0;im;i++) {a[i].score=0; strcpy(a[i].name,p->Aca[i].name); for(j=0;jn;j++) {if(p->score[i][j].male!=-1)a[i].score+=p->score[i][j].male; } } for(i=0;im-1;i++) for(j=i+1;jm;j++) if(a[i].score
a[j].score=t.score;strcpy(a[j].name,t.name); } for(i=0;im;i++) printf("%s:%10d\n",a[i].name,a[i].score); Mainmenu(p); } void Femalesort(Score*p) {int i,j; change a[Maxnum],t; clrscr(); for(i=0;im;i++) {a[i].score=0; strcpy(a[i].name,p->Aca[i].name); for(j=0;jn;j++) {if(p->score[i][j].female!=-1)a[i].score+=p->score[i][j].female; } } for(i=0;im-1;i++) for(j=i+1;jm;j++) if(a[i].scorem;i++) printf("%s:%10d\n",a[i].name,a[i].score); Mainmenu(p); } void Acasearch(Score*p) {int i,j; clrscr(); printf("Please put in the academy number:\n"); scanf("%d",&i); for(j=0;jn;j++) printf("%10d %10d",p->score[i][j].male,p->score[i][j].female); Mainmenu(p); } void Itemsearch(Score*p) {int i,j; clrscr(); printf("Please put in the item number:\n"); - 7 -
score\n4.Sort scanf("%d",&i); for(j=0;jm;j++) printf("%10d %10d",p->score[j][i].male,p->score[j][i].female); Mainmenu(p); } \n"); void Mainmenu(Score*p) {int ch; printf("\n----------------menu----------------\n"); score\n3.Addup printf("1.Push score\n2.Correct score\n5.Malesort\n6.Femalesort\n7.Acasearch\n8.Itemsearch\n0.Exit\n"); printf("----------------menu----------------\n"); printf("Please Choose:(1--8) scanf("%d",&ch); switch(ch) {case 0:exit(0);break; case 1:Push(p);break; case 2:Correct(p);break; case 3:Addupscore(p);break; case 4:Sort(p);break; case 5:Malesort(p);break; case 6:Femalesort(p);break; case 7:Acasearch(p);break; case 8:Itemsearch(p);break; default:printf("Put in the wrong number!"); } } main() {Score *p; int t; int i,j; clrscr(); p=(Score*)malloc(sizeof(Score)); if(p) {printf("put in the academy number,item number,male item number,female item:\n"); scanf("%d %d %d %d",&p->m,&p->n,&p->b,&p->g); } printf("put in academy name and academy num:\n"); for(t=0;tm;t++) scanf("%s %d",p->Aca[t].name,&p->Aca[t].num); printf("put in academy score:\n"); for(i=0;im;i++) {for(j=0;jn;j++) - 8 -
分享到:
收藏