1、完整版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个足球队的进球数,由系
2、统统计积分、净胜球、总进球数,并输出。第3章 概要设计1.1主程序头文件:#include说明:main函数的头文件,控制整个程序。#include说明:清屏的头文件。#include 说明:包括了大量的函数原型,调用现成的库函数。#include说明:基于char*的字符串处理函数。全局变量:void input(); 输入数据函数void sort(); 排序数据函数void display(); 显示数据函数void save(); 保存数据函数第4章 详细设计1.1数据类型int整型 char字符型1.2伪码算法(1)原始数据录入模块void input()/*原始数据录入模块*/ i
3、nt i=0,j=0,k; char ch; printf(t1.录入球队信息t);for (i=0; i9; i+) /i 代表9轮 printf(nnt输入第%d轮比赛的信息n,i+1); for (n=0;n5;j+) /n 代表每轮的5场比赛,每场有2各队 某场的第一只队 输入队名到matchij.Name; 输入进球数到matchij.d_goal; 某场的第二只队 输入队名到matchij+5.Name; 输入进球数到matchij+5.d_goal; 算每个队的失球数 matchin.s_goal = matchin+1.d_goal;第一只队的失球数等于第二只队的失球数; 第二
4、只队的失球数等于第一只队的进球数; 算每个队的得分 如果第一只队的进球数等于第二只队的进球数, 两个队的得分各1分; 如果第一只队的进球数大于第二只队的进球数, 第一个队3分, 第二个队0分; 如果第一只队的进球数小于第二只队的进球数, 第一个队0分, 第二个队3分; 算第一只队的截至到本轮总得分, 截至到本轮净胜球, 截至到本轮总进球 if (i = 0) 第一轮的截至到本轮总得分=本场得分;第一轮的截至到本轮净胜球=本场净胜球;第一轮的截至到本轮总进球=本场进球数; else for(j=0;j10;j+) for (k=0; k10; k+) if (matchij的队名和matchi-
5、1k的队名一样) matchij的截至到本轮总得分=matchi-1k的截至到本轮总得分+matchij的本场得分; matchij的截至到本轮净胜球,截至到本轮总进球同理计算; printf(tt按任意键返回主菜单.); fflush(stdin); fflush(stdin);ch=getch();system(cls); (2)排序数据函数void sort()/*排序数据函数*/ struct MatchInfo match; int i,j,n; for(i=0;i9;i+) for(j=0;j9;j+) for(n=j+1;n10;n+) if(Matchij总积分小于Matchi
6、n的总积分) Matchij结构体与Matchin结构体调换 void sort1()/*排序数据函数*/ struct MatchInfo match; int i=0,j,n; for(i=0;i9;i+) for(j=0;j9;j+) for(n=j+1;n10;n+) if(Matchij总积分等于Matchin的总积分) if(Matchij总净胜球小于Matchin.总净胜球) Matchij结构体与Matchin结构体调换 void sort2()/*排序数据函数*/ struct MatchInfo match; int i=0,j,n; for(i=0;i9;i+) for(
7、j=0;j9;j+) for(n=j+1;n10;n+) if(Matchij总积分等于Matchin的总积分) if(Matchij总净胜球小于Matchin.总净胜球) if(Matchij总进球小于Matchin总进球) Matchij结构体与Matchin结构体调换 1.3 程序流程图第5章 操作1.1 进入足球比赛积分排行榜界面图2void main()/*主函数*/ int as; char ch; do printf(nnnntt*&*&*&*&*&*&*&*&*&*); start: printf(nnnnttt 欢迎进入足球比赛积分排行榜n); printf(nnnntt*按
8、任意键继续*); ch=getch(); while(!ch); system(cls); /*一下为功能选择模块*/说明:进入欢迎页面。1.2进入目录图3do printf(ntttt1.录入球队信息ntttt2.显示积分排行榜ntttt3.保存积分ntttt4.退出n); printf(tttt选择功能选项(输入所选功能前的数字):); fflush(stdin); /*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/ scanf(%d,&as); switch(as) case 1:system(cls); input(); break; case 2:system(cls
9、); display(); break; case 3:system(cls); save(); break; case 4:system(exit); exit(0); default:system(cls); goto start; while(1);/*while(1),1表示真,所以while(1)表示永远循环下去, */ /*至此功能选择结束*/ 说明:上面的函数用来选择后续操作。1.3输入球队比赛信息void input()/*原始数据录入模块*/ int i=0,j=0,k; char ch; printf(t1.录入球队信息t); for (i=0; i9; i+) print
10、f(nnt输入第%d轮比赛的信息n,i+1); for (j=0;jMatchij+5.d_goal) Matchij.score=3;Matchij+5.score=0; if(Matchij.d_goalMatchij+5.d_goal) Matchij.score=0;Matchij+5.score=3; printf(%s的本场净胜球是%d,积分是%dn,Matchij.name,Matchij.j_goal,Matchij+5.score); printf(%s的本场净胜球是%d,积分是%dn,Matchij+5.name,Matchij+5.j_goal,Matchij+5.sco
11、re); for(i=0;i9;i+) if(i=0) for (j=0;j10;j+) Matchij.total_score=Matchij.score; Matchij.total_j_goal=Matchij.j_goal; Matchij.total_z_goal=Matchij.d_goal; else for(j=0;j10;j+) for(k=0;k10;k+) if (0=strcmp(Matchij.name,Matchi-1k.name) Matchij.total_score=Matchi-1k.total_score+Matchij.score; Matchij.to
12、tal_j_goal=Matchi-1k.total_j_goal+Matchij.j_goal; Matchij.total_z_goal=Matchi-1k.total_z_goal+Matchij.d_goal; printf(tt按任意键返回主菜单.); fflush(stdin); fflush(stdin); ch=getch(); system(cls); 说明:上面的函数用来读入键盘输入的数据,并且判断每个队伍的单轮积分情况、净胜球情况、总进球情况。1.4 显示九轮比赛排行榜void sort()/*排序数据函数*/ struct MatchInfo match; int i,
13、j,n; for(i=0;i9;i+) for(j=0;j9;j+) for(n=j+1;n10;n+) if(Matchij.total_scoreMatchin.total_score) match=Matchin; Matchin=Matchij; Matchij=match; void sort1()/*排序数据函数*/ struct MatchInfo match; int i=0,j,n; for(i=0;i9;i+) for(j=0;j9;j+) for(n=j+1;n10;n+) if(Matchij.total_score=Matchin.total_score) if(Ma
14、tchij.total_j_goalMatchin.total_j_goal) match=Matchin; Matchin=Matchij; Matchij=match; void sort2()/*排序数据函数*/ struct MatchInfo match; int i=0,j,n; for(i=0;i9;i+) for(j=0;j9;j+) for(n=j+1;n10;n+) if(Matchij.total_score=Matchin.total_score) if(Matchij.total_j_goal=Matchin.total_j_goal) if(Matchij.tota
15、l_z_goalMatchin.total_z_goal) match=Matchin; Matchin=Matchij; Matchij=match; void display()/*显示数据函数*/ int i=0,j=0; char as; sort(); sort1(); sort2(); do printf(tt球队信息列表n); for(i=0;i9;i+) printf(ttt第%d轮比赛信息n,i+1); printf(t代号tt积分t净胜球t总进球n); for(j=0;j10;j+) printf(t%stt%dt%dt%dn,Matchij.name,Matchij.to
16、tal_score,Matchij.total_j_goal,Matchij.total_z_goal); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls);说明:上面的函数用来判断每个队伍的积分情况、净胜球情况、总进球情况,并且由屏幕输出。1.5 保存数据void save()/*保存数据函数*/ FILE *fp; int i,j; fflush(stdin); if(fp=fopen(d:足球积分排行榜.txt,wt)!=NULL) for(i=0;i9;i+) fprintf(fp,ttt第
17、%d轮比赛信息n,i+1); fprintf(fp,t代号tt积分t净胜球t总进球n); for(j=0;j10;j+) fprintf(fp,t%stt%dt%dt%dn,Matchij.name,Matchij.total_score,Matchij.total_j_goal,Matchij.total_z_goal); fclose(fp); printf(n); printf(ttt操作成功!n); system(pause); system(cls);说明: 将每轮比赛的积分输出,并且保存在新建的足球积分排行榜.txt 文件中。1.6 由D 盘查看数据第6章 参考文献【1】:王新 孙雷 c语言课程设计.清华大学出版社【2】:谭浩强 c程序设计(第三版)清华大学出版社
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2