VB课程设计 整数按由小到大排序文档格式.docx
《VB课程设计 整数按由小到大排序文档格式.docx》由会员分享,可在线阅读,更多相关《VB课程设计 整数按由小到大排序文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
第2次VB.NET编程环境熟悉
第3、4次完成基本试验1-8
第5次完成基于VisualBasic.Net2005的界面程序开发设计
第6次程序调试及验收
指导教师(签字):
年月日
分院院长(签字):
目录
1目的和要求……………………………1
2内容和步骤………………………….1
3实现过程…………………………….1
4运行结果…………………………….4
5实习体会…………………………….6
6参考文献…………………………….7
附录A
1目的和要求
(1)熟练掌握代码编辑窗口操作
(2)掌握Sub过程的定义
(3)熟练掌握Sub过程的参数传递
掌握Sub过程变量的有效范围
2内容和步骤
在VB.NET中,过程分为事件过程和通用过程。
事件过程在前面已经练习过,下面主要联系通用过程。
过程通用是的参数传递分为按地址和按值传递两种。
通用过程的有效范围可分为Public和Private,存储类型可以使用局部变量,在本过程结束时就释放。
也可以用Static定义过程中所有的变量为静态变量,在调用结束后仍保留其值。
3实现过程
一.使用“代码编辑器”窗口
(1)选择过程的方法
单击对象列表框选择对象,然后单击过程列表框选择过程名
按Ctril+Alt+J键打开对象浏览器,显示项目中所有的对象和过程,在对象浏览器中选择窗体中的显示的过程名,双击过程名。
(2)查看过程代码
在“代码编辑器”窗口可以一次只查看一个过程或同时查看模块中的所有过程。
这些过程彼此之间用线隔开。
利用“代码编辑器”窗口左边的“+”“—”号图标,可展开或折叠过程代码。
(3)自动完成编码
“代码编辑器”能自动列举适当的选择,用于填充语句、属性和参数,使编码更加方便。
“自动列出成员特性”用于显示控件的下拉属性表。
当用户在代码中输入一控件名并输入“。
”时,就会显示控件的下拉属性表。
“自动快速信息”用于显示语句和函数的语法,当输入合法的VB.NET语句或函数名之后,语法立即显示在当前行的下面,并用黑体字显示它的第一个参数。
在输入第一个参数值之后,第二个参数又以黑体字出现。
二.用选择法对数组中的整数按由小到大排序
选择排序算法:
先将数组a中的最小数与第一个元素a(0)比较,当a(0)大时就对换:
再将数组中剩余数中最小数与第二个元素a
(1)比较,当a
(1)大时就对换:
依次类推。
(1)新建一个“VisualBasic“项目
将项目命名为“Exe0401“,出现一个新的Form1窗口。
(2)界面设计
窗体包括2个文本框、2个按钮和3个标签。
从文本框txtN输入排序数组中的元素个数,在标签labResult中显示排序前的数组元素,在文本框txtNumber中显示排序后的数组元素,由于元素个数未知,文本框含有垂直滚动条,并且不能修改,将“ReadOnly“设为Ture。
窗体中控件属性如表T4.1所示,界面安排如图T4.1所示。
对象
对象名
属性名
属性值
Form
frmSort
Text
排序
Button
CmdSort
TextBox
CmdEnd
结束
txtN
空
txtNumber
ReadOnly
True
MultiLine
Label
labN
需要排序元素的个数:
Label
labNumber
排列前数据:
labResult
排列结果:
(3)添加代码
声明N和a为模块级变量,a为动态数组:
OptionExplicitOn
DimNAsInteger
Dima()AsInteger
在窗体模块代码中添加Sort过程是实现排序的通用过程。
单击“排序“按钮,调用Sort过程并将结果显示在文本框中:
PrivateSubSort(ByValb()AsInteger)
DimiAsInteger,jAsInteger
DimminAsInteger,tempAsInteger
Fori=0ToN-2
min=i
Forj=i+1ToN-1
Ifb(min)>
b(j)Thenmin=j
Nextj
temp=b(i)
b(i)=b(min)
b(min)=temp
Nexti
EndSub
输入需要排序元素的个数的文本框内容改变时,判断输入数据有效性:
PrivateSubCmdSort_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesCmdSort.Click
DimiAsInteger
CallSort(a)
Fori=0ToN-1
txtNumber.Text=txtNumber.Text&
a(i)&
"
PrivateSubtxtN_TextChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlestxtN.TextChanged
Randomize()
IfVal(txtN.Text)>
0AndIsNumeric(Val(txtN.Text))Then
N=Val(txtN.Text)
ReDima(N)
a(i)=Int(100*Rnd())
labNumber.Text=labNumber.Text&
Else
MsgBox("
数据个数出错!
"
,"
数据个数"
)
EndIf
单击“结束“按钮的程序代码如下:
PrivateSubCmdEnd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesCmdEnd.Click
End
(4)保存项目
单击“文件“菜单,选择”保存“命令,将项目保存为”Exe0401.vbproj“.
三.计算三角形面积
在按钮click实践过程中调用计算三角形面积的子过程area,并在窗体中显示出结果。
(1)新建一个“visualbasic项目”
将项目命名为“Exe0402”,出现一个新的Formal窗口。
窗体由2个分组框、4个标签、4个文本框和2个按钮组成。
分组框输入和显示结果的控件分成两组,文本框txtA、txtB和txtC分别输入三角形的三边长,文本框txtarea显示三角形的面积。
按钮cmdStart和cmdEnd分别用于“计算”和“结束”程序。
界面设计如图T4-3所示。
(3)编写代码
在模块中添加代码。
为了能够调用VB.NET数学函数,在“代码编辑器”窗口的最上方,输入如下代码:
ImportsSystem.Math
计算面积的过程为通用过程。
形参x、y、z是按值传递的,形参x是按地址传递的。
因此在被调用过程area中改变了s的值。
在主调过程cmdStart-Click中的s也相应的改变。
PrivateSubGroupBox1_Enter(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles三角形面积.Enter
PrivateSubarea(ByValxAsSingle,ByValyAsSingle,ByValzAsSingle,ByRefsAsSingle)
DimpAsSingle
p=(x+y+z)/2
s=Sqrt(p*(p-x)*(p-y)*(p-z))
单击“计算”按钮。
cmdStart-Click中的s变量名和通用过程area中相同,都是局部变量。
但又不同的有效范围:
PrivateSubcmdStart_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlescmdStart.Click
DimaAsSingle,bAsSingle,cAsSingle
DimsAsSingle
a=Val(txtA.Text)
b=Val(txtB.Text)
c=Val(txtC.Text)
Callarea(a,b,c,s)
txtArea.Text=Int(s*100)/100
单击”结束”按钮的程序代码如下:
PrivateSubcmdEnd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlescmdEnd.Click
(4)保存项目
单击“文件”菜单。
选择“保存”命令。
将项目保存为“Exe402.vbproj”。
4运行结果
实验一:
运行单击“调试“菜单,选择”启动调试“命令,或单击工具栏”启动调试“按钮,单击窗体中的”排序“按钮,运行结果如图T4.2所示。
实验二:
单击“调试”菜单。
选择“启动调试”命令,或单击工具栏“启动调试”按钮,单击窗体中的“计算”按钮,运行结果如图T4.4所示。
。
5学习体会
开始时感觉VB.NET2005牵涉的概念比较复杂,规则繁多,使用灵活,容易出错,是门困难的不好理解的课程,通过这次课程设计机会对VB.NET2005有了更进一步的了解,加深了对VB.NET2005编程理念的领悟,使我对VB由害怕到兴趣盎然。
致使我有了一种想当一名VB程序设计员的想法。
作为一名初学者,作这样一份课程设计非常有意义,它使我意识到了自己的不足,让我在以后的学习中有的放矢。
总之,这次客收获颇多,希望下次还能有这样的机会。
6参考文献
《VisualBasic.Net实用教程》-------郑阿奇主编
电子工业出版社2008.1
7附录
实验用选择法对数组中的整数按由小到大排序代码:
PublicClassfrmsort
PrivateSubfrmsort_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
EndSub
DimNAsInteger
Dima()AsInteger
PrivateSubSort(ByValb()AsInteger)
PrivateSubtxtN_TextChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlestxtN.TextChanged
PrivateSublabNumber_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandleslabNumber.Click
EndClass
实验计算三角形面积代码:
PublicClassForm1
PrivateSubarea(ByValxAsSingle,ByValyAsSingle,ByValzAsSingle,ByRefsAsSingle)
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
PrivateSubcmdEnd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlescmdEnd.Click