《面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))》報(bào)告解析(共15頁(yè))
《《面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))》報(bào)告解析(共15頁(yè))》由會(huì)員分享,可在線閱讀,更多相關(guān)《《面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))》報(bào)告解析(共15頁(yè))(15頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院 計(jì)算機(jī)類(lèi) 課程設(shè)計(jì)報(bào)告 課程名稱: 面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì)) 課題名稱: 猜數(shù)字游戲 姓 名: 學(xué) 號(hào): 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 年 級(jí): 2012級(jí) 指導(dǎo)教師: 職 稱: 講師 2013年11月 專心---專注---專業(yè) 面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))成績(jī)?cè)u(píng)定表 評(píng)分項(xiàng)目 分值 得分 程序(系統(tǒng)) 原創(chuàng)性 15 程序功能 25 代碼質(zhì)量(健壯
2、性和可擴(kuò)展性) 20 核心代碼和功能模塊注釋 10 設(shè)計(jì)報(bào)告 課題來(lái)源&任務(wù)描述 5 系統(tǒng)設(shè)計(jì) 10 代碼編寫(xiě)與實(shí)現(xiàn)結(jié)果說(shuō)明 10 團(tuán)隊(duì)合作能力 分工協(xié)作&聯(lián)合研發(fā) 5 成績(jī)總計(jì) 指導(dǎo)老師簽字: 目 錄 1. 課題來(lái)源 該作品為原創(chuàng)。 課題靈感是能否做一個(gè)小游戲,尋找了很多小游戲比如俄羅斯方塊等,發(fā)現(xiàn)其太復(fù)雜以目前的水平無(wú)法完成,于是就選擇了一個(gè)比較簡(jiǎn)單的猜數(shù)字游戲,編寫(xiě)益智類(lèi)的游戲可以讓我們?nèi)粘I钪凶约菏褂脕?lái)達(dá)到增加樂(lè)趣的作用。 猜數(shù)字游戲
3、的原游戲規(guī)則:通常由兩個(gè)人玩,一方出數(shù)字,一方猜。出數(shù)字的人要想好一個(gè)沒(méi)有重復(fù)數(shù)字的4位數(shù),不能讓猜的人知道。猜的人就可以開(kāi)始猜。每猜一個(gè)數(shù)字,出數(shù)者就要根據(jù)這個(gè)數(shù)字給出幾A幾B,其中A前面的數(shù)字表示位置正確的數(shù)的個(gè)數(shù),而B(niǎo)前的數(shù)字表示數(shù)字正確而位置不對(duì)的數(shù)的個(gè)數(shù)。 如正確答案為 5234,而猜的人猜 5346,則是 1A2B,其中有一個(gè)5的位置對(duì)了,記為1A,而3和4這兩個(gè)數(shù)字對(duì)了,而位置沒(méi)對(duì),因此記為 2B,合起來(lái)就是 1A2B。 接著猜的人再根據(jù)出題者的幾A幾B繼續(xù)猜,直到猜中(即 4A0B)為止。 原游戲規(guī)則是兩個(gè)人玩,于是我們想到了將規(guī)則改為人機(jī)對(duì)戰(zhàn),電腦出題玩家來(lái)猜。
4、2. 任務(wù)描述 猜數(shù)字游戲:產(chǎn)生隨機(jī)數(shù),統(tǒng)計(jì)完全猜中的數(shù)字的個(gè)數(shù)以及統(tǒng)計(jì)猜中但位置錯(cuò)誤數(shù)字的個(gè)數(shù),并給出提示。最后計(jì)算積分。此程序體現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的繼承性和封裝性。 2.1. 課題的總體結(jié)構(gòu) contrast -A:int -B:int -n1:int -n2:int -n3:int -n4:int +setNum():void +count():void +getA():int +getB():int +setA(int a):void score -s1:int -s2:int -s3:int +score(): +getS1():in
5、t +getS2():int +getS3():int +setS1(int b1):void +setS2(int b2):void +setS3(int b3):void 類(lèi)層次結(jié)構(gòu)圖: randNumber -num2:int -num3:int -num4:int -ran():int +randNum():void +getnum1():int +getnum2():int +getnum3():int +getnum4():int 程序有三個(gè)類(lèi), 其中randNumber類(lèi)用來(lái)產(chǎn)生隨機(jī)數(shù), contrast類(lèi)用來(lái)做對(duì)比并得出猜數(shù)字的結(jié)果
6、, score類(lèi)用來(lái)讀取文件內(nèi)容并統(tǒng)計(jì)分?jǐn)?shù), 主函數(shù)進(jìn)行循環(huán)輸入猜數(shù)字,并將結(jié)果輸入文件。 讀取文件信息 程序的功能結(jié)構(gòu)圖: 猜數(shù)字 隨機(jī)數(shù)的產(chǎn)生 輸入所猜測(cè)的數(shù)據(jù) 判斷正誤,給出提示 計(jì)算積分 更新文件信息 2.2. 核心功能模塊與類(lèi)設(shè)計(jì) 采用表格的形式,按照類(lèi)在課題中的作用,列出核心類(lèi)的功能定義和主要函數(shù)接口。 randNumber類(lèi) 實(shí)現(xiàn)答案所需的隨機(jī)數(shù)的產(chǎn)生 randNum():void//制造隨機(jī)數(shù) getnum1():int//獲取隨機(jī)數(shù)的第一位 getnum2():int//獲取隨機(jī)數(shù)的第二位 getnum3
7、():int//獲取隨機(jī)數(shù)的第三位 getnum4():int//獲取隨機(jī)數(shù)的第四位 contrast類(lèi) 核心類(lèi),實(shí)現(xiàn)猜數(shù)字游戲主要玩法的設(shè)計(jì) setNum():void//用于設(shè)置用戶輸入的數(shù)據(jù) count():void//統(tǒng)計(jì)幾A幾B getA():int//獲取A的值 getB():int//獲取B的值 setA(int a):void//設(shè)置A的值 score類(lèi) 用于顯示和統(tǒng)計(jì)分?jǐn)?shù) score()://從文件獲取排行榜數(shù)據(jù)并顯示 getS1():int getS2():int getS3():int//獲取排行榜積分 setS1(int b1):voi
8、d setS2(int b2):void setS3(int b3):void//更改排行榜 2.3. 任務(wù)分工與工作量說(shuō)明 成員名字 任務(wù)分工 工作量(%) 韓澤宇 (1) 程序的初期設(shè)計(jì)制作 (2) 對(duì)積分統(tǒng)計(jì)顯示錯(cuò)誤的BUG進(jìn)行修復(fù),對(duì)循環(huán)的條件進(jìn)行改變。 (3) 增加了文件保存功能,記錄最高分并保存至文件 (4) 程序BUG測(cè)試及調(diào)試 40% 陳智杰 (1)增加了變量對(duì)猜數(shù)字的次數(shù)進(jìn)行限制,使得游戲更有挑戰(zhàn)性 (2)增加了在猜對(duì)數(shù)字時(shí)的(Y/N)退出功能,并能在退出時(shí)統(tǒng)計(jì)分?jǐn)?shù) (3)程序BUG測(cè)試及調(diào)試 30% 鐘揚(yáng) (1)程序的外觀界面設(shè)計(jì)
9、 (2)增加了對(duì)輸入數(shù)字的限制,限定輸入的數(shù)字每位必須各不相同,加強(qiáng)了程序健壯性 (3)增加了積分統(tǒng)計(jì) (4)程序BUG測(cè)試及調(diào)試 30% 3. 程序(系統(tǒng))詳細(xì)設(shè)計(jì) 按照程序(系統(tǒng))的總體結(jié)構(gòu),詳細(xì)介紹程序中各個(gè)類(lèi)和函數(shù)的設(shè)計(jì)思想和實(shí)現(xiàn)方法,并以圖的方式說(shuō)明程序的流程圖。 randNumber類(lèi)實(shí)現(xiàn)答案所需的隨機(jī)數(shù)的產(chǎn)生 contrast類(lèi)為核心類(lèi),繼承至randNumber類(lèi),實(shí)現(xiàn)猜數(shù)字游戲主要玩法的設(shè)計(jì) 開(kāi)始 讀取并顯示排行榜記錄 產(chǎn)生隨機(jī)數(shù)字
10、 輸入所猜的數(shù)字 與生成的隨機(jī)數(shù)完全相同? 輸出猜數(shù)字的提示(?A?B) N Y 猜數(shù)字的機(jī)會(huì)減少一次 輸出“你猜對(duì)了” 次數(shù)耗盡? N 計(jì)算并打印積分 Y Y 是否繼續(xù)? N 游戲結(jié)束 統(tǒng)計(jì)總分,判斷是否上榜 更新排行榜 4. 程序(系統(tǒng))實(shí)現(xiàn)與測(cè)試 (1) 給出典型的程序(系統(tǒng))執(zhí)行結(jié)果圖。 開(kāi)始界面: 猜數(shù)字界面: 猜對(duì)時(shí)的顯示界面: 破紀(jì)錄時(shí)的顯示界面: 更新后的排行榜: (2
11、) 程序(系統(tǒng))實(shí)現(xiàn)的功能 隨機(jī)數(shù)字的產(chǎn)生:產(chǎn)生四個(gè)隨機(jī)數(shù)字分別代表四位數(shù)的四個(gè)位 數(shù)字正誤判斷:給出既猜對(duì)位置也猜對(duì)的數(shù)字的個(gè)數(shù)以及猜對(duì)但是位置不對(duì)的數(shù)字的位置。 積分計(jì)算:猜錯(cuò)按0分算,一次就猜對(duì)100分,兩次猜對(duì)90分,三次80分……以此類(lèi)推,最后一次猜對(duì)得20分。 記錄成績(jī)的功能:給出排行榜記錄前三名的成績(jī),保存在score.txt文件中。 (3) 根據(jù)課題的特性,列出帶有詳細(xì)注釋的核心功能模塊或類(lèi)代碼; 源程序代碼: 隨機(jī)數(shù): class randNumber{ int num1; int num2; int num3; int num4; int
12、 ran(){
srand( (unsigned)time( NULL ) );
for(int i=0;i<10;i++){
return (rand()%10);
}
}//返回0-9的一個(gè)隨機(jī)數(shù)
public:
void randNum(){
cout<<"正在產(chǎn)生隨機(jī)數(shù)..."< 13、 num2=ran();
}
while(num2==num1);
do{
num3=ran();
}
while(num3==num1||num3==num2);
do{
num4=ran();
}
while(num4==num1||num4==num2||num4==num3);
};//產(chǎn)生四個(gè)不同的隨機(jī)數(shù)
int getnum1(){
return num1;
}
int getnum2(){
return num2;
}
int getnum3(){
return num3 14、;
}
int getnum4(){
return num4;
}
};//獲取隨機(jī)數(shù)的方法
用于比較:
class contrast:public randNumber{
int A;
int B;//用于記錄結(jié)果(幾A幾B)
int n1;
int n2;
int n3;
int n4;//(用于記錄輸入的數(shù)字)
public:
void setNum(int a1,int a2,int a3,int a4){
n1=a1;
n2=a2;
n3=a3;
n4=a4;
}
void count(){
15、A=0;
B=0;//每一次都重置A、B
if(n1==getnum1()){A++;}
if(n2==getnum2()){A++;}
if(n3==getnum3()){A++;}
if(n4==getnum4()){A++;}//統(tǒng)計(jì)完全猜中的數(shù)字的個(gè)數(shù)(A)
if(n1==getnum2()||n1==getnum3()||n1==getnum4()){B++;}
if(n2==getnum1()||n2==getnum3()||n2==getnum4()){B++;}
if(n3==getnum2()||n3==getnum1( 16、)||n3==getnum4()){B++;}
if(n4==getnum2()||n4==getnum3()||n4==getnum1()){B++;}//統(tǒng)計(jì)猜中但位置錯(cuò)誤數(shù)字的個(gè)數(shù)(B)
}
int getA(){
return A;
}
int getB(){
return B;
}
void setA(int a){
A=a;
}
};
class score{
int s1;
int s2;
int s3;//用于記錄前三名積分
public:
int getS1(){
return s1;
}
17、 int getS2(){
return s2;
}
int getS3(){
return s3;
}//用于獲取積分的方法
void setS1(int b1){
s1=b1;
}
void setS2(int b2){
s2=b2;
}
void setS3(int b3){
s3=b3;
}//用于最后修改積分排名
score(){
s1=0;
s2=0;
s3=0;
FILE *fp;
fp=fopen("score.txt","r");//打開(kāi)文件
if(!fp){
c 18、out<<"當(dāng)前暫無(wú)積分排名"< 19、se(fp);
}
}
};
主函數(shù):
void main(){
score score;//從文件讀取并輸出上次成績(jī)
contrast number;
int s=0;//用于統(tǒng)計(jì)總分
do{
number.randNum();
int n1,n2,n3,n4;
int k=9;//用于統(tǒng)計(jì)剩余次數(shù)
do{
cout<<"請(qǐng)輸入您所猜的四位數(shù)字"< 20、|n2==n3||n2==n4||n3==n4){//當(dāng)輸入的數(shù)字中含有相同的數(shù)字
cout<<"請(qǐng)重新輸入正確格式的數(shù)字"< 21、mber.getA()==4){
cout<<"你猜對(duì)了"< 22、!='y'&&yn!='N'&&yn!='n');//當(dāng)輸入格式正確時(shí)退出循環(huán)
}
if(number.getA()!=4&&number.getA()!=-1){
cout<<"你還有"< 23、t<<"正確的數(shù)字為"< 24、s>score.getS2()&&s 25、;
FILE *stream;
stream = fopen( "score.txt", "w" );
fprintf( stream, "%d %d %d",score.getS1(),score.getS2(),score.getS3());//將成績(jī)寫(xiě)入文件
}
}
(4) 游戲開(kāi)始之前會(huì)產(chǎn)生一個(gè)隨機(jī)的4位數(shù)字,然后會(huì)讓玩家輸入自己猜的數(shù)字,在猜的數(shù)字為有重復(fù)的4位數(shù)或者不為4位數(shù)時(shí)會(huì)提示輸入數(shù)字錯(cuò)誤并返回重新輸入。
比如輸入錯(cuò)誤格式的數(shù)字后(數(shù)字中有兩個(gè)1,位數(shù)重復(fù))
結(jié)果提示重新輸入正確格式的數(shù)字
5. 分析與討論
程序提供了一個(gè)猜數(shù)字的游戲,程序解決了產(chǎn)生隨機(jī)數(shù),判斷猜中數(shù)字的位數(shù)、計(jì)算積分,保存成績(jī)的問(wèn)題。
但是在產(chǎn)生隨機(jī)數(shù)的方面處理不夠完善,隨機(jī)數(shù)產(chǎn)生耗時(shí)過(guò)長(zhǎng)。
在進(jìn)行此程序設(shè)計(jì)的過(guò)程中,發(fā)現(xiàn)我們還有很多方面不會(huì),必須一邊查書(shū)一邊進(jìn)行設(shè)計(jì),其中文件讀取和寫(xiě)入功能還用到了百度,下次進(jìn)行設(shè)計(jì)時(shí)會(huì)拓展自己的知識(shí)。
6. 結(jié)束語(yǔ)
進(jìn)行此課程設(shè)計(jì),讓我們發(fā)現(xiàn)自己很多的不足,也在設(shè)計(jì)的過(guò)程中進(jìn)行查詢,得到很多以前不會(huì)的知識(shí),并且發(fā)現(xiàn)團(tuán)隊(duì)合作的重要性,只有團(tuán)隊(duì)更好地合作才能寫(xiě)出更好,更精簡(jiǎn)的代碼。
- 溫馨提示:
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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第七章-透射電子顯微鏡
- 群落的結(jié)構(gòu)(課件)
- 焊接基礎(chǔ)知識(shí)
- 水文地質(zhì)學(xué)課件
- 某公司員工工傷安全管理規(guī)定
- 消防培訓(xùn)課件:安全檢修(要點(diǎn))
- 某公司安全生產(chǎn)考核與獎(jiǎng)懲辦法范文
- 安全作業(yè)活動(dòng)安全排查表
- 某公司危險(xiǎn)源安全辨識(shí)、分類(lèi)和風(fēng)險(xiǎn)評(píng)價(jià)、分級(jí)辦法
- 某公司消防安全常識(shí)培訓(xùn)資料
- 安全培訓(xùn)資料:危險(xiǎn)化學(xué)品的類(lèi)別
- 中小學(xué)寒假學(xué)習(xí)計(jì)劃快樂(lè)度寒假充實(shí)促成長(zhǎng)
- 紅色插畫(huà)風(fēng)輸血相關(guān)知識(shí)培訓(xùn)臨床輸血流程常見(jiàn)輸血不良反應(yīng)
- 14.應(yīng)急救援隊(duì)伍訓(xùn)練記錄
- 某公司各部門(mén)及人員安全生產(chǎn)責(zé)任制