C++面向对象程序设计上机实践指导.docx
- 文档编号:13012017
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:81
- 大小:573.08KB
C++面向对象程序设计上机实践指导.docx
《C++面向对象程序设计上机实践指导.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计上机实践指导.docx(81页珍藏版)》请在冰点文库上搜索。
C++面向对象程序设计上机实践指导
东华理工大学软件学院
面向对象程序设计
上机实践指导
2016-4-10
《C++语言基础》实践项目
(一)
——初识对象
【项目1-旱冰场造价】
有一个圆形的旱冰场地,场地内抹水泥,造价为每平方米M元,围栏用木条围成,每米造价N元,输入旱冰场半径,用程序计算出其造价。
一级提示:
先定义类,确定其数据成员和成员函数。
在这里要定义的旱冰场类,实际我们只关心其面积和周长,根据面积计算场地内抹水泥的造价,根据周长计算围栏的造价。
有了类的定义,在main函数中定义该类对象,调用成员函数即可以完成求解。
二级提示:
实际上,对于旱冰场,我们只关心它就是一个圆。
这就是设计中抓住了本质。
于是,设计一个Circle(圆)类,数据成员为圆的半径,Circle类还提供计算圆的面积和边长的成员函数。
在main函数中,定义一个Circle类的对象,调用成员函数求出旱冰场的造价。
三级提示:
请在下面提示的基础上完成程序,其中需要做的工作包括:
(1)在类声明中声明相关的公共成员函数;
(2)在类声明和main()函数之间,定义声明的成员函数。
const int M=20; //水泥场地每平米造价
const int N=35; //围栏每米造价
class Circle
{
//下面声明需要的成员函数(从已经提供的main函数中可以找出需要哪些成员函数)
public:
private:
double radius;
};
//下面定义需要的成员函数
int main()
{
double r;
cout<<"请输入旱冰场的半径:
";
cin>>r;
Circle c;
c.setRadius(r);
cout<<"旱冰场的造价为 "< "< return 0; } constintM=20;//水泥场地每平米造价 constintN=35;//围栏每米造价 classCircle { //下面声明需要的成员函数(从已经提供的main函数中可以找出需要哪些成员函数) private: doubleradius; }; //下面定义需要的成员函数 intmain() { doubler; cout<<"请输入旱冰场的半径: "; cin>>r; Circlec; c.setRadius(r); cout<<"旱冰场的造价为"< "< return0; } 【项目2-长方柱类】 编写基于对象的程序,求3个长方柱(Bulk)的体积。 数据成员包括长(length)、宽(width)、高(heigth)、体积,要求设计成员函数实现下面的功能: (1)由键盘输入3个长方柱的长、宽、高; (2)计算长方柱的体积(volume)和表面积(areas); (3)输出这3个长方柱的体积和表面积; 【项目3-时间类】阅读、运行程序后,按要求扩充类的功能 #include usingnamespacestd; classTime { public: voidset_time(); voidshow_time(); private: boolis_time(int,int,int);//这个成员函数设置为私有的,是合适的,请品味 inthour; intminute; intsec; }; voidTime: : set_time() { charc1,c2; cout<<"请输入时间(格式hh: mm: ss)"; while (1) {cin>>hour>>c1>>minute>>c2>>sec; if(c1! =': '||c2! =': ') cout<<"格式不正确,请重新输入"< elseif(! is_time(hour,minute,sec)) cout<<"时间非法,请重新输入"< else break; } } voidTime: : show_time() { cout< "< "< } boolTime: : is_time(inth,intm,ints) { if(h<0||h>24||m<0||m>60||s<0||s>60) returnfalse; returntrue; } intmain() { Timet1; t1.set_time(); T1.show_time(); return0; } 要求: (1)请在原类基础上,在类内增加下列成员函数(将是内置成员函数) add_a_sec() //增加1秒钟 add_a_minute()//增加1分钟 add_an_hour()//增加1小时 在main()数中,调用新增加的成员函数,以测试扩充后的功能。 (2)再增加三个成员函数,要求在类内声明,类外定义。 add_seconds(int)//增加n秒钟 add_minutes(int)//增加n分钟 add_hours(int)//增加n小时 提示: 要考虑增加后超出取值范围的情形; 增加n秒后,秒数可能会超过60,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。 【项目4-图书馆的书】 编写一个Book类,包含name(书名)、writer(著者)、public_name(出版社)、price(价格)、number(数量)、NO(书号)等数据成员。 定义成员函数setBook,用来为书籍的数据成员赋值,定义成员函数borrow和restore,分别办理借出和还回(借、还书时,暂时只完成数量的增1减1,这里的书仍是一种书的概念,随着课程进展,我们继续做真正的图书管理系统,每本书都能追踪到是谁何时借了,何时还了)业务,定义成员函数print用于输出—有关书的信息,定义set_NO与get_NO来实现修改类对象的书号与获得类对象的书号。 自己写main函数,用来测试你编写的类。 《C++语言基础》实践项目 (二) ——和对象找感觉 【项目1-三角形类1】下面设计一个三角形类,请给出各成员函数的定义 //请在下面定义Triangle类中的各个成员函数 #include #include usingnamespacestd; classTriangle { public: voidsetABC(doublex,doubley,doublez);//置三边的值,注意要能成三角形 voidgetABC(double*x,double*y,double*z);//取三边的值 doubleperimeter(void);//计算三角形的周长 doublearea(void);//计算并返回三角形的面积 private: doublea,b,c;//三边为私有成员数据 }; intmain() { Triangletri1;//定义三角形类的一个实例(对象) tri1.setABC(4,5,6);//为三边置初值 doublex,y,z; tri1.getABC(&x,&y,&z);//将三边的值为x,y,z赋值 cout<<"三条边为: "< cout<<"三角形的周长为: "< "< return0; } //请在下面定义Triangle类中的各个成员函数 【项目2-三角形类2】程序功能同项目1,main()函数如下,请重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内置成员函数,直接在类内定义。 intmain() { Triangletri1;//定义三角形类的一个实例(对象) doublex,y,z; cout<<"请输入三角形的三边: "; cin>>x>>y>>z; tri1.setA(x); tri1.setB(y); tri1.setC(z);//为三边置初值 if(tri1.isTriangle()) { cout<<"三条边为: "< cout<<"三角形的周长为: "< "< } else cout<<"不能构成三角形"< return0; } 【项目3-程序的多文件组织】 利用多文件组织,重新实现项目2。 其中,整个项目包括3个文件: 主文件: main.cpp,用于定义main()函数 头文件: triangle.h,头文件,声明类,定义内置成员函数 类定义文件: triangle.cpp,用于定义类Triangle中其他成员函数 注意,将3个set函数和3个get函数设计成内置成员函数,其他函数不作为内置函数。 【项目4-考了语文数学的学生】 下面提供了类Stu的数据成员定义,和用于测试的main函数,参考如图的运行结果,完成类的定义,并用多文件形式组织程序 #include using namespace std; class Stu { private: string name; //学生姓名 float chinese; //语文成绩 float math; //数学成绩 //接下去写 }; int main() { Stu s1,s2; s1.setStudent("Lin daiyu", 98, 96); //对象置初值 s2.setStudent("Jia baoyu", 90, 88); //对象置初值 s1.show();//打印信息 s2.show();//打印信息 s1.setName("xue baochai");//重新置p1对象的名字 s1.show(); cout<<"s1.Name: "< cout<<"s1.average: "< return 0; } #include usingnamespacestd; classStu { private: stringname;//学生姓名 floatchinese;//语文成绩 floatmath;//数学成绩 //接下去写 }; intmain() { Stus1,s2; s1.setStudent("Lindaiyu",98,96);//对象置初值 s2.setStudent("Jiabaoyu",90,88);//对象置初值 s1.show();//打印信息 s2.show();//打印信息 s1.setName("xuebaochai");//重新置p1对象的名字 s1.show(); cout<<"s1.Name: "< cout<<"s1.average: "< return0; } 【项目5-数组作数据成员】设计一个工资类(Salary),其中类的数据成员如下: classSalary { private: doublesalarys[50];//多人的工资 intnumber;//实际人数 }; 要设计的成员函数有: voidset_salarys(): 输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中; voidadd_salarys(intx): 给每个人涨x元工资 voidsort_salarys(): 对工资排序 voidshow_salarys(): 显示工资信息 (1)在main函数定义Salary类的对象,输入工资,再给每个人涨500元工资,排序后工资数据,然后输出结果。 (2)用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。 在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用动态分配内存的机制,开辟一个大小正好的连续空间,完成上面的工作。 (3)手工输入工资? ! 太让人不能忍受了。 现给出包含了不足500个职工工资的文件salary.txt,从文件中读数据,完成上面的工作。 (4)增加一个成员函数,将排序后结果保存到一个文件中。 (5)用多文件的方式组织最后的程序。 《C++语言基础》实践项目(三) ——构造函数和析构函数 【项目1-三角形类的构造函数】 设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化,可以由下面的类声明开始,需要自己实现相关的成员函数,以及增加要求的构造函数 class Triangle { public: double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 void showMessage(); private: double a,b,c; //三边为私有成员数据 }; void Triangle: : showMessage() { cout<<"三角形的三边长分别为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 上机 实践 指导