小旺小旺.docx
《小旺小旺.docx》由会员分享,可在线阅读,更多相关《小旺小旺.docx(21页珍藏版)》请在冰豆网上搜索。
![小旺小旺.docx](https://file1.bdocx.com/fileroot1/2023-2/21/fa1746f6-4efc-47dd-9d04-c275d2713bcc/fa1746f6-4efc-47dd-9d04-c275d2713bcc1.gif)
小旺小旺
课程设计报告
课程名称《C语言程序设计》
课题名称猜数字游戏
专业信息管理与信息系统
班级1002
学号201003110227
姓名林波
指导教师赵锦元、李峰、罗敬
2011年6月22日
湖南工程学院
课程设计任务书
课程名称《C语言程序设计》
课题猜数字游戏
专业班级信息管理与信息系统
学生姓名林波
学号201003110227
指导老师赵锦元、李峰、罗敬
审批
任务书下达日期2011年6月4日
任务完成日期2011年6月22日
一、设计内容与设计要求
1.课程设计目的:
全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为后继课程(数据结构和数据库等课程)的实验以及课程设计打下较扎实的基础。
2.课题题目
⑴班级成绩管理系统
⑵班级档案管理系统
⑶飞机订票系统
⑷猜数字游戏
⑸电子英汉词典设计
⑹通讯录管理系统
3.设计要求:
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的案例处理经验。
具体要求如下:
1设计课题题目:
每位同学根据自己学号除以6所得的余数加一选择相应题号的课题。
原则上不予换提,私自换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:
①完成系统需求分析:
包括系统设计目的与意义;系统功能需求;输入输出的要求。
②完成系统概要设计:
程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
③完成系统详细设计:
包括采用C语言定义相关的数据类型;写出各模块的类C码算法;画出函数的调用关系图。
④调试分析、设计体会、测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。
⑤关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排
第17周星期一8时:
00分——11时:
30分
星期二8时:
00分——11时:
30分
星期四8时:
00分——11时:
30分
星期五8时:
00分——11时:
30分
第18周星期一8时:
00分——11时:
30分
第18周星期二14时:
30分——18时:
00分
目录
1.系统需求分析1
1.1问题描述1
1.2功能要求1
2.概要设计2
2.1系统总体设计2
2.2.各模块的功能3
3.详细设计3
3.1采用C语言定义相关的数据类型3
3.2函数之间的调用图…..........................................................................................................4
3.3函数之间的结构流程…………………………………………………………………….5
4.运行结果7
4.1输入界面7
4.2求值界面7
4.3退出程序9
4.4程序调试中的问题9
4.5课程设计过程经验教训…………………………………………………………………..10
5.心得体会………………………………………………………………………...10
6.附录11
6.1源代码11
6.2参考文献16
7.评分表17
1.系统需求分析
猜数字游戏是一个运行在Windows平台下的小型游戏软件,依据猜数字游戏的基本规则,给用户进行成绩排行,在排行榜中排出前五名玩家的游戏记录,并可以随着玩家的游戏记录进行更新.
1.1问题描述
该软件在Windows系统上为玩家提供猜数字游戏的基本功能,游戏用户可以选择开始游、排行榜查看、帮助等主要功能。
当用户选择开始游戏时,系统会提示用户排行榜上猜数字成绩的最好记录,并让用户逐次猜数字,用户每次猜数字后系统会给出本次猜数字的结果提示,如位置和数字都正确的数字个数、数字正确介位置不正确的数字个数。
如果用户猜数字的次数超过8次,则提示用户游戏失败,如果在8次之内猜出4个数字和正确的顺序,则提示用户猜数字成功,并到排行榜中进行比较,如果排名在前一名,则计入排行榜中,以便其他用户查看。
在排行榜查看功能中,用户可以查看当前的游戏排行,排行榜中总共显示5名玩家的排行,如有新的记录产生,则插入到排行榜中,并把排行榜中位次最末的记录挤出排行榜。
在帮助模块,用户可以查看游戏规则,当熟悉规则后可以退出帮助模块。
1.2功能要求
猜数字游戏软件的总体目标是按照特定游戏规则为用户提供一个方便友好的游戏界面,同时给用户提供排行榜的功能使用户能够按照特定的目标提高自己的成绩,并且提供相应的帮助功能。
游戏规则如下。
①游戏软件随机产生或有一名用户输入4个数字,但不显示,给玩家提供输入提示符,让玩家猜4个数字的值和位置顺序。
如果数字值和位置顺序均正确,则猜数字成功。
②玩家有8次猜数字的机会,如果在8次之内仍末猜出正确的数字值和数字位置顺序,则提示用户游戏失败。
一旦玩家在8次的次数限制内猜出正确的数字值和位置顺序,则赢得游戏。
游戏区:
玩家可以在游戏区逐次猜数字,系统给出玩家每次猜数字后的提示,包括数值、位置均正确的数字个数和数值正确但位置不正确的数字个数。
破纪录功能:
玩家可以在打破前五名记录后留下姓名和记录次数。
帮助:
玩家通过帮助功能了解游戏规则和排行榜设置规则。
退出:
玩家想结束并退出游戏系统。
2概要设计
2.1系统总体设计
图2.1
2.2各模块的功能
main函数:
由menu函数,action1函数,action2函数组成。
完成了游戏的运行,退出,以及进入主菜单的功能。
Menu:
显示主菜单,包括进入游戏,游戏规则,退出游戏等部分,当游戏者选择其中一个的时候,程序将运行此部分。
Action1函数:
由游戏者选择游戏方式,然后进入不同的游戏,其中包括随机模式和输入模式。
随机模式是由程序产生随机数,然后由游戏者输入所猜的数字。
输入模式是由游戏者事先输入所要猜的数字,然后再猜。
Action3函数:
显示游戏规则,并返回主菜单。
3详细设计
3.1相关数据类型
#include
#include
#include
voidaction1()
voidmenu();
intq;
intd[4];
inti,j,m,n;
inta[4],b,t,c;
3.2函数之间的调用关系图
图3.1
3.3函数之间的结构流程图.
图3.2
4运行结果
4.1输入界面
图4.1
主菜单有3个选项,说明游戏的主体部分。
4.2求值界面
图4.2
图4.3
图4.4
游戏正常运行时玩家按游戏规则进行的游戏
4.3退出程序
图4.5
游戏再结束时,程序给出了人性化设计,按任意键继续游戏
4.4程序调试中的问题
图4.6
在用户输入数字的时候程序无法判断输入的数字的位数,进而不能得到正确的答案,如图4.6中当输入一个三位数的时候,程序不能判断其输入错误而无法提示。
4.5课程设计过程经验教训
程序设计还是要实践,正所谓实践是检验真理的标准,课程设计中我觉得我还是很多基础知识没掌握,还是要把基础打牢,而且我还是写程序丢三落四,没有科学严谨的态度,写程序的方法有很多种,我觉得把所学知识串起来来写程序是很好的。
5心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在谢老师的辛勤指导下,终于游逆而解。
同时,在李老师的身上我学得到很多实用的知识,在次我表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
6附录
6.1源代码
#include
#include
#include
intmain()
{
voidmenu();
menu();
return0;
}
voidaction1()
{
voidmenu();
intq;
intd[4];
inti,j,m,n;
inta[4],b,t,c;
printf("1.随机模式\n2.输入模式\n");
printf("请输入你的选择:
");
scanf("%d",&t);
if(t==1)
{
do
{
printf("欢迎进入猜数字游戏随机模式。
准备好了吗?
GO!
\n");
system("pause");
system("cls");
srand((unsigned)time(NULL));
for(i=0;i<4;i++)
{
a[i]=rand()%10;
}
}while(a[0]==a[1]||a[0]==a[2]||a[0]==a[3]||a[1]==a[2]||a[1]==a[3]||a[2]==a[3]);
}
else
{
printf("请输入一个四位数:
");
do
{
scanf("%d",&c);
a[0]=c/1000;
a[1]=c/100-a[0]*10;
a[2]=c/10-a[0]*100-a[1]*10;
a[3]=c%10;
if(a[0]==a[1]||a[0]==a[2]||a[0]==a[3]||a[1]==a[2]||a[1]==a[3]||a[2]==a[3])
printf("你输入的数字错误,请重新输入:
\n\n");
}while(a[0]==a[1]||a[0]==a[2]||a[0]==a[3]||a[1]==a[2]||a[1]==a[3]||a[2]==a[3]);
}
system("cls");
for(q=0;(q<8)&&(m!
=4);q++)
{
do
{
printf("请输入你所猜的一个数字不重复的四位数:
");
scanf("%d",&b);
d[0]=b/1000;
d[1]=b/100-d[0]*10;
d[2]=b/10-d[0]*100-d[1]*10;
d[3]=b%10;
if(d[0]==d[1]||d[0]==d[2]||d[0]==d[3]||d[1]==d[2]||d[1]==d[3]||d[2]==d[3])
printf("你输入的数字错误,请重新输入:
\n\n");
}while(d[0]==d[1]||d[0]==d[2]||d[0]==d[3]||d[1]==d[2]||d[1]==d[3]||d[2]==d[3]);
m=0;
n=0;
for(i=0;i<4;i++)
{
if(a[i]==d[i])
m=m+1;
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
if(a[i]==d[j])
n=n+1;
}
n=n-m;
if(m==4)
printf("你真是太棒了!
!
\n");
else
{
printf("对不起,你没有猜对,你的成绩是:
");
printf("%dA%dB\n",m,n);
}
}
if(q==8)
printf("你失败了\n");
printf("正确答案是:
");
printf("%d%d%d%d",a[0],a[1],a[2],a[3]);
system("pause");
system("cls");
system("pause");
menu();
}
voidaction2()
{
voidmenu();
printf("游戏规则:
从键盘上输入一个不重复数字的四位数,每次游戏将有八次机会,若输入的数字与所给的数字相同,则胜利。
\n");
printf("按任意键返回菜单");
system("pause");
system("cls");
menu();
}
voidmenu()
{intk;
printf("菜单\n");
printf("1.进入游戏\n");
printf("2.游戏规则\n");
printf("3.退出游戏\n");
printf("你的选择是:
");
do
{
scanf("%d",&k);
system("cls");
switch(k)
{
case1:
action1();break;
case2:
action2();break;
case3:
printf("**********游戏结束********");
}
if(k>3)
printf("系统不能识别,请再次输入:
");
}while(k>3);
}
6.2参考文献:
《c语言程序设计(第三版)》谭浩强清华大学出版社
《c语言程序设计》蒋清明人民邮电出版社
7评分表
计算机与通信学院课程设计评分表
课程名称:
C语言程序设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
3、、