版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課程設(shè)計(jì)(論文)任務(wù)書</p><p> 軟件 學(xué)院 軟件工程 專業(yè) 3 班 </p><p> 一、課程設(shè)計(jì)(論文)題目 表達(dá)式求值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù) </p><p> 二、課程設(shè)計(jì)(論文)工作自 2014 年 12 月 22 日至 2014 年
2、12 月 26 日。</p><p> 三、課程設(shè)計(jì)(論文) 地點(diǎn): 創(chuàng)新大樓實(shí)訓(xùn)中心4樓 </p><p> 四、課程設(shè)計(jì)(論文)內(nèi)容要求:</p><p> 1.本課程設(shè)計(jì)的目的</p><p> 1) 使學(xué)生增進(jìn)對數(shù)據(jù)結(jié)構(gòu)各理論知識的熟練程度, </p>
3、<p> 2) 加強(qiáng)算法設(shè)計(jì)的能力,為以后的數(shù)據(jù)庫原理等課程的學(xué)習(xí)打下良好基</p><p><b> 礎(chǔ)。, </b></p><p> 2.課程設(shè)計(jì)的任務(wù)及要求</p><p> 25.表達(dá)式求值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù)</p><p> 問題描述: 利用所學(xué)知識,建立一個(gè)試題庫,供小學(xué)生
4、選題。 </p><p> 基本要求: </p><p> (1)建立試題庫文件,隨機(jī)產(chǎn)生n個(gè)題目;
5、 </p><p> (2)題目涉及加減乘除,帶括號的混合運(yùn)算; </p><p> (3)隨時(shí)可以退出; </p><p> (4)保留歷史分?jǐn)?shù),能回顧歷史,給出與歷史分?jǐn)?shù)比較后
6、的評價(jià)。 </p><p> 3)課程設(shè)計(jì)論文編寫要求</p><p> 1)詳細(xì)清晰地描述個(gè)人的課程設(shè)計(jì)工作;</p><p> 2)要按照本模板的規(guī)格打印謄寫課程報(bào)告;</p><p> 3)課設(shè)報(bào)告包括目錄、內(nèi)容提要、正文、課程設(shè)計(jì)體
7、會、參考文獻(xiàn)、附</p><p><b> 錄等;</b></p><p> 4)課程報(bào)告裝訂按學(xué)校的統(tǒng)一要求完成</p><p><b> 4)評分標(biāo)準(zhǔn): </b></p><p> 1)完成原理分析:20分; </p><p> 2)完成設(shè)計(jì)過程:40分; &l
8、t;/p><p> 3)完成代碼分析:20分。</p><p> 4)個(gè)人創(chuàng)新工作:20分。</p><p> 學(xué)生簽名: </p><p> 2014年12月 26 日</p><p> 課程設(shè)計(jì)(論文)評審意見</p><p> ?。?)原理分析 (
9、20分):優(yōu)(?。?、良(?。⒅校ā。?、一般(?。⒉睿ā。?; </p><p> (2)設(shè)計(jì)分析 ?。?0分):優(yōu)(?。⒘迹ā。?、中( )、一般(?。?、差( ); </p><p> ?。?)程序流程 (20分):優(yōu)(?。⒘迹ā。⒅校ā。⒁话悖ā。⒉睿ā。?lt;/p><p> ?。?)代碼分析 ?。?0分):優(yōu)(?。⒘迹ā。?、中( )、一般( )、
10、差( );</p><p> ?。?)個(gè)人創(chuàng)新 ?。?0分):優(yōu)( )、良(?。?、中(?。⒁话悖ā。?、差(?。?lt;/p><p> ?。?)格式規(guī)范性及考勤是否降等級:是( )、否(?。?lt;/p><p> 評閱人: 職稱: 講師 </p><p> 2010年 12月28 日</p>
11、<p><b> 目 錄</b></p><p> 目 錄- 1 -</p><p> 正 文- 2 -</p><p> 一、需求分析- 2 -</p><p> 二、個(gè)人工作- 3 -</p><p> 三、概要設(shè)計(jì)- 4 -</p><
12、;p> 四、源程序- 5 -</p><p> 五、程序結(jié)果- 17 -</p><p> 課程設(shè)計(jì)體會- 21 -</p><p><b> 正 文</b></p><p><b> 一、需求分析</b></p><p> 該題目的核心是利用棧這種
13、數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)一個(gè)加減乘除以及帶括弧的混合數(shù)學(xué)表達(dá)式的計(jì)算。其次是利用文件來保存和讀寫試題庫、每次做題的成績和以往成績的平均值。</p><p> 對于數(shù)學(xué)表達(dá)式的計(jì)算,可以設(shè)置一個(gè)運(yùn)算符棧和一個(gè)數(shù)字棧,分別來保存運(yùn)算符、數(shù)字或者中間計(jì)算得到的結(jié)果。將整個(gè)表達(dá)式看做一個(gè)字符串,從開頭依次判斷每個(gè)字符是運(yùn)算符還是數(shù)字,若是運(yùn)算符,則根據(jù)運(yùn)算符優(yōu)先級來確定是將其壓棧還是彈棧進(jìn)行計(jì)算;若是數(shù)字,則先將其轉(zhuǎn)化并計(jì)入一個(gè)
14、臨時(shí)int型變量中,看下一個(gè)字符是否為運(yùn)算符棧,若是,則將臨時(shí)變量壓進(jìn)數(shù)字棧,否則讀取下一個(gè)數(shù)字字符并進(jìn)行相關(guān)處理后累加到臨時(shí)變量中,直到下一個(gè)字符為運(yùn)算符,將臨時(shí)變量壓進(jìn)數(shù)字棧。最后,當(dāng)字符為"="時(shí),結(jié)束計(jì)算,得到計(jì)算結(jié)果。</p><p> 對于試題庫,第一次運(yùn)行程序時(shí)需要用戶輸入若干試題來建立試題庫文件,再次運(yùn)行時(shí)磁盤上已經(jīng)存在試題庫文件,故不需再次建立試題庫,直接讀取文件即可。然后
15、從試題庫中通過隨機(jī)數(shù)函數(shù)隨機(jī)抽取若干個(gè)試題供用戶來做測試。</p><p> 測試過程中可即時(shí)跟蹤判斷用戶所給答案是否正確,并給出相關(guān)提示。測試完畢后給出本次測試得分,對得分進(jìn)行評價(jià)并將得分存到磁盤文件上。</p><p> 用戶可隨時(shí)查看成績的歷史記錄以及其平均成績,可隨時(shí)選擇退出程序。</p><p><b> 個(gè)人工作</b><
16、;/p><p> 本次的課程數(shù)據(jù)我是用棧來實(shí)現(xiàn)表達(dá)式求解,利用棧求表達(dá)式的值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù)。</p><p> 要求:建立試題庫文件,隨機(jī)產(chǎn)生n個(gè)題目;題目涉及加減乘除,帶括弧的混合運(yùn)算;隨時(shí)可以退出;保留歷史分?jǐn)?shù),能回顧歷史,給出與歷史分?jǐn)?shù)比較后的評價(jià)。我利用文件來保存和讀寫試題庫,且要運(yùn)用磁盤文件。</p><p> 數(shù)學(xué)表達(dá)式的計(jì)算,我設(shè)置了
17、一個(gè)運(yùn)算符棧與一個(gè)數(shù)字棧,分別來保存運(yùn)算符、數(shù)字或者中間計(jì)算得到的結(jié)果。將表達(dá)式看成一個(gè)字符串,從而分種計(jì)算。</p><p><b> 概要設(shè)計(jì)</b></p><p><b> 四、源程序</b></p><p> //此程序所有文件均保存在了G盤根目錄下,實(shí)際調(diào)試運(yùn)行時(shí),可根據(jù)實(shí)際情況更改存</p>
18、<p><b> //儲路徑</b></p><p> #include <stdio.h></p><p> #include <stdlib.h></p><p> #include <time.h></p><p> int N; //定義全局變量,表示
19、試題庫試題數(shù)量</p><p> typedef struct</p><p><b> {</b></p><p> char a[100];</p><p> int result;</p><p> }Shiti; //試題數(shù)據(jù)類型</p><p> t
20、ypedef struct</p><p><b> {</b></p><p> int *base,*top;</p><p><b> int size;</b></p><p> }Num; //數(shù)字棧</p><p> typedef struct<
21、/p><p><b> {</b></p><p> char *base,*top;</p><p><b> int size;</b></p><p> }Oper; //運(yùn)算符棧</p><p> int NumInitStack(Num *S1) //構(gòu)造
22、數(shù)字棧</p><p><b> {</b></p><p> S1->base=(int *)malloc(100*sizeof(int));</p><p> if(!S1->base)</p><p><b> {</b></p><p> pri
23、ntf("申請內(nèi)存失敗!\n");</p><p><b> return 0;</b></p><p><b> }</b></p><p> S1->top=S1->base;</p><p> S1->size=100;</p>&l
24、t;p><b> return 1;</b></p><p><b> }</b></p><p> int OperInitStack(Oper *S2) //構(gòu)造運(yùn)算符棧</p><p><b> {</b></p><p> S2->base=(c
25、har *)malloc(100*sizeof(char));</p><p> if(!S2->base)</p><p><b> {</b></p><p> printf("申請內(nèi)存失敗!\n");</p><p><b> return 0;</b><
26、;/p><p><b> }</b></p><p> S2->top=S2->base;</p><p> S2->size=100;</p><p><b> return 1;</b></p><p><b> }</b>&
27、lt;/p><p> int NumGetTop(Num *S1) //得到數(shù)字棧棧頂元素</p><p><b> {</b></p><p><b> int e1;</b></p><p> if((*S1).top==(*S1).base)</p><p>&l
28、t;b> return 0;</b></p><p> e1=*((*S1).top-1);</p><p> return e1;</p><p><b> }</b></p><p> char OperGetTop(Oper *S2) //得到運(yùn)算符棧棧頂元素</p>&
29、lt;p><b> {</b></p><p><b> char e2;</b></p><p> if((*S2).top==(*S2).base)</p><p><b> return 0;</b></p><p> e2=*((*S2).top-1);
30、</p><p> return e2;</p><p><b> }</b></p><p> void NumPush(Num *S1,int e1) //數(shù)字棧壓棧</p><p><b> {</b></p><p> *(*S1).top++=e1;&l
31、t;/p><p><b> }</b></p><p> void OperPush(Oper *S2,char e2) //運(yùn)算符棧壓棧</p><p><b> {</b></p><p> *(*S2).top++=e2;</p><p><b> }
32、</b></p><p> int NumPop(Num *S1) //數(shù)字棧彈棧</p><p><b> {</b></p><p><b> int e1;</b></p><p> if((*S1).top==(*S1).base)</p><p&g
33、t;<b> return 0;</b></p><p> e1=*--(*S1).top;</p><p> return e1;</p><p><b> }</b></p><p> char OperPop(Oper *S2) //運(yùn)算符棧彈棧</p><p&
34、gt;<b> {</b></p><p><b> char e2;</b></p><p> if((*S2).top==(*S2).base)</p><p><b> return 0;</b></p><p> e2=*--(*S2).top;</p&
35、gt;<p> return e2;</p><p><b> }</b></p><p> char Precede(char a,char b) //判斷運(yùn)算符優(yōu)先級</p><p><b> {</b></p><p><b> int i,j;</b
36、></p><p> char Table[8][8]={{' ','+','-','*','/','(',')','='},</p><p> {'+','>','>','<
37、39;,'<','<','>','>'},</p><p> {'-','>','>','<','<','<','>','>'},</p>&
38、lt;p> {'*','>','>','>','>','<','>','>'},</p><p> {'/','>','>','>','>&
39、#39;,'<','>','>'},</p><p> {'(','<','<','<','<','<','=',' '},</p><p> {')
40、9;,'>','>','>','>',' ','>','>'},</p><p> {'=','<','<','<','<','<',
41、9; ','='}}; //優(yōu)先級表格</p><p> for(i=0;i<8;i++)</p><p> if(Table[0][i]==a) //縱坐標(biāo)尋找</p><p><b> break;</b></p><p> for(j=0;j<8;j++) //橫坐
42、標(biāo)尋找</p><p> if(Table[j][0]==b)</p><p><b> break;</b></p><p> return Table[j][i];</p><p><b> }</b></p><p> int Operate(int a,ch
43、ar theta,int b) //計(jì)算二元表達(dá)式的值</p><p><b> {</b></p><p><b> int c;</b></p><p> if(theta=='+')</p><p><b> c=a+b;</b></p&g
44、t;<p> else if(theta=='-')</p><p><b> c=a-b;</b></p><p> else if(theta=='*')</p><p><b> c=a*b;</b></p><p><b>
45、else</b></p><p><b> c=a/b;</b></p><p><b> return c;</b></p><p><b> }</b></p><p> int IsOper(char ch) //判斷字符ch是否為運(yùn)算符</p
46、><p><b> {</b></p><p> char ptr[10]={'+','-','*','/','(',')','='};</p><p><b> int i;</b></p>&
47、lt;p> for(i=0;i<7;i++)</p><p><b> {</b></p><p> if(ch==ptr[i])</p><p><b> return 1;</b></p><p><b> }</b></p><p
48、><b> return 0;</b></p><p><b> }</b></p><p> int Result(char a[],Num *num,Oper *oper) //計(jì)算表達(dá)式的結(jié)果</p><p><b> {</b></p><p> ch
49、ar theta;</p><p> int b,d,k=0,i=0,j=0,num2=0;</p><p> NumInitStack(num); //構(gòu)造數(shù)字棧</p><p> OperInitStack(oper); //構(gòu)造運(yùn)算符棧</p><p> OperPush(oper,'='); //將“=”
50、壓到棧底</p><p> while(a[i]!='='||OperGetTop(oper)!='=')</p><p><b> {</b></p><p> //對表達(dá)式a進(jìn)行計(jì)算</p><p> if(a[i]>='0'&&a[i]&
51、lt;='9')</p><p><b> {</b></p><p><b> //字符是數(shù)字</b></p><p><b> k++;</b></p><p><b> if(k<=j)</b></p>&
52、lt;p><b> {</b></p><p> num2=a[i]-48;</p><p><b> i++;</b></p><p><b> }</b></p><p><b> if(k>j)</b></p>&
53、lt;p><b> {</b></p><p> num2=num2*10+(a[i]-48);</p><p><b> k=j=0;</b></p><p><b> i++;</b></p><p><b> }</b></p&
54、gt;<p> if(!IsOper(a[i]))</p><p><b> k++;</b></p><p> if(k==j) //如果k等于j,說明下一個(gè)字符是運(yùn)算符,即數(shù)字字符結(jié)束,壓進(jìn)數(shù)字棧</p><p> NumPush(num,num2);</p><p><b> }
55、</b></p><p> else if(IsOper(a[i]))</p><p><b> {</b></p><p><b> //字符是運(yùn)算符</b></p><p> switch(Precede(a[i],OperGetTop(oper)))</p>
56、<p><b> {</b></p><p> //該運(yùn)算符和棧頂運(yùn)算符進(jìn)行優(yōu)先級比較并做相關(guān)處理</p><p><b> case '<':</b></p><p> OperPush(oper,a[i++]);</p><p> if(a[i]!=
57、39;('&&a[i]!=')')</p><p><b> j++;</b></p><p><b> break;</b></p><p><b> case '=':</b></p><p> OperPop
58、(oper);</p><p><b> i++;</b></p><p><b> break;</b></p><p><b> case '>':</b></p><p> theta=OperPop(oper); //運(yùn)算符棧彈棧<
59、/p><p> d=NumPop(num); //數(shù)字棧彈棧</p><p> b=NumPop(num);</p><p> NumPush(num,Operate(b,theta,d)); //計(jì)算結(jié)果并壓棧</p><p><b> break;</b></p><p><b&
60、gt; }</b></p><p><b> }</b></p><p><b> }</b></p><p> return (NumGetTop(num)); //返回最終計(jì)算結(jié)果</p><p><b> }</b></p><
61、p> int Buildshitiku() //建立試題庫</p><p><b> {</b></p><p><b> int i;</b></p><p><b> FILE *fp;</b></p><p><b> Shiti t;<
62、/b></p><p> if(!(fp=fopen("G:\\shitiku.txt","w")))</p><p><b> {</b></p><p> printf("無法建立試題庫文件!\n");</p><p><b> re
63、turn 0;</b></p><p><b> }</b></p><p> printf("輸入要建立的試題庫的試題數(shù)目: ");</p><p> scanf("%d",&N);</p><p> fprintf(fp,"%d\n&quo
64、t;,N);</p><p> for(i=0;i<N;i++)</p><p><b> {</b></p><p> printf("輸入第%d道題目:\n",i+1);</p><p> scanf("%s",t.a);</p><p>
65、 fprintf(fp,"%s\n",t.a); //將鍵盤輸入的表達(dá)式寫進(jìn)文件</p><p><b> }</b></p><p> fclose(fp);</p><p><b> return 1;</b></p><p><b> }</b&
66、gt;</p><p> void Xuanti(int n,int a[]) //隨機(jī)選取n個(gè)題目,將題號保存在數(shù)組a中</p><p><b> {</b></p><p> srand((int)time(0));</p><p> int i,j,t;</p><p> a[0
67、]=rand()%N; //產(chǎn)生0-N之間的隨機(jī)數(shù)并記錄</p><p> for(i=1;i<n;i++)</p><p><b> {</b></p><p> t=rand()%N;</p><p> for(j=0;j<i;j++)</p><p><b>
68、 {</b></p><p> if(a[j]==t)</p><p><b> break;</b></p><p><b> }</b></p><p><b> if(j==i)</b></p><p><b>
69、a[i]=t;</b></p><p><b> else</b></p><p><b> i--;</b></p><p><b> }</b></p><p><b> }</b></p><p> vo
70、id Avescore() //求平均成績</p><p><b> {</b></p><p> FILE *fp1,*fp2;</p><p> int sum=0,i=0,s,a;</p><p> if(!(fp1=fopen("G:\\score.txt","r"
71、;)))</p><p><b> {</b></p><p> printf("無法打開成績信息文件!\n");</p><p> exit (-1);</p><p><b> }</b></p><p> while(!feof(fp1))
72、 //讀出所有的歷史成績并求和</p><p><b> {</b></p><p> fscanf(fp1,"%d",&s);</p><p><b> sum+=s;</b></p><p> i++; //記錄成績個(gè)數(shù)</p><p&
73、gt;<b> }</b></p><p> fclose(fp1);</p><p><b> a=sum/i;</b></p><p> if(!(fp2=fopen("G:\\average.txt","w")))</p><p><b&g
74、t; {</b></p><p> printf("無法創(chuàng)建或者無法打開平均成績文件!\n");</p><p> exit (-1);</p><p><b> }</b></p><p> fprintf(fp2,"%d",a); //將平均值寫入文件中
75、</p><p> fclose(fp2);</p><p><b> }</b></p><p> void Zuoti(Shiti a[]) //做題</p><p><b> {</b></p><p> system("cls");&l
76、t;/p><p> printf("\t\t******好好學(xué)習(xí)天天向上******\n\n");</p><p> int n,i,r,k=0,score,ave;</p><p> FILE *fp,*fp1;</p><p> printf("請輸入要做幾道題:");</p>&
77、lt;p> scanf("%d",&n);</p><p> int t[n]; //在VC++6.0編譯環(huán)境下該條語句編譯通不過,可改為定義一個(gè)足夠大的數(shù)組,例如int t[100];</p><p> Xuanti(n,t); //調(diào)用Xuanti函數(shù)從試題庫中隨機(jī)抽取n道題目</p><p> for(i=0;i&
78、lt;n;i++)</p><p><b> {</b></p><p> //做題并判斷答案是否正確</p><p> printf("\n第%d道題:\n",i+1);</p><p> printf("%s",a[t[i]].a);</p><p&
79、gt; scanf("%d",&r);</p><p> if(a[t[i]].result==r)</p><p><b> {</b></p><p><b> k++;</b></p><p> printf("答案正確!\n");&l
80、t;/p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> printf("答案錯(cuò)誤!正確答案為:%d\n",a[t[i]].result);</p><
81、p><b> }</b></p><p><b> }</b></p><p> score=100*k/n;</p><p> printf("\n本次得分:%d\n",score); //輸出本次做題所得的分?jǐn)?shù)并進(jìn)行評價(jià)</p><p> if(score&
82、gt;=90)</p><p> printf("優(yōu)秀,繼續(xù)保持!\n");</p><p> else if(score>=80)</p><p> printf("良好,還需努力!\n");</p><p> else if(score>=70)</p><p
83、> printf("一般,繼續(xù)加油!\n");</p><p> else if(score>=60)</p><p> printf("及格,多多努力!\n");</p><p><b> else</b></p><p> printf("糟糕,
84、不及格,該好好學(xué)習(xí)了!\n");</p><p> if(!(fp=fopen("G:\\score.txt","a")))</p><p><b> {</b></p><p> printf("無法建立或者無法打開成績信息文件!\n");</p>&l
85、t;p> exit (-1);</p><p><b> }</b></p><p> fprintf(fp," %d",score); //將本次成績寫入文件</p><p> fclose(fp);</p><p> Avescore();</p><p>
86、; if(!(fp1=fopen("G:\\average.txt","r")))</p><p><b> {</b></p><p> printf("無法創(chuàng)建或者無法打開平均成績文件!\n");</p><p> exit (-1);</p><p&g
87、t;<b> }</b></p><p> fscanf(fp1,"%d",&ave); //讀出之前成績的平均成績</p><p> if(score>ave)</p><p> printf("\n成績較以前相比有所進(jìn)步,繼續(xù)努力!\n");</p><p&
88、gt; else if(score<ave)</p><p> printf("\n成績較以前相比退步了,要多多練習(xí),不要?dú)怵H?。n");</p><p><b> else</b></p><p> printf("\n成績與以前持平\n");</p><p>&
89、lt;b> }</b></p><p> void History() //輸出歷史成績</p><p><b> {</b></p><p> FILE *fp,*fp1;</p><p><b> int s,a;</b></p><p>
90、 if(!(fp=fopen("G:\\score.txt","r")))</p><p><b> {</b></p><p> printf("無法打開成績信息文件!\n");</p><p> exit (-1);</p><p><b>
91、 }</b></p><p> printf("歷史成績顯示如下:\n");</p><p> while(!feof(fp))</p><p><b> {</b></p><p> fscanf(fp,"%d",&s);</p>&l
92、t;p> printf("%d ",s);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("\n");</p><p> if(!(fp1=fopen("G:\\average.txt&qu
93、ot;,"r")))</p><p><b> {</b></p><p> printf("無法打開平均成績文件!\n");</p><p> exit (-1);</p><p><b> }</b></p><p> f
94、scanf(fp1,"%d",&a);</p><p> printf("平均為:%d\n\n",a);</p><p><b> }</b></p><p> int menu() //菜單函數(shù)</p><p><b> {</b><
95、/p><p><b> int a;</b></p><p><b> do</b></p><p><b> {</b></p><p> system("cls");</p><p> printf("\t\t**
96、****好好學(xué)習(xí)天天向上******\n\n");</p><p> printf("\t\t 1.做題\n");</p><p> printf("\t\t 2.查看歷史成績\n");</p><p> printf("\t\t 3.退出系統(tǒng)\n\n");&l
97、t;/p><p> printf("\t\t****************************\n");</p><p> printf("\t\t請選擇:");</p><p> scanf("%d",&a);</p><p> }while(a<1||a&
98、gt;3);</p><p><b> return a;</b></p><p><b> }</b></p><p> int main()</p><p><b> {</b></p><p><b> FILE *fp;<
99、;/b></p><p><b> int i;</b></p><p><b> char c;</b></p><p> Shiti s[1000];</p><p><b> Num num;</b></p><p> Oper o
100、per;</p><p> if(!(fp=fopen("G:\\shitiku.txt","r"))) //如果試題庫文件不存在,則建立試題庫</p><p><b> {</b></p><p> printf("\t******歡迎使用******\n\n");</
101、p><p> printf("\t程序第一次運(yùn)行,尚無試題庫,請先建立試題庫!\n\n\t");</p><p> system("pause");</p><p> if(Buildshitiku())</p><p> printf("成功建立試題庫!\n");</p&
102、gt;<p> system("pause");</p><p> fp=fopen("G:\\shitiku.txt","r");</p><p><b> }</b></p><p> fscanf(fp,"%d",&N); //
103、將試題庫文件中的信息讀到內(nèi)存中</p><p> for(i=0;i<N;i++)</p><p><b> {</b></p><p> fscanf(fp,"%s",s[i].a);</p><p> s[i].result=Result(s[i].a,&num,&o
104、per);</p><p><b> }</b></p><p> fclose(fp);</p><p><b> while(1)</b></p><p><b> {</b></p><p> switch(menu())</p&g
105、t;<p><b> {</b></p><p><b> case 1:</b></p><p><b> do</b></p><p><b> {</b></p><p><b> Zuoti(s);</b&g
106、t;</p><p> printf("\n是否繼續(xù)做題?y-是,n-否:");</p><p> getchar();</p><p> scanf("%c",&c);</p><p> }while(c!='n'&&c!='N');&l
107、t;/p><p><b> break;</b></p><p><b> case 2:</b></p><p> History(); //輸出成績</p><p> system("pause");</p><p><b> bre
108、ak;</b></p><p><b> case 3:</b></p><p> printf("\n\t歡迎使用,再見!\n\n\t");</p><p> system("pause");</p><p> exit (0); //退出系統(tǒng)</p&
109、gt;<p><b> }</b></p><p><b> }</b></p><p><b> return 0;</b></p><p> 400. }</p><p><b> 五、程序結(jié)果</b></p>
110、;<p> 首次運(yùn)行程序時(shí)如圖1。</p><p><b> 圖1</b></p><p> 按任意鍵以建立試題庫,如圖2。</p><p><b> 圖2</b></p><p> 依次輸入所要建立的試題數(shù)目n和n個(gè)表達(dá)式,現(xiàn)以輸入十個(gè)為例,實(shí)際可多輸入一些,如圖3。
111、</p><p><b> 圖3</b></p><p> 再次按任意鍵即可進(jìn)入系統(tǒng)正常進(jìn)行作業(yè)使用,見圖4,另外,從第二次使用本系統(tǒng)開始,每次剛打開后的界面也為圖4。</p><p><b> 圖4</b></p><p> 之后輸入1即可做題,根據(jù)提示輸入要做多少題n,然后屏幕上會依次
112、出現(xiàn)n道題,等待用戶給出結(jié)果。用戶輸入結(jié)果后即時(shí)給出判定,對答錯(cuò)的題給出正確答案,之后給出這次做題所得分?jǐn)?shù)(百分制),并給出與以往成績的比較(第一次由于之前不存在成績記錄,于是與自己相比),見圖5。</p><p><b> 圖5</b></p><p> 選擇是否繼續(xù)做題,這里選擇“是”,再做一組題,輸入"y",見圖7(下頁)。</p
113、><p> 可以看出這一次比上次進(jìn)步了。輸入"n",結(jié)束做題,返回圖4所示界面。輸入2查看成績歷史記錄,見圖6。</p><p><b> 圖6</b></p><p> 按任意鍵后返回圖4界面,輸入3退出系統(tǒng),見圖8。</p><p><b> 圖7</b></p
114、><p><b> 圖8</b></p><p> 按任意鍵后即推出系統(tǒng)。以后再運(yùn)行該程序時(shí),將從圖4界面開始。</p><p><b> 課程設(shè)計(jì)體會</b></p><p> 本次課程設(shè)計(jì)是制作一個(gè)試題庫供小學(xué)生選題,我是通過棧來實(shí)現(xiàn)表達(dá)式求值的,起初對于表達(dá)式求值,我不知如何求值。而后參考
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)(表達(dá)式求值)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--算術(shù)表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--表達(dá)式求值問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--算術(shù)表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--表達(dá)式求值問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---算術(shù)表達(dá)式求值系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-中綴算術(shù)表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---中綴算術(shù)表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(二)表達(dá)式求值(計(jì)算器)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--表達(dá)式求值—mfc圖形界面
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)帶括號的算術(shù)表達(dá)式求值
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(表達(dá)式計(jì)算)
- 算術(shù)表達(dá)式求值課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告(逆波蘭表達(dá)式求值)
- (鹽城工學(xué)院數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì))棧的應(yīng)用表達(dá)式求值
- 算術(shù)表達(dá)式求值演示-課程設(shè)計(jì)報(bào)告
評論
0/150
提交評論