《C++程序設(shè)計(jì)》課程設(shè)計(jì)-基于記錄的應(yīng)用程序設(shè)計(jì)_第1頁
《C++程序設(shè)計(jì)》課程設(shè)計(jì)-基于記錄的應(yīng)用程序設(shè)計(jì)_第2頁
《C++程序設(shè)計(jì)》課程設(shè)計(jì)-基于記錄的應(yīng)用程序設(shè)計(jì)_第3頁
《C++程序設(shè)計(jì)》課程設(shè)計(jì)-基于記錄的應(yīng)用程序設(shè)計(jì)_第4頁
《C++程序設(shè)計(jì)》課程設(shè)計(jì)-基于記錄的應(yīng)用程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1課程設(shè)計(jì)報(bào)告書《C++程序設(shè)計(jì)》課程設(shè)計(jì)學(xué)院專業(yè)數(shù)學(xué)與應(yīng)用數(shù)學(xué)(統(tǒng)計(jì)方向)教師評語教師簽名:日期:成績評定備注

基于記錄的應(yīng)用程序設(shè)計(jì)一、選題背景本課題應(yīng)解決的主要問題:編寫一個(gè)應(yīng)用程序?qū)崿F(xiàn)程序化教學(xué)應(yīng)達(dá)到的技術(shù)要求:該程序可以完成以下功能:向?qū)W生提問題;從學(xué)生處獲得答案;根據(jù)學(xué)生的答案繼續(xù)選擇下一個(gè)問題。本設(shè)計(jì)的指導(dǎo)思想:在程序中表示教學(xué)課程所需的信息;在設(shè)計(jì)階段,設(shè)計(jì)一個(gè)合適的數(shù)據(jù)結(jié)構(gòu);將數(shù)據(jù)文件使用的外部表示轉(zhuǎn)換為程序內(nèi)部表示;編寫程序?qū)?nèi)部數(shù)據(jù)庫進(jìn)行操作。二、方案論證(概要設(shè)計(jì))設(shè)計(jì)原理(理念):在老師所給的參考數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及函數(shù)原型設(shè)計(jì)的基礎(chǔ)上,略加修飾,填充函數(shù)原型的內(nèi)部結(jié)構(gòu),使得函數(shù)具備所需要的功能,最終能使程序?qū)崿F(xiàn)程序化教學(xué)。例如:voidReadQuestionText(ifstream&infile,questionT*q)這個(gè)函數(shù)將問題的文本讀入問題數(shù)據(jù)結(jié)構(gòu),這必須由調(diào)用才可分配。這個(gè)問題文本結(jié)束的標(biāo)志是EndMarker,即“”的標(biāo)記。voidReadAnswers(ifstream&infile,questionT*q)這個(gè)函數(shù)將問題答案的文本讀入答案數(shù)據(jù)結(jié)構(gòu)。voidAskQuestion(intnum)這個(gè)函數(shù)用于提出問題。voidWriteQuestionText(questionT*q)這個(gè)函數(shù)根據(jù)問題序號顯示問題題目內(nèi)容。voidFindWriteAnswer(stringans,questionT*q)這個(gè)函數(shù)用于查找與輸入答案匹配的內(nèi)容。三、過程論述(詳細(xì)設(shè)計(jì))1.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)*類型名:answerT,這個(gè)結(jié)構(gòu)提供空間給每個(gè)問題可能的答案structanswerT{stringans;intnextq;};定義answerT為結(jié)構(gòu)體類型,其中包括一個(gè)字符串變量ans和一個(gè)整型變量nextq,而ans用于儲存一個(gè)問題的一個(gè)答案,nextq用于儲存下一個(gè)問題的題號。nextq的儲存示意圖……ans的儲存示意圖*類型名:questionT,這個(gè)結(jié)構(gòu)提供空間給問題和相應(yīng)的答案structquestionT{stringqtext[MaxLinesPerQuestion+1];answerTanswers[MaxAnswersPerQuestion];intnAnswers;intlinenumber;};定義questionT為結(jié)構(gòu)體類型,其中包括字符串?dāng)?shù)組qtext[]、屬于answerT類型的數(shù)組answers[]、整形變量nAnswers和linenumber,而qtext[]用于儲存一個(gè)問題的文本,answers[]用于儲存一個(gè)問題的每一個(gè)答案,nAnswers用于儲存一個(gè)問題相應(yīng)答案的個(gè)數(shù),linenumber用于儲存每個(gè)問題所占行數(shù)的行號?!瞡行好吧共n行好吧共n個(gè)qtext[n]的儲存示意圖共n個(gè)answers[m]的儲存示意圖………………共m個(gè)answerT類型的結(jié)構(gòu)體共m個(gè)answerT類型的結(jié)構(gòu)體共m個(gè)類型為answerT的結(jié)構(gòu)體共m個(gè)類型為answerT的結(jié)構(gòu)體nAnswers的儲存示意圖Linenumber的儲存示意圖*類型名:courseDB,這個(gè)結(jié)構(gòu)提供空間給文件主題和問題structcourseDB{stringtitle;questionTquestions[MaxQuestions+1];};定義courseDB為結(jié)構(gòu)體類型,其中包括字符串變量title和屬于questionT類型的數(shù)組questons,而title用于儲存題目文本,questions[]用于儲存問題和相應(yīng)的答案?!璫ourseDB的儲存示意圖questions[N]的儲存示意圖……有有MaxAnswersPerQuestion個(gè)類型為answerT的結(jié)構(gòu)體有N個(gè)類型為questionT的結(jié)構(gòu)體有N個(gè)類型為questionT的結(jié)構(gòu)體………………有MaxAnswersPerQuestion個(gè)類型為answerT的結(jié)構(gòu)體有MaxAnswersPerQuestion個(gè)類型為answerT的結(jié)構(gòu)體…………外部數(shù)據(jù)文件的格式說明c++程序設(shè)計(jì)復(fù)習(xí)1c++程序設(shè)計(jì)復(fù)習(xí)1復(fù)習(xí)int或bool類型?輸入:int/bool請選擇:int:2bool:102判斷題:int可以有小數(shù)部分。請輸入:(對/錯(cuò))對:3錯(cuò):53答錯(cuò)了!浮點(diǎn)數(shù)有小數(shù)部分,整數(shù)沒有。判斷題:int可以取負(fù)值。請輸入:(對\錯(cuò))對:5錯(cuò):44答錯(cuò)了!你必須再復(fù)習(xí)一下課本。要重新測試嗎?(是/否)是:1否:-1說明:如左圖所示,首行為文本題目(盡量控制在一行內(nèi)且不能出現(xiàn)空格,否則會出現(xiàn)問題),其次是問題的布局,每一個(gè)問題的首行為問題的序號1、2、3、……,接著換行寫入問題的主要內(nèi)容,問題完畢后,換行,以“”為標(biāo)志,劃分問題內(nèi)容文本與程序執(zhí)行文本,寫入每一個(gè)正確答案之后以“:”分隔(注意:此處的冒號是英文的冒號而非中文的冒號),寫入下一題的題號,再換行。直至將每一個(gè)問題文本寫入后,增添最后一個(gè)問題,且對于最后一個(gè)問題“”以上的內(nèi)容要提示操作者是否重新測試,“”以下的內(nèi)容為:是:1否:-1在輸完文本后,最后要空留一行,即按一下回車鍵3.函數(shù)設(shè)計(jì)說明:*函數(shù)原型:voidReadQuestionText(infile,question);函數(shù)功能:這個(gè)函數(shù)將問題的文本讀入問題數(shù)據(jù)結(jié)構(gòu),記錄問題文本所占用的行數(shù)。這個(gè)問題文本結(jié)束的標(biāo)志是EndMarker,即“”的標(biāo)記。函數(shù)算法描述:先定義ch為字符串變量,再從文件中讀取一行數(shù)據(jù)儲存于字符串變量ch中,如若ch不等于結(jié)束標(biāo)志“”且不是空行,則使問題文本行數(shù)增加1,最后可得問題文本所占用的總行數(shù)。*函數(shù)原型:voidReadAnswers(ifstream&infile,questionT*q)函數(shù)功能:這個(gè)函數(shù)將問題答案的文本及其相應(yīng)的題號讀入答案數(shù)據(jù)結(jié)構(gòu)。函數(shù)算法描述:在分界符“”后,用q->answers[++(q->nAnswers)].ans數(shù)組分別將各個(gè)答案儲存起來,再以答案后的“:”為標(biāo)志,用q->answers[q->nAnswers].nextq數(shù)組將其后的題號存儲起來。*函數(shù)原型:voidWriteQuestionText(questionT*q)函數(shù)功能:這個(gè)函數(shù)根據(jù)問題序號顯示問題題目內(nèi)容函數(shù)算法描述:通過循環(huán),將每一個(gè)問題的文本一行行地輸出。*函數(shù)原型:intFindWriteAnswer(stringans,questionT*q,intnum)函數(shù)功能:這個(gè)函數(shù)用于查找并返回與答案匹配的相應(yīng)的題號。函數(shù)算法描述:從主調(diào)函數(shù)中,傳入?yún)?shù)ans、結(jié)構(gòu)體questionT的地址和題號num,通過循環(huán),倘若輸入的答案與所給答案相同,則返回相應(yīng)答案的下一題題號,倘若不相同,則返回原題號num。*函數(shù)原型:voidAskQuestion(intnum)函數(shù)功能:這個(gè)函數(shù)用于提出問題,這必須由調(diào)用才可分配,無返回值。函數(shù)算法描述:通過循環(huán),調(diào)用WriteQuestionText函數(shù)輸出問題,再由測試者從函數(shù)中輸入答案,再調(diào)用FindWriteAnswer函數(shù)返回下一題題號賦值于num,如果num的值為下一題號,則再次執(zhí)行循環(huán),如果num的值為-1,則跳出循環(huán)。四、結(jié)果分析1.測試方法:先輸入文件名(文件名后需添加“.dat”),再按回車鍵則如圖顯示: 再按題目指示輸入答案:如果輸錯(cuò)答案,程序會把題目重新顯示并要求再次輸入:當(dāng)全部題目完成后,程序會問是否重新測試,若輸入是,則返回第一題重新測試:若輸入否,則結(jié)束程序:2.調(diào)試過程總結(jié):*編譯時(shí)遇到的主要典型錯(cuò)誤:編程時(shí)循環(huán)范圍掌握不當(dāng),導(dǎo)致達(dá)不到原有目的,甚至陷入死循環(huán)。解決方案:重新思考,適當(dāng)控制循環(huán)范圍,使循環(huán)能夠順利跳出。*連接時(shí)遇到的主要典型錯(cuò)誤:文件名輸入錯(cuò)誤,少輸入了“.dat”。解決方案:補(bǔ)充“.dat”即可。*編譯和連接都成功,但結(jié)果不對時(shí),主要典型錯(cuò)誤:當(dāng)在某個(gè)問題里輸入了與所供選答案都不同時(shí),程序會直接跳出循環(huán),結(jié)束程序,而不是重新問問題。解決方案:修改循環(huán)中的某個(gè)函數(shù)的返

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論