出圈游戲1 c++程序設(shè)計報告書_第1頁
出圈游戲1 c++程序設(shè)計報告書_第2頁
出圈游戲1 c++程序設(shè)計報告書_第3頁
出圈游戲1 c++程序設(shè)計報告書_第4頁
出圈游戲1 c++程序設(shè)計報告書_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

河北聯(lián)合大學(xué)2012-2013第2學(xué)期《軟件設(shè)計基礎(chǔ)-C++》課程設(shè)計報告設(shè)計名稱:出圈游戲1姓名:張子超學(xué)號:201214670112專業(yè)班級:12軋一學(xué)院:冶金與能源學(xué)院設(shè)計時間:2013年5月10日至2013年7月1日設(shè)計地點(diǎn):學(xué)校機(jī)房成績:75成績:75指導(dǎo)教師簽字:年月日《軟件設(shè)計基礎(chǔ)-C++》課程設(shè)計報告第2頁,共14頁目錄1.課程設(shè)計目的 32.課程設(shè)計任務(wù)與要求 33.課程設(shè)計說明書 54.課程設(shè)計成果 75.程序調(diào)試過程 116.設(shè)計問題的不足和改進(jìn)方案 117.課程設(shè)計心得 128.參考文獻(xiàn) 13

1.課程設(shè)計目的《軟件設(shè)計基礎(chǔ)-C++》課程設(shè)計是這門課程的實踐性教學(xué)環(huán)節(jié)之一,本次設(shè)計結(jié)合實際應(yīng)用的要求,使課程設(shè)計既覆蓋C++的知識點(diǎn),又接近工程實際需要。目的是通過課程設(shè)計的綜合訓(xùn)練,培養(yǎng)學(xué)生實際分析問題、解決問題的能力,以及編程和動手能力,最終目標(biāo)是通過課程設(shè)計這種形式,幫助學(xué)生系統(tǒng)掌握C++這門課程的主要內(nèi)容,養(yǎng)成良好的編程習(xí)慣,更好的完成教學(xué)任務(wù)。2.課程設(shè)計任務(wù)與要求:要求:本次課程設(shè)計利用《軟件設(shè)計基礎(chǔ)-C++》課程中所學(xué)到的編程知識和編程技巧,完成具有一定難度和工作量的程序設(shè)計題目,幫助學(xué)生掌握編程、調(diào)試的基本技能,獨(dú)立完成所布置的任務(wù)。要求:1、對系統(tǒng)進(jìn)行功能需求分析2、設(shè)計合理的數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)框架3、編程簡練,程序功能齊全,能正確運(yùn)行4、說明書、流程圖要清楚5、課題完成后必須按要求提交課程設(shè)計報告任務(wù):問題描述:假設(shè)有n個人按順時針圍成一圈,一開始任選一個正整數(shù)作為報數(shù)上限值m,從第一個人開始按順時針方向自1開始報數(shù),報到m時停止報數(shù)。報到m的人出列,然后從他原來所在的順時針方向的下一個開始重新從1報數(shù),報到m時停止報數(shù)并出列。如此下去,直至所有的人全部出列為止。要求按他們出列的順序輸出他們原來的序號和名字。問題的解決方案:本課程設(shè)計任務(wù)描述中,要實現(xiàn)從鍵盤隨機(jī)輸入這兩個數(shù)據(jù)完成出圈游戲。因此,需要根據(jù)運(yùn)行時的實際要求,分配適當(dāng)大小的存儲區(qū)。當(dāng)回答參加游戲的人數(shù)之后,即可為程序分配一塊內(nèi)存塊,用來存入游戲者的名字和序號。但在計算中,需要將點(diǎn)到的人出圈,這是通過將對象的序號均變?yōu)?實現(xiàn)的?;疽螅海?)在頭文件中聲明SeqList類。(2)源代碼程序要求必要的注釋。(3)每個模塊存入一個文件中,以多文件模式存儲并調(diào)試程序。創(chuàng)新要求在基本要求達(dá)到后,可以進(jìn)行創(chuàng)新設(shè)計,如使用動態(tài)存儲管理(使用動態(tài)數(shù)組接收輸入,并且參加游戲的人數(shù)和間隔可變)。3.課程設(shè)計說明書=1\*GB2⑴概要設(shè)計模塊說明:在我設(shè)計的程序中一共包括SeqList聲明,接收模塊,檢查模塊,循環(huán)模塊,和輸出模塊。最終是通過Joseph函數(shù)實現(xiàn)出圈。模塊結(jié)構(gòu)圖:SeqListSeqList聲明接收模塊檢查模塊循環(huán)模塊循環(huán)模塊輸出模塊Joseph函數(shù)=2\*GB2⑵詳細(xì)設(shè)計1.總體流程圖:Main函數(shù)用SeqList類創(chuàng)建對象調(diào)用JosephMain函數(shù)用SeqList類創(chuàng)建對象調(diào)用Joseph函數(shù)實現(xiàn)出圈輸出提示要求鍵盤輸入數(shù)字用用game1()形成鏈表2.各功能模塊流程圖(1)調(diào)用Joseph實現(xiàn)出圈接收鍵盤上的數(shù)字接收鍵盤上的數(shù)字檢查輸入的人數(shù)和間隔數(shù)是否符合要求檢查輸入的人數(shù)和間隔數(shù)是否符合要求輸出相應(yīng)的提示,并要求正確輸入輸出相應(yīng)的提示,并要求正確輸入 不符合要求 符 依舊不符合 合 符合輸出最后一個的相關(guān)信息循環(huán)報數(shù)出圈直至留下一個人,并且每次出圈都輸出輸出最后一個的相關(guān)信息循環(huán)報數(shù)出圈直至留下一個人,并且每次出圈都輸出(2)其余模塊均為簡單語句,無需細(xì)分,只需注意語法和格式即可4.課程設(shè)計成果程序源代碼#include<iostream>#include<string.h>usingnamespacestd;//類聲明用的是雙鏈表classSeqList{ intnum;charname[10];public: SeqList*next;//對象的下一個對象的指針SeqList*pre;//對象的前一個對象的指針intGetNum();//得到私有數(shù)據(jù)序號voidDispName();//從鏈表中除去選中的那個人char*GetName();//得到私有數(shù)據(jù)姓名voidSetNum(inta);//設(shè)置私有數(shù)據(jù)序號voidSetName(charb[10]);//設(shè)置私有數(shù)據(jù)姓名~SeqList(){}//析構(gòu)函數(shù),其實在這里寫不寫都行};//類成員函數(shù)定義intSeqList::GetNum(){ returnnum;}//讀數(shù)據(jù)成員voidSeqList::DispName(){ pre->next=next;next->pre=pre;//printf("%d%s\n",num,name);}char*SeqList::GetName(){ returnname;}//讀數(shù)據(jù)成員voidSeqList::SetNum(inta){ num=a;}voidSeqList::SetName(charb[10]){ strncpy(name,b,10);}//主函數(shù)的定義voidgame1();voidJoseph(SeqList*p,intlength);intmain(){ game1();return0;}//建立成員的雙鏈表過程,輸入成員并將其鏈接成一個雙鏈表,便于刪除和添加對象voidgame1()//游戲的輸入成員工程{ intn,i,m;intnum1;chars[10];cout<<"請輸入總?cè)藬?shù)和出圈數(shù)"<<endl;cin>>n>>m;while(n<=0||m<=0){cout<<"請輸入正確的總?cè)藬?shù)和出圈數(shù)"<<endl;cin>>n>>m;}SeqList*head,*p,*q;//聲明鏈表所需的指針head=(SeqList*)newSeqList;//頭指針cout<<"請輸入序號和姓名"<<endl;cin>>num1>>s;head->SetNum(num1);//頭指針?biāo)笇ο蟮慕⑦^程head->SetName(s);head->pre=NULL;head->next=NULL;p=head;for(i=1;i<n;i++)//指針其余部分的建立 {q=(SeqList*)newSeqList;p->next=q;cin>>num1>>s;q->SetNum(num1);q->SetName(s);q->pre=p;q->next=NULL;p=q;}p->next=head;head->pre=p;Joseph(head,m);//函數(shù)調(diào)用刪除對象deleteq;}voidJoseph(SeqList*q,intlength)//游戲的剔除并輸出對象的過程{cout<<"出圈順序"<<endl; inti,j;SeqList*p=q;for(i=0;p->next!=p;i++){ if(i==0) j=1; else j=0; for(;j<length;j++)//遍歷對象 { p=p->next; } cout<<p->GetNum()<<""<<p->GetName()<<endl;//輸出所選擇的對象的信息 p->DispName();//刪除所選擇的對象 } deleteq;}運(yùn)行過程5.程序調(diào)試過程寫出程序調(diào)試步驟,及遇到的問題。調(diào)試程序遇到的問題第一次:忘記兩個分號解決辦法:加分號第二次:變量num1未定義解決辦法:在變量聲明部分加intnum16.設(shè)計問題的不足和改進(jìn)方案不足:(1)沒有出圈游戲者具體信息的輸出改進(jìn)方案:類中加幾個屬性要求用戶輸入寫相關(guān)輸出方法出圈時輸出運(yùn)行一次程序不能做多次游戲改進(jìn)方案:main中加循環(huán),mian最開始要求輸入游戲次數(shù)t然后用for(intj=0;j<t;j++)循環(huán)7.課程設(shè)計心得回顧起此次課程設(shè)計,至今我仍感慨頗多,的確,自從拿到題目到完成整個編程,從理論到實踐,可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨(dú)立思考的能力。在設(shè)計的過程中遇到問題,這畢竟獨(dú)立做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體,類和函數(shù)……通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。此次,程序的設(shè)計和創(chuàng)建,經(jīng)歷了平時在課堂中和考試中,決不會有的重重難題和問題。而這些問題,又都是課本上很少提到的、更深一層的知識領(lǐng)域和應(yīng)用領(lǐng)域。這些問題,并不是我們平時只靠課本,就可以輕易解決的?!皩嵺`是檢驗真理的唯一標(biāo)準(zhǔn)”。沒有實踐,就不會發(fā)現(xiàn)和深刻體會它的真實所在。只有通過檢驗的真理,在自己的心里,才會認(rèn)可它的真實性。面向?qū)ο蟪绦蛟O(shè)計的完成,使我們懂得了真理的重要性,理論和實際的相結(jié)合,才能真正把握所學(xué)和所掌握的知識。整體地評價這次課程設(shè)計,我認(rèn)為收獲很大,正如上面所說的那樣,通過課程設(shè)計,既復(fù)習(xí)了以前的舊知識,又學(xué)到了一些新的知識;設(shè)計增強(qiáng)了我們用所學(xué)知識去解決具體問題的能力,進(jìn)一步培養(yǎng)了我們獨(dú)立思考問題和解決問題的能力。理論的擁有并不能代表我們的實力和能力,一切的事件和其成功都是理論和實踐的結(jié)合。總之,我們學(xué)習(xí)和掌握的知識,只有通過實際應(yīng)用,才能真正的理解和掌握,才能更好的去應(yīng)用。這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在同學(xué)的幫助下,終于游逆而解。同時,在其他同

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論