版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《軟件課程設(shè)計(jì)》報(bào)告</p><p><b> 班 級(jí):</b></p><p> 姓 名: </p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)老師: </p><
2、;p><b> 軟件課程設(shè)計(jì)任務(wù)書(shū)</b></p><p><b> 專(zhuān)業(yè)年級(jí):</b></p><p><b> 學(xué)生姓名: </b></p><p> 任務(wù)下達(dá)日期: 年 月 日</p><p> 課程設(shè)計(jì)日期:年 月 日至年 月 日
3、</p><p> 課程設(shè)計(jì)題目: 面向過(guò)程 </p><p> 軟件課程設(shè)計(jì)指導(dǎo)教師評(píng)閱書(shū)</p><p> 指導(dǎo)教師評(píng)語(yǔ)(①基礎(chǔ)理論及基本技能的掌握;②獨(dú)立解決實(shí)際問(wèn)題的能力;③研究?jī)?nèi)容的理論依據(jù)和技術(shù)方法;④取得的主要成果及創(chuàng)新點(diǎn);⑤工作態(tài)度及工作量;⑥總體評(píng)價(jià)及建議成績(jī);⑦存在問(wèn)題等):</p><p> 成 績(jī):
4、 指導(dǎo)教師簽字:</p><p> 年 月 日</p><p><b> 目錄</b></p><p> 面向過(guò)程設(shè)計(jì)題2-------.求反序數(shù)和原數(shù)和(sy1-2.cpp)</p><p> 1.1 需求分析…………………………………………………………
5、…………….…6</p><p> 1.2 概要設(shè)計(jì)………………………………………………………………………...6</p><p> 1.3 詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...7</p><p> 1.4 調(diào)試分析………………………………………………………………………...7</p><p>
6、1.5 用戶(hù)使用說(shuō)明 ………………………………………………………………….7</p><p> 1.6 設(shè)計(jì)心得………………………………………………………………………...7</p><p> 二、面向過(guò)程設(shè)計(jì)題5-----5判斷日期與星期:(sy1-5.cpp)</p><p> 2.1 需求分析…………………………………………………………………………
7、8</p><p> 2.2 概要設(shè)計(jì)………………………………………………………………………...8</p><p> 2.3 詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...8</p><p> 2.4 調(diào)試分析………………………………………………………………………...9</p><p> 2.5 用戶(hù)
8、使用說(shuō)明 ………………………………………………………………….9</p><p> 2.6 設(shè)計(jì)心得………………………………………………………………………...9</p><p> 三、面向?qū)ο笤O(shè)計(jì)題1------定義complex類(lèi)進(jìn)行復(fù)數(shù)的加減乘除</p><p> ?。╯y2-1.cpp)</p><p> 3.1 需求分析…
9、………………………………………………………………………10</p><p> 3.2 概要設(shè)計(jì)………………………………………………………………………...11</p><p> 3.3 詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...12</p><p> 3.4 調(diào)試分析………………………………………………………………………...1
10、3</p><p> 3.5 用戶(hù)使用說(shuō)明 …………………………………………………………………13</p><p> 3.6 設(shè)計(jì)心得………………………………………………………………………...13</p><p> 四、面向過(guò)程設(shè)計(jì)題3---------用三種方法通過(guò)虛函數(shù)求Fibonacci(sy2-3.cpp)</p><p>
11、; 4.1 需求分析…………………………………………………………………………14</p><p> 4.2 概要設(shè)計(jì)………………………………………………………………………...15</p><p> 4.3 詳細(xì)設(shè)計(jì)與編碼………………………………………………………………..16</p><p> 4.4 調(diào)試分析…………………………………………………
12、……………………...17</p><p> 4.5 用戶(hù)使用說(shuō)明 ………………………………………………………………….17</p><p> 4.6 設(shè)計(jì)心得………………………………………………………………………...17</p><p> 五、圖形界面1---------計(jì)算器(sy3計(jì)算器.rar)</p><p> 5.1
13、 需求分析……………………………………………………………………… .18</p><p> 5.2 概要設(shè)計(jì)………………………………………………………………………..19</p><p> 5.3 詳細(xì)設(shè)計(jì)與編碼………………………………………………………………..20</p><p> 5.4 調(diào)試分析…………………………………………………………………
14、……...22</p><p> 5.5 用戶(hù)使用說(shuō)明 ………………………………………………………………….22</p><p> 5.6 設(shè)計(jì)心得………………………………………………………………………...22</p><p> 六、數(shù)據(jù)結(jié)構(gòu)1------用鏈表和數(shù)組兩種方式分別實(shí)現(xiàn)棧的出棧、入棧、取棧頂元素、判空、查找等操作(第四階段1-1、第四階段1
15、-2)</p><p> 6.1 需求分析…………………………………………………………………………23</p><p> 6.2 概要設(shè)計(jì)………………………………………………………………………...24</p><p> 6.3 詳細(xì)設(shè)計(jì)與編碼……………………………………………………………….24</p><p> 6.4 調(diào)
16、試分析………………………………………………………………………...29</p><p> 6.5 用戶(hù)使用說(shuō)明 ………………………………………………………………….29</p><p> 6.6 設(shè)計(jì)心得………………………………………………………………………...29</p><p> 七、數(shù)據(jù)結(jié)構(gòu)3--------求A矩陣的轉(zhuǎn)置矩陣B(第四階段――3)&
17、lt;/p><p> 7.需求分析………………………………………………………..………….……30</p><p> 7.概要設(shè)計(jì)………………………………………………………………………...30</p><p> 7.詳細(xì)設(shè)計(jì)與編碼………………………………………………………………..30</p><p> 7.調(diào)試分析…………………………
18、……………………………………………...31</p><p> 7.用戶(hù)使用說(shuō)明 ………………………………………………………………….31</p><p> 7.設(shè)計(jì)心得………………………………………………………………………...32</p><p> 八、課程設(shè)計(jì)總結(jié) ……………………………………………………………… 33</p><p
19、><b> 第一部分 基礎(chǔ)題</b></p><p> 2. 編程序,從鍵盤(pán)輸入正整數(shù)n,求出n與其反序數(shù)之和并輸出。/////////////////////////////////</p><p><b> 需求分析:</b></p><p> 本程序主要完成的是:由用戶(hù)自己輸入一個(gè)多為正整數(shù),由程序?qū)⒚?/p>
20、位分離,倒序組合,并由程序?qū)⑴帕泻玫姆葱驍?shù)與原數(shù)進(jìn)行求和。</p><p> ////////////////////////////////程序執(zhí)行結(jié)果//////////////////////////////////////////////////////////////</p><p><b> 概要設(shè)計(jì):</b></p><p>
21、 本程設(shè)計(jì)思路:將輸入的正整數(shù)通過(guò)取整、取余進(jìn)行分離,利用數(shù)組儲(chǔ)存,再利用c++庫(kù)函數(shù)pow將分離的數(shù)分別乘上10的多次方達(dá)到,與原數(shù)位數(shù)相同且是反序數(shù)的效果。</p><p> 再將其與原數(shù)進(jìn)行求和。</p><p> 1.3 詳細(xì)設(shè)計(jì)與編碼:</p><p> #include<iostream></p><
22、p> #include<cmath></p><p> using namespace std;</p><p> int main()</p><p><b> {</b></p><p> int n,m=0;</p><p> cout<<"
23、;please input a integer:";</p><p><b> cin>>n;</b></p><p><b> int c=n;</b></p><p> int a[100]={0};//用于將分離的數(shù)位儲(chǔ)存</p><p> int b[100]=
24、{0};//用于儲(chǔ)存相反數(shù)位</p><p> int i=0,j;</p><p> while(n!=0)//分離整數(shù)各個(gè)位</p><p><b> {</b></p><p> a[i++]=n%10;</p><p><b> n=n/10;</b><
25、;/p><p><b> }</b></p><p> for(i,j=0;i>0;i--,j++)</p><p><b> {</b></p><p> b[j]=a[i-1];</p><p><b> }</b></p>
26、<p> for(j;j>0;j--)</p><p><b> { </b></p><p> m=m+b[j-1]*pow(10,j-1);//計(jì)算相同數(shù)位的反序數(shù)</p><p><b> }</b></p><p> cout<<"原來(lái)的數(shù)
27、是:"<<c<<'\n';</p><p> cout<<"倒序后的數(shù)是:"<<m<<'\n';</p><p> cout<<"兩個(gè)數(shù)相加得:"<<c<<"+"<<m<&
28、lt;"="<<c+m<<endl;//求和</p><p> cout<<"謝謝您的使用!"<<endl;</p><p><b> return 0;</b></p><p><b> }</b></p><
29、;p> 1.4 調(diào)試分析:</p><p> 在調(diào)試過(guò)程中數(shù)組中儲(chǔ)存的數(shù)一定要想好,否則不能得出結(jié)果。</p><p> 而且本程序支持9位以下的整數(shù),位數(shù)太多則不能得出結(jié)果。</p><p> 1.5 用戶(hù)使用說(shuō)明:</p><p> 用戶(hù)根據(jù)程序的提示指定輸入自己想要計(jì)算的數(shù)。</p><
30、;p> 1.6 設(shè)計(jì)心得:</p><p> 通過(guò)自己的親手做,開(kāi)始覺(jué)的有點(diǎn)不熟悉,不能完成,但通過(guò)自己耐心的調(diào)試最后得出了結(jié)果,如果可能的話希望把程序做得更簡(jiǎn)潔些。</p><p> 2.第五題:編程序,使 用戶(hù)任意輸入一個(gè)年份以及該年的1月1日是星期幾,而后任意指定某一天(再輸入該年的任意一個(gè)月份日期),由程序計(jì)算出這一天是星期幾。注意,2月份閏年為29天,非閏年為28天
31、;可被4整除而不可被100整除的年份、或者可被400整除的年份均為閏年。 </p><p><b> 1需求分析</b></p><p> 用戶(hù)自己輸入一個(gè)日期,并輸入該年的一月一日是星期幾,由該程序完成計(jì)算,輸出這一天是星期幾。</p><p> /////////////////////////////////程序執(zhí)行結(jié)果//////
32、//////////////////////////////////////////////////////////////</p><p><b> 2.2概要設(shè)計(jì):</b></p><p> 本程設(shè)計(jì)思路:輸入用戶(hù)想要計(jì)算的日期(包括年、月、日)及本年一月一日的星期,</p><p> 定義一個(gè)數(shù)組儲(chǔ)存平年12個(gè)月的天數(shù),再用判斷語(yǔ)句
33、判斷這一年是平年還是閏年,若為閏年,將數(shù)組中儲(chǔ)存2月的元素的天數(shù)設(shè)為29,至此天數(shù)設(shè)定完成。然后利用一個(gè)for循環(huán)計(jì)算經(jīng)過(guò)的天數(shù)。最后利用公式計(jì)算這一天是星期幾。</p><p> 2.3 詳細(xì)設(shè)計(jì)與編碼:</p><p> #include<iostream></p><p> using namespace std;</p&
34、gt;<p> void main()</p><p><b> {</b></p><p> int y,m,d,n;//輸入變量年、月、日和星期</p><p><b> int s=0;</b></p><p> int a[13]={0,31,28,31,30,31,
35、30,31,31,30,31,30,31};//定義一個(gè)數(shù)組儲(chǔ)存每個(gè)月的天數(shù)</p><p> cout<<"請(qǐng)輸入年月日:"<<endl;</p><p> cout<<"年"<<endl;cin>>y;</p><p> cout<<"
36、月"<<endl; cin>>m;</p><p> cout<<"日"<<endl; cin>>d;</p><p> cout<<"請(qǐng)輸入這年的一月一日是星期幾;"<<endl;</p><p><b> cin&
37、gt;>n;</b></p><p> if(y/4==0&&y/100!=0||y/400==0)</p><p><b> a[2]=29;</b></p><p><b> else</b></p><p><b> a[2]=28;<
38、/b></p><p> for(int i=0;i<m;i++)</p><p><b> {</b></p><p><b> s=s+a[i];</b></p><p><b> }</b></p><p><b>
39、 s=s+d;</b></p><p><b> int n1;</b></p><p><b> n1=n;</b></p><p><b> if(s<7)</b></p><p><b> {</b></p>
40、<p><b> n=n+s-1;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> n=n+s%7-1;</p><p
41、><b> }</b></p><p> cout<<"這一天是星期"<<n<<endl;</p><p><b> }</b></p><p> 2.4 調(diào)試分析:</p><p> 調(diào)試過(guò)程中,經(jīng)常遇到公式計(jì)算錯(cuò)誤,即使輸
42、入、輸出正確也要多驗(yàn)證幾個(gè)不同情況,</p><p> 有時(shí)會(huì)忽略一些問(wèn)題。</p><p> 2.5 用戶(hù)使用說(shuō)明:</p><p> 用戶(hù)根據(jù)程序的提示輸入年、月、日及這年一月一日的星期。</p><p> 2.6 設(shè)計(jì)心得:</p><p> 這個(gè)程序看似復(fù)雜,其實(shí)弄懂其中的主要公式,及
43、編寫(xiě)程序時(shí)的主要方法,就可以編寫(xiě)出來(lái)。</p><p><b> 二 、面向?qū)ο?lt;/b></p><p> 1. 自定義一個(gè)示意性的復(fù)數(shù)類(lèi)型complex,其中含有若干個(gè)成員函數(shù),使用該類(lèi)可以完成復(fù)數(shù)的加法以及對(duì)復(fù)數(shù)的輸出。請(qǐng)完成類(lèi)定義,并編制主函數(shù),說(shuō)明complex類(lèi)對(duì)象,對(duì)定義的各成員函數(shù)進(jìn)行調(diào)用。進(jìn)一步,在類(lèi)中添加對(duì)復(fù)數(shù)進(jìn)行其他基本運(yùn)算(如,復(fù)數(shù)減、乘、除
44、、取模等)的相應(yīng)成員函數(shù),并通過(guò)主函數(shù)處的調(diào)用來(lái)驗(yàn)證各函數(shù)的使用正確性。</p><p><b> 3.1需求分析</b></p><p> 用戶(hù)根據(jù)提示輸入兩個(gè)復(fù)數(shù),然后程序自動(dòng)求出這兩個(gè)復(fù)數(shù)的和、差、積、商。</p><p> ///////////////////////////////////程序執(zhí)行結(jié)果/////////////
45、/////////////////////////////////</p><p><b> 3.2概要設(shè)計(jì)</b></p><p> 本程序主要運(yùn)用運(yùn)算符的重載:</p><p> complex operator+(complex &c2);</p><p> complex operator-(co
46、mplex &c2);</p><p> complex operator*(complex &c2);</p><p> complex operator/(complex &c2);</p><p> double x(complex &c);</p><p> 分別將實(shí)數(shù)的加減乘除運(yùn)算符重載,使在
47、這些運(yùn)算符在復(fù)數(shù)中也可以使用,還利用復(fù)數(shù)的算法。</p><p> 3.3 詳細(xì)設(shè)計(jì)及代碼</p><p> #include<iostream></p><p> #include<cmath></p><p> using namespace std;</p><p> class
48、 complex</p><p><b> {</b></p><p><b> private:</b></p><p> double real;</p><p> double imag;</p><p><b> public:</b>
49、</p><p> complex(){real=0.0;imag=0.0;}</p><p> ~complex(){};</p><p> complex(double r,double i)</p><p><b> {</b></p><p><b> real=r;&
50、lt;/b></p><p><b> imag=i;</b></p><p><b> }</b></p><p> complex operator+(complex &c2);</p><p> complex operator-(complex &c2);<
51、;/p><p> complex operator*(complex &c2);</p><p> complex operator/(complex &c2);</p><p> double x(complex &c);</p><p> void display();</p><p>
52、 void set();</p><p><b> };</b></p><p> double complex::x(complex &c)</p><p><b> {</b></p><p> return sqrt(c.real*c.real+c.imag*c.imag);
53、</p><p><b> }</b></p><p> void complex::set()</p><p><b> {</b></p><p> cout<<"請(qǐng)輸入實(shí)部"<<endl;</p><p> cin&
54、gt;>real;</p><p> cout<<"請(qǐng)輸入虛部"<<endl;</p><p> cin>>imag;</p><p><b> }</b></p><p> void complex::display()</p><
55、;p><b> {</b></p><p> cout<<"("<<real<<","<<imag<<"i"<<")"<<endl;</p><p><b> }</b>&
56、lt;/p><p> complex complex::operator+(complex &c2)</p><p><b> { </b></p><p> return complex(real+c2.real,imag+c2.imag);</p><p><b> }</b><
57、;/p><p> complex complex::operator-(complex &c2)</p><p><b> {</b></p><p> return complex(real-c2.real,imag-c2.imag);</p><p><b> }</b></p
58、><p> complex complex::operator*(complex &c2)</p><p><b> {</b></p><p> return complex((real*c2.real-imag*c2.imag),(real*c2.imag+imag*c2.real));</p><p>&
59、lt;b> }</b></p><p> complex complex::operator/(complex &c2)</p><p><b> { </b></p><p> return complex((real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.i
60、mag*c2.imag),(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag));</p><p><b> }</b></p><p> int main()</p><p><b> {</b></p><p> co
61、mplex c1,c2,c7(0,0);</p><p> double x1,x2;</p><p> cout<<"請(qǐng)輸入第一個(gè)復(fù)數(shù):";c1.set();</p><p> cout<<"請(qǐng)輸入第一個(gè)復(fù)數(shù):";c2.set();</p><p> complex
62、c3,c4,c5,c6;</p><p><b> c3=c1+c2;</b></p><p><b> c4=c1-c2;</b></p><p><b> c5=c1*c2;</b></p><p><b> c6=c1/c2;</b><
63、/p><p> x1=c1.x(c1);</p><p> x2=c1.x(c2);</p><p> cout<<"相加得"<<endl;c3.display();</p><p> cout<<"相減得"<<endl;c4.display();&l
64、t;/p><p> cout<<"相乘得"<<endl;c5.display();</p><p> cout<<"相除得"<<endl;c6.display();</p><p> cout<<"第一個(gè)數(shù)的模"<<x1<<
65、;endl;</p><p> cout<<"第二個(gè)數(shù)的模"<<x2<<endl;</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> 3.4調(diào)試分析</
66、b></p><p> 調(diào)試過(guò)程中,由于代碼量較大,括號(hào)的數(shù)量可能會(huì)不一致,要細(xì)心,在編寫(xiě)乘除法時(shí)要注意算法,因?yàn)閺?fù)數(shù)的乘除與實(shí)數(shù)有一定的區(qū)別。</p><p> 3.5 用戶(hù)使用說(shuō)明:</p><p> 用戶(hù)根據(jù)屏幕上的提示信息,依次輸入計(jì)算的復(fù)數(shù)的實(shí)虛部,</p><p> 然后程序會(huì)自動(dòng)計(jì)算,然后將結(jié)果輸出到
67、屏幕上。</p><p><b> 3.6設(shè)計(jì)心得</b></p><p> 通過(guò)本程序的設(shè)計(jì),我對(duì)運(yùn)算符的重載有了更加深刻的認(rèn)識(shí),對(duì)于面向?qū)ο筮@種思想也有了更深的理解。</p><p> 4. 利用虛函數(shù)手段,按照3種不同的計(jì)算方法來(lái)求出Fibonacci數(shù)列的第n項(xiàng)(的具體項(xiàng)值)并輸出。</p><p><
68、;b> 4.1需求分析</b></p><p> 分別通過(guò)三種不同的方法結(jié)合面對(duì)對(duì)象的編程思想,利用類(lèi)、純虛函數(shù),求Fibonacci數(shù)列的任何一項(xiàng)的值。</p><p> 第一種使用的是簡(jiǎn)單數(shù)據(jù)平移法;</p><p> 第二種使用的是數(shù)組法;</p><p> 最后一種使用的函數(shù)遞歸的方法。</p>
69、<p> ///////////////////////////////////////程序執(zhí)行結(jié)果//////////////////////////////////////////////</p><p><b> 4.2 概要設(shè)計(jì)</b></p><p> 本程序主要通過(guò)純虛函數(shù)的方法實(shí)現(xiàn)Fibonacci數(shù)列的求值,</p>
70、<p> 在定義的類(lèi)中聲明純虛函數(shù),在類(lèi)外用三種不同的方法實(shí)現(xiàn),</p><p> 最后用科學(xué)計(jì)數(shù)的方法打印出來(lái)。</p><p> 4.3 詳細(xì)設(shè)計(jì)及編碼</p><p> #include <iostream></p><p> using namespace std;</p><p&g
71、t; class baseCla</p><p><b> {</b></p><p><b> public:</b></p><p> virtual double fib(int n)=0; //定義純虛函數(shù)fib()</p><p><b> };</b&g
72、t;</p><p> class fib1Cla:public baseCla</p><p><b> { </b></p><p><b> public :</b></p><p> virtual double fib(int n); //在派生類(lèi)中說(shuō)明同一個(gè)虛函數(shù)
73、fib()</p><p><b> };</b></p><p> class fib2Cla:public baseCla</p><p><b> {</b></p><p><b> public:</b></p><p> virtu
74、al double fib(int n); </p><p><b> };</b></p><p> class fib3Cla:public baseCla</p><p><b> {</b></p><p><b> public:</b></p>
75、<p> virtual double fib(int n); </p><p><b> };</b></p><p> double fib1Cla::fib (int n) //對(duì)fib1中的函數(shù)進(jìn)行定義(簡(jiǎn)單數(shù)據(jù)平移法)</p><p><b> { </b></p
76、><p><b> double p;</b></p><p> double a=1,b=1;</p><p> if(n==1||n==2)</p><p> return 1 ;</p><p><b> else </b></p><p>
77、;<b> {</b></p><p> for(int i=3;i<=n;i++)</p><p><b> {</b></p><p><b> p=a+b;</b></p><p><b> a=b;</b></p>&
78、lt;p><b> b=p;</b></p><p><b> }</b></p><p><b> return p;</b></p><p><b> }</b></p><p><b> }</b></p&
79、gt;<p> double fib2Cla::fib (int n) //對(duì)fib2中的函數(shù)進(jìn)行定義(數(shù)組法)</p><p><b> { </b></p><p> double a[1000];</p><p><b> a[0]=1;</b></p>
80、;<p><b> a[1]=1;</b></p><p> if(n==1||n==2)</p><p> return 1 ;</p><p><b> else</b></p><p><b> {</b></p><p>
81、 for(int i=2;i<=n-1;i++)</p><p> a[i]=a[i-1]+a[i-2];</p><p> return a[n-1];</p><p><b> }</b></p><p><b> }</b></p><p> doub
82、le fib3Cla::fib (int n) </p><p><b> {</b></p><p><b> double p;</b></p><p> if(n==1||n==2)</p><p><b> p=1;</b></p><p
83、><b> else</b></p><p> p=fib(n-1)+fib(n-2);</p><p><b> return p;</b></p><p><b> }</b></p><p> void fun( baseCla*p, int n)
84、 //自定義函數(shù)fun,形參p為指向基類(lèi)的指針,其對(duì)應(yīng)實(shí)參</p><p> //可為不同派生類(lèi)對(duì)象的地址,n指明了要求出數(shù)列的第n項(xiàng)</p><p><b> { </b></p><p> double d=p->fib (n); //根據(jù)p指針不同調(diào)用不同的派生類(lèi)中的虛函數(shù)fib</p>
85、<p> cout.flags(ios::scientific);</p><p> cout.precision(15);</p><p> cout<<"fib("<<n<<")="<<d<<endl;</p><p><b> }
86、</b></p><p> void main()</p><p><b> {</b></p><p> fib1Cla obj1;</p><p> fib2Cla obj2;</p><p> fib3Cla obj3;</p><p> co
87、ut<<"------fib1Cla--------"<<endl;//簡(jiǎn)單變量"數(shù)據(jù)平移"求解方法,求fib(1476)</p><p> fun(&obj1,1476);</p><p> cout<<"------fib2Cla--------"<<endl;//數(shù)
88、組求解方法,求fib(888)</p><p> fun(&obj2,888);</p><p> cout<<"------fib3Cla--------"<<endl;//遞歸求解方法,求fib(35)</p><p> fun(&obj3,35);</p><p><
89、;b> }</b></p><p><b> 4.4 調(diào)試分析</b></p><p> 本程序的算法難度不大,主要是對(duì)純虛函數(shù)的認(rèn)識(shí)和使用</p><p> 在調(diào)用三個(gè)不同的方法時(shí),指針的使用是非常有必要的。如果指向不當(dāng)就可能造成錯(cuò)誤。</p><p><b> 4.5用戶(hù)使用說(shuō)明
90、</b></p><p> 本程序重在利用三種不同的方法進(jìn)行Fibonacci數(shù)列的求值,</p><p> 故在程序中已經(jīng)設(shè)定好了需要求解的數(shù)值,用戶(hù)只需單擊執(zhí)程序指令,程序就會(huì)自動(dòng)進(jìn)行運(yùn)算。</p><p><b> 4.6 設(shè)計(jì)心得</b></p><p> 通過(guò)本程序的設(shè)計(jì)和編輯,我更深刻的體
91、會(huì)了面向?qū)ο笾屑兲摵瘮?shù)的使用,對(duì)面向?qū)ο缶幊痰乃枷胗辛烁羁痰恼J(rèn)識(shí),提高了我的編程能力。</p><p> 第三階段、可視化程序設(shè)計(jì)</p><p><b> 5.1需求分析</b></p><p> 根據(jù)用戶(hù)需求編寫(xiě)一個(gè)計(jì)算器,用戶(hù)可以根據(jù)自己的需求進(jìn)行簡(jiǎn)單的數(shù)學(xué)計(jì)算,例如加法運(yùn)算,減法運(yùn)算,乘法運(yùn)算,除法運(yùn)算和一些高級(jí)運(yùn)算如開(kāi)平方,求
92、冪運(yùn)算。</p><p><b> 測(cè)試 4+5=</b></p><p> ////////////////////////////////////程序執(zhí)行結(jié)果///////////////////////////////////////////</p><p> ////////////////////////////////////
93、//////////////////////////////////////////////////////////////////////</p><p><b> 5.2概要設(shè)計(jì):</b></p><p> 抽象數(shù)據(jù)類(lèi)型與函數(shù)定義:</p><p><b> 1.類(lèi)及類(lèi)函數(shù):</b></p><
94、;p> 運(yùn)算類(lèi)型均默認(rèn)為長(zhǎng)整型,將計(jì)算結(jié)果保留六位小數(shù)。</p><p> 2.程序流程: 首先初始化MFC模塊,創(chuàng)建可視化界面對(duì)界面的內(nèi)容進(jìn)行設(shè)定,然后設(shè)計(jì)相應(yīng)的函數(shù)執(zhí)行之,最后在工程中調(diào)用各個(gè)模塊,實(shí)現(xiàn)功能。</p><p> 5.3詳細(xì)設(shè)計(jì)及編碼</p><p> void CCalculatorDlg::OnButton1() </p&g
95、t;<p><b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> UpdateData();</p><p> if(cat==1)</p><p><b> ;<
96、/b></p><p> else if(m_edit1=="0.")</p><p> m_edit1="";</p><p> m_edit1+='1';</p><p> UpdateData(false);</p><p><b>
97、 }</b></p><p><b> 運(yùn)算符:</b></p><p><b> 乘號(hào):</b></p><p> void CCalculatorDlg::OnBUTTONcen() </p><p><b> {</b></p><
98、;p> // TODO: Add your control notification handler code here</p><p> UpdateData();</p><p> cs1=m_edit1;</p><p> m_edit1="";</p><p><b> sos=3;<
99、;/b></p><p> UpdateData(false);</p><p><b> } </b></p><p><b> 求?!?”:</b></p><p> void CCalculatorDlg::OnButton10() </p><p>&l
100、t;b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> UpdateData();</p><p> cs1=m_edit1;</p><p> m_edit1="";</p
101、><p><b> sos=6;</b></p><p> UpdateData(false);</p><p><b> }</b></p><p> 開(kāi)根號(hào)“sqrt”:</p><p> void CCalculatorDlg::OnButton11() <
102、;/p><p><b> {</b></p><p> UpdateData();</p><p> double f1,f3;</p><p> cs1=m_edit1;</p><p> f1=atof(cs1);</p><p><b> if(f1
103、<0)</b></p><p> MessageBox("負(fù)數(shù)沒(méi)有平方根!");</p><p><b> else</b></p><p><b> {</b></p><p> f3=sqrt(f1);</p><p> m
104、_edit1.Format("%f",f3);}</p><p> UpdateData(false);</p><p><b> 清空鍵“AC”:</b></p><p> void CCalculatorDlg::OnBUTTONcls() </p><p><b> {<
105、/b></p><p> UpdateData();</p><p> m_edit1="";</p><p><b> sos=0;</b></p><p> UpdateData(false);</p><p><b> }</b>&l
106、t;/p><p><b> 等號(hào)鍵“=”:</b></p><p> void CCalculatorDlg::OnBUTTONcalc() </p><p><b> {</b></p><p> // TODO: Add your control notification handler c
107、ode here</p><p> double f1,f2,f3;</p><p> switch (sos)</p><p><b> {</b></p><p><b> case 1:</b></p><p> UpdateData();</p>
108、<p> cs2=m_edit1;</p><p> if(cs1.Left(1)!='-') </p><p> f1=atof(cs1); </p><p> if(cs1.Left(1)=='-')</p><p><b> {</b></p>
109、<p> cs1=cs1.Right(cs1.GetLength()-1); </p><p> f1=(-1)*(atof(cs1));</p><p><b> }</b></p><p> f2=atof(cs2);</p><p><b> f3=f1+f2;</b>&
110、lt;/p><p> m_edit1.Format("%f",f3);</p><p> UpdateData(false); </p><p><b> break;</b></p><p><b> case 2:</b></p><p> U
111、pdateData();</p><p> cs2=m_edit1;</p><p> f1=atof(cs1);</p><p> f2=atof(cs2);</p><p><b> f3=f1-f2;</b></p><p> m_edit1.Format("%f&quo
112、t;,f3);</p><p> UpdateData(false); </p><p><b> break;</b></p><p><b> case 3:</b></p><p> UpdateData();</p><p> cs2=m_edit1;<
113、;/p><p> f1=atof(cs1);</p><p> f2=atof(cs2);</p><p><b> f3=f1*f2;</b></p><p> m_edit1.Format("%f",f3);</p><p> UpdateData(false);&l
114、t;/p><p><b> break;</b></p><p><b> case 4:</b></p><p> UpdateData();</p><p> cs2=m_edit1;</p><p> f1=atof(cs1);</p><p&
115、gt; f2=atof(cs2);</p><p><b> if(f2==0)</b></p><p> MessageBox("被除數(shù)不能為零!");</p><p><b> else{</b></p><p><b> f3=f1/f2;</b&
116、gt;</p><p> m_edit1.Format("%f",f3);}</p><p> UpdateData(false);</p><p><b> break;</b></p><p><b> case 6:</b></p><p>
117、 UpdateData();</p><p> cs2=m_edit1;</p><p> f1=atof(cs1);</p><p> f2=atof(cs2);</p><p> f3=int(f1)%int(f2);</p><p> m_edit1.Format("%f",f3)
118、;</p><p> UpdateData(false);</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 正負(fù)號(hào)“+/-”:<
119、;/b></p><p> void CCalculatorDlg::OnBUTTONfu() </p><p><b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> UpdateData(
120、);</p><p> //cs1=m_edit1;</p><p> //m_edit1="";</p><p> if(m_edit1.Left(1)=='-') //截取m_edit1左邊第一個(gè)字符'-'</p><p> m_edit1=m_edit1.Right(m_ed
121、it1.GetLength()-1); </p><p><b> else</b></p><p> m_edit1='-'+m_edit1;</p><p><b> sos=5;</b></p><p> UpdateData(false);</p>&
122、lt;p><b> }</b></p><p><b> 5.4調(diào)試分析</b></p><p> 在制作計(jì)算器的過(guò)程中,因?yàn)槌绦蛑杏泻芏囝^文件,所以在寫(xiě)程序時(shí)很多時(shí)候都出現(xiàn)了不能運(yùn)行,提示頭文件缺失等等問(wèn)題,所以我們要注意函數(shù)的連接,再者</p><p> 文件中有很多函數(shù)要用,編寫(xiě)功能函數(shù)時(shí)經(jīng)常因?yàn)榫帉?xiě)錯(cuò)
123、誤而不能運(yùn)行該功能。</p><p><b> 5.5用戶(hù)使用說(shuō)明</b></p><p> 用戶(hù)打開(kāi)程序時(shí),屏幕上會(huì)自動(dòng)顯示出科學(xué)計(jì)算器的界面,使用鼠標(biāo),點(diǎn)擊要輸入的數(shù)字后運(yùn)算符號(hào),點(diǎn)擊后該數(shù)字后符號(hào)就會(huì)在顯示屏上顯示出來(lái)。當(dāng)輸入完成后顯示屏?xí)詣?dòng)顯示出用戶(hù)剛剛輸入的表達(dá)式的值,按“AC”鍵清空顯示屏上的數(shù)字。若要繼續(xù)計(jì)算則按上述步驟繼續(xù),若要退出則按界面右上方
124、的退出圖標(biāo),或右擊MFC圖標(biāo),選擇退出后即可退出程序。</p><p><b> 5.6程序編寫(xiě)心得</b></p><p> 通過(guò)這次程序的編寫(xiě)和修改,我初步學(xué)會(huì)了如何利用visual c++ 6.0 提供的MFC可視化編程來(lái)實(shí)現(xiàn)可視化程序,在這個(gè)過(guò)程中我深刻地體會(huì)到了C++在程序設(shè)計(jì)中的強(qiáng)大功能,為今后的學(xué)習(xí)打下了良好的基礎(chǔ),通過(guò)程序的編寫(xiě)我更加深刻的體會(huì)的各
125、個(gè)函數(shù),各個(gè)頭文件的作用,更深刻的明白的頭文件的作用原理。 </p><p><b> 第四階段、數(shù)據(jù)結(jié)構(gòu)</b></p><p> 6.用鏈表和數(shù)組兩種方式分別實(shí)現(xiàn)棧的出棧、入棧、取棧頂元素、判空、查找等操作。</p><p><b> 6.1需求分析</b></p><p> 分別通過(guò)數(shù)
126、組和鏈表實(shí)現(xiàn)棧的各項(xiàng)功能,程序自動(dòng)生成一個(gè)棧,用戶(hù)根據(jù)提示進(jìn)行操作。</p><p><b> 6.2概要設(shè)計(jì)</b></p><p> 本程序主要通過(guò)數(shù)據(jù)結(jié)構(gòu)中棧結(jié)構(gòu)的先進(jìn)后出作用,來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)操作的各種功能,進(jìn)棧、出棧、獲取棧頂元素 、判空 、查找等。主要利用兩種不同的方法進(jìn)行設(shè)計(jì),第一種利用數(shù)組順序儲(chǔ)存,第二種利用定義的新結(jié)點(diǎn),指針形成鏈表儲(chǔ)存。</p
127、><p><b> 6.3</b></p><p><b> 詳細(xì)設(shè)計(jì)及代碼</b></p><p> 6.3.1利用數(shù)組順序儲(chǔ)存</p><p> #include<iostream.h></p><p> #include<stdlib.h>
128、</p><p> #define STACK_INIT_SIZE 100//存儲(chǔ)空間初始分配量</p><p> typedef int ElemType;</p><p> typedef struct{</p><p> ElemType data[STACK_INIT_SIZE];</p><p&
129、gt;<b> int top;</b></p><p> }SeqStack;</p><p> void InitStack(SeqStack &S)</p><p> {//構(gòu)造一個(gè)新的棧</p><p><b> S.top=-1;</b></p><p
130、><b> }</b></p><p> void GetTop(SeqStack S)</p><p><b> {//取棧頂元素</b></p><p> if(S.top==-1)</p><p> cout<<"棧為空"<<endl
131、;</p><p><b> else</b></p><p><b> {</b></p><p> cout<<"棧頂元素為:"<< S.data[S.top]<<endl;</p><p><b> }</b>
132、;</p><p><b> }</b></p><p> void Push(SeqStack &S,ElemType e)</p><p><b> {//入棧</b></p><p> if(S.top==STACK_INIT_SIZE-1)</p><p&
133、gt; cout<<"棧滿"<<endl;</p><p><b> else</b></p><p><b> {</b></p><p><b> S.top++;</b></p><p> S.data[S.top]=
134、e;</p><p><b> }</b></p><p><b> }</b></p><p> void Pop(SeqStack &S)</p><p><b> {//出棧</b></p><p> ElemType x;<
135、;/p><p> if(S.top==-1)</p><p> cout<<"棧為空"<<endl;</p><p><b> else</b></p><p><b> {</b></p><p> x=S.data[S.t
136、op];</p><p><b> S.top--;</b></p><p><b> }</b></p><p><b> }</b></p><p> void StackEmpty(SeqStack &S)</p><p><
137、b> {//判空</b></p><p> if(S.top==-1)</p><p> cout<<"棧為空"<<endl;</p><p><b> else</b></p><p> cout<<"棧不為空"&l
138、t;<endl;</p><p><b> }</b></p><p> ElemType VisitStack(SeqStack &S,ElemType &e)</p><p><b> {//查找</b></p><p><b> int i=0;<
139、/b></p><p> while(i<=S.top&&S.data[i]!=e)</p><p><b> i++;</b></p><p> if(i<=S.top)</p><p> return i+1;</p><p><b> e
140、lse</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> ElemType x,y,
141、z;</p><p> SeqStack s;</p><p><b> int k;</b></p><p> InitStack(s);</p><p><b> do{</b></p><p> cout<<"**************
142、***************程序功能表********************************"<<endl;</p><p> cout<<"1.獲得棧頂元素 2.壓棧 3.刪除棧頂元素 4.判斷棧是否為空 5.查找 0.退出"<<endl;</p><p> cout<<"*****
143、*************************請(qǐng)你選擇*********************************"<<endl;</p><p><b> cin>>k;</b></p><p><b> switch(k)</b></p><p><b> {
144、case 0:</b></p><p> cout<<"退出"<<endl;</p><p><b> exit(0);</b></p><p><b> case 1:</b></p><p> GetTop(s);break;<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件課程設(shè)計(jì)報(bào)告
- 軟件課程設(shè)計(jì)報(bào)告(opc)
- 軟件測(cè)試課程設(shè)計(jì)報(bào)告
- 軟件工程課程設(shè)計(jì)報(bào)告
- vc++軟件課程設(shè)計(jì)報(bào)告
- 軟件綜合課程設(shè)計(jì)報(bào)告模板
- 軟件工程課程設(shè)計(jì)報(bào)告
- 基帶編碼軟件課程設(shè)計(jì)設(shè)計(jì)報(bào)告
- [封面] 《軟件工程》課程設(shè)計(jì)報(bào)告
- 軟件工程課程設(shè)計(jì)報(bào)告模板
- 軟件工程課程設(shè)計(jì)個(gè)人報(bào)告
- 軟件工程課程設(shè)計(jì)-《社團(tuán)管理系統(tǒng)》課程設(shè)計(jì)報(bào)告書(shū)
- 課程設(shè)計(jì)報(bào)告--純軟件設(shè)計(jì)出題程序
- 軟件課程設(shè)計(jì)報(bào)告(飛機(jī)票系統(tǒng))
- 智能終端軟件開(kāi)發(fā)課程設(shè)計(jì)報(bào)告
- 宿舍管理查詢(xún)軟件課程設(shè)計(jì)報(bào)告
- 軟件課程設(shè)計(jì)報(bào)告---企業(yè)采購(gòu)管理系統(tǒng)
- java ee軟件開(kāi)發(fā)課程設(shè)計(jì)報(bào)告
- protel軟件課程設(shè)計(jì)
- 抓圖軟件課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論