




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 計算機(jī)學(xué)院計算機(jī)科學(xué)與技術(shù)專業(yè)程序設(shè)計綜合課程設(shè)計報告 (2011/2012學(xué)年 第一學(xué)期)學(xué)生姓名: 學(xué)生班級: 學(xué)生學(xué)號: 指導(dǎo)教師: 2011年12月30日猜單詞游戲目錄第一章 課程設(shè)計的目的和要求.11.1 課程設(shè)計的目的11.2 課程設(shè)計的目標(biāo)11.3 課程設(shè)計要求2第二章 課程設(shè)計任務(wù)內(nèi)容32.1 課程設(shè)計題目32.2功能需求32.3系統(tǒng)模塊圖4第三章 詳細(xì)設(shè)計說明53.1 主函數(shù)的流程圖53.2 編碼與調(diào)試6第四章 軟件使用說明及運(yùn)行結(jié)果84.1使用說明84.2 運(yùn)行結(jié)果9第五章 課程設(shè)計心得與體會14附錄1:參考文獻(xiàn)16附錄2:程序清單1728 / 31文檔可自由編輯打印第一
2、章 課程設(shè)計的目的和要求1.1課程設(shè)計的目的C+語言課程設(shè)計的主要目的是培養(yǎng)學(xué)生綜合運(yùn)用C+程序設(shè)計課程所學(xué)到的知識,編寫C+程序解決實際問題的能力,以及嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度和良好的程序設(shè)計習(xí)慣。通過課程設(shè)計的訓(xùn)練,學(xué)生應(yīng)該能夠了解程序設(shè)計的基本開發(fā)過程,掌握編寫、調(diào)試和測試C+語言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計的基本方法。C+語言程序設(shè)計的主要任務(wù)時要求學(xué)生遵循軟件開發(fā)過程的基本規(guī)范,運(yùn)用結(jié)構(gòu)化程序設(shè)計的方法,按照課程設(shè)計的題目要求,分析、設(shè)計、編寫、調(diào)試和測試C+語言程序及編寫設(shè)計報告。本次課程設(shè)計是通過設(shè)計一個較為簡單的猜單詞小游戲來進(jìn)一步熟悉C+中有關(guān)各種知識的運(yùn)用與掌握。了解系統(tǒng)開
3、發(fā)的需求分析、模塊分析、程序流程圖、編碼測試、模塊組裝與整體調(diào)試的全過程,加深對C+的理解與Vsual C+環(huán)境的使用;逐步熟悉程序設(shè)計的方法,并養(yǎng)成良好的編程習(xí)慣,進(jìn)一步培養(yǎng)完善的C+編程設(shè)計思維,為以后進(jìn)行軟件編程等深入學(xué)習(xí)打下一個牢固基礎(chǔ)。1.2課程設(shè)計的目標(biāo)本課程設(shè)計的目標(biāo):1. 鞏固和加深學(xué)生對C+語言課程的基本知識的理解和掌握;2. 掌握C+語言編程和程序調(diào)試的基本技能;3. 掌握利用C+語言進(jìn)行軟件設(shè)計的方法;4. 提高書寫程序設(shè)計說明文檔的能力;5. 提高運(yùn)用C+語言解決實際問題的能力。1.3課程設(shè)計要求基本要求:1.題目:設(shè)計一個猜單詞的小游戲程序;2.了解該程序開發(fā)的相關(guān)背
4、景;3.參考相關(guān)書籍學(xué)習(xí)課程設(shè)計的基本知識;4.清楚所開發(fā)程序的各個相關(guān)功能,以便順利開發(fā)程序;5.對系統(tǒng)功能模塊進(jìn)行分析,寫出設(shè)計說明文檔;6.設(shè)計完成的程序要便于操作和使用;7.對自己所設(shè)計的程序進(jìn)行調(diào)試,并不斷完善;8.在設(shè)計過程中熟練掌握軟件編程的相關(guān)知識;9.詳細(xì)體會并記錄相關(guān)過程,并將心得體會寫在課程設(shè)計報告中;10.設(shè)計完成后提交課程設(shè)計報告。第二章 課程設(shè)計任務(wù)內(nèi)容2.1 課程設(shè)計題目猜單詞游戲。2.2功能需求用C+實現(xiàn)猜單詞游戲。該系統(tǒng)主要有以下功能:1、 提供可操作的主菜單:輸出4個菜單,用于顯示若干個可選的功能選項。根據(jù)玩家輸入的選項來運(yùn)行不同的功能,運(yùn)行不同的函數(shù)。2、
5、 進(jìn)行文本信息的載入:從指定的文件中以一維數(shù)組形式加載游戲玩家記錄信息這里的文件是在編譯時就已經(jīng)指定好的、存在的文本,需設(shè)計者預(yù)先自己建立好。3、 設(shè)置游戲功能:以客戶輸入的猜單詞游戲次數(shù)和猜的單詞數(shù)目進(jìn)行游戲功能的個性化修改。4、 猜詞過程:隨機(jī)抽取單詞,對每個單詞,系統(tǒng)根據(jù)謎底單詞長度在屏幕上顯示相應(yīng)個數(shù)'-'。玩家輸入一個字母進(jìn)行猜測,如果這個字母不在單詞中,系統(tǒng)提示玩家不對;如果猜對字母,則替換單詞中相應(yīng)位置的“-”。直到玩家在規(guī)定的次數(shù)內(nèi)猜出了單詞或者超過次數(shù)游戲失敗。顯示玩家每個單詞猜對與猜錯次數(shù)等統(tǒng)計信息。如果玩家猜出單詞,計算成績,滿足進(jìn)入記錄前五名的記錄寫入到
6、記錄文件中覆蓋原紀(jì)錄。詢問玩家是否開始新一輪猜詞,如果玩家選“否”,則系統(tǒng)退到外面的菜單。5、 查看更新過的游戲排行榜:退回主界面選3,打開之前進(jìn)行游戲時重新寫入過的記錄文件。2.3系統(tǒng)模塊圖以下是猜單詞游戲的模塊圖:猜單詞游戲設(shè)置游戲進(jìn)行游戲查看排行榜游戲次數(shù)猜單詞次數(shù)圖2-1 系統(tǒng)模塊圖第三章 詳細(xì)設(shè)計說明3.1 主函數(shù)的流程圖輸入字母字母是否在單詞中提示錯誤YN替換對應(yīng)單詞計入成績查詢玩家數(shù)據(jù)追加玩家數(shù)據(jù)結(jié)束開始圖3-1主函數(shù)流程圖3.2碼與調(diào)試1、主要結(jié)構(gòu)體/類:struct Playerchar name20;/玩家姓名 int right; /猜對的字母int wrong; /猜錯
7、的字幕int time; /猜單詞的時間;class ByTimeprivate:clock_t start;public:ByTime()start=clock(); /開始計時ByTime(); /析構(gòu)函數(shù)void Endtime()clock_t end;end=clock(); /結(jié)束計時times=(end-start)/CLOCKS_PER_SEC; /計算時間cout<<"共用時:"<<times<<"秒"<<endl; /輸出時間;2、主要函數(shù):(參考文獻(xiàn)1)(1)文件打開函數(shù)void Op
8、enWord string20012):設(shè)計思想一致,用于打開單獨(dú)儲存的單詞庫及游戲記錄txt文件。(2)設(shè)置函數(shù)void set(),void Setgame:用于設(shè)置游戲中猜單詞的次數(shù)與數(shù)目。(3)“玩游戲”函數(shù):void PlayGame (char wordlist20012):用于對玩家輸入的字母進(jìn)行處理與判斷(4)“開始游戲”函數(shù)void StartGame (char wordlist20012):將OpenWordFile (str); Change (wordlist,str);PlayGame(wordlist)等函數(shù)統(tǒng)一調(diào)用(5)記錄顯示函數(shù)void Show():用于將
9、寫入過新紀(jì)錄的文件顯示到屏幕上。(6)記錄讀入函數(shù)void Record():將最新的游戲成績記錄通過文件讀寫,從內(nèi)存中保存到原文本文件中第四章 軟件使用說明及運(yùn)行結(jié)果4.1使用說明開始執(zhí)行程序。根據(jù)數(shù)據(jù)結(jié)構(gòu)、函數(shù)功能和主要的流程圖,進(jìn)行錄入源代碼操作。在編碼時,注意代碼的書寫規(guī)范,包括命名慣例、注釋、分隔和縮進(jìn)等,這樣使程序?qū)游銮逦?,增?qiáng)可讀性和可維護(hù)性。 編碼操作完成后,先靜態(tài)檢查一下有沒有語法錯誤,然后進(jìn)行編譯,更深一步檢查語法錯誤。待編譯通過時,運(yùn)行程序,觀察是否能夠正常運(yùn)行,如果有問題,再去修改源程序,直至達(dá)到了預(yù)期的效果。4.2運(yùn)行結(jié)果1. 顯示的主菜單界面:2.請輸入選擇: 3.
10、請輸入單詞數(shù):4. 請輸入你的姓名: 6. 開始游戲7. 成績排行:8. 退出程序:第五章 課程設(shè)計心得與體會程序設(shè)計養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計算機(jī)應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握計算機(jī)開發(fā)技術(shù)是十分重要的?;仡櫰鸫舜握n程設(shè)計,至今我仍感慨頗多,的確,自從拿到題目到完成整個編程,從理論到實踐,在整整一個星期的日子里,可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計
11、使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨(dú)立思考的能力。在設(shè)計的過程中遇到問題,這畢竟獨(dú)立做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在謝老師的辛勤指導(dǎo)下,終于游逆而解。同時,在李老師的身上我學(xué)得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表
12、示忠心的感謝!最后,很感激學(xué)校給了我們這次動手實踐的機(jī)會,讓我們學(xué)生有了一個共同學(xué)習(xí),增長見識,開拓視野的機(jī)會。也感謝老師們對我們無私忘我的指導(dǎo),我會以這次課程設(shè)計大賽作為對自己的激勵,繼續(xù)學(xué)習(xí)。附錄1:參考文獻(xiàn)1譚浩強(qiáng)編著:C+程序設(shè)計,北京:清華大學(xué)出版社,20042楊秀金編著:數(shù)據(jù)結(jié)構(gòu)(c+版),北京:人民郵電出版社,2009.43湛為芳編著:C+程序設(shè)計技術(shù)習(xí)題解答和實驗指導(dǎo),北京:清華大學(xué)出版社,2009.10附錄2:程序清單源程序代碼#include <stdio.h>#include <stdlib.h>#include <string.h>
13、#include <time.h>#include <fstream.h>#include <conio.h>void OpenWord string20012);void PlayGame(char wordlist20012);void Change(char wordlist20012,char str20012);void StartGame (char wordlist20012);int round;void Set() printf("請輸入您想猜的單詞數(shù):");scanf("%d",&round
14、);struct Playerchar name20; int right;int wrong;int time;typedef struct Player Player;Player p5=1,"unknown",0,0,0,2,"unknown",0,0,0,3,"unknown",0,0,0,4,"unknown",0,0,0,5,"unknown",0,0,0;Player temp;int right=0,wrong=0;int times;class ByTimeprivate:cl
15、ock_t start;public:ByTime()start=clock();ByTime();void Endtime()clock_t end;end=clock();times=(end-start)/CLOCKS_PER_SEC;cout<<"共用時:"<<times<<"秒"<<endl; ;void OpenWordFile (char string20012)FILE *fp; char c; int i=0; int j=0; if(fp=fopen("word.txt&quo
16、t;,"r")=NULL) /讀文件 printf("單詞庫無法打開!n"); exit(0); elsec=fgetc(fp); while(c!=EOF) if(c!='n') stringij=c; j+; else i+; j=0; c=fgetc(fp); int guesstime=10;void SetGame ()printf("請輸入你想猜的次數(shù):");scanf("%d",&guesstime);void PlayGame (char wordlist20012)char
17、 guess; /存用戶打入的字母char guessword12;/存用戶打入的詞int l,j,k,f;int p=1,q=0,x=0,y=0;char WrongGuess12;int t=0;int flag=0; int c=1; /用來查看是否猜對所有字母srand(time(NULL);q=rand()%200;l=strlen(wordlistq); /求單詞長for(f=0;f<l;f+) /定義詞一空單詞,詞長與所選一樣guesswordf='-'guesswordl='0' /字符串結(jié)尾printf("%s",gu
18、essword);/打印與詞長相同的"-"for(k=1;k<=guesstime && c!=0;) /判斷是否猜完 flag = 0; printf("你還有%d次機(jī)會!n",guesstime-k+1);scanf(" %c",&guess);for(j=0;j<l;j+) /循環(huán)判斷單詞中是否有所輸入字母if(guesswordj='-' ) /判斷是否猜過這個字母if(wordlistqj=guess|wordlistqj-guess=32) /如果單詞中有這個字母gues
19、swordj=wordlistqj;/在空單詞中打入這個字母x+; flag = 1;else if(guesswordj=guess|guesswordj-guess=32) /如果猜過這個字母則提示(僅提示猜過的正確的字母)printf("你已經(jīng)輸入過這個字母了。n");break;if(flag = 0) /如果單詞中沒有這個字母WrongGuesst = guess ;t+;/guesswordj='-' /在空單詞中打入-printf("%s",guessword); if(x>y) y=x; elsek+; c=strc
20、mp(guessword,wordlistq); if(c=0)printf("nHow smart you are! 你成功猜出了這個單詞!n正確單詞就是:%s",wordlistq);right+;if(c!=0)printf("nSorry. 你已經(jīng)超過了規(guī)定的次數(shù),挑戰(zhàn)失敗了.n正確單詞是:%s",wordlistq);wrong+;printf("你猜對了%d個字母,猜錯了%d個字母。n",x,k-1);WrongGuesst = '0'printf("錯誤字母分別是%sn",WrongG
21、uess);void Change (char wordlist20012,char str20012)int i,j;for(i=0;i<200;i+)for(j=0;j<12;j+)wordlistij=strij; void Input()printf("請先輸入您的大名:");scanf("%s",);void Result()temp.right=right;temp.wrong=wrong;void Time()temp.time=times;void Compare()int i,j,k;for(i=0;i<6;i+)if
22、(temp.right>pi.right) for(j=5;j>i;j-)for(k=0;k<20;k+)k=k;pj.right=pj-1.right; pj.wrong=pj-1.wrong; pj.time=pj-1.time;for(k=0;k<20;k+)k=k;pi.right=temp.right;pi.wrong=temp.wrong;pi.time=temp.time;break;void Record()int i;FILE *fp;fp=fopen("record.txt",&quo
23、t;r+");if(!fp)printf("游戲記錄無法打開!");exit(1); fprintf(fp,"名次t姓名tt成績:猜對 or 猜錯)t時間(s)n");for(i=0;i<5;i+)fprintf(fp,"%dt%sttRight:%d Wrong:%dt%dn",i+1,,pi.right,pi.wrong,pi.time);fclose(fp);void Show()int i;FILE *fp;fp=fopen("record.txt","r"
24、);if(!fp)printf("游戲記錄無法打開!n");exit(1);fprintf(stdout,"名次t姓名tt成績(猜對 猜錯)t時間(s)n");for(i=0;i<5;i+)fprintf(stdout,"%dt%sttRight:%d Wrong:%dt%dn",i+1,,pi.right,pi.wrong,pi.time);fclose(fp);void StartGame (char wordlist20012)int p=1;while(p)int i; char play; ByTime
25、t; for(i=0;i<round;i+)char str20012=0; printf("請輸入你要猜的字母,每次一個,祝你好運(yùn)哦!n"); OpenWordFile (str); Change (wordlist,str); PlayGame(wordlist); t.Endtime(); temp.time=times; temp.right=right; temp.wrong=wrong;Compare();Record(); printf("是否再玩一次?(Y/N)n"); scanf(" %c",&play
26、); if(play!='n') continue; else break; printf("n");void Menu();void main()int p=1;Record();while(p) /使得猜完單詞或查看完排行榜后返回主菜單Menu();void Menu() int choice;char wordlist20012;system("title 猜字母游戲A small game to guess a certain word");system("color f2");printf("n");printf(" * 猜單詞游戲 * n");printf(" A small game to guess a certain word. Good Luck! n");printf("n");printf("
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 日本企業(yè)協(xié)議書
- 車輛包車租車合同協(xié)議
- 運(yùn)輸木材協(xié)議合同協(xié)議
- 《辦公室管理》課件
- 變更撫養(yǎng)權(quán)協(xié)議書
- 房地產(chǎn)公司聯(lián)建協(xié)議書
- 車輛的買賣協(xié)議書
- 超市禮品采購合同協(xié)議
- 送材料合同協(xié)議
- 顯失公平協(xié)議書
- 包裝、搬運(yùn)和儲存管理辦法
- 當(dāng)代世界經(jīng)濟(jì)與政治 第八版 課件 第八章 當(dāng)今時代主題與建立國際新秩序
- MOOC 移動通信-河海大學(xué) 中國大學(xué)慕課答案
- 中國女性文化智慧樹知到期末考試答案章節(jié)答案2024年湖南師范大學(xué)
- 數(shù)字貿(mào)易學(xué) 課件 第21、22章 數(shù)字自由貿(mào)易與數(shù)字貿(mào)易壁壘、數(shù)字貿(mào)易規(guī)則構(gòu)建與WTO新一輪電子商務(wù)談判
- DB6105-T 194-2023 家政服務(wù)機(jī)構(gòu)經(jīng)營管理規(guī)范
- 第五版、急危重癥護(hù)理學(xué)實踐與學(xué)習(xí)指導(dǎo)附有答案
- 中小學(xué)必背飛花令詩詞-(春、月、風(fēng)、花、山、江、人、日、動物、顏色、數(shù)字)
- 幻想在天空飛翔混聲三部合唱譜
- 旅客列車客運(yùn)乘務(wù) 第四版 課件 第三章 旅客列車乘務(wù)作業(yè)
- 雙方協(xié)商一致解除勞動關(guān)系合同
評論
0/150
提交評論