版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、c+程序設(shè)計(jì)課程設(shè)計(jì)說明書題 目矩陣類的設(shè)計(jì)學(xué) 號1067118208姓 名王明超指導(dǎo)教師劉立新日 期2012/06/20內(nèi)蒙古科技大學(xué)課程設(shè)計(jì)任務(wù)書課程名稱c+語言課程設(shè)計(jì)設(shè)計(jì)題目矩陣類的設(shè)計(jì)指導(dǎo)教師時(shí)間2011-2012春學(xué)期 第17、18周一、教學(xué)要求1. 鞏固和加深學(xué)生對c+語言課程的基本知識的理解和掌握2. 掌握c+語言編程和程序調(diào)試的基本技能3. 利用c+語言進(jìn)行基本的軟件設(shè)計(jì)4. 掌握書寫程序設(shè)計(jì)說明文檔的能力5. 提高運(yùn)用c+語言解決實(shí)際問題的能力二、設(shè)計(jì)資料及參數(shù)用c+設(shè)計(jì)一個(gè)程序,能提供下列功能: 設(shè)計(jì)一個(gè)矩陣類,包含行、列和矩陣數(shù)據(jù)元素,完成如下功能:(1) 輸入矩陣。按
2、照行順序輸入矩陣的每一個(gè)元素。(2) 矩陣的運(yùn)算。重載“+”和“*”實(shí)現(xiàn)矩陣的加法和矩陣的乘法。(3) 轉(zhuǎn)置。重載“-”運(yùn)算符實(shí)現(xiàn)矩陣的轉(zhuǎn)置。(4) 輸出。重載“<<”運(yùn)算符實(shí)現(xiàn)矩陣的輸出。三、設(shè)計(jì)要求及成果根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:(1)分析系統(tǒng)中的各個(gè)實(shí)體之間的關(guān)系及其屬性和行為;(2)根據(jù)問題描述,設(shè)計(jì)系統(tǒng)的類層次;(3)完成類層次中各個(gè)類的描述(包括屬性和力一法);(4)完成類中各個(gè)成員函數(shù)的定義;(5)完成系統(tǒng)的應(yīng)用模塊;(6)功能調(diào)試;(7)提交課程設(shè)計(jì)報(bào)告:完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說明書目錄第1章 需求分析4第2章 總體設(shè)計(jì)5第3章 類的設(shè)計(jì)7
3、3.1 matrix類的設(shè)計(jì)7第4章 詳細(xì)設(shè)計(jì)94.1 工程視圖94.2 類圖視圖104.3 函數(shù)的調(diào)用關(guān)系114.4 主程序流程圖124.5 主要算法的流程圖13第5章 測試15第6章 總結(jié)19附錄:程序代碼20 第一章 需求分析一、設(shè)計(jì)資料及參數(shù)用c+設(shè)計(jì)一個(gè)程序,能提供下列功能: 設(shè)計(jì)一個(gè)矩陣類,包含行、列和矩陣數(shù)據(jù)元素,完成如下功能:(1) 輸入矩陣。按照行順序輸入矩陣的每一個(gè)元素。(2) 矩陣的運(yùn)算。重載“+”和“*”實(shí)現(xiàn)矩陣的加法和矩陣的乘法。(3) 轉(zhuǎn)置。重載“-”運(yùn)算符實(shí)現(xiàn)矩陣的轉(zhuǎn)置。(4) 輸出。重載“<<”運(yùn)算符實(shí)現(xiàn)矩陣的輸出。二、 需求分析:首先根據(jù)要解決的問
4、題是分析設(shè)計(jì)類圖,抽象出各個(gè)類的數(shù)據(jù)成員和函數(shù)成員,然后進(jìn)行詳細(xì)編碼,在主函數(shù)中創(chuàng)建類的對象,調(diào)用適當(dāng)?shù)某蓡T函數(shù)或全局函數(shù)實(shí)現(xiàn)相應(yīng)的功能。 第二章 總體設(shè)計(jì)2.1輸入功能輸入一個(gè)矩陣的行列數(shù),并依次輸入該矩陣的每行和每列的元素。2.2加法功能能夠?qū)斎氲膬蓚€(gè)矩陣進(jìn)行加法運(yùn)算。2.3 乘法功能能夠?qū)斎氲膬蓚€(gè)矩陣進(jìn)行乘法運(yùn)算。2.4轉(zhuǎn)置功能能夠?qū)斎氲镁仃囘M(jìn)行轉(zhuǎn)置處理。2.5錯(cuò)誤處理根據(jù)你鍵入的矩陣進(jìn)行判斷,發(fā)生錯(cuò)誤時(shí)報(bào)錯(cuò),提示輸入錯(cuò)誤。函數(shù)功能圖主函數(shù)輸出提示matrix類提示輸出加法運(yùn)算乘法運(yùn)算轉(zhuǎn)置運(yùn)算圖2.1 第三章 類的設(shè)計(jì)3.1 matrix類的設(shè)計(jì)class matrixprivat
5、e: double *data; /二維矩陣數(shù)據(jù)數(shù)組指針 int m,n;/矩陣的行數(shù),列數(shù)public:matrix();/無參構(gòu)造函數(shù)被調(diào)用!無參構(gòu)造函數(shù),無參構(gòu)造函數(shù)是自己定義的構(gòu)造函數(shù),只是構(gòu)造函數(shù)是沒有參數(shù)的,不用向函數(shù)傳遞數(shù)值或地址matrix(int row, int line);/帶參構(gòu)造函數(shù)被調(diào)用!動態(tài)分配二維數(shù)組空間,構(gòu)造m行n列的矩陣(構(gòu)造函數(shù)) matrix(matrix &com);/ 拷貝構(gòu)造函數(shù)被調(diào)用!定義拷貝函數(shù),拷貝構(gòu)造函數(shù)要調(diào)用基類的拷貝構(gòu)造函數(shù)和成員函數(shù)matrix()/析構(gòu)函數(shù)被調(diào)用!析構(gòu)函數(shù)void getdata();matrix opera
6、tor +(matrix);/矩陣加法,如果矩陣不匹配無法相加需要給出出錯(cuò)信息 matrix operator -(matrix);/矩陣減法,如果矩陣不匹配無法相減需要給出出錯(cuò)信息matrix operator *(matrix);/矩陣乘法,如果矩陣不匹配無法相乘需要給出出錯(cuò)信息friend void operator !(matrix); /矩陣轉(zhuǎn)置運(yùn)算void print();/輸出結(jié)果; 第四章 詳細(xì)設(shè)計(jì)4.1工程視圖說明有幾個(gè)源代碼文件,可以截取工程文件視圖表示 圖4.1.1 工程文件視圖 4.2類圖視圖每個(gè)文件包含哪些類和函數(shù),可以截圖說明圖4.2.14.3 函數(shù)的調(diào)用關(guān)系函數(shù)的
7、調(diào)用關(guān)系如圖4.3所示main輸入函數(shù)類函數(shù)矩陣加函數(shù)矩陣減函數(shù)矩陣乘函數(shù)矩陣轉(zhuǎn)置函數(shù)輸出函數(shù)圖4.3 4.4 主程序流程圖提示進(jìn)入系統(tǒng)輸入元素顯示矩陣圖4.4.14.5 主要算法的流程圖4.5.1加法模塊程序?qū)⑹紫扰袛鄡蓚€(gè)矩陣之間的行與列是否相對應(yīng),如果不對應(yīng),程序?qū)⑻崾居脩糨斎脲e(cuò)誤,如果相對應(yīng),再進(jìn)行循環(huán)操作,讓兩個(gè)矩陣相對應(yīng)的元素相加。加法模塊的流程下圖4.5.1所示行或列相對應(yīng)元素相加提示錯(cuò)誤判斷圖4.5.14.5.2乘法模塊首先模塊將判斷兩個(gè)矩陣之間的行與列是否相對應(yīng),如果不對應(yīng),程序?qū)⑻崾居脩糨斎脲e(cuò)誤,如果相對應(yīng),再進(jìn)行循環(huán)操作,讓兩個(gè)矩陣相對應(yīng)的元素相乘 ,直到不符合條件為止。乘
8、法模塊的流程下圖4.5.2所示行或列相對應(yīng)元素相乘提示錯(cuò)誤判斷結(jié)果相加輸出結(jié)果圖4.5.24.5.3轉(zhuǎn)置模塊程序首先創(chuàng)建臨時(shí)對象,用來存儲兩矩陣的積,再判斷是否符合條件,若符合,則將兩矩陣相對應(yīng)的元素進(jìn)行交換,當(dāng)不符合條件時(shí),退出循環(huán)。轉(zhuǎn)置模塊的流程下圖4.5.3所示創(chuàng)建臨時(shí)對象判斷條件元素交換圖4.5.3 第五章 測試5.1 輸入兩個(gè)二階矩陣這兩個(gè)矩陣可以完成所設(shè)計(jì)的任何運(yùn)算1 2;3 4與5 6;7 8測試程序如圖輸入矩陣1圖5.1按提示輸入矩陣1輸入矩陣2圖5.2按提示輸入矩陣2矩陣1做轉(zhuǎn)置運(yùn)算圖5.3矩陣1的轉(zhuǎn)置矩陣2做轉(zhuǎn)置運(yùn)算圖5.4矩陣2的轉(zhuǎn)置兩矩陣相加圖5.5兩矩陣相加兩矩陣相減
9、圖5.6兩矩陣相減兩矩陣相乘圖5.7兩矩陣相乘5.2再次輸入兩個(gè)矩陣做測試我們知道這兩個(gè)矩陣不能完成加運(yùn)算123;456與12;34;56圖5.2.1輸入兩矩陣圖5.2.2兩矩陣做加、減、乘、轉(zhuǎn)置運(yùn)算 第六章 總結(jié)這個(gè)程序?qū)崿F(xiàn)了對矩陣進(jìn)行輸入,加法,乘法,轉(zhuǎn)置運(yùn)算的功能。在設(shè)計(jì)的過程中,我感覺自己收獲挺大的,從一開始的迷茫,不知道從何下手到把程序中的幾個(gè)模塊編寫出來,所以先研究了幾個(gè)別人的程序,到第二周開始自己編程,但又一次次陷入困境。在整個(gè)程序的編寫過程中。最難的就是加法和乘法這兩個(gè)模塊,這也是我要解決的重點(diǎn)問題。開始編寫加法和乘法時(shí),很頭疼,去向其他人尋求幫助,在別人的幫助和提示下,我編完
10、了程序,但編譯時(shí)老出錯(cuò),又不得不向他人請教。這樣的話,整個(gè)程序基本上全部完成了,就剩下完善工作了。雖然設(shè)計(jì)時(shí)完成了,但是我覺得其中還是由一些不足之處:1.警告句。程序中缺少一些警告句,例如:“是否真的相加(y/n)?”。2.有可能的話可以分開頁面做不同的程序,通過不同的提示進(jìn)入不同的功能。整個(gè)程序完成了,還有很多不完善的地方,希望自己以后辦事的時(shí)候要認(rèn)真,仔細(xì),考慮周全。短短的兩周課程設(shè)計(jì)結(jié)束了,但是這段時(shí)間里,我又學(xué)到了更多c +的知識,如:類,文件流等,我認(rèn)識到要想學(xué)好計(jì)算機(jī)就要重視實(shí)踐操作,不僅僅是學(xué)習(xí)c+語言,還是其它的語言,以及其它的計(jì)算機(jī)方面的知識都要重在實(shí)踐,所以后在學(xué)習(xí)過程中,
11、我會更加注視實(shí)踐操作,使自己便好地學(xué)好計(jì)算機(jī)。同時(shí),我也發(fā)現(xiàn)我的好多不足之處,我也被提醒以后辦事的時(shí)候要認(rèn)真,仔細(xì),考慮周全。經(jīng)過本次課程設(shè)計(jì),我看到了互幫互助的重要性。這一點(diǎn)會讓我終生受益。附錄:程序代碼#include <iostream>#include <math.h> /cmath是一個(gè)包含了許多數(shù)學(xué)函數(shù)的庫文件,就像iostream一樣,是庫文件,程序中必然會有直接調(diào)用但是沒定義的數(shù)學(xué)函數(shù),就是應(yīng)為有這個(gè)頭文件using namespace std;/命名空間class matrixprivate: double *data; /二維矩陣數(shù)據(jù)數(shù)組指針 int
12、 m,n;/矩陣的行數(shù),列數(shù)public:matrix()/cout<<"無參構(gòu)造函數(shù)被調(diào)用!"<<endl;int i,j; data = new double*m; for (i=0;i<m;i+) datai=new doublen; for(i=0;i<m;i+)/行for(j=0;j<n;j+)/列dataij=0;/無參構(gòu)造函數(shù),無參構(gòu)造函數(shù)是自己定義的構(gòu)造函數(shù),只是構(gòu)造函數(shù)是沒有參數(shù)的,不用向函數(shù)傳遞數(shù)值或地址 matrix(int row, int line) /動態(tài)分配二維數(shù)組空間,構(gòu)造m行n列的矩陣(構(gòu)造函數(shù))
13、m=row;n=line;/cout<<"帶參構(gòu)造函數(shù)被調(diào)用!"<<endl;int i,j; data = new double*m; for (i=0;i<m;i+) datai=new doublen; for(i=0;i<m;i+)/行for(j=0;j<n;j+)/列dataij=0; matrix(matrix &com)/定義拷貝函數(shù),拷貝構(gòu)造函數(shù)要調(diào)用基類的拷貝構(gòu)造函數(shù)和成員函數(shù)/cout<<"拷貝構(gòu)造函數(shù)被調(diào)用!"<<endl;int i,j;m=com.m;n=
14、com.n; data = new double*m; for (i=0;i<m;i+) datai=new doublen; for(i=0;i<m;i+)/行for(j=0;j<n;j+)/列dataij=com.dataij;/*matrix()/析構(gòu)函數(shù) int i;for(i=0;i<m;i+)delete datai;/cout<<"析構(gòu)函數(shù)被調(diào)用!"<<endl; */void getdata();matrix operator +(matrix);/矩陣加法,如果矩陣不匹配無法相加需要給出出錯(cuò)信息matrix
15、operator -(matrix);/矩陣減法,如果矩陣不匹配無法相減需要給出出錯(cuò)信息matrix operator *(matrix);/矩陣乘法,如果矩陣不匹配無法相乘需要給出出錯(cuò)信息friend void operator !(matrix); /矩陣轉(zhuǎn)置運(yùn)算void print();/輸出結(jié)果;void matrix:getdata()int i,j;cout<<"輸入矩陣數(shù)據(jù):"<<endl;for(i=0;i<m;i+)/行for(j=0;j<n;j+)/列cout<<"data"<&l
16、t;i<<""<<""<<j<<" = "cin>>dataij;cout<<"矩陣已輸入!"<<endl;void matrix:print()int i,j;for(i=0;i<m;i+)/行for(j=0;j<n;j+)/列cout<<dataij<<" "cout<<endl;/矩陣的加法的重載matrix matrix:operator +(matrix
17、c)tryint error=1;if(m=c.m&&n=c.n)matrix temp(m,n);int i,j; for(i=0;i<m;i+)/行for(j=0;j<n;j+)/列temp.dataij=dataij+c.dataij;return temp;else throw error;catch(int)cout<<"兩矩陣行列不對應(yīng)相等!無法相加!"<<endl;matrix matrix:operator -(matrix c)tryint error=1;if(m=c.m&&n=c.n)
18、matrix temp(m,n);int i,j; for(i=0;i<m;i+)/行for(j=0;j<n;j+)/列temp.dataij=dataij-c.dataij;return temp;else throw error;catch(int)cout<<"兩矩陣行列不對應(yīng)相等!無法相減!"<<endl;matrix matrix:operator *(matrix c)int error=1;tryif(m=c.n)matrix t(m,c.n);int i,j,k;for(i=0;i<m;i+)for(j=0;j<
19、;c.n;j+)for(k=0;k<n;k+)t.dataij+=dataik*c.datakj;return t;else throw error;catch(int )cout<<"兩矩陣不滿足相乘的條件!"<<endl;/在一個(gè)類中重單目運(yùn)算符,則無需指定參數(shù),因?yàn)閰?shù)就是類對象本身void operator !(matrix c)double te;int i,j;if(c.m=c.n)for(i=0;i<c.m;i+)/行for(j=i;j<c.n;j+)/列te=c.dataij;c.dataij=c.dataji;c.
20、dataji=te;c.print();cout<<"原矩陣內(nèi)的數(shù)據(jù)已被改變!"<<endl;else matrix temp(c.n,c.m);for(i=0;i<c.n;i+)for(j=0;j<c.m;j+)temp.dataij=c.dataji;temp.print();cout<<endl;cout<<"原矩陣內(nèi)的數(shù)據(jù)未被改變!"<<endl;return ;cout<<"友元函數(shù)'operator !'被調(diào)用!"<<endl;int main(void)int raw1,line1,raw2,line2;cout<<"輸入第一個(gè)矩陣的相關(guān)參數(shù):"<<endl;cout<<"行數(shù):"cin>>raw1;cout<<"列數(shù):"cin>>line1;matrix c1(raw1,li
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甜菜種植合同法院判決書
- 《藍(lán)田股份分析案例》課件
- 2025年南寧貨運(yùn)從業(yè)資格證模擬考試題庫及答案解析
- 2025年鹽城道路運(yùn)輸從業(yè)資格證考哪些項(xiàng)目
- 2025年許昌貨運(yùn)從業(yè)資格證模擬考試系統(tǒng)
- 2025年云南貨運(yùn)從業(yè)資格證考試題及答案詳解
- 健身房環(huán)境衛(wèi)生保潔員招聘合同
- 城市景觀照明施工合同范本
- 智能家居網(wǎng)絡(luò)安全操作規(guī)程
- 印刷行業(yè)安全規(guī)程
- [重慶]金佛山景區(qū)蘭花村深度旅游策劃方案
- 數(shù)學(xué)建模案例分析--線性代數(shù)建模案例(20例)
- 市場營銷之4P策略(課堂PPT)
- 中藥材生產(chǎn)管理質(zhì)量管理文件目錄
- 框架柱+剪力墻工程施工鋼筋綁扎安裝施工過程
- 蘇州預(yù)防性試驗(yàn)、交接試驗(yàn)費(fèi)用標(biāo)準(zhǔn)
- 最新【SD高達(dá)G世紀(jì)-超越世界】各強(qiáng)力機(jī)體開發(fā)路線
- 泡沫混凝土安全技術(shù)交底
- 完整MAM-KY02S螺桿空壓機(jī)控制器MODBUSⅡ通信協(xié)議說明
- 《納米材料工程》教學(xué)大綱要點(diǎn)
- 長春市勞動合同樣本(共10頁)
評論
0/150
提交評論