版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 《數(shù)據(jù)結(jié)構(gòu)》</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 班 級(jí) (1) </p><p> 姓 名 <
2、;/p><p> 學(xué) 號(hào) 20101308003 </p><p> 指導(dǎo)教師 </p><p> 起止時(shí)間 2011.10~2011.12 </p><p> 課程設(shè)計(jì):利用棧求表達(dá)式的值</p><p><b> 一、任務(wù)描述
3、</b></p><p> 建立試題庫(kù)文件,隨機(jī)產(chǎn)生n個(gè)題目;題目涉及加減乘除,帶括號(hào)的整數(shù)混合運(yùn)算;隨時(shí)可以退出;保留歷史分?jǐn)?shù),能回顧歷史,給出與歷史分?jǐn)?shù)比較后的評(píng)價(jià)。(假設(shè)這是一個(gè)可供小學(xué)生練習(xí)算術(shù)運(yùn)算的小系統(tǒng))</p><p> 要求:根據(jù)以上任務(wù)說(shuō)明,設(shè)計(jì)程序完成功能。</p><p><b> 二、問(wèn)題分析</b>&
4、lt;/p><p><b> 1、功能分析</b></p><p> 分析設(shè)計(jì)課題的要求,要求編程實(shí)現(xiàn)以下功能:</p><p> 建立試題庫(kù)文件—即創(chuàng)建試題庫(kù)函數(shù)</p><p> 實(shí)現(xiàn)整數(shù)混合運(yùn)算—即建立棧實(shí)現(xiàn)運(yùn)算</p><p> 查看歷史分?jǐn)?shù)—即建立函數(shù)查看</p>&
5、lt;p><b> 2、數(shù)據(jù)對(duì)象分析</b></p><p> 由于其中涉及了能回顧歷史成績(jī)以及隨機(jī)做題等問(wèn)題,所以就考慮用到了文件的打開(kāi)與關(guān)閉以及文件的讀寫功能。由于此設(shè)計(jì)要實(shí)現(xiàn)多個(gè)功能,所以為了源代碼清晰明了,所有的函數(shù)不是用的嵌套方式,而是對(duì)每個(gè)功能都用一個(gè)子程序來(lái)實(shí)現(xiàn),然后通過(guò)對(duì)子程序的調(diào)用來(lái)達(dá)到設(shè)計(jì)的要求</p><p><b> 三、
6、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p><b> 有關(guān)的定義如下:</b></p><p> typedef struct shiti /*定義表達(dá)式*/</p><p><b> {</b></p><p> char a[20]; /*存放表達(dá)
7、式*/</p><p> long result; /*存放用戶輸入的答案*/</p><p><b> }xuanti;</b></p><p> typedef struct SqStack1 /*建立數(shù)字棧*/</p><p><b> { </b></p
8、><p> int *base;</p><p><b> int *top;</b></p><p> int stacksize;</p><p> }SqStack1; </p><p> typedef struct SqStack2 /*建立運(yùn)算符
9、棧*/</p><p><b> {</b></p><p> char *base;</p><p> char *top;</p><p> int stacksize;</p><p> }SqStack2;</p><p><b> 四、功能設(shè)
10、計(jì)</b></p><p><b> (一)主控菜單設(shè)計(jì)</b></p><p> 為實(shí)現(xiàn)程序的操作功能,首先設(shè)計(jì)一個(gè)含有多個(gè)菜單項(xiàng)的主控菜單程序,然后再為這些菜單項(xiàng)配上相應(yīng)的功能。</p><p> 程序運(yùn)行后,給出以下項(xiàng)的內(nèi)容和輸入提示,如下:</p><p><b> 輸入表達(dá)式<
11、;/b></p><p><b> 表達(dá)式結(jié)果</b></p><p><b> 繼續(xù)輸入表達(dá)式</b></p><p><b> 顯示結(jié)果</b></p><p><b> (二)程序模塊結(jié)構(gòu)</b></p><p>
12、; 由課題要求可將程序劃分為以下幾個(gè)模塊(即實(shí)現(xiàn)程序功能所需的函數(shù)):</p><p> 1.寫入函數(shù)WriteToFile()</p><p> 2.讀出函數(shù)ReadFromFile()</p><p> 3.棧函數(shù)stack()</p><p><b> ?。ㄈ┖瘮?shù)調(diào)用關(guān)系</b></p>&
13、lt;p> 程序的主要結(jié)構(gòu)(函數(shù)調(diào)用關(guān)系)如下圖所示:</p><p> 其中main()是主函數(shù),它進(jìn)行菜單驅(qū)動(dòng),根據(jù)選擇項(xiàng)0~9用相應(yīng)的函數(shù)。main()函數(shù)使結(jié)構(gòu)如下:</p><p> void main()</p><p><b> { </b></p><p><b> int i;
14、</b></p><p> char menuitem;</p><p><b> Title();</b></p><p> loop:menuitem=menu();</p><p> system("cls");</p><p> if(menuit
15、em=='3')</p><p><b> {</b></p><p><b> EXIT();</b></p><p><b> return ;</b></p><p><b> }</b></p><p&
16、gt;<b> else</b></p><p> if(menuitem=='1')</p><p><b> {</b></p><p> INSTRUCTION();</p><p> goto loop;// 返回菜單界面;</p><p>
17、<b> }</b></p><p><b> else</b></p><p> if(menuitem=='4')</p><p><b> {</b></p><p> out_all_achievment();</p><p
18、> goto loop;// 返回菜單界面;</p><p><b> }</b></p><p><b> else</b></p><p> if(menuitem=='2')</p><p><b> {</b></p>&l
19、t;p> do_homework();</p><p> goto loop;// 返回菜單界面;</p><p><b> }</b></p><p><b> else</b></p><p> if(menuitem=='5')</p><p
20、><b> {</b></p><p> out_latest_achievment();</p><p> goto loop;// 返回菜單界面;</p><p><b> }</b></p><p><b> else</b></p><
21、;p> if(menuitem=='6')</p><p><b> {</b></p><p><b> char del;</b></p><p> system("cls");</p><p> cout<<endl<<
22、;endl<<endl<<" 確定是否刪除所有歷史Y/N:";</p><p> while(cin>>del)</p><p><b> {</b></p><p> if(del!='Y' && del!='N
23、')</p><p><b> {</b></p><p> cout<<" 選項(xiàng)不正確:";</p><p><b> continue;</b></p><p><b> }</b></p&
24、gt;<p><b> else</b></p><p> if(del=='Y')</p><p><b> {</b></p><p> remove(filename1);</p><p> remove(filename2);</p>&
25、lt;p> system("cls");</p><p> cout<<endl<<endl<<endl<<endl<<endl<<" 成功刪除歷史! ";</p><p> cout<<endl<<
26、;endl<<" 按回車鍵返回";</p><p> getchar();</p><p> getchar();</p><p><b> break;</b></p><p><b> }</b></p&
27、gt;<p><b> break;</b></p><p><b> }</b></p><p> system("cls");</p><p> goto loop;// 返回菜單界面;</p><p><b> }</b><
28、;/p><p><b> ?。ㄋ模┪募Y(jié)構(gòu)</b></p><p> 1、stack.h 棧相關(guān)的定義和聲明</p><p> 2、stack.cpp 棧運(yùn)算的實(shí)現(xiàn)</p><p> 3、menu.h:主菜單函數(shù)的聲明</p><p> 4、menu.cpp:主菜單函數(shù)的實(shí)現(xiàn)</p>
29、;<p> 5、mn.cpp:主函數(shù)</p><p> (五)各函數(shù)的算法設(shè)計(jì)</p><p> 1. WriteToFile()</p><p> 算法原理:將pstu所指向的學(xué)生信息寫入文件中</p><p><b> 流程圖:</b></p><p> 代碼描述:v
30、oid WriteToFile(xuanti *pstu,int num) /*將pstu所指向的試題息寫入文件shitiku.txt中*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> fp=fopen("shitiku.tx
31、t","at");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("Cann't creat shitiku.txt!\n"); /*不能創(chuàng)建試題庫(kù)*/</p><p> free
32、(pstu);</p><p><b> exit(0);</b></p><p><b> }</b></p><p> fwrite(pstu,sizeof(xuanti),num,fp);</p><p> fclose(fp);</p><p><b&g
33、t; }</b></p><p> 算法的時(shí)間復(fù)雜度分析:O(n)</p><p> 2. ReadFromFile()</p><p> 算法原理:從文件中讀取學(xué)生信息到pstu所指向的內(nèi)存塊中</p><p><b> 流程圖:</b></p><p> 代碼描述:vo
34、id ReadFromFile(xuanti *pstu,int num) /*從試題庫(kù)中提取試題*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> fp=fopen("shitiku.txt","rt
35、");</p><p> if(fp==NULL)</p><p><b> {</b></p><p> printf("Cann't open shitiku.txt!\n"); /*不能打開(kāi)shitiku.txt文件*/</p><p> free(pstu);
36、</p><p><b> exit(0);</b></p><p><b> }</b></p><p> fread(pstu,sizeof(xuanti),num,fp);</p><p> fclose(fp);</p><p><b> }<
37、;/b></p><p> 算法的時(shí)間復(fù)雜度分析:O(n)</p><p><b> 五、測(cè)試數(shù)據(jù)和結(jié)果</b></p><p><b> 1、測(cè)試數(shù)據(jù)</b></p><p><b> 1+2</b></p><p><b>
38、 1*2</b></p><p><b> 2、測(cè)試結(jié)果</b></p><p> 本程序在VC++環(huán)境下實(shí)現(xiàn),下面是對(duì)以上測(cè)試數(shù)據(jù)的運(yùn)行結(jié)果。</p><p> (1) 主菜單顯示如下:</p><p><b> ?。?)輸入表達(dá)式</b></p><p>
39、; ?。?)繼續(xù)輸入表達(dá)式</p><p><b> ?。?)結(jié)束</b></p><p><b> 六、結(jié)束語(yǔ)</b></p><p> 通過(guò)本次課程設(shè)計(jì)的學(xué)習(xí),對(duì)棧和函數(shù)調(diào)用等這些常用的知能夠比較識(shí)靈活運(yùn)用不僅學(xué)到了以前從未接觸過(guò)的知識(shí),更重要的是培養(yǎng)了自己獨(dú)立思考問(wèn)題和動(dòng)手解決問(wè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. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---利用棧求表達(dá)式的值
- 利用棧求表達(dá)式的值設(shè)計(jì)說(shuō)明書(shū)
- 利用棧實(shí)現(xiàn)表達(dá)式求值
- 利用棧實(shí)現(xiàn)表達(dá)式求值
- 利用棧實(shí)現(xiàn)表達(dá)式求值
- 課程設(shè)計(jì)--表達(dá)式翻譯
- 課程設(shè)計(jì)報(bào)告-表達(dá)式類型的實(shí)現(xiàn)
- 算術(shù)表達(dá)式求值演示-課程設(shè)計(jì)報(bào)告
- 算術(shù)表達(dá)式求值課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--表達(dá)式求值
- 算數(shù)表達(dá)式的求解課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)---中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式的實(shí)現(xiàn)
- vc++課程設(shè)計(jì)《算術(shù)表達(dá)式》
- 算術(shù)表達(dá)式的計(jì)算課程設(shè)計(jì)
- 表達(dá)式求值廣義表的運(yùn)算課程設(shè)計(jì)報(bào)告
- c語(yǔ)言_算數(shù)表達(dá)式求值_課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(表達(dá)式計(jì)算)
評(píng)論
0/150
提交評(píng)論