


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、封皮題目 班級 姓名 學號 日期課程設(shè)計任務(wù)書學院專業(yè)學生姓名學號設(shè)計題目多項式類的設(shè)計與實現(xiàn)內(nèi)容及要求:開發(fā)多項式類,多項式的每一項用鏈表的結(jié)點表示,每項包含一個系數(shù)和一個指數(shù)。例如:2x4的指數(shù)為4,系數(shù)為2。請開發(fā)一個完整的類,包括構(gòu)造函數(shù)、析構(gòu)函數(shù)以及“”函 數(shù)(讀取值)和“”函數(shù)(設(shè)置值)。該類還要提供以下重載的運算符:(1)重載加法運算符+,將兩個多項式相加。(2)重載加法運算符-,將兩個多項式相減。(3)重載賦值運算符=,將一個多項式賦給另外一個多項式。(4)重載加法運算符*,將兩個多項式相乘。(5)編寫一個主函數(shù)測試多項式類的上述功能。進度安排:第17周:分析題目,查閱課題相關(guān)
2、資料,進行類設(shè)計、算法設(shè)計;第18周:程序的設(shè)計、調(diào)試與實現(xiàn);第19周:程序測試與分析,撰寫課程設(shè)計報告,進行答辯驗收。指導教師(簽字):學院院長(簽字)年 月 日年 月 日目錄1 需求分析 2 算法基本原理3 類設(shè)計 4 詳細設(shè)計 .錯. 誤!未指定書簽.錯. 誤!未指定書簽 .錯. 誤!未指定書簽 .錯. 誤!未指定書簽4.1 類的接口設(shè)計4.2 類的實現(xiàn) 4.3 主函數(shù)設(shè)計 .錯. 誤!未指定書簽錯. 誤!未指定書簽錯. 誤!未指定書簽5 界面程序運行結(jié)果及分析錯誤!未指定書簽5.1 程序運行結(jié)果5.2 運行結(jié)果分析錯. 誤!未指定書簽錯. 誤!未指定書簽6 基于的圖形界面程序開發(fā)錯誤!
3、未指定書簽6.1 基于的圖形界面程序設(shè)計 錯. 誤!未指定書簽6.2 程序測試 錯. 誤!未指定書簽6.3 程序編寫總結(jié) 錯. 誤!未指定書簽7 參考文獻錯. 誤!未指定書簽1 需求分析(1)開發(fā)多項式類, 多項式的每一項用鏈表的結(jié)點表示, 每項包含一個系數(shù) 和一個指數(shù)。例如: 2x4 的指數(shù)為 4,系數(shù)為 2。請開發(fā)一個完整的類,包括構(gòu)造 函數(shù)、析構(gòu)函數(shù)以及“”函數(shù)(讀取值)和“”函數(shù)(設(shè)置值) 。(2)多項式的定義: n 個單項式的代數(shù)和叫多項式(3)程序測試數(shù)據(jù) :P1:23xA2+2xA4+3xA2P2:3xA2+2xA3(1)2 算法基本原理設(shè)有 2 個多項式 p12P1:23xA2
4、+2xA4+3xA2P2:3xA2+2xA3實現(xiàn)多項式pl和p2的計算,關(guān)鍵是對pl和p2的指數(shù)和系數(shù)進行加減生的操作, 我們可以先編輯一個基類。通過鏈表和重載運算符的方法來實現(xiàn)。(1)多項式即個個單項式的和,我們可以把一個多項式分解成一項一項來看, 每一項用鏈表的一個節(jié)點表示, 每個節(jié)點包括一個單項式的系數(shù)、 指數(shù)和指向該 節(jié)點類型的一個指針。(2)用創(chuàng)建對象pl、p2、p3,通過調(diào)用(c111)函數(shù)來構(gòu)建多項式。( 3)通過重載 +、 -、 *以及 =運算符,對多項式進行操作。( 4)通過 p1() 來顯示結(jié)果。3 類設(shè)計從上面的算法分析可以看到,本設(shè)計面臨的計算問題的關(guān)鍵是多項式運算 可
5、以定義一個多項式類。(1)該類包括私有數(shù)據(jù)成員 * ,是構(gòu)造的節(jié)點類型的結(jié)構(gòu)體,包括系數(shù)、 指數(shù)和指向該節(jié)點類型的一個指針。(2)成員函數(shù)包括()構(gòu)造函數(shù),(&)拷貝構(gòu)造函數(shù),()析構(gòu)函數(shù)* ( e)讀取 指數(shù)為e的項,返回其指針,(e)設(shè)置指數(shù)為e的項的系數(shù)為c, ( * * n)創(chuàng)建 多項式, +( b)重載+運算符, -(b)重載-運算符, *( b)重載*運算符, <<(,a) =( a)重載=運算符,(=)顯示函數(shù)()復(fù)制函數(shù)對以上進行總結(jié), 該程序只包含一個類即, 對多項式的所有操作都抽象在該 類中。4 詳細設(shè)計程序主要分為三個部分:類聲明、類實現(xiàn)、主函數(shù)。4.
6、1 類的接口設(shè)計類的聲明() 0; 構(gòu)造函數(shù)( &) 拷貝構(gòu)造函數(shù)()*q,*p;J(P )刪除鏈表 >(P) P;* ( e)讀取指數(shù)為e的項,返回其指針(e)設(shè)置指數(shù)為e的項的系數(shù)為c( * * n) 創(chuàng)建多項式+( b)重載+運算符-(b)重載-運算符*(b)重載*運算符<<( , a);=(a)重載二運算符( = ) ;( );()<<" 鏈表頭指針值為: "<<<< *鏈表頭指針;在程序中,聲明了個個運算符的重載,通過 * ( e);讀取指數(shù)為e的項,返回其 指針,通過(e)設(shè)置指數(shù)為e的項的系數(shù)為c,
7、多項式的的系數(shù)、指數(shù)以及指 針全部采用了動態(tài)內(nèi)存分配技術(shù),這些工作都是由構(gòu)造函數(shù)和 ()函數(shù)完成,它們 的清理工作在析構(gòu)函數(shù)中完成。4.2 類的實現(xiàn)類實現(xiàn)<><><>15鏈表結(jié)點指數(shù)系數(shù);( ) 復(fù)制對象 (公用函數(shù) )*t,*s,*p;0;(p)J(0) ;>>>>>(s) >(s) >0;(a)復(fù)制構(gòu)造函數(shù)(a);( * * n) 創(chuàng)建多項式(n<1)n"<<"錯誤:要創(chuàng)建多項式的項數(shù)必須大于零創(chuàng)建頭結(jié)點>0;>0;*q,*;( 1<)>i;>i
8、;>J>0;* ( e)讀取指數(shù)為e的項*;J(p)(>) p;>沒有找到,返回空指針(e)將指數(shù)為e系數(shù)為c的項加入多項式(原多項式無指數(shù)為e的項)*q,*p,*t;J>>(0)J>0;J(e>>) >插入頭部J(p e<>)J>(p)新的項插入 p 所指結(jié)點前>> 插入尾部>>0;+( b)重載+運算符J*p,*q,*s,*t;x;先增加一個頭結(jié)點(p q)(>>) >>(0.0)J>>>>J>>J(>>>)&g
9、t;>>>>>>>>>>J(q) 恒指向余下的項(p)>>>J>>0; 鏈表尾標記J>s; 刪除多余的頭結(jié)點J-(b)重載-運算符J*p,*q,*0,*t;在此處添加代碼,完成此函數(shù) (模仿上述重載 "+" 的函數(shù) ) x;先增加一個頭結(jié)點(p q)(>>)>>(0.0)J>>>>>J(>>>)>>>>>>>>>>>J(q) 恒指向余下的項(p
10、)J>>>>>J>>0; 鏈表尾標記s; 刪除多余的頭結(jié)點J*( b)重載*運算符J*p,*q,*s;c;J(p)J(q)>*>>>(e)查中有無指數(shù)為e的項(s)中無指數(shù)為e的項>中無指數(shù)為e的項();>>J<<( , a)();=(a)重載二運算符*s,*p;() 若原多項式存在,先撤消它J(p)>p;J(a);*;J( ) 顯示多項式* e;()><<"f(x)="<<>(e>1) <<"xA"
11、<<e;(1) <<"x"<< "f(x)=0" << ;(p)>(>0.0)系數(shù)非零(>>0.0) <<'+'<<><<>(e>1) <<"xA"<<e;(1) <<"x"><<通過類的成員函數(shù)實現(xiàn)對多項式的運算, 構(gòu)造和析構(gòu)函數(shù)主要是實現(xiàn)初始化 以及銷毀,其它函數(shù)則主要是實現(xiàn)功能。4.3 主函數(shù)設(shè)計主函數(shù)() e122
12、1; c12;< <"多項式計算器 "<<<<"請輸入多項式 P1 的項數(shù): ">>1;<<"請輸入多項式 P1 的系數(shù): "(0<1)>>c1i;<<" 請輸入多項式 p1 的指數(shù) "(0<1)>>e1i;<<"請輸入多項式P2的項數(shù):>>2;<<"請輸入多項式p2的系數(shù)"(0<2)>>c2i;<<"
13、請輸入多項式 p2 的指數(shù) "(0<2)>>e2i;p123;p1(c111)創(chuàng)建多項式pl p2(c222)創(chuàng)建多項式p2<<" 多項式 p1 為"p1();<<顯示多項式 p1<<"多項式p2為";p2();<< 顯示多項式 p2p3 = p1 + p2;<<"多項式p12為"<< p3<<顯示多項式的和p3 = p1 - p2;<<"多項式p12為"<< p3<<
14、顯示多項式的差p3 = p1*p2;<<"多項式p1*p2為"vvp3<v顯示多項式的積在程序的主函數(shù)部分,對算法進行了驗證。首先, 輸入了多項式的系數(shù)指數(shù) 項數(shù),接著定義三個對象 p1,p2,p3,在定義過程中調(diào)用構(gòu)造函數(shù),進行初始 化并動態(tài)分配了內(nèi)存。調(diào)用()顯示多項式,通過調(diào)用重載運算符實現(xiàn)操作,最后 系統(tǒng)自動調(diào)用析構(gòu)函數(shù)清理。5界面程序運行結(jié)果及分析5.1程序運行結(jié)果程序運行結(jié)果如圖2所示。i賦項項項項項頂=1 畀多多多wsc> 書人IAIAIAIA人F< 一請請請請請11® 一 一 多IT - - -J- - - M/JJJ
15、 T 旦臼勺勺勺勺勺勺X 箏 1112 2 2- + FLr p p p pr I I 弋It我xt'l2 1 4 33 12 3 3 1多頂武 pl +理為 f<x>-lxA2 *5x*7x*3 *5xA2多項花丄-p2f<x>=l xA2 -1 x-1 x* 3 +5 xA2多項式卩 1 *p2f<x>=12xA6+19x5 *22 xA4 +13 xA3 +6 xA2pi*ess an</ k倉屮 to cont inuB圖2程序運行結(jié)果通過計算對運行結(jié)果進行檢測,經(jīng)檢測結(jié)果正確無誤。5.2運行結(jié)果分析整個程序采用的是鏈表和動態(tài)內(nèi)存分配方
16、式。將多項式的運算抽象到一個類中,由該類生成三個對象 p1,p2,,p3,同時 由系統(tǒng)調(diào)用構(gòu)造函數(shù)初始化,調(diào)用()構(gòu)造多項式,調(diào)用重載的運算符,實現(xiàn)加減乘的操作,由于涉及對象傳值,調(diào)用拷貝構(gòu)造函數(shù)6基于的圖形界面程序開發(fā)的圖形界面程序設(shè)計可在上述類設(shè)計的基礎(chǔ)上進行改造,的圖形界面程序與界面程序的主要不同點是:圖形界面程序與界面程序的輸入輸出方式不同, 界面 程序采用字符交互式實現(xiàn)數(shù)據(jù)輸入輸出,主要通過,等流實現(xiàn),而的圖形程序界面采用標準窗口和控件實現(xiàn)輸入輸出,因此必須在類的框架下加入上面所設(shè)計的 矩陣和方程組類,并通過圖形界面的輸入輸出改造來完成。6.1基于的圖形界面程序設(shè)計(1)界面設(shè)計首先
17、在中建立()工程,名稱為一元稀疏多項式運算,并在向?qū)У?中選擇即建立基于對話框的應(yīng)用程序,如下圖 45所示圖4建立()工程圖5建立基于對話框的應(yīng)用程序?qū)υ捒蛸Y源中的默認對話框利用工具箱改造成如下界面,如圖6所示圖6方程組求解程序界面設(shè)計圖6所示的界面中包含了 3個(分組框),4個 控件,5個控件,和9個 控 件,控件的基本信息列表如下表1所示表1控件基本信息控件類別控件控件說明項系數(shù)項指數(shù)項系數(shù)項指數(shù)1添加2添加加法運算減法運算乘法運算1顯示多項式p14顯示多項式p27顯示加法運算結(jié)果8顯示減法運算結(jié)果9顯示乘法運算結(jié)果2輸入每一項的系數(shù)3輸入每一項的指數(shù)5輸入每一項的系數(shù)6輸入每一項的指數(shù)
18、一兀多項式1一兀多項式1運算結(jié)果(2) 代碼設(shè)計為了能夠?qū)υ捒蚪缑嫔系目丶軌蚺c代碼聯(lián)系起來,需要為各個控件建立,按鍵進入 界面,選擇 選項卡,可顯示成員變量設(shè)置界面,如圖7所示MFC CljssWizardMessage Maps Mermbcr VariablesAutomation | ActiveX Events Class InloPrujecl:Class name;疏多項式運算Add Class.* 咁常 I. fid Ma >.v (rip ” >wi Ewn itaM«!«卄IM/ IAdd Variable.* ft ff* i-'
19、me luiMiOiMjjwi rjjcid=Q-一“一-也_j tarten difvniiHrFF _d-mij 刁財 MKMITflOM HIiMIj'h&j iCn-"i Uril q _j TbHc4J _J YpriniI !<«_ nThteY.Fk « iJ予rfwiV _rw- - 亍merih 'jj * L Ibulri J hrinc tznl u lr=.lax 1'J-3ts± 3D r _Jau Z廠7*弓S3tL圖7成員變量設(shè)置界面通過該界面設(shè)置控件對應(yīng)的成員變量,具體如表2所示表2控
20、件基本信息控件成員變量類型成員變量名稱1121I 31425262738495下面是編寫代碼的重要階段,可以借鑒在設(shè)計基于界面的控制臺應(yīng)用程序的 代碼,并將其作必要的改寫,具體改寫的步驟與內(nèi)容如下。 建立名為一元稀疏多項式計算的工程。 將對話框資源中的默認對話框利用工具箱改造。 設(shè)置控件對應(yīng)的成員變量。 編寫添加按鈕的響應(yīng)函數(shù),具體代碼如下:2() ();(h2)創(chuàng)建鏈表d2->(22); d22->h2(22); d22;2(""(h2);(); 編寫顯示的消息處理函數(shù),具體代碼如下: ( *h) 顯示函數(shù)*;JJ(t)多項式的顯示(>0)多項式的項系數(shù)
21、等于 0 的情況J (>>0)多項式的項系數(shù)大于 0 的情況 ("","+"); ("">); ("","X");("""A")("">);(>1)(>1)()該項是否是顯示的第一位(>0)()()(>0)()()()(><0)多項式系數(shù)小于 0 的情況("","-");("">);("",&
22、quot;X");("""A")("">);(>1)(>0)J(>1)(>0)(>1) >("")"0"v; 編寫加,減法運算的消息處理函數(shù),具體代碼如下: *( *p1 *p2) 多項式加法運算*h,*q1,*q2,*t,*k;q1122;J>1;(q1 q2)(q1->2->)指數(shù)相同的情況q1->1->2-> q11->>2; q22->t;(q1->>q2->)第一
23、項的指數(shù)比第二項指數(shù)大的情況 >2;2-> q2->1; > q2;(q1-xq2->)第一項的指數(shù)比第二項指數(shù)小的情況 q11-> >(q2)>2;J>t;h; 編寫乘法運算處理函數(shù),具體代碼如下:*( *p1 *p2)*i,*j,*k,*s,*l,*m,* 乘法算法1;2;保存 j 的頭結(jié)點(0,0);保存 k 為頭結(jié)點(i) 創(chuàng)建乘法計算結(jié)果鏈表,形成頭結(jié)點為k的鏈表(j)乘法計算算法,并實現(xiàn)升序排序用于對之前生成的鏈表(0,0)新計算結(jié)果保存在一個單獨結(jié)點中, 進行對比,形成升序排列>(>)*(>);>(&g
24、t;)+(>);J>用于對鏈表的遍歷, n 為 s 前驅(qū)(s)(>>)>>l;J(><>)>>J>>()> >>> 編寫構(gòu)造多項式具體代碼如下: 結(jié)點結(jié)構(gòu)體*f( b)* ;J>>>p; 創(chuàng)建結(jié)點*( *p) 復(fù)制鏈表的函數(shù)*h,*d,*q,*k,*s;(0,0)創(chuàng)建頭結(jié)點,留空,為了能得到與新創(chuàng)建的結(jié)點對比的結(jié)點(即是k)的前驅(qū)J(q)(>>)創(chuàng)建新結(jié)點>是前驅(qū), k 是與 d 做比較的(k)(>>)>> ;(><>)>>(>>>)>>J()>>>6.2 程序測試運行程序后,首先出現(xiàn)的界面如圖 8 所示圖8程序初
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 各類建筑工程施工方案設(shè)計
- 垃圾填埋場項目可行性研究報告
- 做東南亞跨境電商平臺
- 肉鴨養(yǎng)殖項目可行性研究報告
- 大數(shù)據(jù)時代企業(yè)數(shù)據(jù)安全管理制度手冊
- 動力電池再生利用
- 三農(nóng)村電氣化工程作業(yè)指導書
- 高職護理婦產(chǎn)科復(fù)習測試卷附答案
- 附件3醫(yī)院護類人員年終理論考試500題練習試題附答案
- 智能環(huán)保與資源利用作業(yè)指導書
- 2023年韶關(guān)北江實驗學校小升初招生數(shù)學題
- 眼科學基礎(chǔ)本科
- 小沈陽《四大才子》歡樂喜劇人臺詞
- 交通安全設(shè)施作業(yè)指導書
- 優(yōu)秀員工榮譽證書模板
- 神奇的電家長課堂
- 城南舊事讀書匯報教學課件
- 不銹鋼容器制造通用標準工藝守則
- 校園環(huán)境衛(wèi)生檢查及記錄表
- 合同能源管理合同范本模板
- Q∕SY 05006-2016 在役油氣管道 第三方施工管理規(guī)范
評論
0/150
提交評論