c計(jì)算三角形面積課程設(shè)計(jì)1_第1頁
c計(jì)算三角形面積課程設(shè)計(jì)1_第2頁
c計(jì)算三角形面積課程設(shè)計(jì)1_第3頁
c計(jì)算三角形面積課程設(shè)計(jì)1_第4頁
c計(jì)算三角形面積課程設(shè)計(jì)1_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第頁《C++程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告三角形的種類和面積班級:10級2班___姓名:沈茂良_____學(xué)號:101102025_____________指導(dǎo)教師:唐遠(yuǎn)翔___完成時(shí)間:2011年11目錄TOC\f\o"1-9"\t"Heading3;3;Heading2;2;Heading1;1"\h摘要 一、引言 二、設(shè)計(jì)目的與任務(wù) 1、本課程設(shè)計(jì)的目的 2、本課程設(shè)計(jì)的任務(wù) 三、設(shè)計(jì)方案 四、程序清單 五、程序調(diào)試與體會 六、總結(jié) 摘要本次設(shè)計(jì)用類進(jìn)行有關(guān)三角形的種類和面積的操作。通過類的繼承及派生,調(diào)用類的成員函數(shù)實(shí)現(xiàn)判別三角形的種類,求三角形三條邊的長度,求三角形的面積,數(shù)據(jù)存入文件,查看文件數(shù)據(jù),清空數(shù)據(jù)文件等操作。程序中使用了類的繼承,提高代碼的復(fù)用性。程序主要由點(diǎn)類、線段類、三角形類以及主函數(shù)構(gòu)成?!禖++程序設(shè)計(jì)語言》課程設(shè)計(jì)——利用類的繼承及派生求三角形的種類和面積一、引言隨著人們生活水平的提高,計(jì)算機(jī)發(fā)展異常迅速。如今,計(jì)算機(jī)已經(jīng)深入到我們社會的各個(gè)領(lǐng)域,計(jì)算機(jī)的使用也已不再局限于科學(xué)計(jì)算,它已進(jìn)入人類社會的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用。通過計(jì)算機(jī)對各類問題求解已經(jīng)成為一種高效、快捷的方式。本課程設(shè)計(jì)就是用C++研究三角形的種類及面積的問題,實(shí)現(xiàn)對三角形的種類和面積的求解及實(shí)現(xiàn)類的應(yīng)用以及函數(shù)的調(diào)用。二、設(shè)計(jì)目的及任務(wù)1、本課程設(shè)計(jì)的目的1)通過課程設(shè)計(jì)更進(jìn)一步理解C++的基礎(chǔ)知識和面向?qū)ο蟮乃枷搿?)訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),并在此過程中培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測試等基本方法和技能。3)熟練掌握C++中類的繼承及派生在程序中的應(yīng)用,并熟練了解類中函數(shù)的調(diào)用。4)通過分工協(xié)作,激發(fā)團(tuán)隊(duì)合作精神,培養(yǎng)團(tuán)隊(duì)合作的能力。2、本課程設(shè)計(jì)的任務(wù)使用類實(shí)現(xiàn)對三角形的種類和面積求解,具體內(nèi)容如下:1)設(shè)計(jì)菜單實(shí)現(xiàn)功能選擇;2)輸入三角形的三個(gè)頂點(diǎn)坐標(biāo);3)判斷三角形的種類(一般三角形、等腰三角形、等邊三角形、直角三角形和不能構(gòu)成三角形);4)計(jì)算并輸出三角形的面積5)對輸入數(shù)據(jù)和輸出結(jié)果均用文件實(shí)現(xiàn)三、設(shè)計(jì)方案(一)定義三個(gè)Point,Line,Triangle三個(gè)類,它們之間的關(guān)系。如圖示:Point類Point類Line類Triangle類繼承繼承派生派生(二)詳細(xì)設(shè)計(jì)private:doubleX1,X2,X3,Y1,Y2,Y3;private:doubleX1,X2,X3,Y1,Y2,Y3;Pointp1,p2,p3;Linel1,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();triclear();Private:doubleX;doubleY;private:doublePointp1,p2;詳細(xì)注釋:public:Point();:點(diǎn)類無參構(gòu)造函數(shù)Point(參數(shù));:點(diǎn)類帶參構(gòu)造函數(shù)Private:doubleX;:點(diǎn)的x坐標(biāo)doubleY;:點(diǎn)的y坐標(biāo)public:Line();:線段類無參構(gòu)造函數(shù)Line(參數(shù));:線段類帶參構(gòu)造函數(shù)private:doubleX1,X2,Y1,Y2;兩個(gè)點(diǎn)的x坐標(biāo)和y坐標(biāo)Pointp1,p2;兩個(gè)點(diǎn)類成員public:Triangle();:三角形類無參構(gòu)造函數(shù)Triangle(參數(shù));:三角形帶參構(gòu)造函數(shù)trilineput();:三角形邊長輸出函數(shù)triarea();:求三角形面積函數(shù)trijudgekind();:三角形類型判斷函數(shù)trisave();:三角形點(diǎn)的數(shù)據(jù)及面積存入文件函數(shù)tricheck();:文件內(nèi)容查看函數(shù)triclear();:文件內(nèi)容清空函數(shù)private:doubleX1,X2,X3,Y1,Y2,Y3;:三角形三點(diǎn)的x坐標(biāo)和y坐標(biāo)Pointp1,p2,p3;:三個(gè)點(diǎn)類成員Linel1,l2,l3:三個(gè)線段類成員(三)其他自定義函數(shù)voidsetprecision();:設(shè)置輸出數(shù)據(jù)精度函數(shù)viodtriin(Triangle&t);:初始化一個(gè)三角形對象函數(shù)voiddisplay();:主菜單顯示函數(shù)(四)主函數(shù):voiddisplay();switch(intn):調(diào)用操作四、程序清單#include"iostream.h"#include"math.h"#include"fstream.h"#include"ctype.h"#include"iomanip.h"#include"stdlib.h"staticintP=2;//點(diǎn)類//做線段類的基類classPointpublic:Point()//點(diǎn)類無參構(gòu)造函數(shù)X=0;Y=0;Point(doublex,doubley)//點(diǎn)類帶參構(gòu)造函數(shù)X=x;Y=y;private:doubleX;//點(diǎn)類私有數(shù)據(jù)成員doubleY;//線段類classLine:publicPoint//公有繼承點(diǎn)類public:Line()//線段類無參構(gòu)造函數(shù)X1=0;X2=0;Y1=0;Y2=0;//給私有數(shù)據(jù)成員賦初值Line(doublex1,doubley1,doublex2,doubley2):Point(0,0),p1(x1,y1),p2(x2,y2)//線段類帶參構(gòu)造函數(shù),初始化數(shù)據(jù)X1=x1;X2=x2;Y1=y1;Y2=y2;doublelinelength();//求兩點(diǎn)距離函數(shù)private:Pointp1,p2;//私有點(diǎn)類成員doubleX1,X2,Y1,Y2;//私有數(shù)據(jù)成員doubleLine::linelength()//定義求兩點(diǎn)距離函數(shù),即三角形的邊長returnsqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2));//返回兩點(diǎn)的距離值,即三角形邊}//長的值//三角形類classTriangle:publicLine//公有繼承線段類函數(shù)public:Triangle():l1(0,0,0,0),l2(0,0,0,0),l3(0,0,0,0)//三角形類無參構(gòu)造函數(shù),對私有數(shù)據(jù)成員賦缺省值X1=0;X2=0;X3=0;Y1=0;Y2=0;Y3=0;Triangle(doublex1,doubley1,doublex2,doubley2,doublex3,doubley3):Line(0,0,0,0),l1(x1,y1,x2,y2),l2(x1,y1,x3,y3),l3(x2,y2,x3,y3){//三角形帶參構(gòu)造函數(shù),對私有數(shù)據(jù)進(jìn)行初始化X1=x1;X2=x2;X3=x3;Y1=y1;Y2=y2;Y3=y3;voidtrilineput();//三角形邊長輸出函數(shù)doubletriarea();//求三角形面積函數(shù)voidtrijudgekind();//三角形判斷函數(shù)voidtrisave();//數(shù)據(jù)存入函數(shù)voidtricheck();//查看文件數(shù)據(jù)voidtriclear();//清空數(shù)據(jù)函數(shù)private:Linel1,l2,l3;//私有線段類成員Pointp1,p2,p3;//私有點(diǎn)類成員doubleX1,X2,X3,Y1,Y2,Y3;//私有數(shù)據(jù)成員voidTriangle::trilineput()//輸出三角形三條邊的長度cout<<"這三個(gè)點(diǎn)組成三邊的長度分別為:"<<setiosflags(ios::fixed)<<setprecision(P)//設(shè)定數(shù)據(jù)輸出精度<<l1.linelength()<<"\t"<<l2.linelength()<<"\t"<<l3.linelength()<<endl;}//調(diào)用三角形類中的成員函數(shù)linelength()求邊長doubleTriangle::triarea()//計(jì)算三角形的面積doublea=l1.linelength();//調(diào)用三角形類成員函數(shù):求兩點(diǎn)距離doubleb=l2.linelength();//調(diào)用三角形類成員函數(shù):求兩點(diǎn)距離doublec=l3.linelength();//調(diào)用三角形類成員函數(shù):求兩點(diǎn)距離doublep=(a+b+c)/2;returnsqrt(p*(p-a)*(p-b)*(p-c));//返回面積三角形的值voidTriangle::trijudgekind()//三角形的判斷if((X1==X2&&X2==X3)||(Y1==Y2&&Y2==Y3)||((X3-X2)*(Y2-Y1)-(Y3-Y2)*(X2-X1))==0)//判斷三點(diǎn)是否在一條直線上//三點(diǎn)所成直線及坐標(biāo)軸垂直或者不垂直于直線cout<<"這三點(diǎn)在一條直線是上,不能構(gòu)成三角形!"<<endl;elsedoublea=l1.linelength(),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<<"這是一個(gè)等腰直角三角形."<<endl<<"邊長分別為:"<<setiosflags(ios::fixed)<<setprecision(P)//設(shè)定數(shù)據(jù)輸出精度<<a<<"\t"<<b<<"\t"<<c<<endl;elseif(a==b&&b==c)//判斷是否三條邊相等cout<<"這是一個(gè)等邊三角形,"<<"邊長為:"<<setiosflags(ios::fixed)<<setprecision(P)//設(shè)定數(shù)據(jù)輸出精度<<a<<"."<<endl;elseif(b==c)//判斷底邊的值cout<<setiosflags(ios::fixed)<<setprecision(P)<<"這是一個(gè)等腰三角形."<<"腰長為:"<<b<<","<<"底邊長為:"<<a<<"."<<endl;elseif(a==b)cout<<setiosflags(ios::fixed)<<setprecision(P)<<"這是一個(gè)等腰三角形."<<"腰長為:"<<b<<","<<"底邊長為:"<<c<<"."<<endl;elsecout<<setiosflags(ios::fixed)<<setprecision(P)<<"這是一個(gè)等腰三角形."<<"腰長為:"<<a<<","<<"底邊長為:"<<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<<"這是一個(gè)直角三角形."<<endl<<"邊長分別為:"<<setiosflags(ios::fixed)<<setprecision(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<<"這是一個(gè)一般鈍角三角形,"<<endl<<"邊長分別為:"<<setiosflags(ios::fixed)<<setprecision(P)<<a<<"\t"<<b<<"\t"<<c<<endl;elsecout<<"這是一個(gè)一般銳角三角形,"<<endl<<"邊長分別為:"<<setiosflags(ios::fixed)<<setprecision(P)<<a<<"\t"<<b<<"\t"<<c<<endl;voidTriangle::trisave()//定義點(diǎn)數(shù)據(jù)及面積數(shù)據(jù)存入ofstreamftriangle;charc;cout<<"\n保存三個(gè)點(diǎn)的坐標(biāo)及面積數(shù)據(jù),是否繼續(xù)?[Y/N]:";cin>>c;if(toupper(c)!='Y')return;ftriangle.open("triangledata.txt",ios::out);ftriangle<<"<"<<X1<<","<<Y1<<">"<<endl<<"<"<<X2<<","<<Y2<<">"<<endl<<"<"<<X3<<","<<Y3<<">"<<endl<<"三點(diǎn)形成三角形的面積是:"<<triarea()<<endl;ftriangle.close();cout<<"\n保存點(diǎn)數(shù)據(jù)及面積數(shù)據(jù)已經(jīng)完成...\n";voidTriangle::triclear()//清空文件中的數(shù)據(jù)charc;cout<<"\n將會清空數(shù)據(jù),是否繼續(xù)?[Y/N]:";cin>>c;if(toupper(c)=='Y')ofstreamftriangle;ftriangle.open("triangledata.txt");ftriangle.clear();ftriangle.close();cout<<"\n數(shù)據(jù)已經(jīng)清空...\n";elsereturn;voidTriangle::tricheck()//查看文件中的數(shù)據(jù)charch;ifstreamftriangle("triangledata.txt",ios::binary|ios::nocreate);if(ftriangle)while(ftriangle.good())ftriangle.get(ch);if(!ch)break;cout<<ch;elsecout<<"error:Cannotopenfile'triangledata.txt'."<<endl;ftriangle.close();cout<<endl<<"文件數(shù)據(jù)讀取完畢!...\n";voidtriin(Triangle&t)//錄入三個(gè)點(diǎn)的坐標(biāo)對操作數(shù)據(jù)進(jìn)行初始化doublex1,x2,x3,y1,y2,y3;cout<<"輸入第一個(gè)點(diǎn)的坐標(biāo)值:";cin>>x1>>y1;cout<<endl<<"輸入第二個(gè)點(diǎn)的坐標(biāo)值:";cin>>x2>>y2;cout<<endl<<"輸入第三個(gè)點(diǎn)的坐標(biāo)值:";cin>>x3>>y3;cout<<endl;Trianglep(x1,y1,x2,y2,x3,y3);t=p;voidsetprecision()//設(shè)置數(shù)據(jù)的輸出精度 cout<<"設(shè)置輸出精度(0--15):"; intn; cin>>n; cout<<endl; P=n;voiddisplay()//顯示菜單界面cout<<"\n\n\t\t********************************************************\n";cout<<"\t\t\t*********三角形的種類及面積*********\n\t\t********************************************************\n";cout<<"\n\t\t\t*********************************\n";cout<<"\t\t\t\t1--三角形的判斷\n";cout<<"\t\t\t\t2--三條邊的長度\n";cout<<"\t\t\t\t3--計(jì)算三角形的面積\n";cout<<"\t\t\t\t4--點(diǎn)數(shù)據(jù)及面積數(shù)據(jù)存入\n";cout<<"\t\t\t\t5--查看存入數(shù)據(jù)\n";cout<<"\t\t\t\t6--數(shù)據(jù)清空\n";cout<<"\t\t\t\t7--退出\n";cout<<"\t\t\t*********************************\n";cout<<"\t\t\t請選擇(1-7):";intmain()Trianglet;charc;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("pause");break;case'3':triin(t);setprecision();cout<<"這個(gè)三角形的面積為:"<<t.triarea()<<endl<<endl;system("pause");break;case'4':t.trisave();cout<<endl;system("pause");break;case'5':t.tricheck();cout<<endl;system("pause");break;case'6':t.triclear();cout<<endl;system("pause");break;case'7':gotoend;break;default:cout<<"請正確輸入!\n";cout<<endl;system("pause");break;system("cls");end:cout<<"\nSeeyou\n\n";return0;五、程序調(diào)試及體會在開發(fā)一個(gè)軟件項(xiàng)目的過程中,程序調(diào)試過程占了一個(gè)絕大部分的時(shí)間,可見程序調(diào)試它的重要性。通過程序調(diào)試,我們發(fā)現(xiàn)了程序中的達(dá)不到要求的地方,并且能夠從中改進(jìn)程序編寫的內(nèi)容,如結(jié)構(gòu)的編排,更好的判斷方法等等。調(diào)試實(shí)例:1、調(diào)試運(yùn)行開始,顯示菜單窗口:2、輸入“1”,判斷三角形的類別,(1)依次輸入數(shù)據(jù)243245選擇精度2回車則出現(xiàn)以下窗口:說明:這是三點(diǎn)能構(gòu)成三角形的時(shí)(2)依次輸入123456選擇精度2回車則出現(xiàn)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論