版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì) 報(bào) 告</p><p> 課程名稱 C語(yǔ)言課程設(shè)計(jì) </p><p> 課題名稱 猜數(shù)字游戲系統(tǒng) </p><p><b> 2012年9月3日</b></p><p><b> 目 錄</b&
2、gt;</p><p> 第一章 前言............................................................................................</p><p> 第二章 需求分析……………………………………………….....…...</p><p> 2.1系統(tǒng)概述......
3、...................................................</p><p> 2.2功能需求描述..................................................</p><p> 第三章 總體設(shè)計(jì)………………………………………..……….…..</p><p> 3.1模塊設(shè)計(jì)
4、........................................................................................</p><p> 3.2程序的模塊組成………………………………………………</p><p> 3.3各個(gè)函數(shù)的主要功能…………………………….………...…..</p><p> 第
5、四章 詳細(xì)設(shè)計(jì)…………………………………………………....</p><p> 4.1 系統(tǒng)的總體框圖…………………………………………..</p><p> 4.2 相關(guān)的數(shù)據(jù)類型.........................................................................</p><p> 4.3 函數(shù)
6、間的調(diào)用圖.........................................................................</p><p> 4.4 流程圖…………………………………………………… .....…</p><p> 第五章 測(cè)試和結(jié)果……………………………………………….... </p><p> 5.1 調(diào)試
7、分析……………………………………………………..…. 5.2 使用說(shuō)明......................................................................................</p><p> 5.3 運(yùn)行結(jié)果截屏及說(shuō)明………………………………………..</p><p> 第六章 源程序……………………
8、……………………………...…...</p><p> 第七章 總結(jié)………………………………………………………......</p><p> 附錄 1、計(jì)算機(jī)應(yīng)用與通信學(xué)院評(píng)分標(biāo)準(zhǔn)………………..…………………….....</p><p><b> 第一章</b></p><p><b> 前 言
9、</b></p><p> 《C語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)是對(duì)學(xué)生的一種全面綜合訓(xùn)練,它包括問題分析,總體結(jié)構(gòu)設(shè)計(jì),用戶界面設(shè)計(jì),程序設(shè)計(jì)基本技能和技巧,多人合作,以至一整套軟件工作規(guī)范的訓(xùn)練和科學(xué)作風(fēng)的培養(yǎng)。是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個(gè)教學(xué)環(huán)節(jié)。通常,課程設(shè)計(jì)的課題比平時(shí)的習(xí)題復(fù)雜得多,也更接近實(shí)際。課程設(shè)計(jì)著眼于與應(yīng)用的結(jié)合點(diǎn),使學(xué)生學(xué)會(huì)如何把書上學(xué)到的知識(shí)用于解決實(shí)際問題,培養(yǎng)
10、軟件工作所需要的動(dòng)手能力;另一方面,能使書上的知識(shí)變“活”,使學(xué)生更好地深化理解和靈活掌握教學(xué)內(nèi)容。為了達(dá)到上述目的,本課程設(shè)計(jì)安排了八個(gè)設(shè)計(jì)課題,訓(xùn)練重點(diǎn)在于基本的程序設(shè)計(jì)方法和分析問題的能力,而不強(qiáng)調(diào)面面俱到。學(xué)生可任選其中一題進(jìn)行設(shè)計(jì),設(shè)計(jì)完畢寫出課程設(shè)計(jì)報(bào)告,用A4紙打印成冊(cè);并將課程設(shè)計(jì)報(bào)告與源程序存盤。學(xué)習(xí)委員將課程設(shè)計(jì)報(bào)告與磁盤收齊后交指導(dǎo)老師。</p><p><b> 第二章 &l
11、t;/b></p><p><b> 需求分析</b></p><p> 猜數(shù)字游戲是一個(gè)運(yùn)行在Windows平臺(tái)下的小型游戲軟件,依據(jù)猜數(shù)字游戲的基本規(guī)則,給用戶進(jìn)行成績(jī)排行,在排行榜中排出前五名玩家的游戲記錄,并可以隨著玩家的游戲記錄進(jìn)行更新。1、系統(tǒng)概述 該軟件在Windows系統(tǒng)上為玩家提供猜數(shù)字游戲的基本功能,游戲用戶可以
12、選擇開始游、排行榜查看、幫助等主要功能。當(dāng)用戶選擇開始游戲時(shí),系統(tǒng)會(huì)提示用戶排行榜上猜數(shù)字成績(jī)的最好記錄,并讓用戶逐次猜數(shù)字,用戶每次猜數(shù)字后系統(tǒng)會(huì)給出本次猜數(shù)字的結(jié)果提示,如位置和數(shù)字都正確的數(shù)字個(gè)數(shù)、數(shù)字正確介位置不正確的數(shù)字個(gè)數(shù)。如果用戶猜數(shù)字的次數(shù)超過(guò)8次,則提示用戶游戲失敗,如果在8次之內(nèi)猜出4個(gè)數(shù)字和正確的順序,則提示用戶猜數(shù)字成功,并到排行榜中進(jìn)行比較,如果排名在前一名,則計(jì)入排行榜中,以便其他用戶查看。在排行榜查看功能中
13、,用戶可以查看當(dāng)前的游戲排行,排行榜中總共顯示5名玩家的排行,如有新的記錄產(chǎn)生,則插入到排行榜中,并把排行榜中位次最末的記錄擠出排行榜。在幫助模塊,用戶可以查看游戲規(guī)則,當(dāng)熟悉規(guī)則后可以退出幫助模塊。2、功能需求描述 猜數(shù)字游戲軟件的總體目標(biāo)是按照特定游戲規(guī)則為用戶提供一個(gè)方便友好的游戲</p><p><b> 第三章 </b></p><p
14、><b> 總體設(shè)計(jì)</b></p><p> 在前面對(duì)猜數(shù)字游戲進(jìn)行需求分析的過(guò)程中,已經(jīng)初步明確了系統(tǒng)的主要功能模塊和用戶需求,下面將在總體設(shè)計(jì)的過(guò)程中,給出猜數(shù)字游戲的模塊結(jié)構(gòu)、流程描述以及界面布局,并使得系統(tǒng)的總體設(shè)計(jì)符合軟件工程中總體設(shè)計(jì)的基本原則。開發(fā)與設(shè)計(jì)的總體思想 猜數(shù)字游戲是一種大眾娛樂游戲,開發(fā)與設(shè)計(jì)的重點(diǎn)在于游戲供玩家進(jìn)行猜數(shù)字
15、游戲的原始數(shù)字的產(chǎn)生和用戶每次進(jìn)行猜數(shù)字操作之后的游戲提示,這兩方面的規(guī)則設(shè)計(jì)往往決定了軟件運(yùn)行的正確性和質(zhì)量。1、模塊設(shè)計(jì): 1)、游戲區(qū)模塊 該模塊為玩家提供猜數(shù)字游戲的主休功能,由系統(tǒng)自動(dòng)產(chǎn)生4個(gè)隨機(jī)排列的整數(shù),并給用戶8次機(jī)會(huì)猜測(cè)數(shù)字的數(shù)值和排列順序。如果用戶在8次之內(nèi)沒有猜出正確的結(jié)果,則提示用戶游戲失敗,否則提示用戶猜數(shù)字成功,并調(diào)用產(chǎn)生新記錄模塊對(duì)玩家游戲成績(jī)進(jìn)行處理
16、。(因精力有限且只能用畫圖來(lái)畫個(gè)框架,所以就不再有圖了) ①產(chǎn)生原始數(shù)字:由系統(tǒng)產(chǎn)生4個(gè)隨機(jī)數(shù),并按任意順序排列,作為游戲的原始數(shù)字供玩家進(jìn)行猜數(shù)字游戲?!?②游提示:提示用戶數(shù)值和位置全對(duì)的數(shù)字個(gè)數(shù),和只有數(shù)值但位置不對(duì)的數(shù)字個(gè)數(shù)。 ③原始數(shù)字顯示:當(dāng)用戶在8次之內(nèi)仍未能</p><p> 2、程序的模塊組成:</p><p> 主函數(shù): int main()</p&
17、gt;<p> 創(chuàng)立結(jié)構(gòu)體:struct p1()</p><p> 使數(shù)字產(chǎn)生循環(huán): int rand1()</p><p> 調(diào)用讀取破記錄: goread()</p><p> 輸入數(shù)字: void input1();</p><p> 初始化隨機(jī)數(shù)發(fā)生器:getnumber()</p><
18、p> 清除文本模式窗口:clrscr();</p><p> 讀入字符串的時(shí)候,直到回車為止 :gets()</p><p> 3、各個(gè)函數(shù)的主要功能:</p><p> 隨機(jī)產(chǎn)生4個(gè)數(shù)的函數(shù): 隨機(jī)產(chǎn)生4個(gè)數(shù)字。</p><p> randomize()是c函數(shù)庫(kù)提供的一個(gè)函數(shù),功能給產(chǎn)生隨機(jī)數(shù)的進(jìn)行初始化</p>
19、;<p><b> 清除文本模式窗口</b></p><p><b> 第四章 </b></p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p><b> 1、系統(tǒng)的總體框圖</b></p><p><b> 圖 4
20、-1</b></p><p> 2、相關(guān)的數(shù)據(jù)類型:</p><p> #include<stdio.h></p><p> #include<conio.h></p><p> #include<stdlib.h></p><p> #include<s
21、tring.h></p><p> void rand2();</p><p> int rand1();</p><p> void input1();</p><p> void compare1();</p><p> int i,j,k,c,d,b[4];</p><p>
22、; char a[24];</p><p><b> 將數(shù)字定義為整型</b></p><p> 3、函數(shù)間的調(diào)用關(guān)系圖如下:</p><p><b> 圖 4-2</b></p><p><b> 4、流程圖</b></p><p><
23、;b> 圖 4-3</b></p><p><b> 第五章 </b></p><p><b> 測(cè)試和結(jié)果</b></p><p><b> 1、調(diào)試分析;</b></p><p> 輸入的游戲玩家人數(shù)太多時(shí),屏幕顯示不能控制為一頁(yè)一頁(yè)顯示,所以
24、為了方便起見,不要輸入太多記錄,十七左右為最佳。</p><p> 剛開始執(zhí)行輸入函數(shù),按數(shù)字順序輸入,輸完后執(zhí)行顯示功能,數(shù)字、字母的位置顯示不對(duì),試著在其中增加一些語(yǔ)句,希望能把所需結(jié)果按正常順序顯示,但暫時(shí)沒有成功,最后在老師的幫助下,所需結(jié)果能按正常順序輸出了。</p><p> 在前面對(duì)猜數(shù)字游戲進(jìn)行需求分析的過(guò)程中,已經(jīng)初步明確了系統(tǒng)的主要功能模塊和用戶需求,下面將在總體設(shè)
25、計(jì)的過(guò)程中,給出猜數(shù)字游戲的模塊結(jié)構(gòu)、流程描述以及界面布局,并使得系統(tǒng)的總體設(shè)計(jì)符合軟件工程中總體設(shè)計(jì)的基本原則。開發(fā)與設(shè)計(jì)的總體思想 猜數(shù)字游戲是一種大眾娛樂游戲,開發(fā)與設(shè)計(jì)的重點(diǎn)在于游戲供玩家進(jìn)行猜數(shù)字游戲的原始數(shù)字的產(chǎn)生和用戶每次進(jìn)行猜數(shù)字操作之后的游戲提示,這兩方面的規(guī)則設(shè)計(jì)往往決定了軟件運(yùn)行的正確性和質(zhì)量。同時(shí),要謹(jǐn)記調(diào)試失敗的原因,以免下次犯同類錯(cuò)誤。</p><p>&l
26、t;b> 2、使用說(shuō)明:</b></p><p><b> 1)、打開程序:</b></p><p> 2)、進(jìn)入選擇頁(yè)面:</p><p> ?。?)選擇1為查看記錄</p><p> ?。?)選擇2為新游戲</p><p><b> ?。?)選擇0為退出<
27、;/b></p><p><b> 3)、進(jìn)行游戲</b></p><p><b> 4)、退出</b></p><p> 3、運(yùn)行結(jié)果截屏及說(shuō)明:</p><p><b> 游戲初始畫面</b></p><p> 選擇一進(jìn)入游戲系統(tǒng)隨機(jī)
28、顯示四個(gè)數(shù)字提供讓游戲者猜測(cè):</p><p> 如果連續(xù)四次輸入錯(cuò)誤將出現(xiàn)如下結(jié)果,并出現(xiàn)提示:</p><p> 選擇四進(jìn)入幫助顯示結(jié)果</p><p> 如果繼續(xù)則可以輸入姓名并保存記錄如果按任意鍵則返回首頁(yè):</p><p><b> 第六章 </b></p><p><b
29、> 源程序</b></p><p> #include <time.h></p><p> #include <stdlib.h></p><p> #include<stdio.h></p><p> #include <conio.h></p>&l
30、t;p> int a[5],b[5],n1,n2,n3,i,j;/* a,b,只用了從1~4的四個(gè)下標(biāo). */</p><p> /* n1計(jì)算位置數(shù)字相同的數(shù)字個(gè)數(shù) */</p><p> /* n2計(jì)算數(shù)字相同但位置不相同的數(shù)字個(gè)數(shù) */</p><p> /* n3計(jì)算所猜次數(shù) */</p><p><b>
31、char ch;</b></p><p> StartProgram()</p><p><b> {</b></p><p> ReadRecord(); /*調(diào)用讀取破記者函數(shù) */</p><p><b> n1=0;</b></p><p><
32、;b> n3=0;</b></p><p> getnumber();/*調(diào)用隨機(jī)產(chǎn)生4個(gè)數(shù)的函數(shù)*/</p><p> for(j=i-1;j>=1;j--)</p><p> printf("%d ",a[j]);</p><p> getchar();</p><
33、p> printf("\n\n\n\n\n");</p><p> /* 循環(huán)猜數(shù) */</p><p> while(n1<4&&n3<10)</p><p><b> {</b></p><p><b> ++n3;</b><
34、/p><p><b> n1=0;</b></p><p><b> n2=0;</b></p><p> /* 提示用戶輸入四個(gè)要猜的4位整數(shù) */</p><p> for(i=1;i<=4;i++)</p><p><b> {</b>
35、</p><p> printf("\ninput the NO.%d number:",i);</p><p> scanf("%d",&b[i]);</p><p><b> }</b></p><p> for(i=1;i<=4;i++)</p&g
36、t;<p><b> {</b></p><p> if(a[i]==b[i])/* 位置數(shù)字都對(duì)的 */</p><p><b> {</b></p><p><b> n1++;</b></p><p><b> continue;<
37、/b></p><p><b> }</b></p><p> for(j=1;j<=4;j++)/* 計(jì)算數(shù)字相同但位置不相同的個(gè)數(shù) */</p><p> if(b[i]==a[j]) n2++;</p><p><b> }</b></p><p>
38、 printf("correct value and correct position: %d\n",n1);</p><p> printf("correct value but incorrectness position:%d\n",n2);</p><p> printf("you have guessed %d times\
39、n",n3);</p><p> if(n1==4) break;/* 如果四次都猜對(duì)了就結(jié)束循環(huán)。 */</p><p> } /* while循環(huán)結(jié)束 */</p><p> if(n3>=10)</p><p> printf("You blew it ,the answer is %d,%d,%d&q
40、uot;,a[1],a[2],a[3],a[4]);</p><p><b> else</b></p><p><b> {</b></p><p> printf("Configrafulastions!You finish it by %d times\n",n3);</p>
41、<p> ResetRecord(n3);</p><p><b> }</b></p><p> printf("press any key to continue...\n");</p><p> fflush(stdin);</p><p><b> getch()
42、;</b></p><p><b> }</b></p><p> getnumber()/* 隨機(jī)產(chǎn)生四個(gè)數(shù)的函數(shù) */</p><p><b> {</b></p><p> randomize(); </p><p> /* 產(chǎn)生隨機(jī)數(shù)的初始化函數(shù)
43、 */</p><p> for(i=1;i<=4;i++)</p><p><b> {</b></p><p><b> loop2:</b></p><p><b> {</b></p><p> /* 產(chǎn)生的隨機(jī)數(shù)處理為1位的整數(shù)
44、 */</p><p> a[i]=rand()%10;/* rand函數(shù)用于產(chǎn)生隨機(jī)數(shù) */</p><p> /* 循環(huán)判斷,隨機(jī)數(shù)要求不重復(fù),如果重復(fù)則重新產(chǎn)生 */</p><p> for(j=i-1;j>=1;j--)</p><p> if(a[i]==a[j]) goto loop2;</p>&l
45、t;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> #ifndef PLAYER</p><p> #define PLAYER</p><p> #include
46、 <stdio.h></p><p> #include <conio.h></p><p> #include <string.h></p><p> #define SIZE 5</p><p> typedef struct</p><p><b> {&l
47、t;/b></p><p> char name[20];/* field of name */</p><p> int score;/* field of score */</p><p><b> }player;</b></p><p><b> #endif#</b><
48、/p><p> /* SortByName按游戲成績(jī)排序 */</p><p> #include <stdio.h></p><p> void SortByName()</p><p><b> {</b></p><p> int i,j,k;</p><
49、;p> player TempS;/* 定義進(jìn)行操作時(shí)的臨時(shí)結(jié)構(gòu)體變量 */</p><p> player s[5];/* SIZE在score.h頭文件中定義的常量,值為5 */</p><p> int recNumber=0;</p><p> char DataFile[10]="record";</p>&
50、lt;p> FILE *fp=NULL;</p><p><b> clrscr();</b></p><p> /* 以讀的方式打開文件,如文件不存在,提示錯(cuò)誤 */</p><p> fp=fopen(DataFile,"rb");</p><p> if(fp==NULL)<
51、;/p><p><b> {</b></p><p> printf("\nOpen file %s fial !End with any key.\n",DataFile);</p><p> perror("Open file fail");</p><p> fflush
52、(stdin);</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p> /* 將文件中要排序的信息存入結(jié)構(gòu)體數(shù)組 */</p><p> w
53、hile(fread(&s[recNumber],sizeof(player),1,fp)!=(int)NULL)</p><p><b> {</b></p><p> recNumber++;</p><p><b> }</b></p><p> fclose(fp);<
54、/p><p> /* 如果文件中有記錄,則將各記錄按游戲成績(jī)值排序 */</p><p> if(recNumber>1)</p><p><b> {</b></p><p> for(i=0;i<recNumber-1;i++)</p><p><b> {<
55、/b></p><p><b> k=i;</b></p><p> for(j=i+1;j<recNumber;j++)</p><p><b> {</b></p><p> if(strcmp(s[k].name,s[j].name)>0) k=j;</p>
56、;<p><b> }</b></p><p><b> if(k!=i)</b></p><p><b> {</b></p><p> strcpy(TempS.name,s[k].name);</p><p> TempS.score=s[k].s
57、core;</p><p> strcpy(s[k].name,s[i].name);</p><p> s[k].score=s[i].score;</p><p> strcpy(s[i].name,TempS.name);</p><p> s[i].score=TempS.score;</p><p>
58、<b> }</b></p><p><b> }</b></p><p> /* 將排序好的記錄寫入文件 */</p><p> fp=fopen(DataFile,"wb+");</p><p> if(fp==NULL)</p><p>&
59、lt;b> {</b></p><p> printf("\nOpen file %s fial!End with any key.\n",DataFile);</p><p> perror("Open file fail");</p><p> fflush(stdin);</p>
60、<p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p> for (i=0;i<recNumber;i++)</p><p><b> {</b
61、></p><p> if(fwrite(&s[i],sizeof(player),1,fp)!=1)</p><p><b> {</b></p><p> printf("\nwrite file %s fail!End with any key.\n",DataFile);</p>&
62、lt;p> perror("write file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</
63、b></p><p><b> }</b></p><p> fclose(fp);</p><p><b> }</b></p><p> /* 顯示排序后的文件 */</p><p> printf("the player's score
64、 as folow:\n");</p><p> fp=fopen(DataFile,"rb");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("\nOpen file %s fial!End with
65、any key.\n",DataFile);</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> return;</b>
66、;</p><p><b> }</b></p><p> printf("\nName\t\tscore\n");</p><p> while(fread(&TempS,sizeof(player),1,fp)!=(int)NULL)</p><p><b> {<
67、/b></p><p> printf("%s\t\t%d\n",TempS.name,TempS.score);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("press any key to continu
68、e...");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> }</b></p><p> #include <stdio.h></p><p> /* 顯示幫助信
69、息 */</p><p> PrintHelp()</p><p><b> {</b></p><p><b> clrscr();</b></p><p> printf("\n");</p><p> printf("+-----
70、---------------------------------------------------+\n");</p><p> printf("+ you hava 10 opportunities to guess num +\n");</p><p> printf("+ every time the
71、 system will hint you : +\n");</p><p> printf("+ correct value and correct position count +\n");</p><p> printf("+ correct value but incorrec
72、tness position count +\n");</p><p> printf("+--------------------------------------------------------+\n");</p><p> printf("+ about the score list
73、 +\n");</p><p> printf("+ the score list is store the five player's score on top +\n");</p><p> printf("+-------------------------------------------------
74、-------+\n");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> }</b></p><p> /* SortByName按游戲成績(jī)排序 */</p><p> #in
75、clude <stdio.h></p><p> void SortByScore()</p><p><b> {</b></p><p> int i,j,k;</p><p> player TempS;/* 定義進(jìn)行操作時(shí)的臨時(shí)結(jié)構(gòu)體變量 */</p><p> pl
76、ayer s[5];/* SIZE在score.h頭文件中定義的常量,值為5 */</p><p> int recNumber=0;</p><p> char DataFile[10]="record";</p><p> FILE *fp=NULL;</p><p><b> clrscr();&l
77、t;/b></p><p> /* 以讀的方式打開文件,如文件不存在,提示錯(cuò)誤 */</p><p> fp=fopen(DataFile,"rb");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> prin
78、tf("\nOpen file %s fial !End with any key.\n",DataFile);</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p>
79、;<p><b> return;</b></p><p><b> }</b></p><p> /* 將文件中要排序的信息存入結(jié)構(gòu)體數(shù)組 */</p><p> while(fread(&s[recNumber],sizeof(player),1,fp)!=(int)NULL)</p
80、><p><b> {</b></p><p> recNumber++;</p><p><b> }</b></p><p> fclose(fp);</p><p> /* 如果文件中有記錄,則將各記錄按游戲成績(jī)值排序 */</p><p>
81、; if(recNumber>1)</p><p><b> {</b></p><p> for(i=0;i<recNumber-1;i++)</p><p><b> {</b></p><p><b> k=i;</b></p><
82、;p> for(j=i+1;j<recNumber;j++)</p><p><b> {</b></p><p> if(s[k].score>s[j].score) k=j;</p><p><b> }</b></p><p><b> if(k!=i)&
83、lt;/b></p><p><b> {</b></p><p> strcpy(TempS.name,s[k].name);</p><p> TempS.score=s[k].score;</p><p> strcpy(s[k].name,s[i].name);</p><p&g
84、t; s[k].score=s[i].score;</p><p> strcpy(s[i].name,TempS.name);</p><p> s[i].score=TempS.score;</p><p><b> }</b></p><p><b> }</b></p>
85、<p> /* 將排序好的記錄寫入文件 */</p><p> fp=fopen(DataFile,"wb+");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("\nOpen file %s fia
86、l!End with any key.\n",DataFile);</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> retur
87、n;</b></p><p><b> }</b></p><p> for (i=0;i<recNumber;i++)</p><p><b> {</b></p><p> if(fwrite(&s[i],sizeof(player),1,fp)!=1)<
88、/p><p><b> {</b></p><p> printf("\nwrite file %s fail!End with any key.\n",DataFile);</p><p> perror("write file fail");</p><p> fflush
89、(stdin);</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p> fclo
90、se(fp);</p><p><b> }</b></p><p> /* 顯示排序后的文件 */</p><p> printf("the player's score as flow:\n");</p><p> fp=fopen(DataFile,"rb")
91、;</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("\nOpen file %s fial!End with any key.\n",DataFile);</p><p> perror("Open file fai
92、l");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p> printf(&q
93、uot;\nName\t\tscore\n");</p><p> while(fread(&TempS,sizeof(player),1,fp)!=(int)NULL)</p><p><b> {</b></p><p> printf("%s\t\t%d\n",TempS.name,TempS.
94、score);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("press any key to continue...");</p><p> fflush(stdin);</p><p><b&
95、gt; getch();</b></p><p><b> }</b></p><p> #include <stdio.h></p><p> ResetRecord(int n) /* n所用次數(shù) */</p><p><b> {</b></p>
96、<p><b> int i,j;</b></p><p> int recnum=0;</p><p> int maxscore=0;</p><p> player r[5];</p><p> FILE *fp=NULL;</p><p> player Pro;&
97、lt;/p><p> player TempS;</p><p> fp=fopen("record","rb");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("\nOp
98、en file fail!End with any key\n");</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> exit
99、(0);</b></p><p><b> }</b></p><p> /* 將文件中的記錄讀入數(shù)組中. */</p><p> while((fread(&r[recnum],sizeof(player),1,fp)!=(int)NULL) && (recnum<5))</p>
100、<p><b> {</b></p><p><b> recnum++;</b></p><p><b> }</b></p><p> fclose(fp);</p><p> /* 如果記錄成員沒有5個(gè),則順次入數(shù)組中添加記錄 */</p>
101、<p> if(recnum<4)</p><p><b> {</b></p><p> printf("What is your name?"); /* 讓玩家輸入姓名 */</p><p> scanf("%s",r[recnum].name);</p>
102、<p> r[recnum].score=n;</p><p><b> recnum++;</b></p><p><b> }</b></p><p> /* 如果記錄成員已經(jīng)有5個(gè),則找出猜數(shù)字次數(shù)最多的記錄,即最差玩家 */</p><p> /* 如果當(dāng)前記錄比此記錄快
103、,則替換 */</p><p><b> else</b></p><p><b> {</b></p><p> for(i=0;i<5;i++)</p><p><b> {</b></p><p> if(r[i].score>
104、;maxscore)/* maxscor初始值為0 */</p><p><b> {</b></p><p> maxscore=r[i].score;</p><p><b> j=i;</b></p><p><b> }</b></p><p
105、><b> }</b></p><p> /* 如果當(dāng)前人的記錄比最慢記錄快,或相等則替換,使玩家入榜,最差玩家落榜 */</p><p> if(n<=r[j].score)</p><p><b> {</b></p><p> printf("What is y
106、our name?"); /* 讓玩家輸入姓名 */</p><p> scanf("%s",r[j].name);</p><p> r[j].score=n;</p><p><b> }</b></p><p><b> }</b></p>
107、<p> fp=fopen("record","wb");/* 以寫的方式打開排行榜文件 */</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("Open file fail!end with any key.
108、\n");</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> exit(0);</b></p><
109、;p><b> }</b></p><p> /* 循環(huán)把更新過(guò)的排行情況寫入排行榜 */</p><p> for(i=0;i<recnum;i++)</p><p><b> {</b></p><p> if(fwrite(&r[i],sizeof(player)
110、,1,fp)!=1)</p><p><b> {</b></p><p> printf("\nWrite file fail!End with any key.\n");</p><p> perror("Write file fail");</p><p><b&
111、gt; getch();</b></p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> }</b></p><p> fclose(fp);</p><p> /* 顯
112、示更新排行過(guò)的排行榜 */</p><p> fp=fopen("record","rb");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("Open file fail!end with an
113、y key.\n");</p><p> perror("Open file fail");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> exit(0);</b></p>
114、;<p><b> }</b></p><p> printf("the record is:\n");</p><p> printf("\nName\tscore\n");</p><p> while(fread(&TempS,sizeof(player),1,fp)!
115、=(int)NULL)</p><p><b> {</b></p><p> printf("\n%s\t%d\n",TempS.name,TempS.score);</p><p><b> }</b></p><p> fclose(fp);</p>
116、<p><b> }</b></p><p> #include <stdio.h></p><p> ClearSort()</p><p><b> {</b></p><p> player TempS;/* 定義進(jìn)行操作時(shí)的臨時(shí)結(jié)構(gòu)體變量,用于存放系統(tǒng)默認(rèn)記錄
117、 */</p><p> char DataFile[10]="record";/* 存放排行榜文件名 */</p><p> FILE * fp=NULL;</p><p> strcpy(TempS.name,"player");/* 初始化系統(tǒng)默認(rèn)記錄的玩家姓名 */</p><p> T
118、empS.score=10;/* 初始化系統(tǒng)默認(rèn)記錄的玩家成績(jī) */</p><p> fp=fopen(DataFile,"wb+");/* 打開排行榜文伯 */</p><p> if(fp==NULL)/* 打開不成功給出錯(cuò)誤提示 */</p><p><b> {</b></p><p>
119、; printf("\nOpen the score sort file fail!end with any key!\n",DataFile);</p><p> perror("Open file fail!");</p><p> fflush(stdin);</p><p><b> getch();
120、</b></p><p><b> exit(0);</b></p><p><b> }</b></p><p> /* 將系統(tǒng)默認(rèn)記錄以履蓋的方式寫入排行榜 */</p><p> if(fwrite(&TempS,sizeof(player),1,fp)!=1)&l
121、t;/p><p><b> {</b></p><p> printf("\nWrite file %s fail!End with any key!\n",DataFile);</p><p> perror("write file fail!");</p><p> ffl
122、ush(stdin);</p><p><b> getch();</b></p><p><b> exit(0);</b></p><p><b> }</b></p><p> fclose(fp);</p><p> printf(&q
123、uot;\nThe sort file is cleared!\n");</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> }</b></p><p> #include <stdio.h>&l
124、t;/p><p> void main()</p><p><b> {</b></p><p> int choice=1;</p><p><b> while(1)</b></p><p><b> {</b></p><
125、p><b> clrscr();</b></p><p> printf("#===============================#\n");</p><p> printf("# Welcome to GuessNum Program #\n");</p><p> prin
126、tf("#===============================#\n");</p><p> printf("# 1.to start game #\n");</p><p> printf("# 2.to browse the sort by scor #\n");</p>
127、<p> printf("# 3.to browse the sort by name #\n");</p><p> printf("# 4.to view the help #\n");</p><p> printf("# 5.to clear the sort #\n&
128、quot;);</p><p> printf("# 0.Exit #\n");</p><p> printf("#===============================#\n");</p><p> printf("Please input you ch
129、oice here:");</p><p> scanf("%d",&choice);</p><p> switch(choice)</p><p><b> {</b></p><p><b> case 1:</b></p><
130、p> StartProgram();</p><p><b> break;</b></p><p><b> case 2:</b></p><p> SortByScore();</p><p><b> break;</b></p><
131、p><b> case 3:</b></p><p> SortByName();</p><p><b> break;</b></p><p><b> case 4:</b></p><p> PrintHelp();</p><p&g
132、t;<b> break;</b></p><p><b> case 5:</b></p><p> ClearSort();</p><p><b> break;</b></p><p><b> case 0:</b></p>
133、<p><b> exit(0);</b></p><p><b> break;</b></p><p><b> default:</b></p><p> printf("select error!\nPress any key to countinue...&q
134、uot;);</p><p> fflush(stdin);</p><p><b> getch();</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }<
135、;/b></p><p><b> }</b></p><p> #include "stdio.h"</p><p> ReadRecord()</p><p><b> {</b></p><p> FILE * fp;</p&g
136、t;<p> player TempS;</p><p> player Min;</p><p> Min.score=11;</p><p> /* 打開記錄保持文,如果不能以讀方式打,說(shuō)明記錄不存在,則他建記錄,寫入文件 */</p><p> if((fp=fopen("record",&q
137、uot;rb"))==NULL)</p><p><b> {</b></p><p> SetRecord();/* 調(diào)用初始化記錄函數(shù) */</p><p> fp=fopen("record","rb");</p><p><b> }</b
138、></p><p> /* 循環(huán)讀取文件,取得最少猜中次數(shù)的記錄 */</p><p> while(fread(&TempS,sizeof(player),1,fp)!=(int)NULL)</p><p><b> {</b></p><p> if(TempS.score<Min.sco
139、re) /* Min.score初始值為11 */</p><p><b> {</b></p><p> strcpy(Min.name,TempS.name);</p><p> Min.score=TempS.score;</p><p><b> }</b></p>&
140、lt;p><b> }</b></p><p> fclose(fp);</p><p> printf("the recore keeper is %s,guessed out in %d times\n",Min.name,Min.score);</p><p><b> }</b>&
141、lt;/p><p> SetRecord()</p><p><b> {</b></p><p> player Pro;</p><p><b> FILE *fp;</b></p><p> /* 給初始記錄賦值 */</p><p>
142、strcpy(Pro.name,"player");</p><p> Pro.score=10;</p><p> /* 初始化文件,即創(chuàng)建文件,寫入第一條記錄 */</p><p> if((fp=fopen("record","wb"))==NULL)</p><p>&
143、lt;b> {</b></p><p> printf("file open error\n");</p><p><b> return;</b></p><p><b> }</b></p><p> if(fwrite(&Pro,size
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)--猜數(shù)字游戲
- c語(yǔ)言課程設(shè)計(jì)--猜數(shù)字游戲
- c語(yǔ)言課程設(shè)計(jì)---猜數(shù)字游戲報(bào)告
- c語(yǔ)言程序課程設(shè)計(jì)-猜數(shù)字游戲
- 《c語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)---猜數(shù)字游戲
- c語(yǔ)言課程設(shè)計(jì)----猜字游戲
- c語(yǔ)言課程設(shè)計(jì)--猜數(shù)游戲
- 猜數(shù)字游戲課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--猜數(shù)字游戲
- java課程設(shè)計(jì)——猜數(shù)字游戲
- c++猜單詞課程設(shè)計(jì)--——猜單詞游戲
- android課程設(shè)計(jì)報(bào)告--猜數(shù)字小游戲
- c++課程設(shè)計(jì)報(bào)告--猜數(shù)游戲
- 猜單詞游戲c++課程設(shè)計(jì)報(bào)告
- android課程設(shè)計(jì)報(bào)告--猜數(shù)字小游戲.doc
- c語(yǔ)言課程設(shè)計(jì)-數(shù)組游戲
- c語(yǔ)言小游戲課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告---游戲設(shè)計(jì)
- 設(shè)計(jì)一個(gè)gui猜數(shù)字游戲程序課程設(shè)計(jì)
- 猜數(shù)字課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論