资源描述:
《保龄球计分系统课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、兰州工业学院软件工程学院兰州工业学院课程设计实验报告(2016-2017学年第一学期)课程设计理论课名称:数据结构课程设计项目名称:保龄球计分系统院部名称:软件工程学院专业班级:软件15—2指导老师:王天磊姓名:齐金玉学号:20150306322419兰州工业学院软件工程学院保龄球计分系统课程设计目录一、需求分析31.1问题描述31.2比赛规则31.3输入数据显示格式:31.4输出数据显示格式:3二、总体设计42.1模块设计图4三、详细设计43.1源代码4四、测试结果与分析44.1主界面164.2输入数据及结果显示164.3文件的保存184.4文件的读取184
2、.5计过程中遇到的问题19五、个人总结1919兰州工业学院软件工程学院一、需求分析1.1问题描述关键字:局、轮、球打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10轮,每轮可滚球1次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,从键盘读入比赛数据;从文件读入比赛数据;将从键盘输入的比赛数据存入文件(一个文件可存放多局比赛的数据)。将比赛数据显示在屏幕上计算比赛结果及统计数据,。一局保龄球分为10格,每格里有两次投球机会,如在第一次投球时全中,就不需要投第二球。每一格可能出现三种情况: 1.失球:无论何种情况,在一格的两次投球时,未能击
3、倒10个瓶,此格的分数为击倒的瓶数。2.补中:当第二次投球击倒该格第一球余下的全部瓶子,称为补中。补中的记分是10分加上下一次投球击倒的瓶数。3.全中:当每一格的第一次投球击倒全部竖立的十个瓶时,称为全中。全中的记分是10分(击倒的瓶)加该球员下两次投球击倒的瓶数。4.第十格特殊中情况:有一个10分或者前两个之和加起来为10分才会出现第三个球,分为满分300分1.2比赛规则模拟10个人各打一局保龄球比赛过程,统计每局各轮得分和累计总分。逐人逐轮逐次输入一次滚球击倒的瓶数。一局10轮,一轮1个球或多个第一轮:第一次击中球的个数第二轮:第二次击中球的个数第三轮:第
4、三次击中球的个数.………..………..第十轮:第十次击中球的个数.1.3输入数据显示格式:轮数12345678910积分10
5、02
6、210
7、04
8、65
9、510
10、09
11、18
12、23
13、710
14、10
15、1019兰州工业学院软件工程学院1.4输出数据显示格式:轮数12345678910积分10
16、02
17、210
18、04
19、65
20、510
21、09
22、18
23、23
24、710
25、10
26、10得分20202015202018132030总得分2040607595115135146166196二、总体设计2.1模块设计图入口main()Top1:输入数据scan()Top2:计算统计count()Top
27、3:显示结果print()三、详细设计3.1源代码#include#include19兰州工业学院软件工程学院//定义全局变量,用来保存每轮比赛击倒的数量,本轮得分,总得分intscore[11][4];intdata[11][4];//=================================保存从文件中读取回来的数据charinfile[15],outfile[15];//=================================保存数据的文件名voidsave(){FILE*fp1;inti;prin
28、tf("请输入保存比赛数据的文件名:");scanf("%s",infile);if((fp1=fopen(infile,"wb+"))==NULL)//wb+"以读/写方式建立一个新的二进制文件{printf("不能打开文件");return;}for(i=0;i<=9;i++){//参数1:要输出的数据//参数2:每个数据项的大小,通过sizeof运算符获得每个数据项的大小//参数3:每次输出几个数据项//参数4:输出数据的指针fwrite(&score[i],sizeof(score[i]),1,fp1);}fclose(fp1);}voidread
29、(){FILE*fp2;inti;printf("请输入读取比赛数据的文件名:");scanf("%s",outfile);printf("");//printf("请输入要查询的比赛局数:");//scanf("%d",&t);if((fp2=fopen(outfile,"rb+"))==NULL)//"rb+"以读/写方式打开一个二进制文件(路径+名称){printf("没有找到该文件!!!");}for(i=0;i<=9;i++){//参数1:存放读取回来的数据//参数2:每次读取多大字节的数据,siezof用于获取data[i]占用几个字节19
30、兰州工业学院软件工程学院//参数3:每