c++計算三角形面積課程設計_第1頁
c++計算三角形面積課程設計_第2頁
c++計算三角形面積課程設計_第3頁
c++計算三角形面積課程設計_第4頁
c++計算三角形面積課程設計_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 C+程序設計課程設計報告三角形的種類和面積班 級: 10級2班 _姓 名: 沈 茂 良 _ _ _學 號: 101102025 _指導教師: 唐 遠 翔 _完成時間: 2011 年 11 月 30 日目 錄2摘 要一、引言二、設計目的與任務1、本課程設計的目的2、本課程設計的任務三、設計方案四、程序清單五、程序調(diào)試與體會六、總結 摘 要本次設計用類進行有關三角形的種類和面積的操作。通過類的繼承與派生,調(diào)用類的成員函數(shù)實現(xiàn)判別三角形的種類,求三角形三條邊的長度,求三角形的面積,數(shù)據(jù)存入文件,查看文件數(shù)據(jù),清空數(shù)據(jù)文件等操作。程序中使用了類的繼承,提高代碼的復用性。程序主要由點類、線段類、三角形

2、類以及主函數(shù)構成。22C+程序設計語言課程設計 利用類的繼承與派生求三角形的種類和面積一、引言隨著人們生活水平的提高,計算機發(fā)展異常迅速。如今,計算機已經(jīng)深入到我們社會的各個領域,計算機的使用也已不再局限于科學計算,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。通過計算機對各類問題求解已經(jīng)成為一種高效、快捷的方式。本課程設計就是用C+研究三角形的種類及面積的問題,實現(xiàn)對三角形的種類和面積的求解及實現(xiàn)類的應用以及函數(shù)的調(diào)用。二、設計目的與任務1、本課程設計的目的1)通過課程設計更進一步理解C+的基礎知識和面向?qū)ο蟮乃枷搿?)訓練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),并在此過程中培養(yǎng)嚴

3、謹?shù)目茖W態(tài)度和良好的工作作風。初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能。3)熟練掌握C+中類的繼承與派生在程序中的應用,并熟練了解類中函數(shù)的調(diào)用。4)通過分工協(xié)作,激發(fā)團隊合作精神,培養(yǎng)團隊合作的能力。2、本課程設計的任務使用類實現(xiàn)對三角形的種類和面積求解,具體內(nèi)容如下:1)設計菜單實現(xiàn)功能選擇; 2)輸入三角形的三個頂點坐標;3)判斷三角形的種類(一般三角形、等腰三角形、等邊三角形、直角三角形和不能構成三角形);4)計算并輸出三角形的面積 5)對輸入數(shù)據(jù)和輸出結果均用文件實現(xiàn)三、設計方案(一)定義三個Point,Line,Triangle三個類,它們之間的關系

4、。如圖示:Point類Line類Triangle類繼承繼承派生派生(二)詳細設計private:double X1,X2,X3,Y1,Y2,Y3;Point p1,p2,p3; Line l1,l2,l3;Point 類:作為基類Line類:公有繼承Point類Triangle類:公有繼承Line類public:Point();Point(參數(shù));public:Line();Line(參數(shù));linelength();public:Triangle();Triangle(參數(shù)); trilineput();triarea(); trijudgekind();trisave();tricheck

5、();triclear();Private:double X;double Y;private:double Point p1,p2;詳細注釋:public:Point();:點類無參構造函數(shù)Point(參數(shù));:點類帶參構造函數(shù)Private:double X;:點的x坐標double Y;:點的y坐標public:Line();:線段類無參構造函數(shù)Line(參數(shù));:線段類帶參構造函數(shù)private:double X1,X2,Y1,Y2;兩個點的x坐標和y坐標Point p1,p2;兩個點類成員public:Triangle();:三角形類無參構造函數(shù)Triangle(參數(shù));:三角形帶參

6、構造函數(shù)trilineput();:三角形邊長輸出函數(shù)triarea();:求三角形面積函數(shù)trijudgekind();:三角形類型判斷函數(shù)trisave();:三角形點的數(shù)據(jù)及面積存入文件函數(shù)tricheck();:文件內(nèi)容查看函數(shù)triclear();:文件內(nèi)容清空函數(shù)private:double X1,X2,X3,Y1,Y2,Y3;:三角形三點的x坐標和y坐標Point p1,p2,p3;:三個點類成員Line l1,l2,l3:三個線段類成員(三)其他自定義函數(shù)void setprecision();:設置輸出數(shù)據(jù)精度函數(shù)viod triin(Triangle &t);:初始

7、化一個三角形對象函數(shù)void display();:主菜單顯示函數(shù)(四)主函數(shù):void display();switch(int n):調(diào)用操作四、程序清單#include"iostream.h"#include"math.h"#include"fstream.h"#include"ctype.h"#include"iomanip.h"#include"stdlib.h"static int P=2;/點類/做線段類的基類class Pointpublic:Point()/

