- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
合肥学院
计算机科学与技术系
课程设计报告
2016 ~2017 学年第 1 学期
课程
面向过程综合设计
课程设计名称
保龄球计分管理系统
学生姓名
孙魏东
学号
1504092006
专业班级
软件工程(2)班
指导教师
周艳玲
2016 年 9 月
一、需求分析
1、问题描述
打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10 轮,每轮可滚球1次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下:
(1)若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加2次滚球),该轮得分为本次击倒瓶数10与以后2次滚球所击倒瓶数之和。
(2)若某一轮的第一次滚球未击倒全部10个球,则对剩下未击倒的瓶再滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后1次滚球所击倒瓶数之和。
(3)若某一轮2次滚球未击倒全部10个瓶,则本轮不再滚球,该轮得分为这2次滚球所击倒瓶数之和。
2、程序有如下几个功能
(1)从键盘录入比赛数据
(2)计算总分排名并向屏幕输出排名信息
(3)向自定义文件写入比赛数据保存到指定目录
(4)退出系统
二、算法设计
1、设计思想
因为这是一个计分系统所以在主函数中采用switch结构来达到输入数字来进行选项操作。然后通过定义大量的函数然后在swtich中来一个个调用函数来进行运算和处理。由于要使得系统能一次输入多个人比赛记录并保存,读写文件时先把每局每个人数据存入一个能存放比赛数据的结构体链表中然后将整个结构体链表存入文件file中,读写文件一律采用字符读写方式读写。 输入比赛数据以及输出比赛最终数据时利用链表遍历依次输出,对于保龄球第十格击球的特殊性再加入if语句判断然后根据不同情况进行输入计算总分。
显示部分先定义Menu函数用来在程序开始前构造菜单,定义Star_Entering函数得到比赛数据后进行录入计算积分,然后利用Score_Ranking指针函数计算比分结果后直接显示比赛排名,最后可以保存数据到文件file中以备下次查看。在程序中,充分运用清屏函数可以使程序显得直观简洁。同时在不退出程序的时候,如不进行将比赛总得分数据存入文件的选项,每局每个人比赛数据都存在一个结构体链表中,然后可以选择是否把整个结构体链表读入文件并存储以便下次直接读取并显示。
(1)程序流程图
根据需求作出系统程序流程图如图1所示:
N退出系统NNYYYWrite_File()信息写入文件Score_Ranking()排名输出Star_Entering()录入得分NYNY输入验证码验证码正确?
N
退出系统
N
N
Y
Y
Y
Write_File()信息写入文件
Score_Ranking()排名输出
Star_Entering()录入得分
N
Y
N
Y
输入验证码
验证码正确?
图1 系统流程图
(2)重要的数据结构
本程序中采用了链表和结构体以及少量数组存储的数据类型,提高了程序的运行效率。
(3)主要算法的思想
1)本程序在数据的录入时采用了结构体链表存储数据的算法,在运行上极大的提高了效率,同时在函数之间采用了链表传递数据算法,其次程序融合了许多容错机制,保障了程序的稳定性,和健壮性,以便在用户进行非法操作时程序不会意外终止。
2)本程序在计算排名时采用了快速排序算法,极大的提高了程序的运行速率,保障了本程序在运行上的高效性。
2、设计表示
本系统主要包括七个函数功能模块
(1)login()登录模块
函数原型: void login();
功 能: 输入用户名和密码登录系统。
输入参数: 用户名(szUser)XXX。
输出参数: 输入密码同时 屏幕回显“*”。
(2)menu()菜单模块
函数原型: int menu ();
功 能: 在显示屏上输出菜单选项,供用户操作。
输入参数: operand操作数 。
输出参数: 对应的功能。
(3)Star_Entering()信息录入模块
函数原型: Bowls * Star_Entering();
功 能: 按保龄球比赛规则录入比赛得分。
输入参数: Bowls *p;用链表来记录比赛数据。
输出参数无输出。
(4)Score_Ranking()信息排名模块
函数原型: Bowls * Score_Ranking(Bowls *phead);
功 能: 按格式输出比赛最终总成绩排名信息
输入参数: 无输入。
输出参数:
文档评论(0)