1《高级语言程序设计》课程设计题目:猜数字游戏班级:09软件工程R3学生姓名:谢泽雄学生学号:200931000622指导老师:姚金涛提交时间:2010年5月29日华南农业大学信息(软件)学院2《高级语言程序设计》课程设计评分表题目猜数字游戏专业班级09软件工程R3提交日期2010年05月29日小组成员学号姓名完成情况成绩(指导老师填写)组长无无组员200931000622谢泽雄组员小组评分表评分项目分数1.实现情况(15):完成课程设计要求的情况2.系统分析(10):对系统的理解及分析的深入程度。3.系统设计(20):总体设计、具体设计、数据结构设计等。4.程序设计(30):面向对象程序设计方法与编程工具掌握水平。5.界面设计(15):界面美观程度、操作方式友好程度等。6.论文撰写(10):论文撰写的规范性、合理性等等。小组总成绩:教师签名日期3目录一、猜数字游戏分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。41.游戏概述。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。42.系统运行环境。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。43.功能需求描述。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。4二、总体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。51.开发和设计的总体思想。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。52.程序模块结构图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。53.模块设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。54.程序流程描述。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。65.界面设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。76.数据结构设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。12三、详细设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。131.文件及函数组成。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。132.函数设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。14四.程序代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。171.start.h。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。172.start.c。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。193.mianzone.c。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。254.gamezone.c。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。325.refreshline.c。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。376.reset.c。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。407.print.c。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。408.count_num.c。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。489.intset–del.c。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。4910.imageline.c。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。49五.运行结果。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。50六、调试分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。511.情况1。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。512.情况2。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。513.情况3。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。514.情况4。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。52七、总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。524一、猜数字游戏分析在《猜数字游戏》分析环节中,会对该游戏开发的意图、应用目标、作用范围和有关该软件开发的背景材料进行详细的分析。《猜数字游戏》作为一个用来进行娱乐、消遣的应用软件,在对其进行需求分析的过程中,需要充分考虑游戏的可用性和娱乐性,联系实际生活,从而得到合理的需求分析的结论。1.游戏概述该软件为用户提供一个在Windows系统上运行的猜数字游戏,其使用者只有玩家:玩家在运行该程序时,可以浏览游戏自最近一次重置数据记录以来,所保存的游戏记录:分为“排行榜记录”和“成功情况”。玩家可清空排行榜数据,以重新开始记录游戏成绩。参加游戏后,游戏将自动刷新游戏记录,重新排行排行榜。玩家参加游戏前,可浏览帮组功能,了解游戏规则。2.系统运行环境(1)硬件环境处理器:IntelPentium166或更高内存:32MB以上硬盘空间:2G以上显卡:SVGA显示适配器(2)软件环境操作系统:Windows98/Me/2000/XP/vista/73.功能需求描述猜数字游戏是用来进行娱乐、消遣活动的应用软件。可进行游戏功能、浏览游戏记录功能和查看游戏帮助功能。(1)游戏功能需求如下:进行游戏:在游戏提示下输入所要猜测的游戏数字,即可完成游戏。重新开始游戏:在游戏进行中,因不同原因玩家要求输入特定字符串以重新游戏,或放弃游戏且返回主菜单。刷新排行榜:游戏结束后,若玩家成功猜的答案,玩家要求记录自己的用户名和记录,参与新排行榜的排行。输出答案:当玩家在规定次数中不能猜出答案,则玩家要求在游戏结束后得知正确答案。计算赢得游戏所用时间:玩家猜出数字后,要求显示所用时间并记录到排行榜中,以便与其他玩家进行比较和检查自己的提升。(2)浏览游戏记录功能需求如下:查看排行榜:游戏结束后,玩家需要查看自己的成绩排位,和了解其他玩家的游戏情况。在不同情况下,玩家想依据成绩循序、用户名循序、所用时间多少进行输出排行榜。count文件:玩家需要查看游戏次数与成功次数的记录。清空排行榜:玩家在一定情况下,要求重新开始记录游戏信息。清空count文件:玩家在一定情况下,要求重新开始记录游戏信息。(3)帮组功能需求如下:输出游戏规则:玩家需要了解游戏规则。游戏说明:玩家要求更了解游戏的各种功能,以更方便操作程序。5二、总体设计题目要求(1)按照分析、设计、编码、调试和测试过程完成应用程序;(2)学习并使用流程图等工具,并在撰写论文中使用;(3)程序的各项功能在程序运行时,以菜单方式选择并执行;(4)要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等(5)所有的信息存储在文件中,并实现文件读写操作。1.开发和设计的总体思想猜数字游戏是一个简易的娱乐游戏,开发设计的重点在于排行榜的跟新。每次游戏结束后都要对排行榜进行跟新,不可漏掉任何一次跟新。解决这个问题的方法是将跟新的过程单独写成一个可以独立完成得函数,在每次游戏结束后都必须调用该函数。关于排行榜的输出问题,游戏将把成绩排行在前十名的玩家信息输出,当排行在十名后的玩家的成绩与第十名的成绩相同,则把与第十名的玩家的成绩相同的用户信息一同输出。对于排行榜的容量问题,游戏采用自动增删的方法进行处理。当排行榜存有的用户信息多于十五名时,排行榜将自动删除第十六条用户信息。对菜单的选择判断要用到程序设计思想中的选择结构,对大量数据的处理要用到循环和文件处理等基本技术。系统采用结构化的设计方法进行设计,采用C语言进行开发。2.程序模块结构图依据需求分析结果,猜数字游戏的程序可分为3个模块:游戏区、游戏记录和帮助。程序模块结构图如图1所示。猜数字游戏游戏区游戏记录帮助图1程序模块功能图3.模块设计(1)游戏区模块该模块为进入游戏,玩家进入后可按照游戏提示完成游戏,和刷新游戏记录、排行榜。(2)游戏记录模块游戏记录模块的作用是为了保障系统的安全性和系统使用人员角色的区分。该模块需要从输入设备获取用户输入的用户名和密码,判断是否为合法身份,其次要判断用户权限,从而决定其能使用的系统功能,其模块功能图如图2所示。6游戏记录排行榜显示count文件信息按排名浏览排行榜count文件按姓名浏览排行榜按用时浏览排行榜清空排行榜清空count文件图2游戏记录模块功能图(3)帮助模块该模块主要实现常规的管理功能,如投票人的初始化,即创建投票人文件、投票人信息的增加、删除、修改和查询等。该模块主要用结构体类型的数组和文件的读写来完成对大量数据的管理操作,其功能图如图3所示。帮助游戏规则游戏说明图3帮助模块功能图4.程序流程描述程序的主体处理流程如图8所示。7图4程序流程图5.界面设计应遵循简洁美观、方便使用的原则。(1)主菜单界面设计充分考虑界面易于操作的系统需求,其他的的功能调用采用类似于菜单的功能选择方式实现。用printf语句构造简单的文字界面,具体功能选择界面设计效果如图5所示。图5主菜单界面设计效果图(2)游戏区界面设计进入程序开始结束进入游戏赢得游戏Y输出排行榜刷新排行榜Y继续游戏NNNY重新游戏返回菜单YYNN按排名浏览排行榜清空排行榜按姓名浏览排行榜按用时浏览排行榜清空排行榜同时重置count文件排行榜count文件显示count文件信息重置count文件同时清空排行榜清空count文件帮助游戏规则游戏说明返回主菜单游戏记录退出程序8游戏区界面设计注重界面的简洁性,要求玩家在游戏时可在游戏提示下完成游戏,重新游戏,放弃游戏回到主菜单,游戏后刷新排行榜,浏览排行榜或继续游戏。具体设计效果如组图6所示。图6.1图6.2图6.3组图6游戏区界面设计效果图9(3)数据记录菜单界面与其他菜单界面设计充分考虑界面易于操作的系统需求,其他的的功能调用采用类似于菜单的功能选择方式实现。用printf语句构造简单的文字界面,具体菜单选择界面设计效果如图7~图12所示。图7数据记录菜单界面设计效果图图8排行榜菜单界面设计效果图图9重置排行榜菜单界面设计效果图图10count文件菜单界面设计效果图图11重置count文件菜单界面设计效果图10图12帮助菜单界面设计效果图(4)排行榜输出界面、显示count文件界面、游戏规矩和游戏说明的输出界面设计这些界面设计主要考虑玩家在浏览信息的清晰和易读性。以防数据输出的排版长度大于窗口的长度,在输出所有数据后使光标回到窗口的最上端,利于玩家从数据的起始端开始浏览数据。排行榜的输出中,将名次、用时、成绩(次数)和用玩家姓名列表显示。具体排行榜输出界面设计效果如图13~图15所示。图13按排名顺