struct record {
char name[10]; int sorce; }rec;
2
int num; //输入的数字
void display(); //开始界面 void xuanze(); //选择函数 void sys(int a); //操作函数 void zhuce(); void newgame(); void vdisplay(); int qushu(); int tishi(int aa); void addrec(); void recread(); void recwrite();
void main() { display(); }
void display() {
system(\"cls\"); //用户注册 //新游戏 //浏览记录界面 //取数函数 //提示函数
//判断并且增加记录 //读取记录文件 //写入记录文件 //开始界面 //清屏
3
printf(\"
============================================\\n\"); printf(\" ================数字竞猜游戏================\\n\"); printf(\"
============================================\\n\"); printf(\"\\n\");
printf(\" 1: 新游戏\\n\"); printf(\"\\n\");
printf(\" 2: 注册用户\\n\"); printf(\"\\n\");
printf(\" 3: 用户积分查看\\n\"); printf(\"\\n\");
printf(\" 4: 退出\\n\"); printf(\"\\n\");
printf(\"
============================================\\n\"); xuanze(); }
4
void xuanze() //选择函数 { int a;
printf(\"请输入你所选择的操作数:\\n\"); scanf(\"%d\
if(a==1||a==2||a==3||a==4) { sys(a);
}//选择相应的操作数执行函数 else {
printf(\"错误的操作数!\\n\");; printf(\"\\n\");
printf(\"请按任意键继续...\\n\"); getchar(); getchar(); display(); } }
void sys(int a) //操作函数 {
5
switch(a) {
case 1:newgame();break; case 2:zhuce();break; case 3:vdisplay();break; case 4:exit(0);break; //退出 } }
void zhuce() {
system(\"cls\");
printf(\"请输入你的名字\\n\"); scanf(\"%s\
recwrite(); printf(\"恭喜!注册成功!\\n\"); printf(\"请按任意键继续...\\n\"); getchar(); getchar(); display(); }
//写入6
void recwrite() //写入记录文件 { FILE *fp;
fp=fopen(\"E:\\\\rec.rec\ if(fp==NULL) printf(\"写入失败!\\n\");
fwrite(&rec,sizeof(struct record),1,fp); fclose(fp); }
void vdisplay() //浏览记录界面
system(\"cls\"); //清屏
printf(\"
============================================\\n\"); printf(\" ================数字竞猜游戏================\\n\");
printf(\" ====================积分
{
7
====================\\n\"); recread(); printf(\"\\n\");
printf(\" 姓名: %s : 分数 %d\\n\ printf(\"\\n\");
printf(\"请按任意键继续...\\n\"); getchar(); getchar(); display(); }
void recread() //读取记录文件 { FILE *fp;
L: fp=fopen(\"E:\\\\rec.rec\ if(fp==NULL) {
recwrite();
goto L; //初始化 }
if(fread(&rec,sizeof(record),1,fp)==1)
8
{ } else {
printf(\"文件读取失败!\"); } fclose(fp); }
void newgame() //新游戏 { recread();
system(\"cls\"); //清屏 printf(\"\\n\"); if (rec.name==0)
{ printf(\" 请先注册用户\\n\"); printf(\"请按任意键继续...\\n\"); getchar(); getchar(); vdisplay();}
9
///////////////////////////////////////////////////////////////////////////// int snum; //输入的数字 int sn=10; //机会次数 num=qushu(); //取数
L: system(\"cls\"); //清屏 printf(\"
============================================\\n\");
printf(\"
============================================\\n\"); printf(\" ================数字竞猜游戏================\\n\"); printf(\"
============================================\\n\"); printf(\"\\n\");
printf(\"
===========================================\\n\"); printf(\" 姓名: %s : 分数 %d\\n\ printf(\"\\n\");
printf(\" 按 1: 终止游戏,显示
答案\\n\");
printf(\"
============================================\\n\"); printf(\"\\n\");
printf(\"请输入你猜想的五个数字(格式为99999样式)你还有 %d 次机会:\\n\ scanf(\"%d\
if(snum<100000 && snum>10000 || snum==1) {
if(snum==1) {
printf(\"你放弃了本局游戏!该五个数字是: %d\\n\ printf(\"\\n\");
printf(\"请按任意键继续...\\n\"); getchar(); getchar(); display() ; } else
11
{
int flag=tishi(snum);
if(flag!=0 && sn!=0) { sn--; if(sn==0) {
printf(\"真是遗憾!十次机会没有了!没有关系!下次继续!\\n\"); printf(\"\\n\");
printf(\"请按任意键继续...\\n\"); getchar(); getchar(); newgame() ; }
printf(\"请按任意键继续猜...\\n\"); getchar(); getchar(); goto L; } else
12
{
if(sn!=0) addrec(); else {
printf(\"请按任意键继续...\\n\"); getchar(); getchar(); newgame(); } } } } else {
printf(\"错误的操作数!\\n\");; printf(\"\\n\");
printf(\"请按任意键继续...\\n\"); getchar(); getchar(); goto L; }
13
}
int tishi(int aa) //提示函数 { int a,b,c,d,e; int af,bf,cf,df,ef;
if(aa==num) {
printf(\"恭喜!你猜对了!五个数就是:%d\\n\
return(0);
} else
{ a=num/10000; b=num/1000%10;
c=num/100%100%10; //获取输入的四个数字 d=num/10%1000%100%10; e=num%10000%1000%100%10;
14
af=aa/10000; bf=aa/1000%10;
cf=aa/100%100%10; //获取输入的四个数字 df=aa/10%1000%100%10; ef=aa%10000%1000%100%10;
if(af>a)printf(\"\\n第一个数应该比 %d 小一点!\\n\ if(af==a)printf(\"恭喜!第一个数字对了!应该是: %d\\n\数字比较
if(afif(bf>b)printf(\"第二个数应该比 %d 小一点!\\n\if(bf==b)printf(\"恭喜!第二个数字对了!就是: %d\\n\ 数字比较
if(bfif(cf>c)printf(\"第三个数应该比 %d 小一点!\\n\
if(cf==c)printf(\"恭喜!第三个数字对了!就是: %d\\n\ 数字比较
if(cfif(df>d)printf(\"第四个数应该比 %d 小一点!\\n\////// 15
if(df==d)printf(\"恭喜!第四个数字对了!就是: %d\\n\ //数字比较
if(dfif(ef>e)printf(\"第五个数应该比 %d 小一点!\\n\if(ef==e)printf(\"恭喜!第五个数字对了!就是: %d\\n\ 数字比较
if(efvoid addrec() //判断并且增加记录 {int a; //标志位 a=100; recread();
//16
rec.sorce= rec.sorce+a; recwrite();
printf(\"请按任意键继续...\\n\"); getchar(); getchar(); newgame(); }
int qushu( ) //取数函数 { int a=0; int i=0;
17
srand( (unsigned)time( NULL ) ); //随机数种子设置
while(i==0) {
i=rand(); //这样做就是为了增加随机性 i=i%100; }
L: for(int j=0;ja=a+rand(); //判断随机数是否是五位数 如果不是继续取数 }
a=(a/i+rand())%100000; if(a<10000)goto L;
return(a); }
18
3. 课程设计总结
这次的课程设计总算是告一段落,虽然源程序不是自己亲自全部完成,但是毕竟也花费了自己的很多精力,从开始的到网上查找资料,然后自己一点点的改正,调试,中间的好多问题自己都没有办法解决,也看不懂,也让自己知道光靠书本的那点知识是无法解决的,书本的知识毕竟是有限的。好多知识都得自己去学,而不是等着老师教。第一次完成这么大的一个完整的程序,让自
己意识到了自己的知识欠缺。和以前课本上的许多知识没有学到位。有时候在电脑面前呆几个小时就是为了解决一个小问题,很是费时间和精力,更是让自己知道了基础知识的重要性,再复杂的程序也是从基础开始的,所以打好基础是关键!
19