软件实验报告模板-面向对象程序设计(数学)_第1页
软件实验报告模板-面向对象程序设计(数学)_第2页
软件实验报告模板-面向对象程序设计(数学)_第3页
软件实验报告模板-面向对象程序设计(数学)_第4页
软件实验报告模板-面向对象程序设计(数学)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、院 系: 数学与统计学学院 专 业: 信息与计算科学 年 级: 2012 课程名称: 面向对象程序设计 学 号: 姓 名: 指导教师: 2014年 11 月 日年级2012班号2组号17学号专业 信息与计算科学姓名实验名称 类和对象实验室 实验目的或要求 1掌握类的定义和使用方法,掌握类对象的声明和使用方法。2掌握对象的初始化和赋值的方法。3了解成员函数的特性、友元。4静态成员的使用方法。5理解和掌握this指针的用法。6理解和掌握const类型数据的使用。实验原理(算法流程)1、实验内容 2、类的设计及说明 定义一个描述学生(Student)基本情况的类,数据成员包括姓名(name)、学号(

2、num)、数学成绩(mathScore)、英语成绩(englishScore)、人数(count)、数学总成绩(mathTotalScore)和英语总成绩(englishTotalScore)。其中姓名定义为长度为18的字符数组,其它数据成员类型为整型,数学总成绩、英语总成绩和人数为静态数据成员,函数成员包括构造函数、显示基本数据函数(ShowBase)和显示静态数据函数(ShowStatic),其中构造函数由已知参数姓名(nm)、学号(nu)、数学成绩(math)和英语成绩(english)构造对象,显示基本数据函数用于显示学生的姓名、学号、数学成绩、英语成绩,显示静态数据函数为静态成员函数

3、,用于显示人数,数学总成绩,英语总成绩;要求所有数据成员为private访问权限,所有成员函数为public访问权限,在主函数中定义若干个学生对象,分别显示学生基本信息,以及显示学生人数,数学总成绩与英语总成绩。组内分工(选)无实验结果分析及心得体会根据题目的要求,成功的定义一个描述学生(Student)基本情况的类,数据成员包括姓名(name)、学号(num)、数学成绩(mathScore)、英语成绩(englishScore)、人数(count)、数学总成绩(mathTotalScore)和英语总成绩(englishTotalScore)。其中姓名定义为长度为18的字符数组,其它数据成员类

4、型为整型,数学总成绩、英语总成绩和人数为静态数据成员,函数成员包括构造函数、显示基本数据函数(ShowBase)和显示静态数据函数(ShowStatic),其中构造函数由已知参数姓名(nm)、学号(nu)、数学成绩(math)和英语成绩(english)构造对象,显示基本数据函数用于显示学生的姓名、学号、数学成绩、英语成绩,显示静态数据函数为静态成员函数,用于显示人数,数学总成绩,英语总成绩;要求所有数据成员为private访问权限,所有成员函数为public访问权限,在主函数中定义若干个学生对象,分别显示学生基本信息,以及显示学生人数,数学总成绩与英语总成绩。成绩评定教师签名: 年 月 日源

5、代码如下:#include #include 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; mathScore = c; englishSorce = d; count+; mathTotalSorcce += c; englishTota

6、lSorce += d;void ShowBase()cout 姓名: name endl;cout 学号: num endl;cout 数学成绩: mathScore endl;cout 英语成绩: englishSorce endl endl;void ShowStatic()cout 人数: count endl;cout 数学总成绩: mathTotalSorcce endl;cout 英语总成绩: englishTotalSorce endl;int Student:count = 0;int Student:mathTotalSorcce = 0;int Student:engli

7、shTotalSorce = 0;void main()Student a(师兄,2012214102,80,85);Student b(师弟,2012214115, 73, 63);a.ShowBase();b.ShowBase();b.ShowStatic();system(pause);年级2012班号2组号17学号专业 信息与计算科学姓名实验名称 继承与派生实验室实验原理(算法流程)1、实验内容2、类的设计及说明定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派