8、點類無參構造函數(shù)X=0;Y=0;Point(double x,double y)/點類帶參構造函數(shù)X=x;Y=y;private:double X;/點類私有數(shù)據(jù)成員double Y;/線段類class Line: public Point/公有繼承點類public:Line()/線段類無參構造函數(shù)X1=0;X2=0;Y1=0;Y2=0;/給私有數(shù)據(jù)成員賦初值Line(double x1,double y1,double x2,double y2):Point(0,0),p1(x1,y1),p2(x2,y2)/線段類帶參構造函數(shù),初始化數(shù)據(jù)X1=x1;X2=x2;Y1=y1;Y2=y2;dou

9、ble linelength();/求兩點距離函數(shù)private:Point p1,p2; /私有點類成員double X1,X2,Y1,Y2;/私有數(shù)據(jù)成員;double Line:linelength()/定義求兩點距離函數(shù),即三角形的邊長return sqrt(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2);/返回兩點的距離值,即三角形邊 /長的值/三角形類class Triangle: public Line/公有繼承線段類函數(shù)public:Triangle():l1(0,0,0,0),l2(0,0,0,0),l3(0,0,0,0)/三角形類無參構造函數(shù),對私有數(shù)據(jù)成員賦

10、缺省值X1=0;X2=0;X3=0;Y1=0;Y2=0;Y3=0;Triangle(double x1,double y1,double x2,double y2,double x3,double y3):Line(0,0,0,0),l1(x1,y1,x2,y2),l2(x1,y1,x3,y3),l3(x2,y2,x3,y3) /三角形帶參構造函數(shù),對私有數(shù)據(jù)進行初始化X1=x1;X2=x2;X3=x3;Y1=y1;Y2=y2;Y3=y3;void trilineput();/三角形邊長輸出函數(shù)double triarea();/求三角形面積函數(shù)void trijudgekind();/三角形

11、判斷函數(shù)void trisave();/數(shù)據(jù)存入函數(shù)void tricheck();/查看文件數(shù)據(jù)void triclear();/清空數(shù)據(jù)函數(shù)private:Line l1,l2,l3;/私有線段類成員Point p1,p2,p3;/私有點類成員double X1,X2,X3,Y1,Y2,Y3;/私有數(shù)據(jù)成員;void Triangle:trilineput()/輸出三角形三條邊的長度cout<<"這三個點組成三邊的長度分別為:"<<setiosflags(ios:fixed)<<setprecision(P) /設定數(shù)據(jù)輸出精度<

12、;<l1.linelength()<<"t"<<l2.linelength()<<"t"<<l3.linelength()<<endl; /調(diào)用三角形類中的成員函數(shù)linelength()求邊長double Triangle:triarea()/計算三角形的面積double a=l1.linelength();/調(diào)用三角形類成員函數(shù):求兩點距離double b=l2.linelength();/調(diào)用三角形類成員函數(shù):求兩點距離double c=l3.linelength();/調(diào)用三角形類

13、成員函數(shù):求兩點距離double p=(a+b+c)/2;return sqrt(p*(p-a)*(p-b)*(p-c);/返回面積三角形的值void Triangle:trijudgekind()/三角形的判斷if(X1=X2&&X2=X3)|(Y1=Y2&&Y2=Y3)|(X3-X2)*(Y2-Y1)-(Y3-Y2)*(X2-X1)=0)/判斷三點是否在一條直線上/三點所成直線與坐標軸垂直或者不垂直于直線cout<<"這三點在一條直線是上,不能構成三角形!"<<endl;elsedouble a=l1.linele

14、ngth(),b=l2.linelength(),c=l3.linelength();/將三角形形三條邊的長度分別賦給a,b,cif(a=b|b=c|a=c)/判斷是否有兩條邊相等if(X2-X1)*(X3-X2)+(Y2-Y1)*(Y3-Y2)=0|(X2-X1)*(X3-X1)+(Y2-Y1)*(Y3-Y1)=0|(X3-X2)*(X3-X1)+(Y3-Y2)*(Y3-Y1)=0)/判斷直角cout<<"這是一個等腰直角三角形."<<endl<<"邊長分別為:"<<setiosflags(ios:fix

15、ed)<<setprecision(P) /設定數(shù)據(jù)輸出精度<<a<<"t"<<b<<"t"<<c<<endl;else if(a=b&&b=c)/判斷是否三條邊相等cout<<"這是一個等邊三角形,"<<"邊長為:"<<setiosflags(ios:fixed)<<setprecision(P) /設定數(shù)據(jù)輸出精度<<a<<".&q

16、uot;<<endl;elseif(b=c)/判斷底邊的值cout<<setiosflags(ios:fixed)<<setprecision(P)<<"這是一個等腰三角形."<<"腰長為:"<<b<<","<<"底邊長為:"<<a<<"."<<endl;else if(a=b)cout<<setiosflags(ios:fixed)<<se

17、tprecision(P)<<"這是一個等腰三角形."<<"腰長為:"<<b<<","<<"底邊長為:"<<c<<"."<<endl;elsecout<<setiosflags(ios:fixed)<<setprecision(P)<<"這是一個等腰三角形."<<"腰長為:"<<a<<&qu

