您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 猜数字游戏C语言课程设计
《C程序设计》课程设计报告(2014—2015学年第2学期)题目:猜数字游戏学院:机械工程学院班级:机械1310班学号:1303090190姓名:杨晨指导教师:罗涛华时间:起2015年5月25日止2015年5月31日·1·一、课程设计基本信息课程代码:05190124课程名称:计算机基础课程设计课程英文名称:Computer-basedCourseDesign课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群课程面向专业:食品科学与工程学院、机械工程学院、电气与电子工程学院、土建学院、动物科学与营养工程学院、化学与环境工程学院、工商管理类、国际经济与贸易、旅游管理、金融学、行政管理、汉语言文学、英语、护理学、康复治疗专业、生物科学类、制药工程、制药工程(生物制药)、药物制剂、物流管理课程类型:必修课先修课程:大学计算机基础通识选修课程、程序设计课程学分:1总学时:1周二、课程设计目标掌握所学语言程序设计的方法,熟悉所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能:1.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。3.系统设计编程简练,可用,功能全面,并有一定的容错能力。用户界面良好,有较好的输出功能。在完成课题基本要求后,具有创新型设计,具有一定的实用价值。4.根据个人的设计调试过程,撰写设计报告。三、课程设计内容熟练掌握所学语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。四、课程设计要求1.要求每个同学都要认真对待,积极参与。2.课程设计结束时,提交完成的所有源程序、相关文件和可执行文件。同时填写并完成《课程设计报告册》。3.不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设计中完全未参与的将作不及格处理。·2·五、考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,百分制计算,具体考核标准主要包含以下几个部分:1.程序运行情况20分2.程序功能的完善程度10分3.程序结构的合理性10分4.对问题的答辩情况20分5.创新情况10分6.学生的工作态度与独立工作能力10分7.设计报告内容的规范性20分备注:1.按规定时间填写各阶段文档,学习态度加5分2.设计报告内容雷同扣40分,无调试过程问题分析扣10分,无参考文献扣10分3.源程序无注释则在程序结构合理性扣10分六、课程设计主要参考资料1.谭浩强著.C程序设计(第3版).北京:清华大学出版社,2005.72.刘光蓉、汪靖、陆登波主编.C程序设计实验与实践教程.北京:清华大学出版社,2011.23.游洪跃主编.C语言程序设计实验与课程设计教程.北京:清华大学出版社,2011.54.(美)PerterVanDerLinden著,徐波译.C专家编程(C编程语言经典之作).北京:人民邮电出版社,2008.25.凯尼格著,高巍译.C陷阱与缺陷.北京:人民邮电出版社,2008.26.MarkdeBerg等著,邓俊辉译,《计算几何-算法与应用(第3版)》,清华大学出版社,2009年8月7.杨克昌编著,《计算机程序设计典型例题精解》,国防科技大学大学出版社,1999年3月七、课程设计计划安排时间任务课程设计前一周选择课程设计题目,分析课题的要求,确定设计方案,完成报告册中“课程设计概述”课程设计第1天按功能模块编写详细设计说明,完成报告册中“总体设计”课程设计第2天编写程序、调试程序课程设计第3天编写程序、调试程序,完成报告册中“详细设计”课程设计第4天调试程序,完成报告册中“调试分析过程”课程设计第5天完成报告册中“总结”、“参考文献”、“课程设计评审表”部分内容,提交课程设计报告、源程序、面试或答辩·3·一、课程设计概述课程设计问题描述计算机随机生成一个各位数字不重复的四位数,系统根据玩家输入的数字给出提示信息:A--表示位置与数字均正确的个数;B--表示数字正确但位置不正确的个数。玩家根据提示调整输入,如果玩家输入超过八次仍不成功,游戏自动结束。设计要求1.主函数实现正整数的随机产生,主菜单的显示(图18.1)2.编写一函数实现帮助信息的输出(图18.2)3.编写一函数控制比较的次数和信息的输出。当玩家输入次数不超过8时,每次将玩家输入的数字和随机数依次进行比较,如果匹配,则输出“YouWin!”,否则输出提示信息。设计目的掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。·4·开发环境操作系统:Windows7软件环境:MicrosoftVisualC++6.0二、总体设计(1)·5·系统功能需求分析猜数字游戏软件的总体目标是按照特定游戏规则为用户提供一个方便友好的游戏界面,同时给用户提供排行榜的功能使用户能够按照特定的目标提高自己的成绩,并且提供相应的帮助功能。游戏规则如下。①游戏软件随机产生4个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的值和位置顺序。如果数字值和位置顺序均正确,则猜数字成功。②玩家有8次猜数字的机会,如果在8次之内仍末猜出正确的数字值和数字位置顺序,则提示用户游戏失败。③一旦玩家在8次的次数限制内猜出正确的数字值和位置顺序,则赢得游戏。本游戏软件需要实现以下一些基本功能。①游戏区:玩家可以在游戏区逐次猜数字,系统给出玩家每次猜数字后的提示,包括数值、位置均正确的数字个数和数值正确但位置不正确的数字个数。②帮助:玩家通过帮助功能了解游戏规则。③退出:玩家想结束并退出游戏系统。二、总体设计(2)·6·系统总体设计框架三、详细设计(1)·7·主要功能模块的算法设计C编译器提供了基于ANSI标准的伪随机数发生器函数rand()和srand(),用来生成随机数。这二个函数的工作过程如下:srand()提供一个种子,它是一个unsignedint类型,其取值范围从0~65535;然后调用srand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间);根据需要多次调用srand(),从而不间断地得到新的随机数;无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”srand()的输出结果。三、详细设计(1)·8·主要功能模块源程序#includestdlib.h#includestdio.h#includetime.hvoidmain(void){voidhelp();//函数声明voidcompare(inta[]);//函数声明inti,k=0,a[4],b;srand((unsigned)time(NULL));while(1){for(i=0;i4;i++){a[i]=rand()%10;}if(a[0]!=0)break;}·9·三、详细设计(2)主要功能模块的算法设计1.输出游戏菜单2.输出游戏规则3.比较用户输入数据与系统随机数,并产生提示信息4.玩家从键盘输入数据5.比较对应位置上的数6.输出游戏结果·10·三、详细设计(2)主要功能模块源程序printf(猜数字游戏:\n);printf(***************************\n);printf(1.新游戏\n);printf(2.帮助\n);printf(3.退出\n);printf(***************************\n);printf(\n请输入选择:\n);scanf(%d,&b);while(b!=3){switch(b){case1:compare(a);break;case2:help();break;default:printf(error!);}scanf(%d,&b);}}voidhelp()//游戏规则说明函数{printf(该游戏由程序随机生成四个0到9的数字\n游戏者有八次机会来根据系统提示猜测数字\n);printf(\nA--表示位置与数字均正确的个数\nB--表示数字正确但位置不正确的个数\n);}voidcompare(inta[])//比较用户输入数据与系统随机数,并产生提示信息{intb[4],i,j,k=1,A=0,B=0,N=8,x;printf(请输入猜测的四位数:\n);while(A!=4&&k=N){A=0;B=0;scanf(%d,&x);//玩家从键盘输入的数据while(x999||x10000){printf(输入不合法!\n);·11·scanf(%d,&x);}for(i=3;i=0;i--){b[i]=x%10;x=x/10;}for(i=0;i4;i++)//比较对应位置上的数if(a[i]==b[i])A++;for(i=0;i4;i++)for(j=0;j4;j++)if(a[i]==b[j]&&i!=j)B++;printf(%dA%dB\n,A,B);if(A==4)printf(YouWin!\n);k++;}if(A!=4&&k8)printf(游戏失败!\n);}四、调试分析过程(1)·12·调试过程出现的问题及解决方法刚开始执行输入函数,按数字顺序输入,输完后执行显示功能,数字、字母的位置显示不对,试着在其中增加一些语句,希望能把所需结果按正常顺序显示,但暂时没有成功,最后在老师的帮助下,所需结果能按正常顺序输出了。在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计的过程中,给出猜数字游戏的模块结构、流程描述以及界面布局,并使得系统的总体设计符合软件工程中总体设计的基本原则。开发与设计的总体思想:猜数字游戏是一种大众娱乐游戏,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每次进行猜数字操作之后的游戏提示,这两方面的规则设计往往决定了软件运行的正确性和质量。同时,要谨记调试失败的原因,以免下次犯同类错误。四、调试分析过程(2)·13·测试数据及测试结果游戏初始画面进入系统选择1进行游戏,随机输入4个不同的数字输入3个不同的数则会提示输入有误·14·选择2系统帮助界面五、总结·15·设计用到的知识点C编译器提供了基于ANSI标准的伪随机数发生器函数rand()和srand(),用来生成随机数。这二个函数的工作过程如下:srand()提供一个种子,它是一个unsignedint类型,其取值范围从0~65535;然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间);根据需要多次调用rand(),从而不间断地得到新的随机数;无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。收获与体会在进行课程设计之前几天,不知从何入手,一脸茫然。为什么呢?因为我们想自己自己做出来而不参考任何资料,以为这样才可体现我们的智慧和能力,其实这是大错特错的。当然也不是一味强调自己动脑自己做出来不好,从开发方面角度来说是可以的,有些东西也并不是一味的照搬照抄。抱着这样的态度迷茫了三四天只想出了一丁点大至结构。最后决定上网找资料,不查不知道,一查大吃一惊,不但自己的想法网上比比皆是,比自己的想法更完美更合理的多得看都看不完。此时真是自愧不如,如早从网上借鉴,集大家之所成,加上自己的修改完善,早已做出了更好的系统结结构和想法了。现在才知道,一个人的智慧敌不过千万人智慧的集成,能借鉴的尽量借鉴,然后再修改完善,增加
本文标题:猜数字游戏C语言课程设计
链接地址:https://www.777doc.com/doc-3014984 .html