c++课程设计之几何体的表面积与体积.docx
《c++课程设计之几何体的表面积与体积.docx》由会员分享,可在线阅读,更多相关《c++课程设计之几何体的表面积与体积.docx(12页珍藏版)》请在冰豆网上搜索。
![c++课程设计之几何体的表面积与体积.docx](https://file1.bdocx.com/fileroot1/2023-1/25/8ad32bd4-8ab5-42f8-8c8b-50335d683570/8ad32bd4-8ab5-42f8-8c8b-50335d6835701.gif)
c++课程设计之几何体的表面积与体积
课程设计报告
课程设计题目:
几何体的表面积与体积
学生姓名:
徐辉
专业:
软件工程(电商)
班级:
1421812
指导教师:
魏振华
学号:
1209
2015年6月30日
一、引言
通过 C++课程设计,使学生能将学到的面向对象的程序设计思想用到具体的工作和学习中,加深对类与对象的理解,是将计算机课程与实际问题相联接的关键步骤。
通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力,并培养基本的、良好的程序设计技能,因而必须给予足够的重视。
二、设计目的与任务
定义一个抽象类形状(shape),包含输入基本图形的信息函数input()、显示基本图形信息函数disp()、计算表面积的函数area()、计算体积的函数volume(),它们均为纯虚函数。
通过继承形状类派生出球体类、正方体类、长方体类、圆柱体类。
程序需实现以下功能:
1、设计菜单实现定义一个抽象类形状(shape),包含输入基本图形的信息函功能选择;
2、输入各种形状信息;
3、显示各种形状信息;
4、计算各种形状的表面积;
5、计算各种形状的体积;
6、输入数据和输出结果用文件的形式实现。
三、设计方案
1、总体设计
该程序主要是在确定物体的形状后,计算物体的表面积和体积,在输入数据和输出结果时用文件的形式,所以这个程序主要用到的内容是类的继承与派生,另外还涉及文件、指针等内容。
程序首先建立一个抽象类shape,作为公共接口;然后建立四个图形类:
Ball、Cube、Cubiod、Cylinder,公有继承shape类,分别计算各物体的表面积和体积;然后在主函数中定义各对象,调用各类中的成员函数,输出所要结果。
2、详细设计
Input():
数据输入函数,输入所需的半径、边长、高等数据;
Area():
计算各物体表面积的函数;
Volume():
计算各物体体积的函数;
Disp():
输出计算结果的函数;
Run():
定义指针,调用抽象类里的每个接口(即调用每个函数);
MainMenu():
调用各函数,输出结果。
3、程序清单
#include
usingnamespacestd;
constdoublePI=;
classshape
{
public:
virtualvoidinput()=0;
virtualvoiddisp()=0;
virtualdoublearea()=0;
virtualdoublevolume()=0;
};
classball:
publicshape
{
private:
intr;
public:
ball(doubler=0):
r(r)
{
}
voidinput()
{
cout<<"输入球体的半径:
"<cin>>r;
}
doublearea()
{
return4*PI*r*r;
}
doublevolume()
{
return4/3*PI*r*r*r;
}
voiddisp()
{
cout<<"球体的半径:
"<cout<<"球体的面积:
"<
cout<<"球体的体积:
"<}
};
classsquare:
publicshape
{
private:
intx;
public:
square(doublex=0):
x(x)
{
}
voidinput()
{
cout<<"输入正方体的边长"<cin>>x;
}
doublearea()
{
return6*x*x;
}
doublevolume(){
returnx*x*x;
}
voiddisp()
{
cout<<"正方体的边长:
"<cout<<"正方体的面积:
"<
cout<<"正方体的体积:
"<}
};
classcuboid:
publicshape{
private:
intl,w,h;
public:
cuboid(doublel=0,doublew=0,doubleh=0):
l(l),w(w),h(h){
}
voidinput(){
cout<<"输入长方体的长宽高"<cin>>l>>w>>h;
}
doublearea()
{
return2*(l*w)+2*(w*h)+2*(l*h);
}
doublevolume()
{
returnl*w*h;
}
voiddisp()
{
cout<<"长方体的长宽高是:
"<cout<<"长方体的面积是:
"<
cout<<"长方体的体积是:
"<}
};
classcylinder:
publicshape{
private:
intr,h;
public:
cylinder(doubler=0,doubleh=0):
r(r),h(h){
}
voidinput(){
cout<<"输入圆柱体的底面半径和高"<cin>>r>>h;
}
doublearea(){
return2*PI*r*h+PI*r*r;
}
doublevolume(){
returnPI*r*r*h;
}
voiddisp()
{
cout<<"底面半径和高:
"<cout<<"圆柱体的面积:
"<
cout<<"圆柱体的体积:
"<}
};
voiduse_ball()
{
ballb;
();
();
return;
}
voiduse_square()
{
squares;
();
();
return;
}
voiduse_cuboid()
{cuboidc;
();
();
return;
}
voiduse_cylinder()
{cylindercy;
();
();
return;
}
voidmenu()
{inti;
cout<<"************几何体的表面积与体积**************\n"<cout<<"*****************(0):
退出系统*****************\n"<cout<<"*****************
(1):
球体*********************\n"<cout<<"*****************
(2):
正方体*******************\n"<cout<<"*****************(3):
长方体*******************\n"<cout<<"*****************(4):
圆柱体*******************\n"<cout<<"**************感谢使用本软件******************\n"<cout<<"请输入你的选择项(0-4)"<cin>>i;
if(i<0||i>4)
cout<<"错误,请输入指定数字!
"<else
{
switch(i)
{
case0:
exit(0);break;
case1:
use_ball();break;
case2:
use_square();break;
case3:
use_cuboid();break;
case4:
use_cylinder();break;
return;
}
}}
voidmain()
{
intn;
do
{
menu();
cin>>n;
}
while(n!
=0);
}
4、程序调试与体会
在程序的编写过程中遇到很多麻烦,像如何调用成员函数,如何用文件的形式输入数据和输出结果……但最后我们都解决了,这让我们很有成就感,很自豪,也让我们知道了团结的力量。
程序完成后调试没错误,但却无法正常运行,通过我的反复思考,程序中的错误得到顺利解决,让它正常运行,函数功能也得到了进一步的完善。
并且在本次课程设计的过程中,让我进一步认识到了团队的力量,只有团结才能发挥出一个集体的力量。
一个人的力量真的好有限,即使个人能力再强,做一个大点的项目,也会力不从心。
只有分工协作才能将事办得越快越好。
通过这次课程设计,会为我们以后进入社会提供一定的经验。
我们相信在今后的学习真的我们会更加努力,积累经验。
使自己在编程等各方面得到提高。
这次程序设计让我们受益匪浅!
5、运行截图
主菜单
4个具体项目:
四、结论
忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。
尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。
另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。
为了解决此。
类问题,最好就是多向同学,老师请教,不要怕难为情。
尤其是老师,评他们多年的编写程序的经验,要解决我们的问题,对他们来说只是smallcase。
在设计这个程序时,我们刚开始是根据老师给我们提供的资料,用画图以及循环将框架设计出来,但是接下去便无从下手了,计算是个关键和难点,我们也查了相应的资料,但是它上面用得是坐标来做的,所以为了方便设计程序,我们也改为坐标来做的,这样计算问题解决了。
接下去就是按键问题,我们的资料是用鼠标做的,所以关于按键这个函数就只能我们自己设计,还好手头有类似的资料,经过自己的反复尝试以及与与同学的讨论,这也不难,最好还是被我们搞定了。
最后就是闪烁,这个设计的方法很死板,都一个类型,就是算坐标比较烦琐,要确定好它的位置,但是这些只要你自己愿意去尝试,问题都可以迎刃而解的。
从这一个多星期的设计过程中,我看到了大家的拼搏与努力,也让我知道团队精神得难能可贵,尽管一年下来大家不怎么有多大接触,但是彼此之间的友谊已经在我们心里扎根生底,在遇到问题时,我们会共同进退,每个人都很慷慨不会因为是通过自己艰辛劳动设计出来的东西而不准他人剽窃了。
总之,这次课程设计让我受益良多,我会好好珍惜像这种难得的机会。
五、致谢
这次的课程设计对我们来说是一次尝试与挑战的过程。
在这里,我们由衷地感谢帮助、支持和鼓励我们完成课程设计的老师和一起奋斗过的伙伴。
首先我们要感谢学校给我们提供这样一个一起学习和研究的机会,让我们把理论知识应用到实际中来。
其次我们要感谢我们的指导老师魏振华老师,在进行课程设计的这段时间里他对我们的指导和帮助,为我们课程设计的顺利完成指明了方向,也给了我们锻炼和提高的机会。
根据老师的指导,在设计中我们基本能按照规范的方法和步骤进行,并查阅有关资料,最后确定设计方案,然后设计并制作。
在实践过程中我们深刻的认识到函数在C++中的重要性。
在此我们向您们致以最诚挚的谢意!
在课程设计的写作过程中,也得到了许多同学的宝贵建议,同时在工作过程中还得到许多同学的支持和帮助,在此一并致以诚挚的谢意。
感谢所有关心、支持、帮助过我的良师益友。