18、ot;,"<<"底邊長為:"<<b<<"."else/三條邊不相等if(X2-X1)*(X3-X2)+(Y2-Y1)*(Y3-Y2)=0|(X2-X1)*(X3-X1)+(Y2-Y1)*(Y3-Y1)=0|(X3-X2)*(X3-X1)+(Y3-Y2)*(Y3-Y1)=0)/判斷直角cout<<"這是一個直角三角形."<<endl<<"邊長分別為:"<<setiosflags(ios:fixed)<<setpr

19、ecision(P)<<a<<"t"<<b<<"t"<<c<<endl;elseif(a*a+b*b-c*c)<0|(a*a+c*c-b*b)<0|(b*b+c*c-a*a)<0)cout<<"這是一個一般鈍角三角形,"<<endl<<"邊長分別為:"<<setiosflags(ios:fixed)<<setprecision(P)<<a<<&

20、quot;t"<<b<<"t"<<c<<endl;elsecout<<"這是一個一般銳角三角形,"<<endl<<"邊長分別為:"<<setiosflags(ios:fixed)<<setprecision(P)<<a<<"t"<<b<<"t"<<c<<endl;void Triangle:trisave()

21、/定義點數(shù)據(jù)及面積數(shù)據(jù)存入ofstream ftriangle;char c;cout<<"n保存三個點的坐標及面積數(shù)據(jù),是否繼續(xù)?Y/N:"cin>>c;if(toupper(c)!='Y') return;ftriangle.open("triangledata.txt",ios:out);ftriangle<<"<"<<X1<<","<<Y1<<">"<<endl&l

22、t;<"<"<<X2<<","<<Y2<<">"<<endl<<"<"<<X3<<","<<Y3<<">"<<endl<<"三點形成三角形的面積是:"<<triarea()<<endl;ftriangle.close();cout<<"n保

23、存點數(shù)據(jù)及面積數(shù)據(jù)已經(jīng)完成.n"void Triangle:triclear()/清空文件中的數(shù)據(jù)char c;cout<<"n將會清空數(shù)據(jù),是否繼續(xù)?Y/N:"cin>>c;if(toupper(c)='Y')ofstream ftriangle;ftriangle.open("triangledata.txt");ftriangle.clear();ftriangle.close();cout<<"n數(shù)據(jù)已經(jīng)清空.n"else return;void Triangle:

24、tricheck()/查看文件中的數(shù)據(jù)char ch;ifstream ftriangle("triangledata.txt",ios:binary|ios:nocreate);if(ftriangle)while(ftriangle.good()ftriangle.get(ch);if(!ch)break;cout<<ch;elsecout<<"error:Cannot open file 'triangledata.txt'."<<endl;ftriangle.close();cout<&l

25、t;endl<<"文件數(shù)據(jù)讀取完畢!.n"void triin(Triangle &t)/錄入三個點的坐標對操作數(shù)據(jù)進行初始化double x1,x2,x3,y1,y2,y3;cout<<"輸入第一個點的坐標值:"cin>>x1>>y1;cout<<endl<<"輸入第二個點的坐標值:"cin>>x2>>y2;cout<<endl<<"輸入第三個點的坐標值:"cin>>x3&g

26、t;>y3;cout<<endl;Triangle p(x1,y1,x2,y2,x3,y3);t=p;void setprecision()/設置數(shù)據(jù)的輸出精度cout<<"設置輸出精度(0-15):"int n;cin>>n;cout<<endl;P=n;void display()/顯示菜單界面cout<<"nntt*n"cout<<"ttt* 三角形的種類與面積 *ntt*n"cout<<"nttt *n"cout<

27、;<"tttt1-三角形的判斷n"cout<<"tttt2-三條邊的長度n"cout<<"tttt3-計算三角形的面積n"cout<<"tttt4-點數(shù)據(jù)及面積數(shù)據(jù)存入n"cout<<"tttt5-查看存入數(shù)據(jù)n"cout<<"tttt6-數(shù)據(jù)清空n"cout<<"tttt7-退出n "cout<<"ttt *n"cout<<"

28、;ttt 請選擇(1-7):"int main()Triangle t;char c;while(1)display();cin>>c;system("cls");switch(c)case '1':triin(t);setprecision();t.trijudgekind();cout<<endl;system("pause");break;case '2':triin(t);setprecision();t.trilineput();cout<<endl;system(&

29、quot;pause");break;case'3':triin(t);setprecision();cout<<"這個三角形的面積為:"<<t.triarea()<<endl<<endl;system("pause");break;case '4':t.trisave();cout<<endl;system("pause");break;case '5':t.tricheck();cout<<endl;s

30、ystem("pause");break;case '6':t.triclear();cout<<endl;system("pause");break;case '7':goto end;break;default: cout<<"請正確輸入!n"cout<<endl;system("pause");break;system("cls");end:cout<<"n.See you .nn"return 0;五、程序調(diào)試與體會在開發(fā)一個軟件項目的過程中,程序調(diào)試過程占了一個絕大部分的時間,可見程序調(diào)試它的重要性。通

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論