软件实验报告模板面向对象程序设计数学.docx
《软件实验报告模板面向对象程序设计数学.docx》由会员分享,可在线阅读,更多相关《软件实验报告模板面向对象程序设计数学.docx(15页珍藏版)》请在冰豆网上搜索。
软件实验报告模板面向对象程序设计数学
中南民族大学
学生实验报告
院系:
数学与统计学学院
专业:
信息与计算科学
年级:
2012
课程名称:
面向对象程序设计
学号:
姓名:
指导教师:
2014年11月日
年级
2012
班号
2
组号
17
学号
专业
信息与计算科学
姓名
实验名称
类和对象
实验室
实
验
目
的
或
要
求
1.掌握类的定义和使用方法,掌握类对象的声明和使用方法。
2.掌握对象的初始化和赋值的方法。
3.了解成员函数的特性、友元。
4.静态成员的使用方法。
5.理解和掌握this指针的用法。
6.理解和掌握const类型数据的使用。
实
验
原
理
(
算
法
流
程
)
1、实验内容
2、类的设计及说明
定义一个描述学生(Student)基本情况的类,数据成员包括姓名(name)、学号(num)、数学成绩(mathScore)、英语成绩(englishScore)、人数(count)、数学总成绩(mathTotalScore)和英语总成绩(englishTotalScore)。
其中姓名定义为长度为18的字符数组,其它数据成员类型为整型,数学总成绩、英语总成绩和人数为静态数据成员,函数成员包括构造函数、显示基本数据函数(ShowBase)和显示静态数据函数(ShowStatic),其中构造函数由已知参数姓名(nm)、学号(nu)、数学成绩(math)和英语成绩(english)构造对象,显示基本数据函数用于显示学生的姓名、学号、数学成绩、英语成绩,显示静态数据函数为静态成员函数,用于显示人数,数学总成绩,英语总成绩;要求所有数据成员为private访问权限,所有成员函数为public访问权限,在主函数中定义若干个学生对象,分别显示学生基本信息,以及显示学生人数,数学总成绩与英语总成绩。
组内分工
(选)
无
实
验
结
果
分
析
及
心
得
体
会
根据题目的要求,成功的定义一个描述学生(Student)基本情况的类,数据成员包括姓名(name)、学号(num)、数学成绩(mathScore)、英语成绩(englishScore)、人数(count)、数学总成绩(mathTotalScore)和英语总成绩(englishTotalScore)。
其中姓名定义为长度为18的字符数组,其它数据成员类型为整型,数学总成绩、英语总成绩和人数为静态数据成员,函数成员包括构造函数、显示基本数据函数(ShowBase)和显示静态数据函数(ShowStatic),其中构造函数由已知参数姓名(nm)、学号(nu)、数学成绩(math)和英语成绩(english)构造对象,显示基本数据函数用于显示学生的姓名、学号、数学成绩、英语成绩,显示静态数据函数为静态成员函数,用于显示人数,数学总成绩,英语总成绩;要求所有数据成员为private访问权限,所有成员函数为public访问权限,在主函数中定义若干个学生对象,分别显示学生基本信息,以及显示学生人数,数学总成绩与英语总成绩。
成
绩
评
定
教师签名:
年月日
源代码如下:
#include
#include
usingnamespacestd;
classStudent{
private:
stringname;
intnum,mathScore,englishSorce;
staticintcount,mathTotalSorcce,englishTotalSorce;
public:
Student(stringa,intb,intc,intd)
{
name=a;num=b;mathScore=c;englishSorce=d;count++;mathTotalSorcce+=c;englishTotalSorce+=d;
}
voidShowBase()
{
cout<<"姓名:
"<cout<<"学号:
"<cout<<"数学成绩:
"<cout<<"英语成绩:
"<}
voidShowStatic()
{
cout<<"人数:
"<cout<<"数学总成绩:
"<cout<<"英语总成绩:
"<}
};
intStudent:
:
count=0;
intStudent:
:
mathTotalSorcce=0;
intStudent:
:
englishTotalSorce=0;
voidmain()
{
Studenta("师兄",02,80,85);
Studentb("师弟",15,73,63);
();
();
();
system("pause");
}
年级
2012
班号
2
组号
17
学号
专业
信息与计算科学
姓名
实验名称
继承与派生
实验室
实
验
原
理
(
算
法
流
程
)
1、实验内容
2、类的设计及说明
定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleManager(销售经理)类,各类之间的继承关系如图所示。
图各类之间的继承关系
要求:
(1)在Staff类中包含的数据成员有编号(num)、姓名(name)、出勤率(rateOfAttend)、基本工资(basicSal)和奖金(prize)。
在Saleman类中还包含数据成员销售员提成比例(deductRate)和个人销售额(personAmount),在Manager类中还包含数据成员经理提成比例(totalDeductRate)和总销售额(totalAmount)。
在SaleManager类中不包含其它数据成员。
(2)各类人员的实发工资公式如下:
员工实发工资=基本工资+奖金*出勤率
销售员实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例
经理实发工资=基本工资+奖金*出勤率+总销售额*经理提成比例
销售经理实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例+总销售额*经理提成比例
(3)每个类都有构造函数、输出基本信息函数(Output)和输出实发工资函数(OutputWage)。
(写不完时,可另加附页。
)
实
验
目
的
或
要
求
1.熟练掌握类的继承,能够定义和使用类的继承关系。
2.掌握派生类的声明与实现方法。
3.掌握类构造函数的初始化列表与作用域分辨符的使用方法。
4.理解虚基类在解决二义性问题中的作用。
组
内
分
工
(
可
选
)
无
实
验
结
果
分
析
及
心
得
体
会
根据要求,成功的定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleManager(销售经理)类,各类之间的继承关系。
成
绩
评
定
教师签名:
年月日
源代码如下:
形2.矩形3.正方形)";
intselect;//临时变量
cin>>select;//输入选择
switch(select)
{
case1:
//圆形
doubler;//半径
cout<<"输入半径:
";
cin>>r;//输入半径
p[3]=newCircle(r);//生成圆对象
p[3]->ShowArea();//显示相关信息
deletep[3];//释放存储空间
break;
case2:
//矩形
doubleh,w;//高宽
cout<<"输入高:
";
cin>>h;//输入高
cout<<"输入宽:
";
cin>>w;//输入宽
p[3]=newRectangle(h,w);//生成矩形对象
p[3]->ShowArea();//显示相关信息
deletep[3];//释放存储空间
break;
break;
case3:
//矩形
doublel,a;//长宽
cout<<"输入长:
";
cin>>l;//输入高
cout<<"输入宽:
";
cin>>a;//输入宽
p[3]=newRectangle(l,a);//生成矩形对象
p[3]->ShowArea();//显示相关信息
deletep[3];//释放存储空间
break;
default:
//其它情况,表示选择有误
cout<<"选择有误!
"<break;
}
cout<cin>>flag;
}
cout<<"总面积:
"<:
sum<system("PAUSE");//调用库函数system(),
return0;//返回值0,返回操作系统
}
年级
2012
班号
2
组号
17
学号
专业
信息与计算科学
姓名
实验名称
模板
实验室
实
验
目
的
或
要
求
1.了解模板的作用,熟悉函数模板和类模板的定义格式。
2.掌握函数模板与类模板的应用。
实
验
原
理
(
算
法
流
程
)
对数组进行排序、求最大值和求元素和的函数采用静态成员函数的方式封装成数组算法类模板ArrayAlg,并采用相关数据进行测试。
组
内
分
工
(
可选
)
无
实
验
结
果
分
析
及
心
得
体
会
从本次实验中,我学到了:
了解模板的作用,熟悉函数模板和类模板的定义格式。
并且掌握函数模板与类模板的应用。
对数组进行排序、求最大值和求元素和的实现。
成
绩
评
定
教师签名:
年月日
源代码如下:
#include
usingnamespacestd;
template
classArrayAlg
{
private:
T*elem;
intsize;
public:
ArrayAlg(T*a,ints):
elem(a),size(s){}
staticTMax(T*elem,intsize);
staticTSum(T*elem,intsize);
staticvoidSort(T*elem,intsize);
staticvoidDisplay(T*elem,intsize);
};
template
TArrayAlg:
:
Max(T*elem,intsize)
{
Tmax=elem[0];
for(inti=1;i{
if(maxmax=elem[i];
}
returnmax;
}
template
TArrayAlg:
:
Sum(T*elem,intsize)
{
Tsum=0;
for(inti=0;i{
sum+=elem[i];
}
returnsum;
}
template
voidArrayAlg:
:
Sort(T*elem,intsize)
{
for(inti=0;i{
intk=i;
for(intj=i+1;jif(elem[k]>elem[j])
k=j;
if(k!
=i)
{
Ttem;
tem=elem[i];
elem[i]=elem[k];
elem[k]=tem;
}
}
}
template
voidArrayAlg:
:
Display(T*elem,intsize)
{
for(inti=0;icout<<""<cout<}
template
voidarray_operate(T*elem,intsize)
{
ArrayAlgobj(elem,size);
cout<<"数组各元素的值:
";
(elem,size);
cout<<"数组最大元素max:
"<<(elem,size)<cout<<"数组所有元素和sum:
"<<(elem,size)<(elem,size);
cout<<"数组排序结果sort:
";
(elem,size);
}
intmain()
{
inta[]={5,9,11,7,88,931,2014,62,19,53,3,44};
array_operate(a,12);
/*ArrayAlgobj1(a,10);
cout<<"数组a[]各元素的值:
";
(a,10);
cout<<"数组最大元素max:
"<<(a,10)<cout<<"数组所有元素和sum:
"<<(a,10)<(a,10);
cout<<"数组排序结果sort:
";
(a,10);*/
cout<doubleb[]={,,,,,,,,,};
array_operate(b,10);
/*ArrayAlgobj2(b,10);
cout<<"数组b[]各元素的值:
";
(b,10);
cout<<"数组最大元素max:
"<<(b,10)<cout<<"数组所有元素和sum:
"<<(b,10)<(b,10);
cout<<"数组排序结果sort:
";
(b,10);*/
system("pause");
return0;
}
精心搜集整理,只为你的需要