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