利用棧求表達(dá)式課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論