




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第頁(yè)《C++程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告三角形的種類和面積班級(jí):10級(jí)2班___姓名:沈茂良_____學(xué)號(hào):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)試與體會(huì) 六、總結(jié) 摘要本次設(shè)計(jì)用類進(jìn)行有關(guān)三角形的種類和面積的操作。通過(guò)類的繼承及派生,調(diào)用類的成員函數(shù)實(shí)現(xiàn)判別三角形的種類,求三角形三條邊的長(zhǎng)度,求三角形的面積,數(shù)據(jù)存入文件,查看文件數(shù)據(jù),清空數(shù)據(jù)文件等操作。程序中使用了類的繼承,提高代碼的復(fù)用性。程序主要由點(diǎn)類、線段類、三角形類以及主函數(shù)構(gòu)成?!禖++程序設(shè)計(jì)語(yǔ)言》課程設(shè)計(jì)——利用類的繼承及派生求三角形的種類和面積一、引言隨著人們生活水平的提高,計(jì)算機(jī)發(fā)展異常迅速。如今,計(jì)算機(jī)已經(jīng)深入到我們社會(huì)的各個(gè)領(lǐng)域,計(jì)算機(jī)的使用也已不再局限于科學(xué)計(jì)算,它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。通過(guò)計(jì)算機(jī)對(duì)各類問(wèn)題求解已經(jīng)成為一種高效、快捷的方式。本課程設(shè)計(jì)就是用C++研究三角形的種類及面積的問(wèn)題,實(shí)現(xiàn)對(duì)三角形的種類和面積的求解及實(shí)現(xiàn)類的應(yīng)用以及函數(shù)的調(diào)用。二、設(shè)計(jì)目的及任務(wù)1、本課程設(shè)計(jì)的目的1)通過(guò)課程設(shè)計(jì)更進(jìn)一步理解C++的基礎(chǔ)知識(shí)和面向?qū)ο蟮乃枷搿?)訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),并在此過(guò)程中培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。初步掌握軟件開發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能。3)熟練掌握C++中類的繼承及派生在程序中的應(yīng)用,并熟練了解類中函數(shù)的調(diào)用。4)通過(guò)分工協(xié)作,激發(fā)團(tuán)隊(duì)合作精神,培養(yǎng)團(tuán)隊(duì)合作的能力。2、本課程設(shè)計(jì)的任務(wù)使用類實(shí)現(xiàn)對(duì)三角形的種類和面積求解,具體內(nèi)容如下:1)設(shè)計(jì)菜單實(shí)現(xiàn)功能選擇;2)輸入三角形的三個(gè)頂點(diǎn)坐標(biāo);3)判斷三角形的種類(一般三角形、等腰三角形、等邊三角形、直角三角形和不能構(gòu)成三角形);4)計(jì)算并輸出三角形的面積5)對(duì)輸入數(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)類無(wú)參構(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();:線段類無(wú)參構(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();:三角形類無(wú)參構(gòu)造函數(shù)Triangle(參數(shù));:三角形帶參構(gòu)造函數(shù)trilineput();:三角形邊長(zhǎng)輸出函數(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è)三角形對(duì)象函數(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)類無(wú)參構(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()//線段類無(wú)參構(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ù),即三角形的邊長(zhǎng)returnsqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2));//返回兩點(diǎn)的距離值,即三角形邊}//長(zhǎng)的值//三角形類classTriangle:publicLine//公有繼承線段類函數(shù)public:Triangle():l1(0,0,0,0),l2(0,0,0,0),l3(0,0,0,0)//三角形類無(wú)參構(gòu)造函數(shù),對(duì)私有數(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ù),對(duì)私有數(shù)據(jù)進(jìn)行初始化X1=x1;X2=x2;X3=x3;Y1=y1;Y2=y2;Y3=y3;voidtrilineput();//三角形邊長(zhǎng)輸出函數(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()//輸出三角形三條邊的長(zhǎng)度cout<<"這三個(gè)點(diǎn)組成三邊的長(zhǎng)度分別為:"<<setiosflags(ios::fixed)<<setprecision(P)//設(shè)定數(shù)據(jù)輸出精度<<l1.linelength()<<"\t"<<l2.linelength()<<"\t"<<l3.linelength()<<endl;}//調(diào)用三角形類中的成員函數(shù)linelength()求邊長(zhǎng)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();//將三角形形三條邊的長(zhǎng)度分別賦給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<<"邊長(zhǎng)分別為:"<<setiosflags(ios::fixed)<<setprecision(P)//設(shè)定數(shù)據(jù)輸出精度<<a<<"\t"<<b<<"\t"<<c<<endl;elseif(a==b&&b==c)//判斷是否三條邊相等cout<<"這是一個(gè)等邊三角形,"<<"邊長(zhǎng)為:"<<setiosflags(ios::fixed)<<setprecision(P)//設(shè)定數(shù)據(jù)輸出精度<<a<<"."<<endl;elseif(b==c)//判斷底邊的值cout<<setiosflags(ios::fixed)<<setprecision(P)<<"這是一個(gè)等腰三角形."<<"腰長(zhǎng)為:"<<b<<","<<"底邊長(zhǎng)為:"<<a<<"."<<endl;elseif(a==b)cout<<setiosflags(ios::fixed)<<setprecision(P)<<"這是一個(gè)等腰三角形."<<"腰長(zhǎng)為:"<<b<<","<<"底邊長(zhǎng)為:"<<c<<"."<<endl;elsecout<<setiosflags(ios::fixed)<<setprecision(P)<<"這是一個(gè)等腰三角形."<<"腰長(zhǎng)為:"<<a<<","<<"底邊長(zhǎng)為:"<<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<<"邊長(zhǎng)分別為:"<<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<<"邊長(zhǎng)分別為:"<<setiosflags(ios::fixed)<<setprecision(P)<<a<<"\t"<<b<<"\t"<<c<<endl;elsecout<<"這是一個(gè)一般銳角三角形,"<<endl<<"邊長(zhǎng)分別為:"<<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將會(huì)清空數(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)對(duì)操作數(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--三條邊的長(zhǎng)度\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ù)清空\(chéng)n";cout<<"\t\t\t\t7--退出\n";cout<<"\t\t\t*********************************\n";cout<<"\t\t\t請(qǐng)選擇(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<<"請(qǐng)正確輸入!\n";cout<<endl;system("pause");break;system("cls");end:cout<<"\nSeeyou\n\n";return0;五、程序調(diào)試及體會(huì)在開發(fā)一個(gè)軟件項(xiàng)目的過(guò)程中,程序調(diào)試過(guò)程占了一個(gè)絕大部分的時(shí)間,可見程序調(diào)試它的重要性。通過(guò)程序調(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)以下窗口:說(shuō)明:這是三點(diǎn)能構(gòu)成三角形的時(shí)(2)依次輸入123456選擇精度2回車則出現(xiàn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 六一活動(dòng)花店活動(dòng)方案
- 六一活動(dòng)門店活動(dòng)方案
- 六一特別團(tuán)隊(duì)活動(dòng)方案
- 六一端午節(jié)門店活動(dòng)方案
- 六一節(jié)親子活動(dòng)方案
- 六一黑板報(bào)比賽活動(dòng)方案
- 六五環(huán)境日跑步活動(dòng)方案
- 六年級(jí)學(xué)科拓展活動(dòng)方案
- 醫(yī)技科室授權(quán)考試試題及答案
- 云計(jì)算試題及答案
- 統(tǒng)編版語(yǔ)文四年級(jí)上冊(cè)21古詩(shī)三首《出塞》課件
- 《無(wú)人機(jī)操控培訓(xùn)材料》課件
- 2024年07月臨商銀行2024年校園招考46名工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 第 12課《干點(diǎn)家務(wù)活》(說(shuō)課稿)統(tǒng)編版道德與法治一年級(jí)下冊(cè)
- 2023靜療專科護(hù)士理論知識(shí)考核試題及答案
- 第二類精神藥品管理制度
- 維保服務(wù)質(zhì)量保障措施
- 譯林版初中英語(yǔ)九年級(jí)上冊(cè)知識(shí)梳理
- 《短視頻策劃與運(yùn)營(yíng)》課件-01什么是剪輯
- 家庭安全小知識(shí)
- 古代數(shù)學(xué)家故事--祖沖之(二年紀(jì))
評(píng)論
0/150
提交評(píng)論