回转体体积计算课程设计报告.docx

上传人:b****5 文档编号:29478542 上传时间:2023-07-23 格式:DOCX 页数:14 大小:141.75KB
下载 相关 举报
回转体体积计算课程设计报告.docx_第1页
第1页 / 共14页
回转体体积计算课程设计报告.docx_第2页
第2页 / 共14页
回转体体积计算课程设计报告.docx_第3页
第3页 / 共14页
回转体体积计算课程设计报告.docx_第4页
第4页 / 共14页
回转体体积计算课程设计报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

回转体体积计算课程设计报告.docx

《回转体体积计算课程设计报告.docx》由会员分享,可在线阅读,更多相关《回转体体积计算课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。

回转体体积计算课程设计报告.docx

回转体体积计算课程设计报告

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1