课程设计报告课程名称C语言程序设计报告课题名称猜数字游戏专业机械设计班级1082学号16姓名向鹏指导教师王颖2011年9月15日湖南工程学院课程设计任务书课程名称C课程设计课题猜数字游戏专业班级机设1082班学生姓名向鹏学号201013090216指导老师王颖审批王颖任务书下达日期2011年9月1日任务书完成日期2011年9月15日目录第一章前言............................................................................................第二章需求分析……………………………………………….....…...2.1系统概述.........................................................2.2功能需求描述..................................................第三章总体设计………………………………………..……….…..3.1模块设计........................................................................................3.2程序的模块组成………………………………………………3.3各个函数的主要功能…………………………….………...…..第四章详细设计…………………………………………………....4.1系统的总体框图…………………………………………..4.2相关的数据类型.........................................................................4.3函数间的调用图.........................................................................4.4流程图…………………………………………………….....…第五章测试和结果………………………………………………....5.1调试分析……………………………………………………..….5.2使用说明......................................................................................5.3运行结果截屏及说明………………………………………..第六章源程序…………………………………………………...…...第七章总结………………………………………………………......附录1、应用技术学院评分标准………………..…………………….....第一章前言《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,课程设计的课题比平时的习题复杂得多,也更接近实际。课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。学习委员将课程设计报告与磁盘收齐后交指导老师。第二章需求分析猜数字游戏是一个运行在Windows平台下的小型游戏软件,依据猜数字游戏的基本规则,给用户进行成绩排行,在排行榜中排出前五名玩家的游戏记录,并可以随着玩家的游戏记录进行更新。1、系统概述该软件在Windows系统上为玩家提供猜数字游戏的基本功能,游戏用户可以选择开始游、排行榜查看、帮助等主要功能。当用户选择开始游戏时,系统会提示用户排行榜上猜数字成绩的最好记录,并让用户逐次猜数字,用户每次猜数字后系统会给出本次猜数字的结果提示,如位置和数字都正确的数字个数、数字正确介位置不正确的数字个数。如果用户猜数字的次数超过8次,则提示用户游戏失败,如果在8次之内猜出4个数字和正确的顺序,则提示用户猜数字成功,并到排行榜中进行比较,如果排名在前一名,则计入排行榜中,以便其他用户查看。在排行榜查看功能中,用户可以查看当前的游戏排行,排行榜中总共显示5名玩家的排行,如有新的记录产生,则插入到排行榜中,并把排行榜中位次最末的记录挤出排行榜。在帮助模块,用户可以查看游戏规则,当熟悉规则后可以退出帮助模块。2、功能需求描述猜数字游戏软件的总体目标是按照特定游戏规则为用户提供一个方便友好的游戏界面,同时给用户提供排行榜的功能使用户能够按照特定的目标提高自己的成绩,并且提供相应的帮助功能。游戏规则如下。①游戏软件随机产生4个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的值和位置顺序。如果数字值和位置顺序均正确,则猜数字成功。②玩家有8次猜数字的机会,如果在8次之内仍末猜出正确的数字值和数字位置顺序,则提示用户游戏失败。③一旦玩家在8次的次数限制内猜出正确的数字值和位置顺序,则赢得游戏。④当玩家赢得游戏后,会与排行榜中的前五名玩家的游戏记录比较,如果排名能够进入前五名,则更新排行榜,使当前玩家成为入榜选手。⑤记分规则:猜数字所用次数即为分数,所以分数越少证明玩家水平越高,排行榜中也是排列份数最少的前五名选手。本游戏软件需要实现以下一些基本功能。①游戏区:玩家可以在游戏区逐次猜数字,系统给出玩家每次猜数字后的提示,包括数值、位置均正确的数字个数和数值正确但位置不正确的数字个数。②刷新排行榜:当玩家成功完成一轮猜数字游戏后,可通过和排行榜中相应记录的比较判断玩家是否可以进入排行榜,进入排行榜的资格游戏成绩在前五名的玩家。③查看排行榜:玩家可以查看当前排行榜中的排名顺序,从而确定自己的游戏目标。排行榜的查看按一定顺序显示给用户,便于查看。④清除排行榜:玩家可以选择清除排行榜功能,使得排行榜上的玩家姓名和玩家游戏记录从系统中清除,只留下系统默认的玩家名(player)和系统默认记录8次。⑤帮助:玩家通过帮助功能了解游戏规则和排行榜设置规则。⑥退出:玩家想结束并退出游戏系统。第三章总体设计在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计的过程中,给出猜数字游戏的模块结构、流程描述以及界面布局,并使得系统的总体设计符合软件工程中总体设计的基本原则。开发与设计的总体思想猜数字游戏是一种大众娱乐游戏,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每次进行猜数字操作之后的游戏提示,这两方面的规则设计往往决定了软件运行的正确性和质量。1、模块设计:1)、游戏区模块该模块为玩家提供猜数字游戏的主休功能,由系统自动产生4个随机排列的整数,并给用户8次机会猜测数字的数值和排列顺序。如果用户在8次之内没有猜出正确的结果,则提示用户游戏失败,否则提示用户猜数字成功,并调用产生新记录模块对玩家游戏成绩进行处理。(因精力有限且只能用画图来画个框架,所以就不再有图了)①产生原始数字:由系统产生4个随机数,并按任意顺序排列,作为游戏的原始数字供玩家进行猜数字游戏。②游提示:提示用户数值和位置全对的数字个数,和只有数值但位置不对的数字个数。③原始数字显示:当用户在8次之内仍未能猜出原始数字和顺序时,系统提示玩家失败,并给玩家显示出原始数字和顺序。2)、排行榜模块该模块为玩家提供排行榜的浏览和清除功能,包括按玩家成绩顺序浏览、按玩家姓名浏览和清除排行榜3个子功能。①按玩家成绩顺序浏览子功能中,将玩家的姓名、游戏成绩按猜数字次数从少到多的顺序列表显示,即将玩家记录从高到底显示。②按玩家姓名浏览的子功能中,为了玩家便于查找到自己的游戏成绩,将玩家的姓名和猜数字次数记录按照玩家姓名的字母顺序列表显示。③清除排行榜:当用户选择清除排行榜功能时,系统会将所有玩家的历史游戏记录和玩家姓名一起从排行榜中清除,在排行榜中只留下默认的游戏记录和默认的玩家姓名,即系统默认玩家姓名player和系统默认记录8次。3)、产生新记录模块该模块的功能是当玩家成功完成游戏时,判断用户可否进入排行榜,如果可以进入,则刷新排行榜中的记录,将当前玩家的游戏记录写入排行榜,并将排行榜目前结果显示给用户。4)读取最好记录模块读取最好记录模块的主要功能是当用户选择游戏开始选项时,首先提示用户目前排行榜中的最游戏记,如果目前没有排行的玩家记录,则初始化排行榜,给出系统默认的玩家姓名和默认的游戏记录。如果目前排行榜中有玩家记录,则判断出最好记录显示给用户。5)、帮助模块帮助模块提供的功能是当玩家选项为帮助功能对应的选项数字时,进入帮助模块,给出用户猜数字的游戏规则和游戏中相关提示的含义。数据结构设计猜数字游戏软件涉及到对玩家信息和排行榜的操作。为将玩家的姓名和游戏成绩描述成一个玩家的两个重要方面,使用C语中的结构体来描述2、程序的模块组成:主函数:intmain()创立结构体:structp1()使数字产生循环:intrand1()调用读取破记录:goread()输入数字:voidinput1();初始化随机数发生器:getnumber()清除文本模式窗口:clrscr();读入字符串的时候,直到回车为止:gets()3、各个函数的主要功能:随机产生4个数的函数:随机产生4个数字。randomize()是c函数库提供的一个函数,功能给产生随机数的进行初始化清除文本模式窗口第四章详细设计1、系统的总体框图图4-1开始游戏刷新排行榜查看排行榜清除排行榜帮助退出开始功能菜单显示clearsorthelpexitStartprogramresertracordreadrecord2、相关的数据类型:#includestdio.h#includeconio.h#includestdlib.h#includestring.hvoidrand2();intrand1();voidinput1();voidcompare1();inti,j,k,c,d,b[4];chara[24];将数字定义为整型3、函数间的调用关系图如下:图4-2显示玩家积分函数:display()记录积分函数:record()自定义清屏函数myclear()读取破纪录者函数:goread()初始化记录者函数;newest()随机产生4个数函数;getnumber(_)主函数;intmain()新记录者函数;breakrecord()4、流程图图4-3youareright恭喜正确退出输入记录名字Main()查看积分比较输入的数和随机生成的数.给出提示.A表示数对位置也对,B表示数对位置不对1退出纪录判断结果和积分输入四位不相同的数字,如果输入的不是数字或者输入的数字有重复,则重新输入第五章测试和结果1、调试分析;输入的游戏玩家人数太多时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最佳。刚开始执行输入函数,按数字顺序输入,输完后执行显示功能,数字、字母的位置显示不对,试着在其中增加一些语句,希望能把所需结果按正常顺序显示,但暂时没有成功,最后在老师的帮助下,所需结果能按正常顺序输出了。在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计的过程中,给出猜数字游戏的模块结构、流程描述以及界面布局,并使得系统的总体设计符合软件工程中总体设计的基本原则。开发与设计的总体思想猜数字游戏是一种大众娱乐游戏,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每次进行猜数字操作之后的游戏提示,这两方面的规则设计往往决定了软件运行的正确性和质量。同时,要谨记调试失败的原因,以免下次犯同类错误。2