完整版C语言课程设计实验报告.docx
- 文档编号:15798008
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:22
- 大小:94.21KB
完整版C语言课程设计实验报告.docx
《完整版C语言课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《完整版C语言课程设计实验报告.docx(22页珍藏版)》请在冰点文库上搜索。
完整版C语言课程设计实验报告
第1章问题描述
1.1题目
足球比赛积分排行榜程序
1.2基本要求
(1)10个足球队进行9轮循环赛,胜一场积3分,平一场积1分,输一场积0分。
(2)如果两个队积分相同,进行净胜球的比较,如果净胜球再相同进行总进球的比较。
(3)编写一程序输入每轮比赛的比分,并可以存储。
(4)最后统计出每轮比赛的积分榜。
第2章需求分析
1.1软件的基本功能
(1)输入10个足球队的9轮比赛进球数。
(2)计算10个球队的积分,净胜球,总进球。
(3)对9轮比赛进行排序。
1.2输入/输出形式
由键盘输入,屏幕输出,并且以TXT形式保存。
1.3测试数据要求
输入九轮比赛10个足球队的进球数,由系统统计积分、净胜球、总进球数,并输出。
第3章概要设计
1.1主程序
头文件:
#include
说明:
main函数的头文件,控制整个程序。
#include
说明:
清屏的头文件。
#include
说明:
包括了大量的函数原型,调用现成的库函数。
#include
说明:
基于char*的字符串处理函数。
全局变量:
voidinput();输入数据函数
voidsort();排序数据函数
voiddisplay();显示数据函数
voidsave();保存数据函数
第4章详细设计
1.1数据类型
int整型char字符型
1.2伪码算法
(1)原始数据录入模块
voidinput()/*原始数据录入模块*/
{
inti=0,j=0,k;
charch;
printf("\t1.录入球队信息\t");
for(i=0;i<9;i++)//i代表9轮
{
printf("\n\n\t输入第%d轮比赛的信息\n",i+1);
for(n=0;n<5;j++)//n代表每轮的5场比赛,每场有2各队
{
某场的第一只队
输入队名到match[i][j].Name;
输入进球数到match[i][j].d_goal;
某场的第二只队
输入队名到match[i][j+5].Name;
输入进球数到match[i][j+5].d_goal;
算每个队的失球数
match[i][n].s_goal=match[i][n+1].d_goal;
第一只队的失球数等于第二只队的失球数;
第二只队的失球数等于第一只队的进球数;
算每个队的得分
如果第一只队的进球数等于第二只队的进球数,两个队的得分各1分;
如果第一只队的进球数大于第二只队的进球数,第一个队3分,第二个队0分;
如果第一只队的进球数小于第二只队的进球数,第一个队0分,第二个队3分;
算第一只队的截至到本轮总得分,截至到本轮净胜球,截至到本轮总进球
if(i==0)
{
第一轮的截至到本轮总得分=本场得分;
第一轮的截至到本轮净胜球=本场净胜球;
第一轮的截至到本轮总进球=本场进球数;
}
else
{
for(j=0;j<10;j++)
{
for(k=0;k<10;k++)
{
if(match[i][j]的队名和match[i-1][k]的队名一样)
{
match[i][j]的截至到本轮总得分=match[i-1][k]的截至到本轮总得分+match[i][j]的本场得分;
match[i][j]的截至到本轮净胜球,截至到本轮总进球同理计算;
}
}
}
}
}
printf("\t\t按任意键返回主菜单.");
fflush(stdin);
fflush(stdin);
ch=getch();
system("cls");
}
(2)排序数据函数
voidsort()/*排序数据函数*/
{
structMatchInfomatch;
inti,j,n;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
for(n=j+1;n<10;n++)
{
if(Match[i][j]总积分小于Match[i][n]的总积分)
{
Match[i][j]结构体与Match[i][n]结构体调换
}
}
}
}
}
voidsort1()/*排序数据函数*/
{
structMatchInfomatch;
inti=0,j,n;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
for(n=j+1;n<10;n++)
{
if(Match[i][j]总积分等于Match[i][n]的总积分)
{
if(Match[i][j]总净胜球小于Match[i][n].总净胜球)
{
Match[i][j]结构体与Match[i][n]结构体调换
}
}
}
}
}
}
voidsort2()/*排序数据函数*/
{
structMatchInfomatch;
inti=0,j,n;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
for(n=j+1;n<10;n++)
{
if(Match[i][j]总积分等于Match[i][n]的总积分)
{
if(Match[i][j]总净胜球小于Match[i][n].总净胜球)
{
if(Match[i][j]总进球小于Match[i][n]总进球)
{
Match[i][j]结构体与Match[i][n]结构体调换
}
}
}
}
}
}
}
1.3程序流程图
第5章操作
1.1进入足球比赛积分排行榜界面
图2
voidmain()/*主函数*/
{
intas;
charch;
do{
printf("\n\n\n\n\t\t****&****&****&****&****&****&****&****&****&****");
start:
printf("\n\n\n\n\t\t\t欢迎进入足球比赛积分排行榜\n");
printf("\n\n\n\n\t\t******************按任意键继续********************");
ch=getch();
}
while(!
ch);
system("cls");
/*一下为功能选择模块*/
说明:
进入欢迎页面。
1.2进入目录
图3
do
{
printf("\n\t\t\t\t1.录入球队信息\n\t\t\t\t2.显示积分排行榜\n\t\t\t\t3.保存积分\n\t\t\t\t4.退出\n");
printf("\t\t\t\t选择功能选项(输入所选功能前的数字):
");
fflush(stdin);
/*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/
scanf("%d",&as);
switch(as)
{
case1:
system("cls");
input();
break;
case2:
system("cls");
display();
break;
case3:
system("cls");
save();
break;
case4:
system("exit");
exit(0);
default:
system("cls");
gotostart;
}
}while
(1);/*while
(1),1表示真,所以while
(1)表示永远循环下去,*/
/*至此功能选择结束*/
}
说明:
上面的函数用来选择后续操作。
1.3输入球队比赛信息
voidinput()/*原始数据录入模块*/
{
inti=0,j=0,k;
charch;
printf("\t1.录入球队信息\t");
for(i=0;i<9;i++)
{
printf("\n\n\t输入第%d轮比赛的信息\n",i+1);
for(j=0;j<5;j++)
{
printf("\n输入第%d场比赛的信息\n",j+1);
printf("\n输入第一只队球队代号(A,B,C...):
");
scanf("%s",&Match[i][j].name);
fflush(stdin);
printf("\n输入进球数:
");
fflush(stdin);
scanf("%d",&Match[i][j].d_goal);
printf("\n输入第二只队球队代号(A,B,C...):
");
scanf("%s",&Match[i][j+5].name);
fflush(stdin);
printf("\n输入进球数:
");
fflush(stdin);
scanf("%d",&Match[i][j+5].d_goal);
Match[i][j].s_goal=Match[i][j+5].d_goal;
Match[i][j+5].s_goal=Match[i][j].d_goal;
Match[i][j].j_goal=Match[i][j].d_goal-Match[i][j].s_goal;//净胜球
Match[i][j+5].j_goal=Match[i][j+5].d_goal-Match[i][j+5].s_goal;//净胜球
if(Match[i][j].d_goal==Match[i][j+5].d_goal)
{
Match[i][j].score=1;Match[i][j+5].score=1;
}
if(Match[i][j].d_goal>Match[i][j+5].d_goal)
{
Match[i][j].score=3;Match[i][j+5].score=0;
}
if(Match[i][j].d_goal { Match[i][j].score=0;Match[i][j+5].score=3; } printf("%s的本场净胜球是%d,积分是%d\n",Match[i][j].name,Match[i][j].j_goal,Match[i][j+5].score); printf("%s的本场净胜球是%d,积分是%d\n",Match[i][j+5].name,Match[i][j+5].j_goal,Match[i][j+5].score); } } for(i=0;i<9;i++) { if(i==0) { for(j=0;j<10;j++) { Match[i][j].total_score=Match[i][j].score; Match[i][j].total_j_goal=Match[i][j].j_goal; Match[i][j].total_z_goal=Match[i][j].d_goal; } } else { for(j=0;j<10;j++) { for(k=0;k<10;k++) { if(0==strcmp(Match[i][j].name,Match[i-1][k].name)) { Match[i][j].total_score=Match[i-1][k].total_score+Match[i][j].score; Match[i][j].total_j_goal=Match[i-1][k].total_j_goal+Match[i][j].j_goal; Match[i][j].total_z_goal=Match[i-1][k].total_z_goal+Match[i][j].d_goal; } } } } } printf("\t\t按任意键返回主菜单."); fflush(stdin); fflush(stdin); ch=getch(); system("cls"); } 说明: 上面的函数用来读入键盘输入的数据,并且判断每个队伍的单轮积分情况、净胜球情况、总进球情况。 1.4显示九轮比赛排行榜 voidsort()/*排序数据函数*/ { structMatchInfomatch; inti,j,n; for(i=0;i<9;i++) { for(j=0;j<9;j++) { for(n=j+1;n<10;n++) { if(Match[i][j].total_score { match=Match[i][n]; Match[i][n]=Match[i][j]; Match[i][j]=match; } } } } } voidsort1()/*排序数据函数*/ { structMatchInfomatch; inti=0,j,n; for(i=0;i<9;i++) { for(j=0;j<9;j++) { for(n=j+1;n<10;n++) { if(Match[i][j].total_score==Match[i][n].total_score) { if(Match[i][j].total_j_goal { match=Match[i][n]; Match[i][n]=Match[i][j]; Match[i][j]=match; } } } } } } voidsort2()/*排序数据函数*/ { structMatchInfomatch; inti=0,j,n; for(i=0;i<9;i++) { for(j=0;j<9;j++) { for(n=j+1;n<10;n++) { if(Match[i][j].total_score==Match[i][n].total_score) { if(Match[i][j].total_j_goal==Match[i][n].total_j_goal) { if(Match[i][j].total_z_goal { match=Match[i][n]; Match[i][n]=Match[i][j]; Match[i][j]=match; } } } } } } } voiddisplay()/*显示数据函数*/ { inti=0,j=0; charas; sort(); sort1(); sort2(); do { printf("\t\t球队信息列表\n"); for(i=0;i<9;i++) { printf("\t\t\t第%d轮比赛信息\n",i+1); printf("\t代号\t\t积分\t净胜球\t总进球\n"); for(j=0;j<10;j++) printf("\t%s\t\t%d\t%d\t%d\n",Match[i][j].name,Match[i][j].total_score,Match[i][j].total_j_goal,Match[i][j].total_z_goal); } printf("\t\t按任意键返回主菜单."); fflush(stdin); as=getch(); } while(! as); system("cls"); } 说明: 上面的函数用来判断每个队伍的积分情况、净胜球情况、总进球情况,并且由屏幕输出。 1.5保存数据 voidsave()/*保存数据函数*/ { FILE*fp; inti,j; fflush(stdin); if((fp=fopen("d: \\足球积分排行榜.txt","wt"))! =NULL) for(i=0;i<9;i++) { fprintf(fp,"\t\t\t第%d轮比赛信息\n",i+1); fprintf(fp,"\t代号\t\t积分\t净胜球\t总进球\n"); for(j=0;j<10;j++) fprintf(fp,"\t%s\t\t%d\t%d\t%d\n",Match[i][j].name,Match[i][j].total_score,Match[i][j].total_j_goal,Match[i][j].total_z_goal); } fclose(fp); printf("\n"); printf("\t\t\t操作成功! \n"); system("pause"); system("cls"); } 说明: 将每轮比赛的积分输出,并且保存在新建的"足球积分排行榜.txt"文件中。 1.6由D盘查看数据 第6章参考文献 【1】: 王新孙雷《c语言课程设计》.清华大学出版社 【2】: 谭浩强《c程序设计》(第三版)清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 语言 课程设计 实验 报告