8、生出新类SaleManager(销售经理)类,各类之间的继承关系如图1.2所示。图2.2 各类之间的继承关系要求:(1)在Staff类中包含的数据成员有编号(num)、姓名(name)、出勤率(rateOfAttend)、基本工资(basicSal)和奖金(prize)。在Saleman类中还包含数据成员销售员提成比例(deductRate)和个人销售额(personAmount),在Manager类中还包含数据成员经理提成比例(totalDeductRate)和总销售额(totalAmount)。在SaleManager类中不包含其它数据成员。(2)各类人员的实发工资公式如下:员工实发工资

9、= 基本工资 + 奖金 * 出勤率销售员实发工资 = 基本工资 + 奖金 * 出勤率 + 个人销售额 * 销售员提成比例经理实发工资 = 基本工资 + 奖金 * 出勤率 + 总销售额 * 经理提成比例销售经理实发工资 =基本工资 + 奖金 * 出勤率 + 个人销售额 * 销售员提成比例+ 总销售额 * 经理提成比例(3)每个类都有构造函数、输出基本信息函数(Output)和输出实发工资函数(OutputWage)。(写不完时,可另加附页。)实验目的或要求 1熟练掌握类的继承,能够定义和使用类的继承关系。2掌握派生类的声明与实现方法。3掌握类构造函数的初始化列表与作用域分辨符的使用方法。4理解虚

10、基类在解决二义性问题中的作用。组内分工(可选)无实验结果分析及心得体会 根据要求,成功的定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleManager(销售经理)类,各类之间的继承关系。成绩评定教师签名: 年 月 日源代码如下:/ 文件名: main.cpp#include / 预处理命令using namespace std;/ 使用标准命名空间std/ 员(Employee)工class Staff/Employeeprotected:/ 数据成员

11、:int num;/ 编号char name16;/ 姓名double basicSalary; /基本工资double prize; /奖金double rateOfAttend; public:/ 公有函数:Staff(int n, char nm, double bs,double p,double r):/ 构造函数num(n),basicSalary(bs),prize(p),rateOfAttend(r)strcpy(name, nm);void Show() const/ 显示相关信息 cout 编号: num endl;/ 显示编号cout 姓名: name endl;/ 显示

12、姓名cout 基本工资: basicSalary 元 endl;/ 显示基本工资cout 奖金: prize 元 endl;/ 显示奖金cout 出勤率: rateOfAttend 元 endl;void ShowSalary() const/ 输出实发工资cout实发工资: basicSalary+prize*rateOfAttend 元 endl;/ 生明销售员类class Saleman: virtual public Staff protected:/ 保护成员:double deductRate; /销售提成比例 double personAmount; /个人销售额public:/

13、 公有函数: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)void Show() const/ 显示相关信息 Staff:Show();/ 调用基类函数Show()cout 销售员提成比例: deductRate endl;/ 显示销售员提成比例cout 个人销售额: personAmount 元 endl;/ 换行void ShowSalary() const /输出实发工资cout 实发工资

14、:basicSalary+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, bs,p,r),tatalDeductR

15、ate(td),tatalAmount(ta)void Show() const/ 显示相关信息 Staff:Show();/ 调用基类函数Show()cout 经理提成比例: tatalDeductRate endl;/ 显示经理提成比例cout 总销售额: tatalAmount 元 endl;void ShowSalary() const/ 显示实发工资cout 实发工资:basicSalary+prize*rateOfAttend+tatalDeductRate*tatalAmount 元 endl;/ 声明销售经理类class SaleManager: public Saleman,

16、 public Managerpublic:/ 公有函数:SaleManager(int n, char nm, double bs,double p,double d,double pa,double td,double ta,double r): /构造函数 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;/ 显

17、示销售员提成比例cout 个人销售额: personAmount 元 endl; cout 经理提成比例: deductRate endl;/ 显示经理提成比例cout 总销售额: tatalAmount 元 endl;void ShowSalary() const/ 显示实发工资cout 实发工资:basicSalary+prize*rateOfAttend+deductRate*personAmount+tatalDeductRate*tatalAmount 元 endl;int main()/ 主函数main()Staff e(106,文冠杰, 1680, 1080,0.9);/ 定义对

