C语言课程设计校际运动会管理系统.docx
《C语言课程设计校际运动会管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计校际运动会管理系统.docx(26页珍藏版)》请在冰点文库上搜索。
C语言课程设计校际运动会管理系统
中国地质大学
本科生课程论文封面
课程名称C语言课程设计
教师姓名邵老师
本科生姓名赵鸿
本科生学号20091000477
本科生专业应用化学
所在院系材化学院
类别:
C.本科生
日期:
2010年7月5日
课程设计评语
对课程论文的评语:
平时成绩:
课程论文成绩:
总成绩:
评阅人签名:
注:
1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
课程论文题目
1.校际运动会管理系统
一、题目要求
(1)信息初始化
输入:
N─参赛学校总数,M─男子竞赛项目数,W─女子竞赛项目数;
各项目名次取法有如下几种:
取前5名:
第一名得分7,第二名得分5,第三名得分3,第四名得分2,第五名得分1;
取前3名:
第一名得分5,第二名得分3,第三名得分2;
用户自定义:
各名次权值由用户指定。
(2)提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,察看参赛学校信息和比赛项目信息等。
2.程序设计思路
根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。
根据上面的需求分析,可以将这个系统的设计分为1、信息输入模块2、比赛结果录入模块3、查询模块。
具体校际运动会管理系统分为信息的输入、结果的输入、学校各个项目的得分的查寻、总体报表的生成。
3.功能模块图
(每个功能模块都标注函数名称,如右图)
Main
Information
Saveathele()保存运动员信息
Saveschool()保存学校信息
Saveprogram()保存项目信息
Savescore()比赛结果录入
Search()
Ttzf()查询团体总分
Csxx()查询参赛学校信息
Bsxm()查询团体总分
Exit(0)
4.数据结构设计
数据结构采用结构体的形式,包括学校、项目、运动员三个结构体。
比如学校结构体成员包括学校校名、竞赛项目、得分;项目结构体成员包括项目名、权值。
structathlete//定义运动员信息
{
charuniv[5];
charname[8];
charprog[15];
charmingci[5];
intscore;
}at[SIZE];
structxuexiao//定义学校信息
{
charuniv[5];
charprog[15];
intnum_athlete;
}xx[N];
structprogram//定义项目信息
{
charprog[5];
intquming;
charath1[5];
charath2[5];
charuniv1[5];
charuniv2[5];
}pro[WM];
structzongfen//定义学校得分信息
{
charuniv[5];
charprog1[5];
charprog2[5];
charprog3[5];
intscore1;
intscore2;
intscore3;
inttotal_score;
}zf[N];
5.算法设计
1.主函数一般设计的较为简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
另外菜单部分也可以写成函数。
显示一系列功能选项
输入n,判断n是否是1-4
N
根据n的值调用各功能模块函数
图2 主函数流程图
Y
[程序]
voidmain()
{
menu();
}
voidmenu()
{
intn,w1;
do
{
puts("\t\t***^__^Welcometoloadsportssystem!
^__^***\n");
puts("\t\t************************MENU*************************\n");
puts("\t\t********1.Entertheinformation**************\n");
puts("\t\t********2.Score比赛结果录入**************\n");
puts("\t\t********3.Search**************\n");
puts("\t\t********4.Exit**************\n");
puts("\t\t******************************************************\n");
printf("Choiceyournumber(1-4):
[]\b\b");
scanf("%d",&n);
if(n<1||n>4)
{
w1=1;
getchar();
}
elsew1=0;
}
while(w1==1);
switch(n)
{case1:
Information();break;//输入信息
case2:
savescore();break;//比赛结果录入
case3:
Search();break;//查询模块
case4:
exit(0);
}
}
2.各功能模块设计
(1)信息输入模块
一是参赛学校信息,二是参赛运动员信息,三是比赛项目信息,分别输入并保存
voidInformation()
{
intn,w;
do{
puts("\n\n\n");
puts("\t\t***^__^Welcometoload信息录入system!
^__^***\n");
puts("\t\t*************************MENU*************************\n");
puts("\t\t********1.saveathlete**********\n");
puts("\t\t********2.saveschool**********\n");
puts("\t\t********3.saveprogram()**********\n");
puts("\t\t********4.back**********\n");
puts("\t\t***************************************\n");
printf("Choicyournumber(1-4):
[]\b\b");
scanf("%d",&n);
if(n<1||n>4)
{
w=1;
getchar();
}
elsew=0;
}
while(w==1);
switch(n)
{
case1:
saveathlete();break;//保存运动员信息子函数
case2:
saveschool();break;//保存学校信息子函数
case3:
saveprogram();break;//保存项目比赛信息子函数
case4:
exit(0);
}
}
(2)结果录入模块
录入运动员比赛得分
图4 比赛结果录入模块流程图
分析计算各学校总分
(3)查询信息模块
[分析]
查询信息模块提供按不同方式查询各种信息机返回功能,其中各功能模块用菜单方式选择。
菜单部分也可写成函数。
定义结构体指针UNI*next
输入学校名字
判断输入名字与结构体中学校名是否相同
指针变量值向下一组数据
调用输出函数
Y
N
图8查询学校名流程图
6.程序代码
//杨雪.cpp:
Definestheentrypointfortheconsoleapplication.
//
#include
#include
#include
#include
#defineSIZE9
#defineN3
#defineWM3
voidbsxm();
voidcsxx();
voidInformation();
voidmain();
voidmenu();
voidprintf_back();
voidsaveathlete();
voidsaveprogram();
voidsaveschool();
voidsavescore();
voidSearch();
voidttzf();
inti;
FILE*fp1,*fp2,*fp3,*fp4;
structathlete//定义运动员信息
{
charuniv[5];
charname[8];
charprog[15];
charmingci[5];
intscore;
}at[SIZE];
structxuexiao//定义学校信息
{
charuniv[5];
charprog[15];
intnum_athlete;
}xx[N];
structprogram//定义项目信息
{
charprog[5];
intquming;
charath1[5];
charath2[5];
charuniv1[5];
charuniv2[5];
}pro[WM];
structzongfen//定义学校得分信息
{
charuniv[5];
charprog1[5];
charprog2[5];
charprog3[5];
intscore1;
intscore2;
intscore3;
inttotal_score;
}zf[N];
voidInformation()
{
intn,w;
do{
puts("\n\n\n");
puts("\t\t***^__^Welcometoload信息录入system!
^__^***\n");
puts("\t\t*************************MENU*************************\n");
puts("\t\t********1.saveathlete**********\n");
puts("\t\t********2.saveschool**********\n");
puts("\t\t********3.saveprogram()**********\n");
puts("\t\t********4.back**********\n");
puts("\t\t***************************************\n");
printf("Choicyournumber(1-4):
[]\b\b");
scanf("%d",&n);
if(n<1||n>4)
{
w=1;
getchar();
}
elsew=0;
}
while(w==1);
switch(n)
{
case1:
saveathlete();break;//保存运动员信息子函数
case2:
saveschool();break;//保存学校信息子函数
case3:
saveprogram();break;//保存项目比赛信息子函数
case4:
exit(0);
}
}
voidsaveathlete()//保存运动员信息子函数
{
printf("\n请输入各项目获奖运动员的信息:
");
for(i=0;i{
printf("\n请输入第%d个运动员的信息:
\n",i+1);
printf("姓名:
");
scanf("%s",at[i].name);
printf("学校:
");
scanf("%s",at[i].univ);
printf("参赛项目:
");
scanf("%s",at[i].prog);
printf("名次:
");
scanf("%s",at[i].mingci);
printf("得分:
");
scanf("%d",&at[i].score);
}
fp1=fopen("ath","w");
for(i=0;i{
if(fwrite(&at[i],sizeof(structathlete),1,fp1)!
=1)
printf("Filewriteerror!
\n");
}
fclose(fp1);
fp1=fopen("ath","r");
printf("\n现在各运动员的信息如下:
\n\n");
printf("姓名学校项目名次得分\n");
for(i=0;i{
fread(&at[i],sizeof(structathlete),1,fp1);
printf("%-10s%-10s%-18s%-10s%d\n",at[i].name,at[i].univ,at[i].prog,at[i].mingci,at[i].score);
}
fclose(fp1);
printf_back();
}
voidsaveschool()//保存学校信息子函数
{
printf("\n请输入各参赛学校的信息:
");
for(i=0;i{
printf("\n请输入第%d个学校的信息:
\n",i+1);
printf("学校:
");
scanf("%s",xx[i].univ);
printf("参赛的项目:
");
scanf("%s",xx[i].prog);
printf("参赛者数:
");
scanf("%d",&xx[i].num_athlete);
}
fp3=fopen("xxiao","w");
for(i=0;i{
if(fwrite(&xx[i],sizeof(structxuexiao),1,fp3)!
=1)
printf("Filewriteerror!
\n");
}
fclose(fp3);
printf_back();
}
voidsaveprogram()//保存项目比赛信息子函数
{
printf("\n请输入关于比赛项目的信息:
");
for(i=0;i{
printf("\n请输入第%d项比赛的信息:
\n",i+1);
printf("项目:
");
scanf("%s",pro[i].prog);
printf("取分情况:
");
scanf("%d",&pro[i].quming);
printf("参赛者1:
");
scanf("%s",pro[i].ath1);
printf("所属学校:
");
scanf("%s",pro[i].univ1);
printf("参赛者2:
");
scanf("%s",pro[i].ath2);
printf("所属学校:
");
scanf("%s",pro[i].univ2);
}
fp4=fopen("pr","w");
for(i=0;i{
if(fwrite(&pro[i],sizeof(structprogram),1,fp4)!
=1)
printf("Filewriteerror!
\n");
}
fclose(fp4);
printf_back();
}
voidsavescore()//保存学校得分情况子函数
{
printf("N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数。
\n");
printf("W.100-女子一百米比赛,M.100-男子一百米,M.200-男子两百米。
\n");
printf("\n各项名次得分权值如下:
\n");
printf("取前三名:
第一名5分第二名3分第三名2分\n");
printf("\n请输入各学校的得分情况:
");
for(i=0;i{
printf("\n请输入第%d个学校的得分情况:
\n",i+1);
printf("学校:
");
scanf("%s",zf[i].univ);
printf("参赛项目1:
");
scanf("%s",zf[i].prog1);
printf("得分:
");
scanf("%d",&zf[i].score1);
printf("参赛项目2:
");
scanf("%s",zf[i].prog2);
printf("得分:
");
scanf("%d",&zf[i].score2);
printf("参赛项目3:
");
scanf("%s",zf[i].prog3);
printf("得分:
");
scanf("%d",&zf[i].score3);
zf[i].total_score=zf[i].score1+zf[i].score2+zf[i].score3;
}
fp2=fopen("zfen","w");
for(i=0;i{
if(fwrite(&zf[i],sizeof(structzongfen),1,fp2)!
=1)
printf("Filewriteerror!
\n");
}
fclose(fp2);
printf_back();
}
voidSearch()
{
intn,w2;
do
{
puts("\t\t***^__^Welcometoloadsearchsystem!
^__^***\n");
puts("\t\t*************************MENU*************************\n");
puts("\t\t********1.searchttzf**************\n");//查看团体总分
puts("\t\t********2.searchcsxx**************\n");//查看参赛学校信息!
puts("\t\t********3.searchbsxm**************\n");//查看比赛项目信息!
puts("\t\t********4.Exit**************\n");//退出
puts("\t\t***************************************\n");
printf("Choiceyournumber(1-4):
[]\b\b");
scanf("%d",&n);
if(n<1||n>4)
{
w2=1;
getchar();
}
elsew2=0;
}
while(w2==1);
switch(n)
{case1:
ttzf();break;
case2:
csxx();break;
case3:
bsxm();break;
case4:
exit(0);break;
default:
printf("未进行任何操作!
");
}
}
voidttzf()//查看学校团体总分子函数
{
fp2=fopen("zfen","r");
printf("\n各学校的团体总分情况如下:
\n\n");
printf("学校参赛项目总分\n");
for(i=0;i{
fread(&zf[i],sizeof(structzongfen),1,fp2);
printf("%-8s%s,%s,%-12s%-12d\n",zf[i].univ,zf[i].prog1,zf[i].prog2,zf[i].prog3,zf[i].total_score);
}
fclose(fp2);
printf_back();
}
voidcsxx()//查看参赛学校信息子函数
{
fp3=fopen("xxiao","r");
printf("\n各参赛学校的情况如下:
\n\n");
printf("学校参赛项目参赛者数\n");
for(i=0;i{
fread(&xx[i],sizeof(structxuexiao),1,fp3);
printf("%-8s%-20s%-12d\n",xx[i].univ,xx[i].prog,xx[i].num_athlete);
}
fclose(fp3);
printf_back();
}
voidbsxm()//查看比赛项目子函数
{
fp4=fopen("pr","r");
printf("\n各比赛项目的信息如下:
\n\n");
printf("项目取分情况参赛者1所属学校参赛者2所属学校\n");
for(i=0;i{
fread(&pro[i],sizeof(structprogram),1,fp4);
printf("%-12s%-10d%-10s%-12s%-10s%-12s\n",pro[i].prog,pro[i].quming,pro[i].ath1,pro[i].univ1,pro[i].ath2,pro[i].univ2);
}
fclose(fp4);
printf_back();
}
voidmain()
{
menu();
}
voidmenu()
{
intn,w1;
do
{
puts("\t\t***^__^Welcometoloadsportssystem!
^__^***\n");
puts("\t\t*************************MENU*************************\n");
puts("\t\t********1.Entertheinformation**************\n");
puts("\t\t***