您好,欢迎访问三七文档
《应用程序设计》课程设计姓名:学号:班级:指导教师:成绩:2014年6月保龄球计分目录1需求分析......................................................................................................................................11.1问题描述.................................................................................................................................11.2输入数据要求.........................................................................................................................11.3输出数据要求.........................................................................................................................21.4开发环境和工具.....................................................................................................................22总体设计.......................................................................................................................................32.1总体设计思路.........................................................................................................................32.2模块结构图.............................................................................................................................32.3模块说明.................................................................................................................................43详细设计.......................................................................................................................................63.1数据类型定义.........................................................................................................................63.2SCAN模块实现........................................................................................................................63.3SAVE以及READ模块实现.....................................................................................................83.4COUNT模块实现.....................................................................................................................94测试结果与分析........................................................................................................................114.1.输入数据计算结果...............................................................................................................114.2数据的文件保存...................................................................................................................124.3从文件读入数据并计算结果...............................................................................................125个人总结.....................................................................................................................................136使用说明………………………………………………………………………………………137附录............................................................................................................................................147.1源代码...................................................................................................................................14设计题目:保龄球计分1需求分析1.1问题描述打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10轮,每轮可滚球1次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加2次滚球),该轮得分为本次击倒瓶数10与以后2次滚球所击倒瓶数之和。若某一轮的第一次滚球未击倒全部10个球,则对剩下未击倒的瓶再滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后1次滚球所击倒瓶数之和。若某一轮2次滚球未击倒全部10个瓶,则本轮不在滚球,该轮得分为这2次滚球所击倒瓶数之和。从键盘读入比赛数据;从文件读入比赛数据;将从键盘输入的比赛数据存入文件(一个文件可存放多局比赛的数据)。将比赛数据显示在屏幕上计算比赛结果及统计数据,并显示在屏幕上。一局(GAME)保龄球分为10格,每格里有两次投球机会,如在第一次投球时全中,就不需要投第二球。每一格可能出现三种情况:1.失球(MISS)无论何种情况,在一格的两次投球时,未能击倒10个瓶,此格的分数为击倒的瓶数,未击中用一个(-)符号表示。2.补中(SPARE)当第二次投球击倒该格第一球余下的全部瓶子,称为补中,用一个(/)符号表示。补中的记分是10分加上下一次投球击倒的瓶数。3.全中(STRIKE)当每一格的第一次投球击倒全部竖立的十个瓶时,称为全中,用一个(×)符号表示。全中的记分是10分(击倒的瓶)加该球员下两次投球击倒的瓶数。但在第十格中情况比较特殊:(1)如第二次投球未补中,则第十格得分为第九格得分加上第十格所击倒瓶数。(2)如第二次投球补中,则追加一次投球机会,第十格得分为第九格得他加上10加上追加一次投球击倒瓶数。(3)如第一球为全中,则追上加二次投球机会,第十格得分为第九格得分加上10加追加二次投球击倒的瓶数。因此从第一格到第十格的两次追加投球,都为全中,则为12个全中,得分为满分300分。1.2输入数据要求第一格第一次击倒瓶数:第一格第二次击倒瓶数:第二格第一次击倒瓶数:第二格第二次击倒瓶数:…………………………1.3输出数据要求输入数据显示格式:序号123456789109|16|38|27|210|010|010|04|58|210|7|3积分输出数据显示格式:序号123456789109|/6|38|/7|2×|×|×|4|58|/×|7|/得分16254251811051241331531731.4开发环境和工具开发环境:Windows7开发工具:VisualC++6.02概要设计2.1总体设计思路1.设计思路因为这是一个计分系统,所以在主函数中采用switch结构来达到输入数字来进行选项操作。然后通过定义大量的函数,然后在swtich中来一个个调用函数,来进行运算和处理。由于要使得系统能一次输入多局比赛并保存,读写文件时,先把每局数据存入一个最多能存10局比赛数据的结构体中,然后将整个结构体存入文件,读取文件时,可以自由选择载入保存比赛数据的文件,并自行选择需要显示和计算的比赛局数,然后进行显示,读写文件一律采用二进制方式读写。输入比赛数据以及输出比赛数据时,利用循环语句依次输出;对于保龄球第十格击球的特殊性,再加入if语句判断,然后根据不同情况进行输入或者计算。显示部分先定义count函数用来在得到比赛数据后进行计算积分,然后一种显示是输入数据后直接计算显示;还有一种是读取文件中比赛数据,然后再进行积分运算,再显示结果。在现实中,充分运用清屏函数,使程序显得直观简洁。2.数据存储在不退出程序的时候,如不进行将比赛数据存入文件的选项,每局比赛都存在个最多包含10局比赛数据的结构体中,然后可以选择是否把整个结构体读入文件并存储以便下次直接读取并计算显示。2.2模块结构图根据需求将系统划分为两个个功能模块,函数之间的调用关系如图1.1所示。图1.1保龄球计分系统模块结构图1)Scan:初始化比赛,输入比赛数据。2)Save:将比赛数据读入文件(只保存每局比赛击倒瓶数而不保存积分数据)。3)Count:通过计算得到比赛积分。4)Print:调用Count计算后得到比赛积分结果并输出。5)Read:读取存储了比赛数据的文件。6)Changein:将比赛数据由数组存入结构体,便于读入文件。7)Changeout:将结构体中数据赋值给数组,方便读取文件得到数据后的计算、处理。2.3模块说明1.Scan模块函数原型:voidscan();功能:提示输入局数以及每格击倒球数,即输入比赛数据。输入参数:a[11][4],二维数组,存放比赛数据。输出参数:a[11][4],已经赋值了的二维数组,存有一局比赛数据。2.Save模块函数原型:voidsave();功能:将小于等于十局数量的比赛数据存入自己命名的文件。输入参数:charch,infile[15],字符串数
本文标题:保龄球问题
链接地址:https://www.777doc.com/doc-2690826 .html