18、象cout员工信息: endl; /输出提示e.Show(); /输出基本信息e.ShowSalary(); /输出实发工资Saleman s(108,周杰, 2680,1680,0.15,23000,0.8); /定义对象cout endl销售员信息: endl; /输出提示s.Show(); /输出基本信息s.ShowSalary(); /输出实发工资Manager m(116,李靖, 3680, 2680, 0.1, 83000,0.7);/ 定义对象cout endl经理信息: endl; /输出提示m.Show(); /输出基本信息m.ShowSalary(); /输出实发工资Sal

19、eManager sm(118,吴姐, 3680, 2680, 0.15, 28000, 0.1,88000,0.6);/ 定义对象cout endl销售经理信息: endl; /输出提示sm.Show(); /输出基本信息sm.ShowSalary(); /输出实发工资system(PAUSE); / 调用库函数system( ),输出系统提示信息return 0; / 返回值0, 返回操作系统年级2012班号2组号17学号专业 信息与计算科学姓名实验名称函数重载与运算符重载实验室实验目的或要求1学习函数和操作符重载的使用方法。2理解函数和运算符重载的作用和意义。3掌握类运算符和友元运算符重

20、载的定义和使用。4掌握常用运算符的重载。实验原理(算法流程)设计一个时间类Time,要求:(1)包含时(hour)、分(minute)和秒(second)私有数据成员。(2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符等。组内分工(可选)无实验结果分析及心得体会从本次实验中,我学到了:1学习函数和操作符重载的使用方法。2理解函数和运算符重载的作用和意义。3掌握类运算符和友元运算符重载的定义和使用。4掌握常用运算符的重载。设计一个时间类Time,并且(1)包含时(hour)、分(minute)和秒(second)私有数据成员。(

21、2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符等。成绩评定教师签名: 年 月 日源代码如下:#include using namespace std;class Timeprivate:int hour;int minute;int second;public:Time(int hh=0,int mm=0,int ss=0):hour(hh),minute(mm),second(ss) void SetHour(int hh)hour=hh; void SetMinute(int mm)minute=mm; void Set

22、Second(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 int TimeToNum(const Time &ss); static Time NumToTime(int n); ;ostream &operator(istream &in,Time &ss);Time

23、Time:operator+(int seconds) int n=TimeToNum(*this)+seconds; return NumToTime(n);Time Time:operator-(int 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(

24、int n)int hh,mm,ss;hh=n/3600;mm=(n-hh*3600)/60;ss=n%60;return Time(hh,mm,ss);ostream &operator(ostream &out,const Time &ss) outss.GetHour()时ss.GetMinute()分ss.GetSecond()(istream &in,Time &ss) int hour,minute,second;cinhourminutesecond;ss=Time(hour,minute,second);return in;int main(void)Time ss(17,27

25、,30);cout时间ssendl;cout时间+10:ss+10endl;cout时间-10:ss-10endl;coutss;cout时间:ssendl;system(PAUSE);return 0;年级2012班号2组号17学号专业 信息与计算科学姓名实验名称 虚函数与多态性实验室实验目的或要求1掌握虚函数的作用、定义和用途。 2掌握纯虚函数的作用、定义和使用。3理解使用虚函数和继承实现多态性。实验原理(算法流程)1、实验内容2、类的设计及说明编写程序,定义抽象基类Shape(形状),由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)和Square 正止方形),用函

26、数函数ShowArea()分别显示各种图形的面积,最后还要显示所有图形的总面积。要求用基类指针数组,使它的每一个元素指向一一个派生类对象。组内分工(可选)无实验结果分析及心得体会 从本次实验中,我学到了:1掌握虚函数的作用、定义和用途。 2掌握纯虚函数的作用、定义和使用。3理解使用虚函数和继承实现多态性。并且编写程序,定义抽象基类Shape(形状),由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)和Square 正止方形),用函数函数ShowArea()分别显示各种图形的面积,最后还要显示所有图形的总面积。要求用基类指针数组,使它的每一个元素指向一一个派生类对象。成绩评

