




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 課程設(shè)計(jì)報(bào)告 題目:算術(shù)題測(cè)試程序 學(xué)生姓名:學(xué) 號(hào):_班 級(jí): _ 指導(dǎo)教師:_ _ 年 月 日一、 需求分析說(shuō)明1、 設(shè)計(jì)目的 (1) 掌握棧的存儲(chǔ)結(jié)構(gòu)。 (2) 掌握棧基本操作的實(shí)現(xiàn)。 (3) 能引用棧解決相關(guān)的實(shí)際問(wèn)題。 2、 程序最終需要完成的具體功能(1) 能隨機(jī)出題,題數(shù)由用戶輸入確定,算術(shù)題包括加減乘除四則運(yùn)算,表達(dá)式項(xiàng)數(shù)應(yīng)不限,可以包含括號(hào);(2) 需要進(jìn)行表達(dá)式的合法性驗(yàn)證;(3) 用戶交互輸入答案;(4) 計(jì)算機(jī)核對(duì)用戶答案;(5) 能對(duì)用戶的測(cè)試評(píng)分;(6) 實(shí)現(xiàn)多用戶系統(tǒng),并對(duì)用戶的用戶名和得分保存到文件,此功能選作。3、 設(shè)計(jì)要求(1)要求用面向?qū)ο蟪绦蛟O(shè)計(jì)思想實(shí)
2、現(xiàn);(2)系統(tǒng)具有一定的容錯(cuò)性;(3)要求具有較好的交互性。二、 總體設(shè)計(jì)1、 該程序大致由兩大部分構(gòu)成。第一部分為界面部分,用來(lái)實(shí)現(xiàn)簡(jiǎn)單的人機(jī)交互,控制程序的整體進(jìn)程;第二部分為功能實(shí)現(xiàn)部分,用來(lái)實(shí)現(xiàn)各個(gè)功能模塊。2、 框圖說(shuō)明菜單界面用戶輸入題數(shù)由程序產(chǎn)生隨機(jī)算式程序?qū)Ρ磉_(dá)式合法性檢驗(yàn)用戶交互輸入答案計(jì)算機(jī)核對(duì)用戶答案程序保存用戶信息到文件程序?qū)τ脩舻臏y(cè)試評(píng)分三、 詳細(xì)設(shè)計(jì)1、 隨機(jī)出題,題數(shù)由用戶輸入確定,算術(shù)題包括加減乘除四則運(yùn)算,表達(dá)式項(xiàng)數(shù)不限,可以包含括號(hào)設(shè)計(jì)一個(gè)表達(dá)式類class ss,該類中包含了表達(dá)式(字符串型)產(chǎn)生函數(shù)string randomexcs()、操作數(shù)獲取函數(shù)c
3、har getod(bool preisdiv)以及運(yùn)算符獲取函數(shù)char getop(bool inneriszero),其中表達(dá)式產(chǎn)生函數(shù)又用到了隨機(jī)數(shù)產(chǎn)生函數(shù)rand()以實(shí)現(xiàn)隨機(jī)產(chǎn)生的表達(dá)式項(xiàng)數(shù)不固定,括號(hào)是否出現(xiàn)以及括號(hào)位置隨機(jī)的功能。該功能用來(lái)實(shí)現(xiàn)待用戶輸入題數(shù)之后,程序立即隨機(jī)產(chǎn)生對(duì)應(yīng)數(shù)量的表達(dá)式供用戶測(cè)試。2、 表達(dá)式的合法性驗(yàn)證此功能包含在上述表達(dá)式類當(dāng)中,該類中包含的操作數(shù)和運(yùn)算符獲取函數(shù)char getod(bool preisdiv)、char getop(bool inneriszero)中分別用到了兩個(gè)bool型參數(shù)bool preisdiv和bool inneri
4、szero,當(dāng)獲取操作數(shù)時(shí)必須檢驗(yàn)該數(shù)之前是否有除號(hào),當(dāng)獲取運(yùn)算符時(shí)必須檢驗(yàn)該符號(hào)之后是否是0,另外該類之外還定義了一個(gè)函數(shù)double fune(string st)用來(lái)檢驗(yàn)括號(hào)內(nèi)的結(jié)果是否為0。該功能用來(lái)保證隨機(jī)出現(xiàn)的表達(dá)式必須是合法的。3、 用戶交互輸入答案該功能在測(cè)試函數(shù)void ceshi()部分實(shí)現(xiàn),該函數(shù)當(dāng)中定義了一個(gè)double型變量double youresult當(dāng)表達(dá)式顯示在屏幕上等待用戶輸入答案時(shí),用戶便可輸入自己的答案(youresult)進(jìn)行測(cè)試。4、 計(jì)算機(jī)核對(duì)用戶答案該功能也在測(cè)試函數(shù)void ceshi()得到實(shí)現(xiàn),該函數(shù)中定義了一個(gè)double型變量doubl
5、e result當(dāng)用戶輸入答案(youresult)后,程序立即判斷用戶的答案(youresult)是否等于表達(dá)式的正確結(jié)果result。如果相等則顯示“正確”,否則顯示“計(jì)算錯(cuò)誤!”并顯示正確值。5、 對(duì)用戶的測(cè)試評(píng)分該功能仍依靠測(cè)試函數(shù)void ceshi()實(shí)現(xiàn),函數(shù)中定義一個(gè)計(jì)數(shù)變量float num,并賦初值0,每當(dāng)用戶答對(duì)一道題便自加1,最后循環(huán)結(jié)束時(shí)用num除以總題數(shù)乘上100便得到用戶的最終得分。測(cè)試結(jié)束后,系統(tǒng)會(huì)提示是否繼續(xù)進(jìn)行測(cè)試,如果想繼續(xù)輸入題數(shù)就輸入y,否則輸入n退出程序。四、 實(shí)現(xiàn)部分class ss /表達(dá)式類的定義以及各成員函數(shù)的實(shí)現(xiàn)public: string
6、 randomexcs(); char getop(bool inneriszero); char getod(bool preisdiv);string ss:randomexcs() int n=(1+rand()%4)*2+1; string expression(n, );int left,right;if(n7)bool preisdiv=false; for(int k=0;k=n-2;k+)expressionk=getod(preisdiv); expression+k=getop(false); preisdiv=expressionk=/?true:false; expre
7、ssionk=getod(preisdiv);else if(n=7)left=2; right=left+4; expressionleft=(; expressionright=); expression(left+right)/2=getop(false); expressionleft+1=getod(false); bool preisdiv=expression(left+right)/2=/?true:false; expressionright-1=getod(preisdiv); string inner(expression,left,right); bool inneri
8、szero=fune(inner)=0?true:false; preisdiv=false;for(int i=0;i=left-2;i+)expressioni=getod(preisdiv); expression+i=getop(false); preisdiv=expressioni=/?true:false;expressionleft-1=getop(inneriszero);for(int j=right+1;j=n-1;j+)expressionj=getop(false); preisdiv=expressionj=/?true:false; expression+j=ge
9、tod(preisdiv);else left=(1+rand()%2)*2; right=left+4; expressionleft=(; expressionright=); expression(left+right)/2=getop(false); expressionleft+1=getod(false); bool preisdiv=expression(left+right)/2=/?true:false; expressionright-1=getod(preisdiv); string inner(expression,left,right); bool innerisze
10、ro=fune(inner)=0?true:false; preisdiv=false;for(int i=0;i=left-2;i+)expressioni=getod(preisdiv); expression+i=getop(false); preisdiv=expressioni=/?true:false;expressionleft-1=getop(inneriszero);for(int j=right+1;j=n-1;j+)expressionj=getop(false); preisdiv=expressionj=/?true:false; expression+j=getod
11、(preisdiv);return expression;char ss:getop(bool inneriszero) char ops=+,-,*,/; return inneriszero?opsrand()%3:opsrand()%4;char ss:getod(bool preisdiv)char ods=1,2,3,4,5,6,7,8,9,0; return preisdiv?odsrand()%9:odsrand()%10;double fune(string st) /檢驗(yàn)括號(hào)內(nèi)的結(jié)果是否為0int a,b; char c5; memset(c,0,5); strcpy(c,s
12、t.c_str(); a=c1; b=c3; switch(c2) case+:return a+b;break; case-:return a-b;break; case*:return a*b;break; default:return a/b;break;void ceshi() /顯示表達(dá)式、用戶輸入及核對(duì)用戶答案srand(unsigned)time(null); ss a; int n; float num=0; calcinfixexp s; double result,youresult,score; string suanshi; coutn; for(int i=1;i=n
13、;i+) suanshi=a.randomexcs(); char p100; memset(p,0,100); strcpy(p,suanshi.c_str(); coutsuanshiyouresult; if (s.calc(result,p) if(youresult=result) cout正確!endl; num+; else cout錯(cuò)誤!正確答案為:resultendl; score=num/n*100; coutendl; cout您的成績(jī)?yōu)?scoreendl;五、 程序測(cè)試1.首次運(yùn)行設(shè)定題數(shù)為2進(jìn)行算術(shù)測(cè)試2.輸入y繼續(xù)進(jìn)行測(cè)試,這次輸入的題數(shù)為33.輸入n結(jié)束程序4.運(yùn)行結(jié)果分析 (1)每次測(cè)試出現(xiàn)的表達(dá)式項(xiàng)數(shù)不等,括號(hào)是否出現(xiàn)和出現(xiàn)的位置符合隨機(jī)的要求;(2)測(cè)試過(guò)程中并未出現(xiàn)表達(dá)式不合法的情況,表明程序中對(duì)表達(dá)式合法性檢驗(yàn)是正確的;(3)能準(zhǔn)確核對(duì)用戶答案并正確顯示用戶成績(jī),但成績(jī)的小數(shù)位數(shù)保留處理稍顯不足。5.改進(jìn)算法在程序中包含頭文件#include,改輸出代碼為:cout您的成績(jī)?yōu)?setprecision(3)scoreendl;并再次調(diào)試檢驗(yàn)六、 總結(jié)課程設(shè)計(jì)的目的是培養(yǎng)應(yīng)用數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法及思想解決實(shí)際問(wèn)題的能力,掌握使用數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法和思想,
溫馨提示
- 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- d級(jí)危房維修施工方案
- 武漢工商學(xué)院《形勢(shì)與政策(四)》2023-2024學(xué)年第二學(xué)期期末試卷
- 大堂風(fēng)機(jī)拆除施工方案
- 閬中污水管網(wǎng)施工方案
- 南京城市職業(yè)學(xué)院《概率統(tǒng)計(jì)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海出版印刷高等專科學(xué)校《矩陣?yán)碚撆c應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025至2031年中國(guó)油水艙底漆行業(yè)投資前景及策略咨詢研究報(bào)告
- 斜拉橋樁基礎(chǔ)施工方案
- 江西建設(shè)職業(yè)技術(shù)學(xué)院《CAD設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 臨時(shí)雨污水接駁施工方案
- 《淘寶開網(wǎng)店詳解》課件
- 【八年級(jí)下冊(cè)地理中圖北京版】期中真題必刷卷B-【期中真題必刷卷】(北京專用)(解析版)
- 鉆床安全技術(shù)課件
- 新媒體時(shí)代農(nóng)產(chǎn)品品牌營(yíng)銷策略
- 西工大附中2025屆高考英語(yǔ)一模試卷含解析
- 《房屋建筑與裝飾工程工程量計(jì)算規(guī)范》課件
- 《支付寶相關(guān)功能》課件
- 車隊(duì)運(yùn)營(yíng)中的司機(jī)管理策略研究
- 0-3歲嬰幼兒感覺統(tǒng)合訓(xùn)練知到智慧樹章節(jié)測(cè)試課后答案2024年秋杭州師范大學(xué)
- 新生兒臍部出血的護(hù)理
- 實(shí)驗(yàn)室的智能化設(shè)計(jì)與建設(shè)
評(píng)論
0/150
提交評(píng)論