69猜数游戏.doc_第1页
69猜数游戏.doc_第2页
69猜数游戏.doc_第3页
69猜数游戏.doc_第4页
69猜数游戏.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈 阳 航 空 工 业 学 院 课程设计学 号 200704033069班 级 7403302 姓 名 辛正行指导教师 王 晓 岩 2009 年 3 月 5日沈阳航空工业学院课程设计任务书院系:航空宇航工程学院 专业:飞行器设计与工程 班级:7403302学号: 200704033069 题目:猜数游戏 一、课程设计时间200809第2学期第1周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜中,给出所用时间及评语.三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“同学信息录入”、“同学信息查询(根据姓名,或编号等)”、“显示全部同学信息”、“退出”4项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语沈 阳 航 院 设 计 用 纸目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段6四、课设总结10五、参考文献11六、源程序1117一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个函数,它们的功能分别是:产生随机数函数,猜数函数,显示时间及评语函数,退出函数。在这些函数当中,我认为不一定要严格按照题目要求去编写因为那样的话,程序将会显得死板,功能性不强.举个例子来说,在调用随机数函数时,不便于控制产生随机数的个数,使游戏功能不强,设置全局变量又不方便.而且考虑到实际情况.人们多习惯于在进入游戏之后才会选择他所希望的游戏状态.因此我们可以将游戏模块化,再在游戏中将功能模块化,这样可以使游戏更加流畅自然,符合人的思维.而且可以将评语及时间写入文件,这样既可以在游戏玩完之后知道自己的成绩又可以在事后查询,而且操作是分开的,在不同的函数中,贯了模块化思想.程序也显得清晰.所以我并未严格按题目要求,但却是它的思想的延伸,实现了功能要求,贯彻了题目的初衷. 1、游戏1函数 主要实现显示游戏说明;产生玩家要求的若干个要猜的随机数;记录时间;按玩家要求显示成绩及评语,以及将成绩和评语写入文件.2、游戏2函数 主要实现随机的产生玩家要求的若干个要猜的随机数;记录时间,按玩家要求显示成绩及评语,以及将成绩和评语写入文件.思想与游戏1类似,但实现方式与难度以及游戏内容不同.3、显示时间及评语函数 通过调用文件实现查看记录时间及评语;4、退出函数 在玩者想要退出时退出;为了增加程序的灵活性,可以将猜数的个数加以控制,以满足不同人的喜好.因此选择在进入游戏后由玩者输入猜数的个数.而且可以将时间及评语防到文件中,以便以后查看。二、程序流程图1、程序总体结构图图1程序总体结构图2、具体功能框图图1显示历史记录时间和评语函数(2)显示历史记录时间和评语函数图2 游戏2函数游戏2函数 图解 图3游戏1函数 游戏1函数 图解 三、核心技术的实现说明及相应程序段本程序主要由七个自定义函数和一个主函数组成,其中主函数以菜单的形式调用若干函数来实现部分要求的功能。在这些函数当中,产生随机数函数、时间函数和存取函数是程序中较为核心的部分,下面分别进行说明。1、产生随机数函数 产生随机数函数是在玩家进入游戏后产生的,具体的操作步骤如下:int chans()int sjs; sjs=rand()%20;return sjs; printf(请输入你想猜的数字个数n); scanf(%d,&N); time_t start,end; start=time(NULL); 记时开始 for(i=0;iN;i+) 循环并N次调用时间函数 sjs=chans();在玩家输入要猜数的个数N后,系统会调用上面函数N次.2、时间函数该函数的核心内容是确定应该在合适的时间开始记录并在玩家猜中最后一个数后停止记时.而记录时间最好是在游戏中进行,所以我们不妨将记录的时间及评语放在一个文件夹中,在玩家想要再一次查看成绩及评语时,再一次调用文件.而只在游戏函数结束时提示玩家是否想知道自己所用的时间间及评语。具体程序段如下:void cund4()FILE *fp3; fp3=fopen(chengj1.txt,r); if(fp3=NULL) printf(文件打不开.n); while(!feof(fp3)putchar(getc(fp3);printf(nnn); fclose(fp3); return;time_t start,end; start=time(NULL); for(i=0;icds)printf(你猜的数小了.);if(sjscds)printf(你猜的数大了.); /结束猜数end=time(NULL); ys=difftime(end,start); /将用时等相关信息存档cund1(ys);/调用存档函数 printf(你是否想知道用时和评语?n是,请输入3,按Enter.n); scanf(%d,&cds); if(cds=3) printf(用时 %6.2f 秒n,ys);/评语if(ys=30)printf(太棒了!n);elseprintf(继续努力哦.n);3、存取函数存取是这个程序的最主要部分,在本程序主要是体现在读取游戏说明以及写入游戏用时及评价.具体的程序段如下:void cund4()FILE *fp3; fp3=fopen(chengj1.txt,r); if(fp3=NULL) printf(文件打不开.n); while(!feof(fp3)putchar(getc(fp3);printf(nnn); fclose(fp3); return;void cund5()FILE *fp4; fp4=fopen(chengj2.txt,r); if(fp4=NULL) printf(文件打不开.n); while(!feof(fp4)putchar(getc(fp4);printf(nnn); fclose(fp4); return;/游戏1信息存档函数void cund1(double ys)FILE *fp3; fp3=fopen(chengj1.txt,a);fputs(n游戏1用时:n,fp3);fprintf(fp3,%6.2f,ys);if(ys=30)fputs(n评语: 太棒了!,fp3);elsefputs(n评语: 继续努力哦.n,fp3);fclose(fp3);/游戏2信息存档函数void cund2(double ys)FILE *fp4; fp4=fopen(chengj2.txt,a); fputs(n游戏2用时:n,fp4);fprintf(fp4,%6.2f,ys); if(ys=300)fputs(n评语: 太棒了!,fp4);elsefputs(n评语: 继续努力哦.n,fp4);fclose(fp4);四、课设总结在这次课程设计学习中,我不仅仅是收获了知识,更深深体会到同学之间互相帮助的真挚情谊,体会到了集体的温暖与力量以及老师对我殷切的关怀.我下定决心,一定要把程序完成好.在同学和老师的帮助下,我编写的程序顺利的达到了题目的要求,并在题目的基础之上进行了一定的改进,使程序更完善,更灵活,游戏的内容也更加丰富.但是程序之中还是有不足的地方,比如说,在我的程序中产生随机数的环节.若多次进入程序,每次产生的随机数相同的概率比较大.还有就是程序的过程化特点比较鲜明,操控灵活性还不够好.五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include#include #include #include #includeint chans()int sjs; sjs=rand()%20;return sjs;/菜单函数void menu()printf( 欢迎进入精彩猜字游戏!n);printf( 1:简单游戏输入1,按Enter;n);printf( 2:困难游戏输入2,按Enter;n);printf( 3:显示记录的上次游戏1成绩,输入3,按Enter;n);printf( 4:显示记录的上次游戏2成绩,输入4,按Enter;n);printf( 5:退出游戏输入66,按Enter.n);/存档文件函数void cund4()FILE *fp3; fp3=fopen(chengj1.txt,r); if(fp3=NULL) printf(文件打不开.n); while(!feof(fp3)putchar(getc(fp3);printf(nnn); fclose(fp3); return;void cund5()FILE *fp4; fp4=fopen(chengj2.txt,r); if(fp4=NULL) printf(文件打不开.n); while(!feof(fp4)putchar(getc(fp4);printf(nnn); fclose(fp4); return;/游戏1信息存档函数void cund1(double ys)FILE *fp3; fp3=fopen(chengj1.txt,a);fputs(n游戏1用时:n,fp3);fprintf(fp3,%6.2f,ys);if(ys=30)fputs(n评语: 太棒了!,fp3);elsefputs(n评语: 继续努力哦.n,fp3);fclose(fp3);/游戏2信息存档函数void cund2(double ys)FILE *fp4; fp4=fopen(chengj2.txt,a); fputs(n游戏2用时:n,fp4);fprintf(fp4,%6.2f,ys); if(ys=300)fputs(n评语: 太棒了!,fp4);elsefputs(n评语: 继续努力哦.n,fp4);fclose(fp4);/游戏1void fun1() void fun2();int sjs,cds,i,a,dd=0,sum=0,N; double ys; printf( 是否要看游戏说明?n 是,输入 5;n 不是,输入 6;n 换游戏,输入 7,按Enter.n); /游戏1说明 scanf(%d,&a); if(a=5) /游戏1说明 FILE *fp1; fp1=fopen(shuom1.txt,r); if(fp1=NULL) printf(文件打不开.n); while(!feof(fp1)putchar(getc(fp1);printf(nnn); fclose(fp1); else if(a=7)fun1(); else if(a=66)return; /说明结束 printf(请输入你想猜的数字个数n); scanf(%d,&N); printf(系统自检请稍等.n); time_t start,end; start=time(NULL); for(i=0;icds)printf(你猜的数小了.);if(sjscds)printf(你猜的数大了.); /结束猜数end=time(NULL); ys=difftime(end,start); /将用时等相关信息存档cund1(ys);/调用存档函数 printf(你是否想知道用时和评语?n是,请输入3,按Enter.n); scanf(%d,&cds); if(cds=3) printf(用时 %6.2f 秒n,ys);/评语if(ys=30)printf(太棒了!n);elseprintf(继续努力哦.n);/游戏2void fun2()int sjs10,cds10,i,a,dd=0,j,sum=0,N; double ys; printf( 是否要看游戏说明?n 是,输入 5;n 不是,输入 6;n 换游戏,输入 7,按Enter.n); scanf(%d,&a); if(a=5) /游戏2说明 FILE *fp1; fp1=fopen(shuom2.txt,r); if(fp1=NULL) printf(文件打不开.n); while(!feof(fp1)putchar(getc(fp1);printf(nnn); fclose(fp1); else if(a=7)fun1(); else if(a=66)return;/说明结束 /产生随机数 printf(请输入你想猜的数字个数n); scanf(%d,&N); printf(系统自检请稍等.n);for(i=0;iN;i+)sjsi=chans();/调用产生随机数函数for(j=0;j200000000;j+) a=9; /通过比较得出猜中数字的个数printf(请输入%d个0-20间的数字,用空格格开.按Enter键.n如果想退出,输入66,按Enter.n,N);srand(unsigned)time(NULL); time_t start,end; start=time(NULL);while(1)dd=0;sum=0;for(i=0;iN;i+)scan

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论