27、定教师签名: 年 月 日源代码如下:/ 文件名: main.cpp#include / 预处理命令using namespace std;/ 使用标准命名空间stdconst double PI = 3.1415926;/ 常量PI/ 形状类class Shapepublic:/ 公有成员:virtual void ShowArea() const = 0;/ 纯虚函数static double sum;/ 静态数据成员;/ 形状类/ 圆形类class Circle: public Shapeprivate:/ 数据成员:double radius;/ 半径public:/ 公有函数:Circ

28、le(double r): radius(r)/ 构造函数 sum += PI * radius * radius; void ShowArea() const/ 显示圆形相关信息 cout 圆形: endl;cout 半径: radius endl;/ 显示半径cout 面积: PI * radius * radius endl;/ 显示面积;/ 矩形类class Rectangle: public Shapeprivate:/ 数据成员:double height;/ 高double width;/ 宽public:/ 公有函数:Rectangle(double h, double w):

29、 height(h), width(w)/ 构造函数 sum += height * width; void ShowArea() const/ 显示矩形相关信息 cout 矩形: endl;cout 高: height endl;/ 显示高cout 宽: width endl;/ 显示宽cout 面积: height * width endl;/ 显示面积;/ 正方形类class Square: public Shapeprivate:/ 数据成员:double longth;/ 长double width;/ 宽public:/ 公有函数:Square(double l, double a

30、): longth(l), width(a)/ 构造函数 sum += longth * width; void ShowArea() const/ 显示矩形相关信息 cout 正方形: endl;cout 长: longth endl;/ 显示长cout 宽: width endl;/ 显示宽cout 面积: longth * width endl;/ 显示面积;double Shape:sum = 0;/ 为静态数据成员赋初值int main(void)/ 主函数main(void)char flag = Y;/ 判断是否继续录入的标志, 初始化为YShape *p3;/ 基类指向whil

31、e (toupper(flag) = Y)cout select;/ 输入选择switch (select)case 1:/ 圆形double r;/ 半径cout r;/ 输入半径p3 = new Circle(r);/ 生成圆对象p3-ShowArea();/ 显示相关信息delete p3;/ 释放存储空间break;case 2:/ 矩形double h, w;/ 高宽cout h;/ 输入高cout w;/ 输入宽p3 = new Rectangle(h, w);/ 生成矩形对象p3-ShowArea();/ 显示相关信息delete p3;/ 释放存储空间break;break;c

32、ase 3:/ 矩形double l, a;/ 长宽cout l;/ 输入高cout a;/ 输入宽p3 = new Rectangle(l, a);/ 生成矩形对象p3-ShowArea();/ 显示相关信息delete p3;/ 释放存储空间break;default:/ 其它情况, 表示选择有误cout 选择有误! endl;break;cout endl flag;cout 总面积: Shape:sum endl;system(PAUSE); / 调用库函数system( ), return 0; / 返回值0, 返回操作系统年级2012班号2组号17学号专业 信息与计算科学姓名实验名

33、称 模板实验室实验目的或要求 1了解模板的作用,熟悉函数模板和类模板的定义格式。 2掌握函数模板与类模板的应用。实验原理(算法流程)对数组进行排序、求最大值和求元素和的函数采用静态成员函数的方式封装成数组算法类模板ArrayAlg,并采用相关数据进行测试。组内分工(可选)无实验结果分析及心得体会从本次实验中,我学到了:了解模板的作用,熟悉函数模板和类模板的定义格式。 并且掌握函数模板与类模板的应用。对数组进行排序、求最大值和求元素和的实现。成绩评定教师签名: 年 月 日源代码如下:#includeusing namespace std;templateclass ArrayAlgprivate

34、: 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 T ArrayAlg:Max(T *elem,int size) T max=elem0; for(int i=1;isize;i+) if(maxelemi) max=elemi; return max;template T ArrayAlg:Sum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论