面向對象程序設計實驗一_第1頁
面向對象程序設計實驗一_第2頁
面向對象程序設計實驗一_第3頁
面向對象程序設計實驗一_第4頁
面向對象程序設計實驗一_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗一類和對象一、 實驗目的:掌握類的設計和對象的創(chuàng)建及相關知識點如對象數組、類聚合、友元函數、靜態(tài)成員。二、 實驗內容:1、 設計圓類,求兩個圓的位置關系;2、 設計圓類和直線類,求直線與圓的位置關系;3、 設計學生類,求某班學生成績的最高分、最低分及平均分;4、 設計部門類和教師類,其中部門類成員為教師類的子對象;5、 設計家庭銀行賬戶類,其中賬戶資金為靜態(tài)數據成員,為家庭成員共享;6、 設計復數類,友元函數實現(xiàn)復數的加減。三、 實驗過程:1、 根據實驗題目確定需要設計哪些類、各類中包含哪些數據成員和函數成員,設計各成員的訪問權限,設計數據成員的數據類型,設計函數成員的函數原型;2、 給出類設計的程序實現(xiàn),特別要注意重載構造函數的實現(xiàn);3、 在主函數中完成題目中的邏輯,一般情況下需要創(chuàng)建相關類的對象,通過對象對成員函數的調用或者通過對象指針對成員函數的調用完成相應的功能。四、 參考程序代碼:1、設計圓類,求兩個圓的位置關系#include<iostream>#include<math.h>usingnamespacestd;classCircle{private:floata,b,r;public:Circle(floatc,floatd,floate){a=c;b=d;r=e;}friendvoidposition(Circle&,Circle&);};voidposition(Circle&c1,Circle&c2){floatn,m,p;p二sqrt((c1.a-c2.a)*(c1.a-c2.a)+(c1.b-c2.b)*(c1.b-c2.b));n二fabs(c1.r-c2.r);m=c1.r+c2.r;if(p>m)cout<<"相離";if(p==m)cout<<"相切";if(p<m)cout<<"相交";}intmain(){floata,b,c,d,e,f;cin>>a>>b>>c>>d>>e>>f;

Circlec1(a,b,c),c2(d,e,f);position(c1,c2);return0;}運行結果:eso交ocespnrreso交ocespnrrI利pp21.988ssreIurned0(0x0)execlitioijtimeanvkevtoconiinue.2、設計圓類和直線類,求直線與圓的位置關系#include<iostream>#include<math.h>usingnamespacestd;classCircle//圓類{private:floatx,y,r;public:Circle(floata,floatb,floatc){x=a;y二b;r=c;}floatgetx(){returnx;}floatgety(){returny;}floatgetr(){returnr;}};classLine//直線類{private:floata,b,c;public:Line(floatx,floaty,floatz){a=x;b二y;c=z;}voidposition(Circlec1){floatd二fabs(a*c1.getx()+b*c1.gety()+c)/sqrt(a*a+b*b);//圓心到直線的距離if(d<c1.getr())cout<<"相交";if((d-c1.getr())<0.000001)cout<<"相切";cout<<"相離";}};intmain(){Linel1(3,3,4);//創(chuàng)建直線對象Circlec1(-23,3,7);//創(chuàng)建圓對象l1.position(c1);return0;}運彳丁結果:相離Processreturned0(0x0)executiontime:0.092sPressanykeytocontinue.3、設計學生類,求某班學生成績的最高分、最低分及平均分#include<iostream>#include<string.h>usingnamespacestd;classStudent{private:charname[20],xuehao[20];floatmath;public:Student(){}Student(char*na,char*xu,floatma):math(ma){strcpy(name,na);strcpy(xuehao,xu);}voidset(char*na,char*xu,floatma){math=ma;strcpy(name,na);strcpy(xuehao,xu);}char*get_name(){returnname;}char*get_xuehao(){returnxuehao;}floatget_math(){returnmath;}};voidmax_min(Studentstu[],intn){Studentmax,min;max二min=stu[0];for(inti;i<n;i++){if(stu[i].get_math()>max.get_math())max=stu[i];if(stu[i].get_math()<min.get_math())min=stu[i];}cout<<"學生成績最高:"<<max.get_name()<<","<<max.get_xuehao()<<","<<max.get_math()<<endl;cout<<"學生成績最低:"<<min.get_name()<<","<<min.get_xuehao()<<","<<min.get_math()<<endl;}voidave(Studentstu[],intn){floatsum=0;for(inti=0;i<n;i++){sum=sum+stu[i].get_math();}cout<<"ave="<<sum/n;}intmain(){charna[20],xu[20];floatma;Studentstu[20];intn;cout<<"請輸入學生總人數";cin>>n;for(inti=0;i<n;i++){cin>>na>>xu>>ma;stu[i].set(na,xu,ma);}max_min(stu,n);ave(stu,n);return0;}運彳丁結果:請輸入學生總人數3小1145小2276小4498學生成績最高:小4,4,98學生成績最低:小1,1,45avc-=73ProcessreT::rned0(.0x0)executiontime:47.674sPressanykeyTacontinue.4、設計部門類和教師類,其中部門類成員為教師類的子對象#include<iostream>#include<string.h>usingnamespacestd;classDepartment{private:intdep_num;chardep_master[20];chardep_name[20];public:Department(){}Department(intnum,char*ma,char*na){dep_num=num;strcpy(dep_master,ma);strcpy(dep_name,na);}voidshow(){cout<<dep_num<<","<<dep_master<<","<<dep_name}};classTeacher{private:charname[20];charhaoma[20];Departmentdep;public:Teacher(char*n,char*nu,intnum,char*ma,char*na):dep(num,ma,na){strcpy(name,n);strcpy(haoma,nu);}voidshow(){dep.show();cout<<","<<name<<","<<haoma<<endl;}};intmain(){Teacherhp("wanghai","12345",6,"kiki","computer");hp.show();return0;}運彳丁結果:u:\gnj\Doug\gnj.exe6,kiki,computer,wanghaL123451Processreturned0(0x0)executiontime:0.216sPressanykeytocontinue.5、設計家庭銀行賬戶類,其中賬戶為靜態(tài)數據成員,為家庭成員共享#include<iostream>#include<string.h>usingnamespacestd;classFamilymember//家庭成員類{private:char membername[10];//成員名public:staticfloataccount;//共享賬戶資金Familymember(char*name);staticvoidsave(floatmoney);//存錢staticvoidpay(floatmoney);//支出staticvoidshow();//顯示賬戶余額};floatFamilymember::account=0;Familymember::Familymember(char*name){strcpy(membername,name);}voidFamilymember::save(floatmoney){account=account+money;}voidFamilymember::pay(floatmoney){account=account-money;}voidFamilymember::show()cout<<account<<endl;}intmain()//主函數{Familymemberhusband("wang"),wife("Li");husband.save(10000);wife.pay(3000);wife.save(5000);wife.show();husband.show();}運行結果:1200012000Processreturned0(0x0)executionrime:0.131sPressanykeytocontinue,6、設計復數類,友元函數實現(xiàn)復數的加減#include<iostream>usingnamespacestd;classFushu{private:floatss,xs;public:Fushu(){}Fushu(floata,floatb){ss=a;xs=b;}friendFushujiafa(Fushu&f1,Fushu&f2){returnFushu((f1.ss+f2.ss),(f1.xs+f2.xs));}friendFushujian(Fushu&f1,Fushu&f2){returnFushu((f1.ss-f2.ss),(f1.xs-f2.xs));}voidshow(){cout<<ss<<"+"<<

溫馨提示

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

評論

0/150

提交評論