C语言课程设计--猜数字游戏 王颖必过版
桂林七日游-十七日观潮
课 程 设 计 报 告
课程名称 C语言程序设计
课题名称 猜 数
字 游 戏
专 业 机械设计及其自造化
班 级 1185班
学 号
2
姓 名
指导教师 王 颖
2 0 1 2年 6 月 2 2 日
湖南工程学院
课 程 设 计 任 务 书
课程名称
C语言程序设计
课 题
猜 数 字 游 戏
专业班级 机 械 设 计 1185 班
学生姓名
学 号
2
指导老师
王 颖
审 批
王 颖
任务书下达日期 2012 年 6 月 1
日
任务完成日期 2012 年 6 月 22 日
设计课题四:猜数字游戏
一、问题描述:
该
游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不
重复。玩游戏者通过游戏提示输入八
次来匹配上面所输入的数字。A表示位
置正确且数字正确,B表示数字正确而位置不正确。
二、功能要求:
1、本游戏显示这样的菜单:
(1) 随机产生数据
(2) 用户输入数据
(3) 退出游戏
2、游戏成功与否都能返回主菜单
三、算法提示:
1、数据结构:数组
2、用简单的程序设计方法
四、测试数据:
测试数据: 3792
第一次输入:
1234
0A2B
第二次输入: 5678
0A1B
第三次输入: 0867
0A1B
第四次输入: 9786
1A1B
第五次输入:
1794
2A0B
第六次输入: 2793
2A2B
第七次输入: 3792
4A0B
游戏过关!!!
五、其它:
对该系统有兴趣的同学可以在实现系统基本
功能后,完善系统的其它功
能,如:破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。
目录
第一章 绪论
.......................................
1
第一节 项目背景......................................
..................................................
........... 1
第二节 本课题所做的工作....................
..................................................
............. 2
第二章 需求分析
第一节
用户需求分析…………………………………………………………...3
第二节
开发环境分析…………………………………………………………...4
第三章 程序设计
....................................
5
第一节 程序的功能.....................................
..................................................
........ 5
第二节 输入输出的要求........................
..................................................
............. 5
第三节 程序模块......................
..................................................
........................... 6
第一条 模块组成........
..................................................
.................................. 6
第二条 层次结构.
..................................................
......................................... 8
第三条 模块调用......................................
..................................................
.... 9
第四章 分析
......................................
10
第一节 模块解释与功能...................................
.................................................
10
第五章 调试 ....................................
14
第一节 菜单测试...........................
..................................................
.................... 14
第二节 游戏测试..............
..................................................
................................. 16
第一条 在自定义中
..................................................
.................................... 16
第二条 在随
机游戏中..............................................
.................................... 19
第六章 总结
......................................
21
第七章 附录 ......................................
23
第一节 附录A 源程序 ......................
..................................................
............. 23
第二节 附录B 参考文献 ...............
..................................................
................ 32
课程设计评分表...................
........................
.33
湖南工程学院
第一章 绪论
第一节 项目背景
<
br>C语言一共有32个关键字,9种控制语句,程序书写形式自由,主要用小写
字母表示。它把高级
语言的基本结构和语句与低级语言的实用性结合起来。
C
语言可以像汇编语言一样对
位、字节、和地址进行操作,而这三者是计算机最基
本的工作单元。并且它功能丰富,表达能力强,程序
执行效率高,可移植性好;
C语言既有高级计算机程序设计语言的特点,同时又具有部分汇编语言的特点
,
因而C语言具有较强的系统处理能力。通过C语言函数结构可以方便的实现程
序的模块化;在
C语言的基础上发展起来的面向对象程序设计语言如C++,
java,c#等于C语言有许多的共同特
征,掌握C语言对学习进而应用这些面向对
象的程序设计语言有极大的帮助。因为其独特的语言机制在计
算机科学领域中得
到了广泛的应用。目前,大部分工科专业的计算机程序语言都是C语言,主要
学习面向过程的程序设计方法。
课程设计是培养学生综合运用所学知识,发现,提出,
分析和解决实际问题,锻炼
实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科
学技
术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为
二十一世纪
的大学来说掌握计算机开发技术十分重要的。而C语言课程设计是
综合性比较强的一门设计课程,它考察
了学生对C语言的掌握及运用情况。有
助于提高学生的分析,理解及动手实践能力。是计算机的基础课程
。本题目运用
了结构体变量的定义及初始化,for,do-while循环,if,switch-
case语句,文件打
开,文件保存及其复合使用。
1
湖南工程学院
第二节 本课题所做的工作
本课题设计一个猜数字游戏,用户根据自己的爱好与兴趣进行随机游戏与自
定义游戏,如果用户想自定
义一个数字来猜,可以由用户自己进行输入,如果想
挑战高难度,用户可以猜测由电脑产生的一个随机数
,具体工作有:系统自动产
生一个随机数或用户自己定义一个随机数,制作游戏主菜单,制作游戏继续菜
单,
设计游戏程序,设计友好的界面提示与帮助。
本课程设计分为六个章节,每个章节
为课题展开,重程序的需求分析,程序
总体设计,程序设计等逐步向老师介绍,说明本课题。还提供了源
程序供老师参
考。
课程设计的任务:
根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。
(1)掌握Java的语言规范,面向对象的核心概念和特性;
(2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程
序等;
(3)掌握Java应用软件的开发环境和开发过程;
(4)掌握面向对象的思想和程序设计方法。
关键词
:
猜数字游戏,JAVA编程,课程设计
2
湖南工程学院
第二章 需求分析
本程
序为猜数字游戏,用户可以根据自己的爱好与兴趣进行随机游戏与自定
义游戏,如果用户想自定义一个数
字来猜,可以由用户自己进行输入,如果想挑
战高难度,用户可以猜测由电脑产生的一个随机数;
每个游戏者都想在自己游戏结束时看到自己的得分情况,因此需要对游戏结
果进行打分;
游戏
者在游戏时,可能想到在任意时候都可以退出游戏,因此,无论游戏进
行到任何阶段,都能够返回到主菜
单或退出游戏;
在退出游戏之前,如果游戏者要再次进行挑战,应该设置一个提示游戏继续
提示模块;
为了能够更好的迎合游戏者,界面设置要和谐,要能给用户有足够的提示,
因此,系统
菜单应该包括游戏开始,游戏退出,游戏说明,显示分数四个部分。
第一节 用户需求分析
猜数字(又称 Bulls and Cows
)是一种大概于20世纪中期兴起于英国的
益智类小游戏。一般由两个人玩,也可以由一个人和电脑玩,
在纸上、在网上都
可以玩。这种游戏规则简单,但可以考验人的严谨和耐心。 通常由两个人玩,
一方出数字,一方猜。出数字的人要想好一个没有重复数字的4位数,不能让猜
的人知道。猜的人就可
以开始猜。每猜一个数字,出数者就要根据这个数字给出
几A几B,其中A前面的数字表示位置正确的数
的个数,而B前的数字表示数
字正确而位置不对数的个数。
比如说最后正确答案为5234,而猜的人猜 5346,
则是
1A2B,其中一个5的位置对了,记为1A,而3和4这两个数字对了,而
位置没对,因此记为
2B,合起来就是 1A2B。接着猜的人再根据出题者的几A
几B继续猜,直到猜中(即
4A0B)为止。
设计一个猜数字游戏程序,要求具体如下特性: (1)
趣味性:要求游戏
内容丰富多彩,语言风趣幽默。 (2)
大众性:要求游戏界面操作简单,游戏
规则简单易懂。 (3)
合理性:游戏设计严谨,有条理,具体需求如下 ① 输
入任意一个数字。数字的要求是 1—100
的自然数即可。 ② 系统对您输入的数
字进行判断。
如果玩家输入的数字与计算机随机生成数相比较,输入的数字比
随机生成数
小.系统将提示您,数字太小请您重新输入。 如果玩家输入的数字
3
湖南工程学院
与计算机随机生成数相比较,如果输入的数字比随机生
成数大。系统将提示您,
数字太大请您重新输入。
如果玩家输入的字符不是合法字符,系统将提示您,
您输入的数字不合法, 请从新输入。 ③
游戏开始时,系统自动记录您猜数字
的时间,结束后显示游戏共花费的时间。 ④
每猜测一次,系统会记录下来,游
戏结束后,显示共猜测多少次。 ⑤
在游戏开始时,自动显示游戏规则。 ⑥ 在
游戏结束时,可以选择关闭游戏,或者再来一局。
第二节 开发环境分析
硬件要求能运行 Windows 9.X 操作系统的微机系统。JAVA 程序设计
语言及相应的集
成开发环境,J2SDK 和 eclipse 开发工具。 J2SDK 简介:
j2sdk
是就阿 Java 的开发环境包。 它包含 JDK(开发工具包)和 JRE(运 行时环
境包)
。JDK 包含 JRE ,JDK 是开发人员必装软件,JRE 是客户端运行时必
装 软件
,J2SDK 就是 JDK,J2JRE 就是 JRE。Jcreator 是开发 JAVA
的软
件。开发 JAVA 也可以用记事本开发原程序 eclipse 简介:Eclipse
是一个开放
源代码的、基于Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一
组服务,用于通过插件组件构建开发环境。幸 运 的 是 ,
Eclipse 附 带 了 一
个 标 准 的 插 件 集 , 包 括 Java 开 发 工
具 ( Java Development Tools,
JDT) 。Eclipse
的设计思想是:一切皆为插件。它自身的核心是非
常小的,
其它所有的功能都以插件的形式附加到该核心上。Eclipse 中三个最吸引人的地
方:一是它创新性的图形 API,即 SWTJFace,在此之前,我曾经用过 Java 的
AWTSWING 来开发 Windows 应用程序,AWTSWING
其界面客观地讲不够
美观,而且界面响应速度比较 慢;而 SWTJFace 则大大改善了
Java 在这方面
的能力。二是它的插件机制。三是利用它的
插件机制开发的众多功能强大的功
能。
4
湖南工程学院
第三章 程序设计
第一节 程序的功能
该游戏环节有2个部分1是由程序随机产生,2是由
用户自定义四个0到9
之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数<
br>字。输入正确则为成功, 累计八次错误则游戏失败。游戏成功根据猜测次数给
出相应的得分!该
游戏还能自动判断你输入是否有误,如果输入有误,则自动弹
出程序界面,要求你选择并提示您正确的操
作。
第二节 输入输出的要求
按提示输入0-9之间的数字进行操作
①
输入 如:在菜单页面时
输入1进入游戏;
输入2退出游戏;
输入3进入游戏说明页面;
输入4看游戏得分榜。
① 输出 如:
在游戏成功时输出游戏得分,8次输入错误为挑
战失败!如果当输入的选项
出现错误时,则系统输出游戏提示“你输入有误,请确定后重新输入!”。
5
湖南工程学院
第三节 程序模块
第一条 模块组成
本程序分为七个模块,main()主模块,menu()菜单模块,startf()开始模
块,s
ave()存储模块,display()排行榜模块,,GZ()说明模块,TC()退出模
块。
随机数的产生模块
我们可以借助Java
API提供的Random类来产生一个随机数。
首先在main函数中加入以下代码:
Random random = new Random().
记录猜测次数模块
记录玩家猜测的次数
m = 0;
计数器增加一
m++;
首先定义了一个m量来记录玩家猜测的次数,并直接初始化为 0。在打印
一
行游戏提示以后,便开始一个do-while 语句。 在 do-while
语句中首先用异
常处理语句获取玩家的输入,如果玩家输入不合法,提 示以后用 continue
语句
从头重新执行循环语句,等待玩家的输入。从而变量一定包含一个合法的整数。
之后要对玩
家的输入进行判断。如果玩家的猜测太大或者太小,都做出提示。接
着把计数器增加
1,表示玩家做过一 次猜测。最后便是 do-while 语句的判断:
当玩家猜测的数字和随机产
生的答案不同,则再次进入循环,否则便结束循环,
执行下面的代码。
成绩判断模块
while(m<8);游戏区
{
if(m<8||cs==n)游戏得分情况
{
switch(m)
{
case 1: system(
6
湖南工程学院
printf(游戏过
关!!!n
case 2: system(
printf(游戏过
关!!!n
case 3: system(
printf(游戏过
关!!!n
case 4: system(
printf(游戏过
关!!!n
case 5: system(
printf(游戏过
关!!!n
case 6: system(
printf(游戏过
关!!!n
case 7:
system(
}
system(
system(
return TC();
}
else
printf(很遗憾游戏结束了,你可以选择继续重新开始
printf(游戏过
关!!!n
default:
}
system(
printf(一次通关 YOU ARE
Save(100);
DOOG!!!nttttscore:100ttttn
n判断胜利与否
7
湖南工程学院
}
异常处理模块
Java 语言提供了异
常(Exception)处理机制帮助程序员发现并处理异常。所
谓异常,就是在程序执行过程中能干
扰程序正常流程的事件。导致异常的原因很
多,比如文件找不到、数组越界、除以零等。当异常出现时,
一个异常对象将被
自动生成并传递给 Java“运 行时环境”(runtime
system),说得专业一点,就
是抛出一个异常。异常对象包含了异常
类型、程序运行状态等信息。“运行时
环境”得到异常对象后便打断程序的正常流程,自
动寻找一个专门处理该异常
的代码块来解决问题。这样的代码块称作异常句柄(Exception
Handler)。你可
以在异常句柄中尝试修复错误、重试或者报错,或者实在无法进行下去的
时候
来个自我了断。如果“运行时环境”找不到异常句柄,Java 程序便会自行中断。
一个典型的异常处理如下: try { statement(s); } catch
(exceptiontype1 name)
{ statement(s); } catch
(exceptiontype2 name) { statement(s); } finally
{ statement(s); } 其中: try 语句括起来的语句可能抛出异常。
语句至少要
搭配一个 catch 语句或 finally try 语句,不能单独使用。
第二条 层次结构
图表1.1
8
湖南工程学院
第三条 模块调用
开始
显示菜单
输入选项
= =1 = =4 = =3 = =2
执行开始函数
Startf( )
执行得分榜函
数defen()
执行说明函数
Delete( )
N
返回? 返回?
N
返回?
N
Y Y Y
退出
图表1.2
9
湖南工程学院
第四章
分析
第一条 模块解释与功能
main()--主模块,操作系统的开始与结束运行;
void
main()*主函数*
{
menu();调用菜单模块进行菜单选择
}
menu()--菜单模块,打印菜单选项给游戏者进行选择,进入相应的模块并执
行;
main()--主模块,操作系统的开始与结束运行;
void
main()*主函数*
{
menu();调用菜单模块进行菜单选择
}
menu()--菜单模块,打印菜单选项给游戏者进行选择,进入相应的模块并执
行;
scanf(
switch(k) *选择项*
{
case 1:
{
system(
startf(); 开始游戏
};break;
case 2:
{
system(
break;
};break;
10
湖南工程学院
case 3:
{
system(
return shuomingf();跳到说明
}
case
4:
{
system(
return guanyuf();跳到关于
}
default :
{
}
printf(您的输入有误,请重新输入!n
syste
m(
system(
return menu();返回主菜单
startf(
)--开始模块,猜数字游戏开始,游戏者按照自己的意愿来进行游戏,
系统对游戏的输入进行判断,真
正实现了系统与游戏者完美融合;
scanf(进行是否自定义选择
switch(f)
{
case
0:进行随机游戏
srand((int)time(0));*随机数据的产生*
n=1+(int)(10000.1*rand()(RAND_MAX+1.0));
break;
default:
printf(你输入有误,请重新输入!!
system(
case
1:printf(请输入你要自定义的数据n
}
11
scanf(
break;
湖南工程学院
Do进行游戏,知道猜对或8次才结束
{
int c;
print
f(请输入四个0到9之间的数字,且不重复,如:1234n
scanf(判断随机数据是否合格*
int
g1,s1,b1,q1,A=0,B=0;
g1=cs%10;**拆分测试数据**
s1=cs%10010;
b1=cs100%10;{
if(cs<1000)
q1=0;
else
q1=cs1000;**拆分测试数据**
}
int
p[4]={q1,b1,s1,g1},i,j;*比较各位数是否相等*
if (cs==n)游戏区
break;
{
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if (p[i]==a[j])
if (i==j)
A++;
else
B++;
m++;次数累计
system
(
printf(
printf(
printf(
}
12
湖南工程学院
}
while(m<8);进行游戏,知道猜对或8次才结束
TC()--退出模块,退出整个游戏系统;
scanf(
switch(h)是否退出模块选择
{
case 1:
{
system(
menu();返回主菜单
};break;
case
2:
{
system(
break;
};break;
default :
{
system(
printf(您的输入有误,请重新输入!提示报错
return menu();
GZ--
说明模块(),向游戏者介绍游戏的规则,并提示游戏者如何进行游戏;
13
湖南工程学院
第五章
调试
第一节
菜单测试
在主菜单中
输入 1:进入游戏;
输入
2:退出游戏;
输入 3:进入游戏说明;
输入 4:进入关于;
输入 5:进入游戏排行榜;
输入其它数据或按键时:提示“你输入有误,请重新输入”;
图表1.3
2) 在自定义数值中
输入
1:进入自定义,提示请输入你要自定义的数据;
输入
0:进入随机游戏,系统将自动生成数据给游戏者猜;
14
湖南工程学院
输入 3:系统报错,提示“你输入有误,请重新输入!”;
图表1.4
3) 在继续菜单中
图表1.5
输入 1:继续进行游戏;
15
湖南工程学院
输入 2:退出游戏;
输入
3:系统报错,提示“你输入有误,请重新输入”;
4) 界面友好
图表1.6
请字开头,显示出友好的界面,为使用者提供更好的环境。
第二节 游戏测试
第一条 在自定义中
自定义:输入1937
1) 第一次 1937
结果如下图:
16
湖南工程学院
图表1.7
2)
第一次 1356 1A1B
第二次 2478 0A1B;
第三次 1324 1A1B;
第四次 1579 1A2B
第五次 0954 0A1B;
第六次 1359 1A2B;
第七次 1957 3A0B;
第八次 1937
结果如下图:
17
湖南工程学院
图表1.8
自定义:输入12
提示报错,--“是否自定义数值”,直至定义正确;
18
湖南工程学院
图表1.9
结果如上图:
第二条 在随机游戏中
随机数据 1234
第一次 1356 1A0B;
第二次
2345 0A3B;
第三次 3456 2A0B;
第四次 5678
0A0B;
第五次 1234
结果如下图:
19
湖南工程学院
图表1.10
20
湖南工程学院
第六章
总结
几天的课程设计结束了
,我感受匪浅,自己掌握的还是太少,这次课程设计
的程序大多是自己去查找资料,上网找的,自己对系
统如何自定义数据还是不懂,
在答辩时,连问题是什么都没听到就写,一点都不严谨,我实在是羞愧„但
我是
很喜欢C语言的,我要把它学好,学习是无止境的,通过这次课程设计我认识到,
要学好C
语言不能单纯的书本知识更多的是把老师你交待的每个程序好好了解
﹑总结,这才是最好的方法。这次的
不足将激励我对它更浓厚的兴趣,我要征服
它!猜数字是一款非常经典的脑力游戏,游戏规则简单,但是
玩起来难度较大,
是消磨时间、锻炼脑力的好选择。
通过选择猜数字游戏这个题目,可以让我掌
握很多
知识。同时更加深入的了解字符界面的编程过程。使我更熟练的掌握Java程序框架的搭建和类的创建格式。在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分
析图、系
统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。让我
学会了多角度思考问题
,对我以后的编程奠定了更好的基础。
课程设计是本科学习阶段一次非常难得的理论与实际相结合的机
会,通过这
次比较完整的一个程序的设计,提高我查阅文献资料、对程序整体的把握等其他
能力
水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都
使我的能力得到了锻炼,经验
得到了丰富。这是我们都希望看到的也正是我们进
行课程设计的目的所在 虽然设计内容繁多,过程繁琐
但我的收获却更加丰富。
各种组件的运用,各种算法的应用,各种控件的利用我都是随着设计的不断深入
而不断熟悉并逐步掌握的。和老师以及同学的沟通交流更使我对程序整体的规划
与设计有了新的
认识也对自己提出了新的要求。提高是有限的但提高也是全面
的,正是这一次设计让我积累了许多实际经
验,也必然会让我在未来的工作学习
中表现出更高的应变能力和理解力。顺利如期的完成本次课程设计给
了我很大的
信心,但是也让多不足的地方,学习其实就是一个不断完善的过程,正视自己的
不足
之处,在以后的工作和学习中不断的弥补这些不足之处,在以后的生活中也
要保持同样的态度,不断的完
善自己
。
在还没有进行课程设计实训之前,我对C语言知识的掌握真的只能说
是很肤
浅,我只知道分开来使用那些语句和语法,对他们根本没有整体感念,所以在学
习C语言
时经常会感觉很盲目,甚至不知道自己学这些东西是为了什么。通过
一周的课程设计,我对C语言有了更
深入的了解,同时也建立起了一个对C语
言的整体架构和编程思想;我还学到了很多课本上没有学到的东
西,也了解了很
21
湖南工程学院
多以前不了解的计算机语言方
面的知识;他扩充了我的知识,也开拓了我的视野,
让我们了解了我们学习计算机语言的目的和将来发展
的方向。
其实这次最大的收获还是发现自己的不足,原来自己所掌握的知识只是皮毛<
br>而已,还有对于计算机的基本操作知道的真是少的可怜,虽然受了点很大的打击,
但总比一直错下
去、学了等于没学强,这样至少不会一直迷迷糊糊下去了。另外
我也深深理解上机操作的重要性,有时候
觉得自己很认真很仔细,对于编写的程
序非常自信,可实际一上机操作就不行了,会出现错误,虽然会打
击自信心,但
总比一直错下去、学了等于没学强,那样学习也将失去意义,学习就是一个不断
犯
错又不断修正的过程,我觉得我每犯一个错误都会从中收获一些东西,我一定
会学好C语言。
22
湖南工程学院
第七章
附录
第一节
附录A 源程序
#include
#include
#include
#include
static int t;
int
a[100];
extern startf();*外部说明*
extern
menu();*外部说明*
extern TC();*外部说明*
extern
GZ();*外部说明*
学生基本信息保存模块
void Save(int x)
{
FILE *fp;
int i;
a[t]=x;
t++;
fp=fopen(
for(i=0;i
}
if(i>0)
{
fwrite(&a[i],sizeof(int),1,fp);
每次写一个条录入或一个结构体数组至文件
23
湖南工程学院
}
}
printf(完成%d个文件的保存n
system(
else
{
}
fclose(fp);关闭文件
syste
m(
printf(文件为空,没有保存一个文件n
system(
显示模块
void display()
{
}
void
main()*主函数*
{
int count=0;
FILE *fp;
fp=fopen(保存在c:,以读写创建一个新的
int i;
for(i=0;i
}
if(t==0)
printf(没有分数
printf(
printf(
system(
system(
文本
24
湖南工程学院
if(fp==NULL)打开头文件失败
{
}
while(!feof(fp))
{
if(fread(&a[count],sizeof(int),1,fp)==1)
一次从文件中读取一条
printf(文件打开错误!n
exit(0);
学生信息
}
int menu()*菜单模块*
{
int k;
print
f(猜数字游戏..................n
printf(
printf(printf(开 始
<==**************|n
printf(
printf(退出系统
<==**************|n
printf(
printf(游戏说明
<==**************|n
printf(
printf(显示分数 <==*
*************|n
printf(
printf(
printf(printf(
}
menu();
count++;
25
湖南工程学院
printf(请按提示输入:
scanf(
switch(k) *选择项*
{
case 1:
{
system(
startf();
};break;
case 2:
{
system(
break;
};break;
case 3:
{ system(
return GZ();
}
case 4:
{
}
system(
display();
system(
return menu();
default:
{
printf(您的输入有误,请重新输入!n
s
ystem(
system(
26
湖南工程学院
}
}
}
return menu();
int startf( )*游戏模块*
{
int
n,m=0,g,s,b,q,cs,C=0,f;**cs表示测试数据**
do
{
printf(是否自定义数值:10 (1:是 0:否)n
scanf(
switch(f)
{
case 0:
srand((int)time(0));*随机数据的产生*
n=1+(int)(10000.1*rand()(RAND_MAX+1.0));break;
default:
printf(你输入有误,请重新输入!!
system(
case
1:printf(请输入你要自定义的数据n
}
g=n%10;
scanf(
s=n%10010;
b=n100%10;
}
while((g==s)||(g==b
)||(g==q)||(s==b)||(s==q)||(b==q)||(n<=124)||(n>=1
0000))
if(n<1000)
q=0;
;*随机数据的产生*
int a[4]={q,b,s,g};*将随机数据重组*
27
湖南工程学院
system(
print
f(欢迎进入猜数字游戏...nn
printf(数字正确,且位置正确
.......n温馨提示*
printf(数字正确,但位置错误
.......n
printf(实验次数
.......nn
do
{
int c;
printf(请输入四个0到9之间的数字,且不重复,如:1234n
scanf(判断随机数据是否合格*
int
g1,s1,b1,q1,A=0,B=0;
g1=cs%10;**拆分测试数据**
s1=cs%10010;
b1=cs100%10;
{
}
int
p[4]={q1,b1,s1,g1},i,j;*比较各位数是否相等*
if
(cs==n)游戏区
{
for(i=0;i<4;i++)
break;
if(cs<1000)
q1=0;
else
q1=cs1000;**拆分测试数据**
for(j=0;j<4;j++)
if(p[i]==a[j])
if(i==j)
A++;
else
B++;
28
湖南工程学院
m++;
system (
printf(
printf(
printf(
}
}
while(m<8);游戏区
{
if(m<8||cs==n)游戏得分情况
{
switch(m)
{
case 1: system(
printf(
关!!!n
case 2: system(
printf(
关!!!n
case 3: system(
printf(
关!!!n
case 4: system(
printf(
关!!!n
case 5: system(
printf(
关!!!n
case 6: system(
printf(
关!!!n
29
游戏
游戏
游戏
游戏游戏
游戏
过
过
过
过
过
过
湖南工程学院
case 7: system(
printf(游戏过
关!!!n
default:
system(
printf(一次通关 YOU ARE
DOOG!!!nttttscore:100ttttn
}
else
printf(很遗憾游戏结束了,你可以选择继续重新开始n判断胜利与
}
Save(100);
否
}
int TC()*提示模块*
{
int h;
printf(
printf(
}
system(
system(
return TC();
printf(
printf(继 续
<==******************|n
printf(
printf(游戏退出
<==******************|n
printf(
printf(
p
rintf(
printf(
30
湖南工程学院
}
printf(请按提示输入:
scanf(
switch(h)
{
case 1:
{
system(
menu();
};break;
case
2:
{
system(
break;
};break;
default:
}
{
}
system(
printf(您的输入有误,请重新输入!
return
menu();
int GZ()*说明模块*
{
printf(游戏规则................nn
printf(该游戏可以由程序随机产生或者自定义四个nn
prin
tf(到9之间的数字,且不重复。玩游戏者通过nn
printf(游戏提示输入八次来匹配上面所输
入的数字。nn
printf(表示位置正确且数字正确,nn
printf(表示数字正确而
位置错误,tnn
printf(表示实验的次数。tnn
31
湖南工程学院
}
printf(
system(
system(
return
menu();
第二节附录B 参考文献
[1] 耿祥义.《JAVA 大学实用教程》
[2]
耿祥义.《JAVA 大学实用教程实验指导》 电子工业出版社 电子工业出版社
2005
2005 2007
[3] 张广彬,孟红蕊,张永宝.《Java
课程设计案例精编》清华大学出版社
[4] 黄晓东.《Java 课程设计案例精编(第一版)》
中国水利水电出版社 2004 2003 2006
[5] [美]Cay ann
程峰等译.《JAVA2 核心技术》机械工业出版社
[6] 黄明等,梁旭,周绍斌.《Java
课程设计》 电子工业出版社
[7] 杨昭.《二级 Java 语言程序设计教程》
[8] 赵文靖.《Java 程序设计基础与上机指导》
[9] 赵毅主.
《跨平台程序设计语言—Java》
[10]王路群.《Java 高级程序设计》
[11] 夏宽理.《Java 语言程序设计》
[12] 丁新民.《Java
程序设计教程》 Hibernate 和 Eclipse》
中国水利水电出版社 2006
清华大学出版社 2006
西安电子科技大学出版社 2006 中国水利水电出版社 2006
机械工业出版社.
2008. 人民邮电出版社. 2006. 人民邮电出版社. 2007.
[13] (美)Anil Hemrajani(著),韩坤、徐琦(译). 《Java
敏捷开发-使用 Spring
[14]
《北京邮电大学世纪学院实验、实习、课程设计报告撰写格式与要求》
32
湖南工程学院
课程设计评分表
课题名称: 猜 数 字 游 戏
项
目
评
价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日 期:
33