回转体体积计算课程设计报告.docx
- 文档编号:29478542
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:14
- 大小:141.75KB
回转体体积计算课程设计报告.docx
《回转体体积计算课程设计报告.docx》由会员分享,可在线阅读,更多相关《回转体体积计算课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
回转体体积计算课程设计报告
VisualBasic
课程设计报告
所属课程名称:
VisualBasic程序设计
课程设计题号:
42
课程设计题目:
回转体体积计算
课程设计难度:
3星
课程设计时间:
2013.3.1~4.17
学号:
912101500310
姓名:
石博博
自评成绩:
90分
南京理工大学机械工程学院
二〇一三年三月
一、程序功能
1.回转体的体积计算是数学和力学经常用到的内容,该程序是可以生成回转体并计算其体积的应用程序。
2.涉及的知识点有:
(1)多模块程序设计
(2)动态数组(3)定义数组类型。
二、课程设计的详细设计
1、总体设计思路
设计思路:
简单的回转体可以看成是由多个回转体体素构成的组合体。
回转体体素包括:
圆柱体、圆台、圆锥体、球冠和母线为圆弧的球台这五种情况。
通过对每一段的名称、体素、参数设置来进行计算并保存结果,最后将所有结果相加即可得到回转体体积。
结构框图:
2、界面设计
窗体界面截图:
Frmzjm:
包含的控件有:
按钮,文本框,标签,框架,列表框。
外观通过设置各个控件的相关属性得到。
Frmwork:
包含的控件有:
按钮,标签,列表框。
外观通过设置各个控件的相关属性得到。
3、功能模块设计
主要功能及实现算法:
1.输入段数,单击生成按钮,列表框自动生成相应的条目,如果不输入段数就单击生成按钮或者是计算按钮则会有错误提示。
此功能通过Cmdgenerate(生成按钮)的click事件、list1(段号列表框)的additem方法以及msgbox实现
2.选定某一段号,单击“体素元素“栏的其中一个单选按钮,Frame3中自动出现参数设置框,输入正确的数据单击确定按钮即可计算,通过单击计算按钮即可调出Frmwork并查看计算结果,过程中也会有相应的错误提示。
此功能通过cmdok和cmdwork的单击事件实现,其中五个单选按钮为一组控件数组,名称为option1(),index属性从1到10。
3.重置按钮和退出按钮的事件过程:
重置按钮主要是清空列表框和文本框的数据,便于重新输入数据。
三、设计中遇到的问题与解决办法
【问题1】:
当文本框中输入负数或0,或者是字母,汉字时的错误提示,以及相应的部分操作。
【解决办法】:
通过代码实现:
PrivateSubCmdgenerate_Click()
DimsAsInteger,nAsInteger
s=Val(Text1.Text)
List1.Clear
Ifs<=0Then
MsgBox"请先输入正确的回转体的特征段数。
",48,"vol"
Text1.Text=""
Else
Frame.Enabled=True
EndIf
Forn=1Tos
List1.AddItemn
List1.ListIndex=0
Option1
(1).Value=True
Next
EndSub
【问题2】:
单击不同的单选按钮时,出现与之对应的参数设置框。
【解决办法】:
预先安排chicuntxt1、chicuntxt2、chicuntxt3(输入参数的文本框)和chicun1、chicun2、chicun3(标签),当需要时把第三个的visible、enabled属性设为true,不需要时设为false,并改变其caption属性,这样就会有相应的效果了。
【问题3】:
对chicuntxt中输入的数据的判断及错误提示
【解决办法】:
类似于list1的处理,对数据进行简单的判断,例如:
IfVal(chicuntxt1.Text)=0OrVal(chicuntxt2.Text)=0Then
MsgBox"请输入正确的尺寸数据",32,"Tips"
ExitSub
EndIf
【问题4】:
定义自定义数组类型
【解决办法】:
由于之前没有接触过,所以花了很多时间去搞懂它,最后处理好了。
PrivateTypehuizhuanti'自定义数据类型(下面代表的是huizhuanti的各个属性及其数据类型)
d1AsSingle'上底
HAsSingle'高
d2AsSingle'下底
nameAsString'名称
resultAsSingle'计算结果
EndType
Privatesj()Ashuizhuanti
【问题5】:
函数的调用及表达式
【解决办法】:
对于球台的体积计算比较繁琐,于是采用了一种较为简单的方法。
我并没有对上底和下底数据进行判断,而是通过代码进行算法选择,这样较为简单。
PublicFunctionf5(aAsSingle,cAsSingle)AsSingle'定义求球台体积函数
Dimb,rsAsSingle
b=Abs(c-a)
Ifc>aThen
rs=3*pi*a*b*b+6*a*a*b+4*b*b*b
Else
rs=3*pi*c*b*b+6*c*c*b+4*b*b*b
EndIf
f5=pi/6*rs
EndFunction
【问题6】:
计算结果的输出及求和
【解决办法】:
由于将语句Frmwork.Listwork.AddItem"第"&m+1&"段"&sj(m).name&""&sj(m).result
放错了位置,而且代码中少了Preserve关键字导致结果一直未0.浪费了不少时间,最后进行了调整,实现了该功能。
四、更上一层楼
改进1.:
通过语句List1.ListIndex=0和Option1
(1).Value=True消除了漏选段号和单选按钮的可能,当然也不需要错误提示了。
改进2:
通过在Cmdgenerate的Click事件中添加语句List1.Clear,从而在输入段数后再次改动时不会在list1后面添加条目,而是直接变为后输入的条目
改进3:
IfList1.ListIndex List1.ListIndex=List1.ListIndex+1 EndIf 该代码使得计算完一段后,list1中自动选择下一段进行参数设置,避免了漏选某一段的情况。 改进4: 圆台的体积计算,我采用了数学积分法,未进行切片处理进行计算,这样相对简单。 PublicFunctionf5(aAsSingle,cAsSingle)AsSingle'定义求球台体积函数 Dimb,rsAsSingle b=Abs(c-a) Ifc>aThen rs=3*pi*a*b*b+6*a*a*b+4*b*b*b Else rs=3*pi*c*b*b+6*c*c*b+4*b*b*b EndIf f5=pi/6*rs EndFunction 五、课程设计总结 程序不足之处: 为实现可以进行改动的给你,着实遗憾 心得体会: 通过这次课程设计,我对vb的掌握程度又有了进步,也更加认识到了自己的不足之处,我很感谢有这次机会去挑战难题,我学到了很多东西。 六、源程序代码 源代码: OptionExplicit'强制变量声明 Constpi=3.1415926'定义常量 PrivateTypehuizhuanti'自定义数据类型(下面代表的是huizhuanti的各个属性及其数据类型) d1AsSingle'上底 HAsSingle'高 d2AsSingle'下底 nameAsString'名称 resultAsSingle'计算结果 EndType Privatesj()Ashuizhuanti'定义自定义数组 Publicm,n,i,sAsInteger: Publics1,s2,s3,a,b,cAsSingle PrivateSubForm_Load()'窗体加载事件 Frame.Enabled=False'Frame不可用 EndSub PrivateSubCmdgenerate_Click()'生成按钮的单击事件 DimsAsInteger,nAsInteger s=Val(Text1.Text) List1.Clear'输入数字之前先清空文本框 Ifs<=0Then MsgBox"请先输入正确的回转体的特征段数。 ",48,"vol" Text1.Text="" Else Frame.Enabled=True'Frame变为可用 EndIf Forn=1Tos List1.AddItemn List1.ListIndex=0'自动选定第一段 Option1 (1).Value=True'自动选定的一个按钮 Next EndSub PrivateSubCmdexit_Click()'结束 End EndSub PrivateSubCmdreset_Click()'重置 Text1.Text="" List1.Clear Frmwork.Listwork.Clear Frame.Enabled=False Callqingkong'函数的调用 EndSub PrivateSubCmdok_Click()'单击确定按钮 Dima,iAsInteger s=Val(Text1.Text) ReDimPreservesj(0Tos-1)'加Preserve关键字不会清空之前的数据 m=List1.ListIndex s1=chicuntxt1.Text s2=chicuntxt2.Text s3=chicuntxt3.Text IfOption1 (1)Then'圆柱体的尺寸 IfVal(chicuntxt1.Text)=0OrVal(chicuntxt2.Text)=0Then MsgBox"请输入正确的尺寸数据",32,"Tips" ExitSub EndIf sj(m).name="圆柱体" sj(m).d1=s1 sj(m).H=s2 sj(m).result=f1(sj(m).d1,sj(m).H) ElseIfOption1 (2)Then'圆台的尺寸 IfVal(chicuntxt1.Text)=0OrVal(chicuntxt2.Text)=0OrVal(chicuntxt3.Text)=0Then MsgBox"请输入正确的尺寸数据",32,"Tips" ExitSub EndIf sj(m).name="圆台" sj(m).d1=s1 sj(m).H=s2 sj(m).d2=s3 sj(m).result=f2(sj(m).d1,sj(m).H,sj(m).d2) ElseIfOption1(3)Then'圆锥体的尺寸 IfVal(chicuntxt1.Text)=0OrVal(chicuntxt2.Text)=0Then MsgBox"请输入正确的尺寸数据",32,"Tips" ExitSub EndIf sj(m).name="圆锥体" sj(m).d1=s1 sj(m).H=s2 sj(m).result=f3(sj(m).d1,sj(m).H) ElseIfOption1(4)Then'球冠的尺寸 IfVal(chicuntxt1.Text)=0OrVal(chicuntxt2.Text)=0Then MsgBox"请输入正确的尺寸数据",32,"Tips" ExitSub EndIf sj(m).name="球冠" sj(m).d1=s1 sj(m).H=s2 sj(m).result=f4(sj(m).d1,sj(m).H) Else'球台的尺寸 IfVal(chicuntxt1.Text)=0OrVal(chicuntxt2.Text)=0Then MsgBox"请输入正确的尺寸数据",32,"Tips" ExitSub EndIf sj(m).name="球台" sj(m).d1=s1 sj(m).d2=s2 sj(m).result=f5(sj(m).d1,sj(m).d2) EndIf Frmwork.Listwork.AddItem"第"&m+1&"段"&sj(m).name&""&sj(m).result Callqingkong'函数的调用 IfList1.ListIndex List1.ListIndex=List1.ListIndex+1 EndIf EndSub PrivateSubCmdwork_Click() Form=0Tos-1 Ifsj(m).result=0Then MsgBox"第"&m+1&"段未指定尺寸",48,"错误" EndIf Next DimzongAsSingle'计算总体积 Form=0Tos-1 zong=zong+sj(m).result Next Frmwork.Listwork.AddItem"__________________________________________" Frmwork.Listwork.AddItem"总体积"&zong LoadFrmwork Frmwork.Show UnloadFrmjm EndSub PrivateSubOption1_Click(indexAsInteger)'显示不同的外观,用于输入不同的体素的尺寸 IfOption1 (1)Then chicun1.Caption="底面直径" chicun2.Caption="圆柱高度" chicun3.Visible=False chicuntxt3.Visible=False ElseIfOption1 (2)Then chicun1.Caption="下底直径" chicun2.Caption="圆台高度" chicun3.Caption="上底直径" chicun3.Enabled=True chicuntxt3.Enabled=True chicun3.Visible=True chicuntxt3.Visible=True ElseIfOption1(3)Then chicun1.Caption="底面直径" chicun2.Caption="圆锥高度" chicun3.Visible=False chicuntxt3.Visible=False ElseIfOption1(4)Then chicun1.Caption="底面直径" chicun2.Caption="球冠高度" chicun3.Visible=False chicuntxt3.Visible=False ElseIfOption1(5)Then chicun1.Caption="小端半径" chicun2.Caption="大端半径" chicun3.Visible=False chicuntxt3.Visible=False EndIf EndSub '以下是函数过程 PublicFunctionf1(aAsSingle,bAsSingle)AsSingle f1=pi/4*a*a*b EndFunction PublicFunctionf2(aAsSingle,bAsSingle,cAsSingle)AsSingle f2=pi/12*b*(a*a+a*b+b*b) EndFunction PublicFunctionf3(aAsSingle,bAsSingle)AsSingle f3=pi/12*a*a*b EndFunction PublicFunctionf4(aAsSingle,bAsSingle)AsSingle f4=pi/6*b*(3*a*a/4+b*b) EndFunction PublicFunctionf5(aAsSingle,cAsSingle)AsSingle'定义求球台体积函数(数学积分法) Dimb,rsAsSingle b=Abs(c-a) Ifc>aThen'根据大径和小径的大小关系选择不同的算法 rs=3*pi*a*b*b+6*a*a*b+4*b*b*b Else rs=3*pi*c*b*b+6*c*c*b+4*b*b*b EndIf f5=pi/6*rs EndFunction PublicFunctionqingkong()'函数过程,由于清空文本框 chicuntxt1.Text="" chicuntxt2.Text="" chicuntxt3.Text="" EndFunction
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 回转 体积 计算 课程设计 报告