




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、院 系: 數學與統計學學院 專 業(yè): 信息與計算科學 年 級: 2012 課程名稱: 面向對象程序設計 學 號: 姓 名: 指導教師: 2014年 11 月 日年級 2012班號 2組號17 學號 專業(yè) 信息與計算科學 姓名實驗名稱 類和對象實驗室 實驗目的或要求 1掌握類的定義和使用方法,掌握類對象的聲明和使用方法。2掌握對象的初始化和賦值的方法。3了解成員函數的特性、友元。4靜態(tài)成員的使用方法。5理解和掌握this指針的用法。6理解和掌握const類型數據的使用。實驗原理(算法流程)1、實驗內容 2、類的設計及說明
2、定義一個描述學生(Student)基本情況的類,數據成員包括姓名(name)、學號(num)、數學成績(mathScore)、英語成績(englishScore)、人數(count)、數學總成績(mathTotalScore)和英語總成績(englishTotalScore)。其中姓名定義為長度為18的字符數組,其它數據成員類型為整型,數學總成績、英語總成績和人數為靜態(tài)數據成員,函數成員包括構造函數、顯示基本數據函數(ShowBase)和顯示靜態(tài)數據函數(ShowStatic),其中構造函數由已知參數姓名(nm)、學號(nu)、數學成績(math)和英語成績(english)構造對象,顯示基本
3、數據函數用于顯示學生的姓名、學號、數學成績、英語成績,顯示靜態(tài)數據函數為靜態(tài)成員函數,用于顯示人數,數學總成績,英語總成績;要求所有數據成員為private訪問權限,所有成員函數為public訪問權限,在主函數中定義若干個學生對象,分別顯示學生基本信息,以及顯示學生人數,數學總成績與英語總成績。組內分工(選)無實驗結果分析及心得體會根據題目的要求,成功的定義一個描述學生(Student)基本情況的類,數據成員包括姓名(name)、學號(num)、數學成績(mathScore)、英語成績(englishScore)、人數(count)、數學總成績(mathTotalScore)和英語總成績(en
4、glishTotalScore)。其中姓名定義為長度為18的字符數組,其它數據成員類型為整型,數學總成績、英語總成績和人數為靜態(tài)數據成員,函數成員包括構造函數、顯示基本數據函數(ShowBase)和顯示靜態(tài)數據函數(ShowStatic),其中構造函數由已知參數姓名(nm)、學號(nu)、數學成績(math)和英語成績(english)構造對象,顯示基本數據函數用于顯示學生的姓名、學號、數學成績、英語成績,顯示靜態(tài)數據函數為靜態(tài)成員函數,用于顯示人數,數學總成績,英語總成績;要求所有數據成員為private訪問權限,所有成員函數為public訪問權限,在主函數中定義若干個學生對象,分別顯示學生
5、基本信息,以及顯示學生人數,數學總成績與英語總成績。成績評定教師簽名: 年 月 日源代碼如下:#include <string>#include <iostream>using namespace std;class Studentprivate:string name;int num, mathScore, englishSorce;static int count, mathTotalSorcce, englishTotalSorce;public:Student(string a, int b, int c, int d)name = a; num = b; ma
6、thScore = c; englishSorce = d; count+; mathTotalSorcce += c; englishTotalSorce += d;void ShowBase()cout << "姓名:" << name << endl;cout << "學號:" << num<< endl;cout << "數學成績:" << mathScore << endl;cout << "英語
7、成績:" << englishSorce << endl << endl;void ShowStatic()cout << "人數:" << count << endl;cout << "數學總成績:" << mathTotalSorcce << endl;cout << "英語總成績:" << englishTotalSorce << endl;int Student:count
8、= 0;int Student:mathTotalSorcce = 0;int Student:englishTotalSorce = 0;void main()Student a("師兄",2012214102,80,85);Student b("師弟",2012214115, 73, 63);a.ShowBase();b.ShowBase();b.ShowStatic();system("pause");年級 2012班號 2組號17 學號專業(yè) 信息與計算科學 姓名 實驗名稱
9、60; 繼承與派生實驗室實驗原理(算法流程) 1、實驗內容2、類的設計及說明定義Staff(員工)類,由Staff分別派生出Saleman(銷售員)類和Manager(經理)類,再由Saleman(銷售員)類和Manager(經理)類采用多重繼承方式派生出新類SaleManager(銷售經理)類,各類之間的繼承關系如圖1.2所示。圖2.2 各類之間的繼承關系要求:(1)在Staff類中包含的數據成員有編號(num)、姓名(name)、出勤率(rateOfAttend)、基本工資(basicSal)和獎金(prize)。在Saleman類中還包含數據成員銷售員提成比例(deductRa
10、te)和個人銷售額(personAmount),在Manager類中還包含數據成員經理提成比例(totalDeductRate)和總銷售額(totalAmount)。在SaleManager類中不包含其它數據成員。(2)各類人員的實發(fā)工資公式如下:員工實發(fā)工資 = 基本工資 + 獎金 * 出勤率銷售員實發(fā)工資 = 基本工資 + 獎金 * 出勤率 + 個人銷售額 * 銷售員提成比例經理實發(fā)工資 = 基本工資 + 獎金 * 出勤率 + 總銷售額 * 經理提成比例銷售經理實發(fā)工資 =基本工資 + 獎金 * 出勤率 + 個人銷售額 * 銷售員提成比例+ 總銷售額 * 經理提成比例(3)每個類都有構造函
11、數、輸出基本信息函數(Output)和輸出實發(fā)工資函數(OutputWage)。(寫不完時,可另加附頁。)實驗目的或要求 1熟練掌握類的繼承,能夠定義和使用類的繼承關系。2掌握派生類的聲明與實現方法。3掌握類構造函數的初始化列表與作用域分辨符的使用方法。4理解虛基類在解決二義性問題中的作用。組內分工(可無選)實驗結果分析及心得體會 根據要求,成功的定義Staff(員工)類,由Staff分別派生出Saleman(銷售員)類和Manager(經理)類,再由Saleman(銷售員)類和Manager(經理)類采用多重繼承方式派生出新類SaleManager(銷售經理)類,各類之間的繼承關
12、系。成績評定教師簽名: 年 月 日源代碼如下:/ 文件名: main.cpp#include <iostream>/ 預處理命令using namespace std;/ 使用標準命名空間std/ 員(Employee)工class Staff/Employeeprotected:/ 數據成員:int num;/ 編號char name16;/ 姓名double basicSalary; /基本工資double prize; /獎金double rateOfAttend; public:/ 公有函數:Staff(int n, char nm, double bs,double p,
13、double r):/ 構造函數num(n),basicSalary(bs),prize(p),rateOfAttend(r)strcpy(name, nm);void Show() const/ 顯示相關信息 cout << "編號:" << num << endl;/ 顯示編號cout << "姓名:" << name << endl;/ 顯示姓名cout << "基本工資:" << basicSalary << "
14、;元" << endl;/ 顯示基本工資cout << "獎金:" << prize << "元" << endl;/ 顯示獎金cout << "出勤率:" << rateOfAttend << "元" << endl;void ShowSalary() const/ 輸出實發(fā)工資cout<<"實發(fā)工資:"<< basicSalary+prize*rate
15、OfAttend<< "元" << endl;/ 生明銷售員類class Saleman: virtual public Staff protected:/ 保護成員:double deductRate; /銷售提成比例 double personAmount; /個人銷售額public:/ 公有函數:Saleman(int n, char nm, double bs,double p,double d,double pa,double r): Staff(n, nm, bs,p,r),deductRate(d),personAmount(pa)vo
16、id Show() const/ 顯示相關信息 Staff:Show();/ 調用基類函數Show()cout << "銷售員提成比例:" << deductRate << endl;/ 顯示銷售員提成比例cout << "個人銷售額:" << personAmount << "元" <<endl;/ 換行void ShowSalary() const /輸出實發(fā)工資cout <<"實發(fā)工資:"<<basic
17、Salary+prize*rateOfAttend+deductRate*personAmount<<"元" <<endl;/ 聲明經理類class Manager: virtual public Staff protected:/ 保護成員:double tatalDeductRate; /經理提成比例double tatalAmount; /總銷售額 public:/ 公有函數:Manager(int n, char nm, double bs,double p,double td,double ta,double r): Staff(n, nm
18、, bs,p,r),tatalDeductRate(td),tatalAmount(ta)void Show() const/ 顯示相關信息 Staff:Show();/ 調用基類函數Show()cout << "經理提成比例:" << tatalDeductRate << endl;/ 顯示經理提成比例cout << "總銷售額:" << tatalAmount << "元" <<endl;void ShowSalary() const/ 顯示實發(fā)工
19、資cout <<"實發(fā)工資:"<<basicSalary+prize*rateOfAttend+tatalDeductRate*tatalAmount<< "元" <<endl;/ 聲明銷售經理類class SaleManager: public Saleman, public Managerpublic:/ 公有函數:SaleManager(int n, char nm, double bs,double p,double d,double pa,double td,double ta,double r)
20、: /構造函數 Staff(n,nm,bs,p,r), Saleman(n,nm, bs, p ,d, pa,r), Manager(n,nm, bs, p , td, ta,r)void Show() const/ 顯示相關信息 Staff:Show();/ 調用基類函數Show()cout << "銷售員提成比例:" << deductRate << endl;/ 顯示銷售員提成比例cout << "個人銷售額:" << personAmount << "元"
21、 <<endl; cout << "經理提成比例:" << deductRate << endl;/ 顯示經理提成比例cout << "總銷售額:" << tatalAmount << "元" <<endl;void ShowSalary() const/ 顯示實發(fā)工資cout <<"實發(fā)工資:"<<basicSalary+prize*rateOfAttend+deductRate*personA
22、mount+tatalDeductRate*tatalAmount<< "元" <<endl;int main()/ 主函數main()Staff e(106,"文冠杰", 1680, 1080,0.9);/ 定義對象cout<<"員工信息:"<< endl; /輸出提示e.Show(); /輸出基本信息e.ShowSalary(); /輸出實發(fā)工資Saleman s(108,"周杰", 2680,1680,0.15,23000,0.8); /定義對象cout<
23、< endl<<"銷售員信息:"<< endl; /輸出提示s.Show(); /輸出基本信息s.ShowSalary(); /輸出實發(fā)工資Manager m(116,"李靖", 3680, 2680, 0.1, 83000,0.7);/ 定義對象cout<< endl<<"經理信息:"<< endl; /輸出提示m.Show(); /輸出基本信息m.ShowSalary(); /輸出實發(fā)工資SaleManager sm(118,"吳姐", 3680
24、, 2680, 0.15, 28000, 0.1,88000,0.6);/ 定義對象cout<< endl<<"銷售經理信息:"<< endl; /輸出提示sm.Show(); /輸出基本信息sm.ShowSalary(); /輸出實發(fā)工資system("PAUSE"); / 調用庫函數system( ),輸出系統提示信息return 0; / 返回值0, 返回操作系統年級 2012班號 2組號17 學號專業(yè) 信息與計算科學 姓名實驗名稱函數重載與運算符重載實驗室實驗目的或要求1
25、學習函數和操作符重載的使用方法。2理解函數和運算符重載的作用和意義。3掌握類運算符和友元運算符重載的定義和使用。4掌握常用運算符的重載。實驗原理(算法流程)設計一個時間類Time,要求:(1)包含時(hour)、分(minute)和秒(second)私有數據成員。(2)包含構造函數,重載關于一時間加上另一時間的加法運算符+、重載關于一時間減去另一時間的減加運算符-、重載輸出運算符<<與輸入運算符>>等。組內分工(可選)無實驗結果分析及心得體會從本次實驗中,我學到了:1學習函數和操作符重載的使用方法。2理解函數和運算符重載的作用和意義。3掌握類運算符和友元運算符重載的定義
26、和使用。4掌握常用運算符的重載。設計一個時間類Time,并且(1)包含時(hour)、分(minute)和秒(second)私有數據成員。(2)包含構造函數,重載關于一時間加上另一時間的加法運算符+、重載關于一時間減去另一時間的減加運算符-、重載輸出運算符<<與輸入運算符>>等。成績評定教師簽名: 年 月 日源代碼如下:#include <iostream>using namespace std;class Timeprivate:int hour;int minute;int second;public:Time(int hh=0,int mm=0,int
27、 ss=0):hour(hh),minute(mm),second(ss) void SetHour(int hh)hour=hh; void SetMinute(int mm)minute=mm; void SetSecond(int ss)second=ss;int GetHour() constreturn hour; int GetMinute() constreturn minute; int GetSecond() constreturn second; Time operator+(int seconds); Time operator-(int seconds); static
28、 int TimeToNum(const Time &ss); static Time NumToTime(int n); ;ostream &operator<<(ostream &out,const Time &ss);istream &operator>>(istream &in,Time &ss);Time Time:operator+(int seconds) int n=TimeToNum(*this)+seconds; return NumToTime(n);Time Time:operator-(i
29、nt seconds)int n=TimeToNum(*this)-seconds; return NumToTime(n); int Time:TimeToNum(const Time &ss) int n=0; n+=ss.GetHour()*3600;n+=ss.GetMinute()*60;n+=ss.GetSecond(); return n; Time Time:NumToTime(int n)int hh,mm,ss;hh=n/3600;mm=(n-hh*3600)/60;ss=n%60;return Time(hh,mm,ss);ostream &operato
30、r<<(ostream &out,const Time &ss) out<<ss.GetHour()<<"時"<<ss.GetMinute()<<"分"<<ss.GetSecond()<<"秒"return out;istream &operator>>(istream &in,Time &ss) int hour,minute,second;cin>>hour>>minute
31、>>second;ss=Time(hour,minute,second);return in;int main(void)Time ss(17,27,30);cout<<"時間"<<ss<<endl;cout<<"時間+10:"<<ss+10<<endl;cout<<"時間-10:"<<ss-10<<endl;cout<<"輸出時間:"cin>>ss;cout<<
32、;"時間:"<<ss<<endl;system("PAUSE");return 0;年級 2012班號 2組號17 學號 專業(yè) 信息與計算科學 姓名實驗名稱 虛函數與多態(tài)性實驗室實驗目的或要求1掌握虛函數的作用、定義和用途。 2掌握純虛函數的作用、定義和使用。3理解使用虛函數和繼承實現多態(tài)性。實驗原理(算法流程) 1、實驗內容2、類的設計及說明編寫程序,定義抽象基類Shape(形狀),由它派生出3個派生類: Circle(圓形)、Rectangle(矩形)和Square
33、正止方形),用函數函數ShowArea()分別顯示各種圖形的面積,最后還要顯示所有圖形的總面積。要求用基類指針數組,使它的每一個元素指向一一個派生類對象。組內分工(可選)無實驗結果分析及心得體會 從本次實驗中,我學到了:1掌握虛函數的作用、定義和用途。 2掌握純虛函數的作用、定義和使用。3理解使用虛函數和繼承實現多態(tài)性。并且編寫程序,定義抽象基類Shape(形狀),由它派生出3個派生類: Circle(圓形)、Rectangle(矩形)和Square 正止方形),用函數函數ShowArea()分別顯示各種圖形的面積,最后還要顯示所有圖形的總面積。要求用基類指針數組,使它的每一個元素指向一一個派
34、生類對象。成績評定教師簽名: 年 月 日源代碼如下:/ 文件名: main.cpp#include <iostream>/ 預處理命令using namespace std;/ 使用標準命名空間stdconst double PI = 3.1415926;/ 常量PI/ 形狀類class Shapepublic:/ 公有成員:virtual void ShowArea() const = 0;/ 純虛函數static double sum;/ 靜態(tài)數據成員;/ 形狀類/ 圓形類class Circle: public Shapeprivate:/ 數據成員:double radiu
35、s;/ 半徑public:/ 公有函數:Circle(double r): radius(r)/ 構造函數 sum += PI * radius * radius; void ShowArea() const/ 顯示圓形相關信息 cout << "圓形:" << endl;cout << "半徑:" << radius << endl;/ 顯示半徑cout << "面積:" << PI * radius * radius << endl;/
36、 顯示面積;/ 矩形類class Rectangle: public Shapeprivate:/ 數據成員:double height;/ 高double width;/ 寬public:/ 公有函數:Rectangle(double h, double w): height(h), width(w)/ 構造函數 sum += height * width; void ShowArea() const/ 顯示矩形相關信息 cout << "矩形:" << endl;cout << "高:" << heig
37、ht << endl;/ 顯示高cout << "寬:" << width << endl;/ 顯示寬cout << "面積:" << height * width << endl;/ 顯示面積;/ 正方形類class Square: public Shapeprivate:/ 數據成員:double longth;/ 長double width;/ 寬public:/ 公有函數:Square(double l, double a): longth(l), width(a
38、)/ 構造函數 sum += longth * width; void ShowArea() const/ 顯示矩形相關信息 cout << "正方形:" << endl;cout << "長:" << longth << endl;/ 顯示長cout << "寬:" << width << endl;/ 顯示寬cout << "面積:" << longth * width << en
39、dl;/ 顯示面積;double Shape:sum = 0;/ 為靜態(tài)數據成員賦初值int main(void)/ 主函數main(void)char flag = 'Y'/ 判斷是否繼續(xù)錄入的標志, 初始化為'Y'Shape *p3;/ 基類指向while (toupper(flag) = 'Y')cout << "請選擇輸入類別(1.圓形 2.矩形 3.正方形)"int select;/ 臨時變量cin >> select;/ 輸入選擇switch (select)case 1:/ 圓形doubl
40、e r;/ 半徑cout << "輸入半徑:"cin >> r;/ 輸入半徑p3 = new Circle(r);/ 生成圓對象p3->ShowArea();/ 顯示相關信息delete p3;/ 釋放存儲空間break;case 2:/ 矩形double h, w;/ 高寬cout << "輸入高:"cin >> h;/ 輸入高cout << "輸入寬:"cin >> w;/ 輸入寬p3 = new Rectangle(h, w);/ 生成矩形對象p3-&
41、gt;ShowArea();/ 顯示相關信息delete p3;/ 釋放存儲空間break;break;case 3:/ 矩形double l, a;/ 長寬cout << "輸入長:"cin >> l;/ 輸入高cout << "輸入寬:"cin >> a;/ 輸入寬p3 = new Rectangle(l, a);/ 生成矩形對象p3->ShowArea();/ 顯示相關信息delete p3;/ 釋放存儲空間break;default:/ 其它情況, 表示選擇有誤cout << &q
42、uot;選擇有誤!"<< endl;break;cout << endl << "是否繼續(xù)錄入信息?(Y/N)"cin >> flag;cout << "總面積:" << Shape:sum << endl;system("PAUSE"); / 調用庫函數system( ), return 0; / 返回值0, 返回操作系統年級 2012班號 2組號17 學號專業(yè) 信息與計算科學 姓名實驗名稱
43、; 模板實驗室實驗目的或要求 1了解模板的作用,熟悉函數模板和類模板的定義格式。 2掌握函數模板與類模板的應用。實驗原理(算法流程)對數組進行排序、求最大值和求元素和的函數采用靜態(tài)成員函數的方式封裝成數組算法類模板ArrayAlg,并采用相關數據進行測試。 組內分工(可選)無實驗結果分析及心得體會從本次實驗中,我學到了:了解模板的作用,熟悉函數模板和類模板的定義格式。 并且掌握函數模板與類模板的應用。對數組進行排序、求最大值和求元素和的實現。成績評定教師簽名: 年 月 日源代碼如下:#include<iostream>using namespace std;t
44、emplate<class T>class ArrayAlgprivate: T *elem; int size;public: ArrayAlg(T *a,int s):elem(a),size(s) static T Max(T *elem,int size); static T Sum(T *elem,int size); static void Sort(T *elem,int size); static void Display(T *elem,int size);template <class T>T ArrayAlg<T>:Max(T *ele
45、m,int size) T max=elem0; for(int i=1;i<size;i+) if(max<elemi) max=elemi; return max;template <class T>T ArrayAlg<T>:Sum(T *elem,int size) T sum=0; for(int i=0;i<size;i+) sum+=elemi; return sum;template<class T>void ArrayAlg<T>:Sort(T *elem,int size) for(int i=0;i<size-1;i+) int k=i; for(int j=i+1;j<size;j+) if(elemk
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水資源節(jié)約的宣傳教育計劃
- 2025年人造崗石樹脂合作協議書
- 2025年冷光源:EL冷光片合作協議書
- 2025年滌綸短纖項目合作計劃書
- 2025年鋁合金精密模鍛件項目合作計劃書
- 客戶關系層次化維護策略
- 數學王國里的奇妙旅程讀后感
- 自動化科技設備公司項目投資合作協議
- Pinoxaden-Standard-生命科學試劑-MCE
- Mucic-acid-Standard-生命科學試劑-MCE
- PCB制程漲縮系數操作指引
- 工程設計方案定案表
- 最新2022年減肥食品市場現狀與發(fā)展趨勢預測
- 第一章-天氣圖基本分析方法課件
- 發(fā)展?jié)h語初級綜合1:第30課PPT課件[通用]
- 馬工程西方經濟學(第二版)教學課件-(4)
- 暖氣管道安裝施工計劃
- 體育實習周記20篇
- 杭州育才小升初數學試卷(共4頁)
- 初二物理彈力知識要點及練習
- 復合材料成型工藝及特點
評論
0/150
提交評論