




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、封 皮(按學(xué)校要求手工填寫(xiě)) 成 績(jī) 評(píng) 定 表學(xué)生姓名邵澤宇班級(jí)學(xué)號(hào)1203060107專(zhuān) 業(yè)通信工程課程設(shè)計(jì)題目向量類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)評(píng)語(yǔ)組長(zhǎng)簽字:成績(jī)?nèi)掌?20 年 月 日課程設(shè)計(jì)任務(wù)書(shū)學(xué) 院信息科學(xué)與工程專(zhuān) 業(yè)通信工程學(xué)生姓名邵澤宇班級(jí)學(xué)號(hào)1203060107課程設(shè)計(jì)題目向量類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)實(shí)踐教學(xué)要求與任務(wù)1.構(gòu)造函數(shù)實(shí)現(xiàn)n維向量初始化構(gòu)造。這里n可變。2.析構(gòu)函數(shù)實(shí)現(xiàn)向量動(dòng)態(tài)存儲(chǔ)釋放。3.拷貝函數(shù)實(shí)現(xiàn)向量的拷貝構(gòu)造。4.重載賦值運(yùn)算符=。實(shí)現(xiàn)兩個(gè)向量之間的賦值。5.編寫(xiě)成員函數(shù)求兩個(gè)向量?jī)?nèi)積。6.編寫(xiě)成員函數(shù)求兩個(gè)向量外積。7.編寫(xiě)成員函數(shù)求兩個(gè)向量的和。8.編寫(xiě)成員函數(shù)求兩個(gè)向量的差。
2、9.編寫(xiě)成員函數(shù)判斷兩個(gè)向量之間的線性相關(guān)性。0.編寫(xiě)一個(gè)主函數(shù)測(cè)試多項(xiàng)式類(lèi)的上述功能。工作計(jì)劃與進(jìn)度安排第17周:分析題目,查閱課題相關(guān)資料,進(jìn)行類(lèi)設(shè)計(jì)、算法設(shè)計(jì);第18周:程序的設(shè)計(jì)、調(diào)試與實(shí)現(xiàn);第19周:程序測(cè)試與分析,撰寫(xiě)課程設(shè)計(jì)報(bào)告,進(jìn)行答辯驗(yàn)收。指導(dǎo)教師: 201 年 月 日專(zhuān)業(yè)負(fù)責(zé)人:201 年 月 日學(xué)院教學(xué)副院長(zhǎng):201 年 月 日摘 要很多自然科學(xué)和工程技術(shù)中的問(wèn)題的解決最終都?xì)w結(jié)到向量問(wèn)題的處理,向量在解物理中的許多問(wèn)題例如物理中力、速度、加速度、位移都是利用向量解決合力、合速度之類(lèi)的問(wèn)題。本文采用C+語(yǔ)言實(shí)現(xiàn)了對(duì)向量的基本操作,采用Visual C+ 6.0的控制臺(tái)工程
3、和MFC工程分別實(shí)現(xiàn)了對(duì)向量的處理。關(guān)鍵詞:隊(duì)列;類(lèi)模板;控制臺(tái)工程;MFC工程目 錄1 需求分析12 算法基本原理13 類(lèi)設(shè)計(jì)14 基于控制臺(tái)的應(yīng)用程序24.1 類(lèi)的接口設(shè)計(jì)24.2 類(lèi)的實(shí)現(xiàn)34.3 主函數(shù)設(shè)計(jì)54.4 基于控制臺(tái)的應(yīng)用程序測(cè)試65 基于MFC的應(yīng)用程序95.1 基于MFC的應(yīng)用程序設(shè)計(jì)95.1.1 MFC程序界面設(shè)計(jì)95.1.2 MFC程序代碼設(shè)計(jì)105.2基于MFC的應(yīng)用程序測(cè)試11結(jié) 論14參考文獻(xiàn)151. 需求分析1.向量英文:Vector,又叫矢量,顧名思義,有方向的量。但是在計(jì)算機(jī)里vector又可以翻譯為容器,或者說(shuō)理解為容器,其實(shí)這不是一種很好的理解么,純數(shù)
4、學(xué)上的向量可以由2維3維推廣到多維,實(shí)際上它不就是一個(gè)實(shí)數(shù)的容器,在推廣到其他領(lǐng)域,向量即一個(gè)若干相關(guān)因素的容器,也就是說(shuō)向量可以應(yīng)用在很多領(lǐng)域中,可以輕松直觀的描述事物的信息,也可以存放信息,例如,二維三維中可以描述點(diǎn)(坐標(biāo)),物體的位置,描述顏色(RGB,紅綠藍(lán),),在多維的話,可描述的范圍就更廣了,最簡(jiǎn)單的如描述一個(gè)人的性格,或者能力。 2.類(lèi)是C+中十分重要的概念。它是實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)。C+對(duì)C的改進(jìn)。最重要的就是增加了“類(lèi)”這樣一種類(lèi)型。類(lèi)是所有面向?qū)ο蟮恼Z(yǔ)言的共同特征。所有面向?qū)ο蟮恼Z(yǔ)言都提供了這種類(lèi)型。如果一種計(jì)算機(jī)語(yǔ)言中不包含類(lèi)。它就不能稱(chēng)為面向?qū)ο蟮恼Z(yǔ)言。2. 算法
5、基本原理1.初始化一個(gè)名叫XiangL的類(lèi)。為了便于類(lèi)中的成員更改及操作。將要用的兩個(gè)向量數(shù)組設(shè)為public型。即xN和yN。另外由于n維向量的n值需要多次重復(fù)利用??梢园裯設(shè)為全局變量。2.析構(gòu)函數(shù)為了實(shí)現(xiàn)向量動(dòng)態(tài)存儲(chǔ)釋放。其實(shí)可以直接讓其函數(shù)體內(nèi)為空。3.拷貝函數(shù)實(shí)現(xiàn)向量的拷貝構(gòu)造。為了方便實(shí)現(xiàn)。用了一個(gè)選擇語(yǔ)句讓用戶(hù)選擇要拷貝的是x還是y向量。4.重載賦值運(yùn)算符=。實(shí)現(xiàn)兩個(gè)向量之間的賦值。為了方便返回值。定義了一個(gè)XLAdd類(lèi)。其類(lèi)里有個(gè)公有成員數(shù)組。便于實(shí)現(xiàn)賦值后的輸出。5.編寫(xiě)成員函數(shù)求兩個(gè)向量?jī)?nèi)積。利用for循環(huán)實(shí)現(xiàn)對(duì)兩個(gè)向量的內(nèi)積求和。6.編寫(xiě)成員函數(shù)求兩個(gè)向量外積。由于內(nèi)積=
6、|a|*|b|*cosa。而外積=|a|*|b|*sina。而上面已經(jīng)求了內(nèi)積。根據(jù)上面的關(guān)系可推導(dǎo)出外積。7.編寫(xiě)成員函數(shù)求兩個(gè)向量的和。利用for循環(huán)實(shí)現(xiàn)。8.編寫(xiě)成員函數(shù)求兩個(gè)向量的差。利用for循環(huán)實(shí)現(xiàn)。9.編寫(xiě)成員函數(shù)判斷兩個(gè)向量之間的線性相關(guān)性。為了簡(jiǎn)化判斷。選擇向量的前幾項(xiàng)進(jìn)行判斷。另外如果內(nèi)積為零的話。直接表示為兩個(gè)向量是垂直的關(guān)系。3. 類(lèi)設(shè)計(jì) 1.對(duì)于基類(lèi)XiangL來(lái)講。為了方便實(shí)現(xiàn)操作。我們只是設(shè)了公有成員。有公有成員數(shù)據(jù) xN、yN用于存放向量。其余則為公有函數(shù)。XingL()為構(gòu)造函數(shù)。XLCopy(int a,int b,int d)為拷貝函數(shù)。XLAdd ope
7、rator =(int a)為運(yùn)算符”=”的重載。XLNeiJi(int a,int b,int d)為求兩個(gè)向量的內(nèi)積的函數(shù)。XLWaiJi(int a,int b,int c,int d)為求兩個(gè)向量的外積的函數(shù)。XLPlus(int a,int b,int d)為求兩個(gè)向量的和的函數(shù)。XLRedu(int a,int b,int d)為求兩個(gè)向量的差的函數(shù)。XLPanDuan(int a,int b,int c); 為判斷兩個(gè)向量的線性關(guān)系的函數(shù)。XiangL()析構(gòu)函數(shù)。 2.至于外加的類(lèi)XLAdd。了額方便進(jìn)行對(duì)于”=”重載后能有很好的一個(gè)返回值而加的。其含有一個(gè)公有成員數(shù)據(jù)dN。用
8、于存放一個(gè)向量。便于其的輸出與處理。4.基于控制臺(tái)的應(yīng)用程序整個(gè)程序分為三個(gè)大部分。第一個(gè)部分即為對(duì)類(lèi)XiangL的定義。第二個(gè)部分則是對(duì)類(lèi)XiangL中的各個(gè)成員函數(shù)進(jìn)行定義。第三個(gè)部分即為主函數(shù),主函數(shù)中用了switch語(yǔ)句讓用戶(hù)選擇要執(zhí)行的函數(shù)。4.1 類(lèi)的初始定義#include#includeusing namespace std;#define N 100int n;class XLAdd /備用的向量類(lèi)。public: int dN;class XiangL /類(lèi)XiangL的聲明。public: int xN,yN; XiangL(); /構(gòu)造函數(shù)。void XLCopy(in
9、t a,int b,int d); /拷貝函數(shù)。XLAdd operator =(int a); /運(yùn)算符”=”的重載。int XLNeiJi(int a,int b,int d); /求兩個(gè)向量的內(nèi)積。float XLWaiJi(int a,int b,int c,int d); /求兩個(gè)向量的外積。void XLPlus(int a,int b,int d); /求兩個(gè)向量的和。void XLRedu(int a,int b,int d); /求兩個(gè)向量的差。 void XLPanDuan(int a,int b,int c); /判斷兩個(gè)向量的線性關(guān)系。XiangL(); /析構(gòu)函數(shù)。s
10、;4.2 類(lèi)的實(shí)現(xiàn)XiangL :XiangL()XiangL :XiangL()void XiangL :XLCopy(int a,int b,int d) /拷貝函數(shù)。int i; char c;int zN;cout選擇要拷貝的向量。選x或y。c;switch(c)case x: for(i=0;id;i+) zi=ai; break;case y: for(i=0;id;i+) zi=bi; break;default :break;XLaddPrint(z,d);XLAdd XiangL :operator =(int a) /重載=。int i;XLAdd b;for(i=0;in
11、;i+)b.di=ai;return b;int XiangL :XLNeiJi(int a,int b,int d) /求內(nèi)積。int i,c;c=0;for(i=0;id;i+)c+=(ai*bi);return c;float XiangL :XLWaiJi(int a,int b,int c,int d) /求外積。int i,sx,sy;sx=0; sy=0;double s1,s2,z,y;for(i=0;id;i+)sx+=(ai*ai);sy+=(bi*bi);s1=sqrt(float)sx); s2=sqrt(float)sy); z=(float)acos(c/(s1*s
12、2);y=(float)sin(z)*(s1*s2);return y;Void XiangL:XLPlus(int a,int b,int d) /求和。int i; int yN;for(i=0;id;i+)yi=ai+bi;XLaddPrint(y,d);Void XiangL :XLRedu(int a,int b,int d) /求差。int i; int yN;for(i=0;in;i+)yi=ai-bi;XLaddPrint(y,d);Void XiangL :XLPanDuan(int a,int b,int c) /判斷線性關(guān)系。if(c=0) cout垂直。endl;els
13、e if(a0/a0)=(b1/b1) cout平行或在一條線。endl;else cout無(wú)線性關(guān)系。endl;void XLaddPrint(int r,int b) /輸出向量。int i;cout向量為。(;for(i=0;ib;i+)coutri,;cout)endl;int IfContinue() /判斷是否繼續(xù)執(zhí)行函數(shù)的函數(shù)。char i;cout繼續(xù)執(zhí)行函數(shù)請(qǐng)輸入Y/y:i;if(i=Y|i=y) return 0;else exit(1);4.3 主函數(shù)的設(shè)計(jì)#include#includeusing namespace std;#define N 100int n;voi
14、d main()int i,c,n;XiangL z;int aN,bN;while(1) cout1 初始化。 2 進(jìn)行拷貝。 3 重載=。 ; cout4 求內(nèi)積。5 求外積。6 求和。7 求差。8 表示線性相關(guān)性。c; i=s.XLNeiJi(a,b,n); switch(c) case 1:cout請(qǐng)輸入n維向量的n值:n;cout請(qǐng)輸入x向量其向量有n個(gè)值。endl; /輸入值。 for(i=0;iai; cout請(qǐng)輸入y向量 其向量有n個(gè)值。endl; for(i=0;ibi; IfContinue(); break; case 2: s.XLCopy(a,b,n); IfCont
15、inue();break; case 3: z=a; XLaddPrint(a,n);IfContinue();break; case 4: cout內(nèi)積為。s.XLNeiJi(a,b,n)endl; IfContinue();break; case 5: cout外積為。s.XLWaiJi(a,b,i,n)endl; IfContinue();break; case 6: s.XLPlus(a,b,n); IfContinue();break; case 7: s.XLRedu(a,b,n); IfContinue();break; case 8: s.XLPanDuan(a,b,i); I
16、fContinue();break; default: break; 4.4 基于控制臺(tái)的應(yīng)用程序測(cè)試程序運(yùn)行結(jié)果如圖13所示。圖1圖2圖35.1基于MFC的應(yīng)用程序設(shè)計(jì)5.1.1 MFC程序界面設(shè)計(jì)首先在VC中建立MFC AppWizard(exe)工程,名稱(chēng)為向量,并在向?qū)У腟tep1中選擇Dialog based,即建立基于對(duì)話框的應(yīng)用程序,如下圖45所示。圖4 建立MFC AppWizard(exe)工程圖5 建立基于對(duì)話框的應(yīng)用程序?qū)?duì)話框資源中的默認(rèn)對(duì)話框利用工具箱改造成如下界面,如圖6所示。圖6所示的界面中包含了個(gè)Static Text控件,個(gè)Button控件,和14個(gè)Edit
17、Box控件,控件的基本信息列表如下表1所示。表1 控件基本信息控件類(lèi)別控件ID控件Caption說(shuō)明Static TextIDC_STATIC向量x:向量y:ButtonIDC_BUTTON_Plus計(jì)算向量相加IDC_BUTTON_Redu計(jì)算向量相減IDC_BUTTON_NeiJi計(jì)算兩個(gè)向量的內(nèi)積IDC_BUTTON_WaiJi計(jì)算兩個(gè)向量的外積Edit BoxIDC_EDIT_A00 IDC_EDIT_A11用于存放向量IDC_EDIT_b0用于存放內(nèi)積IDC_EDIT_c0用于存放外積 MFC程序代碼設(shè)計(jì)為了能夠?qū)?duì)話框界面上的控件能夠與代碼聯(lián)系起來(lái),需要為14個(gè)Edit Box控件
18、建立Member Variables,按Ctrl+w鍵進(jìn)入MFC ClassWizard界面,選擇Member Variables選項(xiàng)卡,可顯示成員變量設(shè)置界面。通過(guò)該界面設(shè)置與14個(gè)Edit Box控件對(duì)應(yīng)的成員變量,具體如表2所示。表2 控件基本信息控件ID成員變量類(lèi)型成員變量名稱(chēng)IDC_EDIT_A01IDC_EDIT_A3intx_1 x_3IDC_EDIT_A04IDC_EDIT_A6inty_1y_3IDC_EDIT_A07IDC_EDIT_A9inth_1 h_3IDC_EDIT_A10IDC_EDIT_A12intc_1 c_3IDC_EDIT_b0inti_NJIDC_EDI
19、T_c0floatf_WJ下面是編寫(xiě)代碼的重要階段,可以借鑒在設(shè)計(jì)基于DOS界面的控制臺(tái)應(yīng)用程序的代碼,并將其作必要的改寫(xiě),具體改寫(xiě)的步驟與內(nèi)容如下。1. 編寫(xiě)求和的消息處理函數(shù),實(shí)現(xiàn)向量求和,具體代碼如下void CMyDlg:OnAddPlus() / TODO: Add your control notification handler code hereUpdateData(true);h_1 = x_1+y_1;h_2 = x_2+y_2;h_3 = x_3+y_3;UpdateData(false);2. 編寫(xiě)求差的消息處理函數(shù),實(shí)現(xiàn)向量求差,具體代碼如下void CMyDlg:O
20、nReduceXL() / TODO: Add your control notification handler code hereUpdateData(true);c_1 = x_1-y_1;c_2 = x_2-y_2;c_3 = x_3-y_3;UpdateData(false);3. 編寫(xiě)求內(nèi)積的消息處理函數(shù),實(shí)現(xiàn)求兩個(gè)向量的內(nèi)積,具體代碼如下void CMyDlg:OnNeiJiXL() / TODO: Add your control notification handler code hereUpdateData(true);i_NJ = (x_1*y_1) + (x_2*y_2
21、) + (x_3*y_3);UpdateData(false);4. 編寫(xiě)求外積的消息處理函數(shù),實(shí)現(xiàn)求兩個(gè)向量的外積,具體代碼如下void CMyDlg:OnWaiJiXL() / TODO: Add your control notification handler code hereUpdateData(true);int sx,sy;sx=0; sy=0;double s1,s2,z;sx=(x_1*x_1)+(x_2*x_2)+(x_3*x_3);sy=(y_1*y_1)+(y_2*y_2)+(y_3*y_3);s1=sqrt(float)sx); s2=sqrt(float)sy); z=(float)acos(i_NJ/(s1*s2);f_WJ=(float)sin(z)*(s1*s2);UpdateData(false); 基于MFC的應(yīng)用程序測(cè)試運(yùn)行程序后,首先
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北學(xué)生團(tuán)建活動(dòng)方案
- 榜樣宣講活動(dòng)方案
- 四年級(jí)下冊(cè)期末作文押題《難忘的一件事》
- 2024年度安全質(zhì)量年度工作總結(jié)
- 休閑童裝品牌消費(fèi)者購(gòu)買(mǎi)決策的影響因素分析及應(yīng)對(duì)策略
- 化學(xué)職前教師教學(xué)策略選擇機(jī)制研究
- 聚羧酸減水劑對(duì)水泥水化產(chǎn)物熱分解特性的影響及動(dòng)力學(xué)機(jī)制探討
- 合作是否能夠提升充電運(yùn)營(yíng)商的能力
- 高糖環(huán)境對(duì)人體視網(wǎng)膜微血管細(xì)胞的損傷機(jī)制與修復(fù)策略
- 燕子專(zhuān)列說(shuō)課課件
- 體育課期末課程總結(jié)匯報(bào)
- 新生兒呼吸機(jī)相關(guān)性肺炎的防控
- 兒童籃球教學(xué)課件視頻
- 道路運(yùn)輸行業(yè)員工安全考試試卷及答案
- 注塑公司規(guī)章管理制度
- 呼吸康復(fù)講課
- 互聯(lián)網(wǎng)女皇AI報(bào)告:人工智能趨勢(shì)報(bào)告(雙語(yǔ)翻譯版本)
- 2025年西藏事業(yè)單位招聘考試職業(yè)能力傾向測(cè)驗(yàn)試卷(民族醫(yī)藥類(lèi))
- T/COSHA 12-2022研學(xué)旅行安全工作規(guī)范
- T/CIE 149-2022霍爾電推進(jìn)系統(tǒng)點(diǎn)火測(cè)試規(guī)范
- 200句記憶高中英語(yǔ)3500詞(語(yǔ)法填空練習(xí))
評(píng)論
0/150
提交評(píng)論