VB.NET全部实验指导doc.doc_第1页
VB.NET全部实验指导doc.doc_第2页
VB.NET全部实验指导doc.doc_第3页
VB.NET全部实验指导doc.doc_第4页
VB.NET全部实验指导doc.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.8 实验指导实验指导1-1:求输入值的平方根在本实验中,将使用System.Math类创建一个应用程序,该应用程序获取用户输入值,把字符转换为数字,计算该值的平方根,然后向用户显示结果。当用户输入值为-1时,退出应用程序。这里我们输入值为100。最终效果如图1-17。图1-17 100的平方根效果(1)使用记事本编辑器创建一个名为mathsqrt.vb的文件,将其保存在math文件夹中。(2)创建一个名为Module1的模块,在该模块中创建一个Sub Mian过程。(3)启用严格类型检查和显式变量声明。(4)编写一个循环从用户输入值,然后对输入值执行算术计算。该循环可以让用户连续输入值,直到输入值为-1。(5)对于每个输入值,计算该值的平方根。提示:可以直接应用Math类中的Sqrt方法。(6)向用户显示输入值的描述性提示,以及描述输出值的提示。(7)编译并测试应用程序。实验指导1-2:求一列数中的最大值、最小值及平均值在本实验中,将创建一个应用程序,允许用户输入一列数。用户输入后,应用程序将会显示这一列数中的最大值、最小值、数列的个数及平均值。这里我们输入值为“1 2 3 4 5 6 7 8 9”(输入值用空格分隔)。最终效果如图1-18所示。图1-18 最大值、最小值及平均值效果(1)使用记事本编辑器创建一个命名为MinMax.vb的文件,将其保存在math文件夹中。(2)创建一个名为Module2的模块,在该模块中创建一个Sub Mian过程。提示:这里不启用严格类型检查和显式变量声明。(3)在Sub Mian过程中创建一个循环读取用户输入的一列值。当用户输入-1时退出循环。(4)当用户输入完成,计算输入的一列数值的最大值、最小值、数列个数和平均值。提示:这里把用户输入的一列值保存到数组变量中,将该数组的第1个值分别赋值给最大值和最小值变量,以此为基础判断该数组中的最大值及最小值。使用数组的下标作为数列的个数。(5)编写语句对用户输入显示提示,并且显示提示说明输出值的含义。(6)显示数列的最大值、最小值、数列的个数和平均值。(7)编译并测试应用程序。实验指导1-3:判断三角形在本实验中创建一个应用程序,允许用户输入三个数,以这三个数作为三角形的三条边,判断用户输入的三个数是否能够组成一个三角形,如果不能则给出不能组成三角形的信息,反之,则显示该三角形为何种三角形。这里我们输入三个数值为“3 4 5” (输入值用空格分隔),最终效果如图1-19所示。图1-19 判断三角形效果(1)使用记事本编辑器创建一个名为triangle.vb的文件,将其保存在math文件夹中。(2)创建一个名为Module3的模块,在该模块中创建一个Sub Mian过程。(3)编写一个循环,允许用户输入三个数值,根据组成三角形的规则,判断该三角形为何种三角形,并显示相应有关三角形的信息。当用户输入-1时,退出循环。提示:把用户输入的三个数值保存到数组变量中,然后把数组中的三个值分别赋值给其他三个用于表示边的变量。在判断该三角形是否为直角三角形时,可以利用Math类中的Pow方法。(4)编写语句对用户输入显示提示,并且显示提示说明输出值的含义。(5)显示该三角形为何种三角形。(6)编译并测试应用程序。实验指导1-4:计算百钱买百鸡创建一个应用程序,计算100文钱如何买100只鸡,5文钱买1只公鸡,3文钱买1只母鸡,1文钱买3只小鸡。最后应用程序将显示总共买了多少只公鸡、母鸡和小鸡。最终效果如图1-20所示。图1-20 百钱买白鸡效果(1)使用记事本编辑器创建一个名为chicken.vb的文件,将其保存在math文件夹中。(2)创建一个名为Module4的模块,在该模块中创建一个Sub Mian过程。(3)编写一个循环,直接显示出总共买的公鸡、母鸡和小鸡的数目。然后允许用户输入值,该值为-1,即退出循环。提示:在该应用程序中使用穷举的办法。即这100文钱最多可以买的公鸡数目,母鸡数目和小鸡数目,使用嵌套For循环。(4)编写语句提示说明输出值的含义。(5)显示买的公鸡、母鸡和小鸡的数目。(6)编译并测试应用程序。2.7 实验指导实验指导2-1:自定义用户配置文件在使用VS.NET开发VB.NET应用程序时,默认情况下,每次启动时都会打开【起始页】,这些是可选项,用户可以自定义启动时默认打开页面或解决方案。在2.2.1节中我们了解了VS.NET中起始页的内容。下面我们来定义起始页设置为键盘方案和窗口布局为“VB6”,并且在启动时显示为空环境。使用本章中介绍的方法打开VS.NET,在起始页中选择【我的配置文件】选项卡;然后进行如图2-28所示的设置。最后关闭并重新打开修改即可生效。 图2-28 定义配置文件 图2-29 工具栏【自定义】对话框实验指导2-2:自定义工具栏许多工具软件都提供了工具栏,例如Word、Excel等等。Visual Studio .NET中也有许多为开发人员准备的工具栏。使用这些工具栏,可以从中选择最常用的工具按钮。在工具栏上右击,在弹出的快捷菜单中启动/禁用相应的选项,可以打开/关闭工具栏;还可以选择【视图】|【工具栏】|【自定义】命令,在弹出的【自定义】对话框中对工具栏进行新建、添加、重命名或删除操作,如图2-29所示。实验指导2-3:创建控制台应用程序2.3节中以一个简单的控制台应用程序为例,详细地介绍了如何在VS.NET中创建第一个应用程序HelloUserFirst,其中主要包括了创建项目、设置项目、编译和运行项目以及在项目中添加本地和Web引用。本练习中将会创建一个控制台应用程序来计算出2至10000至之间的所有偶数,用户可以输入一个值来指定这个范围,然后由应用程序判断该值是否有效并输出结果。如图2-30所示,当用户输入100之后会在窗口中输出2100之间的偶数;如果用户输入的值超出范围将输出错误信息;再按任意键退出程序。图2-30 控制台程序运行效果下面对创建本练习中的应用程序的步骤进行简单的描述,完整的示例可以在光盘中找到。创建一个名为Exercises2-3控制台应用程序项目,将项目文件名和模块中的文件名改为Exercises3。在Main过程之外模块之中添加两个过程DisplayNumber和DisplayError,代码如下: Sub DisplayNumber(ByVal aNumber As Integer) For i = 1 To aNumber If i Mod 2 = 0 Then Console.Write(i & Space(5) If i Mod 5 = 0 Then Console.WriteLine() End If End If Next Console.WriteLine() Console.Write(按任意键退出.) Console.Read() End SubDisplayNumber过程负责输出指定范围内的偶数,它接受一个整型参数,然后在过程内完成从1至该参数之间的判断,如果是偶数即输出,当偶数的数量超过5个时即换行输出再继续判断,并以次依类推直到范围结束为止。最后,范围内的偶数输出完成后输出提示语,等待用户按任意键退出。DisplayError过程用于在输入值超过范围时,向用户输出错误信息并退出程序,它的代码如下: Sub DisplayError() Console.Write(输入的数字范围无效,程序即将退出!) Console.ReadLine() End Sub实验指导2-4:创建Windows应用程序Windows应用程序与控制台应用程序不同,它不但可以编写代码完成某些与用户的交互功能,而且还可以通过【窗体设计器】设计用户的可视化界面。在用户向窗体添加控件实例时,窗体设计器自动将控件实例添加到代码编辑器窗口中。这些内容在章中都有详细介绍。本练习中创建一个Windows应程序,如图2-31所示是它的运行效果。图2-31 Windows应用程序运行效果创建本次练习中Windows应用程序时要注意以下几点要求:l 项目要求创建一个名称为Excercises2-4的解决方案和一个同名的Windows应用程序项目。在项目中添加一个Excercises4.vb窗体。l 窗体要求如图2-31所示,将窗体的标题改为“添加图书管理员”。设置窗体运行时在屏幕中心显示,并且窗体有固定不可调的3D边框。最后设置窗体每按一下Enter键都相当于单击“确定”按钮,按Esc键“等于”单击“取消”按钮。l 窗体设计器要求按照图2-31所示的窗口,在窗体设计器中添加控件实例并调整它们的大小和位置属性。l 效果要求分别为“确定”和“取消”按钮添加代码。当单击“确定”按钮时以弹出的消息框形式显示用户的输入信息并且每条信息单独显示在一行。单击“取消”按钮退出程序。同时用户可以使用Enter键和Esc键完成相同的功能。实验指导2-5:对两个数求和创建一个Windows应用程序,该程序能够实现的功能是对两个整数求和,并且在按下【清空】按钮后可以重新输入数据。创建这个程序的操作步骤如下:(1)打开VS.NET窗口的【起始页】,在窗口中单击【新建项目】按钮创建新的项目Exercises2-5,类型为Windows应用程序。(2)单击【确定】按钮。打开Form1.vb的窗体设计器,从【工具箱】窗口中添加控件实例到窗体Form1中,并根据所指定的属性进行设置,如图2-32所示。Button控件TextBox控件Lable控件 图2-32 为窗体添加控件并设置属性 图2-33 运行创建的项目“两数之和”(3)双击窗体打开【代码编辑器】窗口,在【代码编辑器】窗口中为需要添加代码的对象添加过程代码。选择Button1,并指定Click过程,然后为该过程添加如下代码实现计算两数之和:Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim a As Integer, b As Integer, c As Integer a = TextBox1.Text b = TextBox2.Text c = a + b TextBox3.Text = c End Sub。(4)在【代码编辑器】窗口中选择Button2的Click事件处理过程,然后在该过程中添加如下代码清空三个文本框中的内容:Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Text = TextBox2.Text = TextBox3.Text = End Sub(5)接下来选择Button3的Click过程Button3_Click,然后在该过程中添加退出程序的代码如下所示:Private Sub Button3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button3.Click EndEnd Sub(6)在完成代码的编写后,按F5运行该项目。弹出运行界面,在“操作数1”文本框中输入150,在“操作数2”文本框中输入20,单击【求和】按钮,其执行结果如图2-33所示。单击【清空】按钮,可以将文本中的数据清空,然后重新输入数据。最后,单击【退出】按钮退出运行界面。3.8 实验指导实验指导3-1:利用Select Case语句实现多个分支某航空公司规定在旅游的旺季79月份,如果定票超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季15月份、10月份、11月份,如果定票超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%。假设现在是5月份,并且要定购30张机票,根据该月份的优惠率算出应付金额(一张机票的价格为3000)。Dim month As Integer = 5Dim quantity As Integer = 30Dim r As IntegerDim unit As Integer = 3000Dim pay As DoubleSelect Case month Case 1, 2, 3, 4, 5, 10, 11 If quantity 20 Then r = 20 Else r = 30 End If Case 7, 8, 9 If quantity 20 Then r = 5 Else r = 15 End If Case Else r = 10End Selectpay = unit * (1 - r / 100) * quantity上述语句中变量month、quantity、r、unit分别表示月份、购买的数量、优惠率和一张机票的价格,最后将求出变量pay,即应付的总价格。其中的Select Case语句用来计算优惠率,它根据不同的月份和购买机票的数量来确定优惠率。将上述语句代入完整程序后,其运行结果如下:购买30张机票应付63000元。实验指导3-2:利用循环语句计算n的阶层已知一个整数n的值为8,计算它的阶层。(分别用For-Next语句、Do-While语句和Do-Until语句实现)。利用For-Next语句实现为: Dim i As Integer Dim M As Long = 1 For i = 1 To n M = M * i Next i利用Do-While语句实现为: Dim M As Long = 1 Dim i As Integer = 1 Do While i 8 M = M * i i += 1 Loop上述的3个循环实现的功能完全相同,分别将他们代入完整程序再运行后,他们都会得到如下结果:8!=40320实验指导3-3:利用冒泡法对数组中的数据进行排序已知一个一维数组,该数组中包含有10个整型数据,并且这10个数据呈无序状态,编写一个程序,利用冒泡法将这10数据按从小到大的顺序排列。 Dim Arr() = 25, 36, 52, 34, 18, 98, 58, 83, 46, 67 Dim i, j As Integer Dim temp As Integer For i = 0 To 8 For j = 9 To 9 - i Step -1 If Arr(j) Arr(j - 1) Then temp = Arr(j) Arr(j) = Arr(j - 1) Arr(j - 1) = temp End If Next j Next i在上述语句中使用两个For-Next循环语句来对数组中的数据进行排序。内层循环从最后一个数开始对相邻的两个数比较大小,然后将较小的数放到前面。外层循环表示重复内层循环的次数。将上述语句运行后,其结果如下:数组Arr中各元素从小到大排序后为: 18 25 34 36 46 52 58 67 83 98实验指导3-4:运用二维数组在表3-11中列出了5个部门的各季度销售额:表3-11 各季度销售额第一季度第二季度第三季度第四季度部门1750660910800部门2800700950900部门3700600750600部门48508001000950部门5900800960980首先声明一个二维数组Sales,根据表3-11中的数据为其赋予初值。下面给出为该二维数组的第一个元素赋予初值,其他与此相似。Dim Sales(4, 3) As IntegerSales(0, 0) = 750编写一个循环来计算每一个部门的年销售额。Dim Depart_Total(4) As IntegerDim i, j As IntegerFor i = 0 To 4 Depart_Total(i) = 0 For j = 0 To 3 Depart_Total(i) += Sales(i, j) Next j Console.WriteLine(Dipart_Total( & i & )= & Depart_Total(i)Next i编写一个循环来计算每一季度的销售额。该循环与上述相似,读者可以试着编写,这里不再累赘。4.7 实验指导实验指导4-1:计算图书价格在本练习中,将创建四个类,它们用于计算图书销售中的折扣价。假设一家以批发图书为主的销售商,它主要经营初、高中教课书及辅导,以及计算机,大学英语四、六级等图书。其中初、高中的教课书及辅导为7折,计算机售价为8折,英语四、六级图书销价为8.5折。本解决方案最终运行结果如图4-19所示。图4-19 最终运行结果(1)创建一个名为Ch04Ex1的解决方案。(2)向项目中添加一个类模块。(3)在类模块中创建一个类Book,并向其中添加属性:BookName、BookPrice和BookNum属性;并添加一个方法Calculate,该方法用于计算不打折扣时价格。(4)以Book类为基类,从中派生一个类CompterBook,在其中添加一个属性DiscountPrice,以保存本书的折扣价,重写Colculate方法,以实现计算本书打折后的价格,添加一个用于计算图书的实际总价方法Sum。(5)在窗体代码编辑器中添加一个ComputerBook类变量,用以保存创建的计算机图书类实例。(6)双击“计算”按钮,添加该按钮的Click事件处理过程。在Cilck事件处理过程中添加代码以计算图书的折扣价。If RadioButton2.Checked Then aComputerBook = New ComputerBook(txtName.Text, _ Val(txtPrice.Text), Val(txtNum.Text) txtSum.Text = String.Format(0:n2, aComputerBook.Sum) txtDiscount.Text = String.Format(0:n2, aComputerBook.DiscountPrice) txtPayment.Text = String.Format(0:n2, aComputerBook.CalculatePrice)End If(7)在类模块中添加其类TeachingBook、EnglishBook类。(8)在“计算”按钮中添加对这两个类的处理代码。 实验指导4-2:学生管理在本练习中,我们将使用一个数组列表ArrayList保存类的实例引用。另外,还将创建一个类Student,Student类中包含有属性:学号、姓名、系别、数学成绩、语文成绩、英语成绩,用于计算总分数的方法Sum,计算平均成绩的方法Avg。本项目将使用数组列表和类以实现对学生的学习成绩进行管理。(1)项目Ch04Ex2的最终运行结果如图4-20所示。图4-20 最终运行结果(2)在窗体添加如图4-20控件所示的控件。(3)向项目中添加一个名为Student的类,并添加上述属性和方法。(4)在窗体代码编辑器中添加一个数组列表ArrayList,并实例化。(5)为按钮“添加学生信息”添加Click事件,在该事件处理程序中实例化一个Student类,并添加到ArrayList中。StudentInfoList.Add(New Student(txtID.Text, txtName.Text, txtDepartment.Text, _ txtMathScore.Text, txtChineseScore.Text, txtEnglisgScore.Text)(6)为按钮“浏览学生信息”编写Click事件处理程序。该事件处理程序只需要遍厉ArrayList中每个Student类实例,并访问其中的有关属性,最后在文本框中进行显示。(7)为其它按钮编写实现其功能的代码。5.6 实验指导实验指导5-1:使用String类的方法声明一个String实例,然后调用String类中的特性和方法完成以下功能:获取第6个位置上的字符、返回实例中第1次出现字符y的位置、获取该String实例的长度、将该实例中字符转换成大写字母、返回从第5个开始的10个字符、将实例中的字符串“for”替换为“from”,重新创建一个String实例,然后对两个String实例进行比较。 Option Strict On Dim i As Integer Dim Tem As String = especially for those searching for a purpose Console.WriteLine(Tem中第6个位置上的字符为: & Tem.Chars(5) Console.WriteLine(Tem中包含的字符串为: & Tem) Console.WriteLine(Tem中第1次出现字符y的位置是: & Tem.IndexOf(y) + 1) Console.WriteLine(字符串Tem的长度为: & Tem.Length) Console.WriteLine(将Tem中的所有字符全部转换成大写字母为: & _ Tem.ToUpper) Console.WriteLine(以第5个字符开始的10字符为: & Tem.Substring(5, 10) Dim Met As String = mysterious and complicated force Console.WriteLine(Met中包含的字符串为: & Met) If Tem.Equals(Met) = True Then Console.WriteLine(两个字符串相等!) Else Console.WriteLine(两个字符串不相等!) End If Console.WriteLine(被替换后的Tem中包含的字符串为: & Tem.Replace(for, from)将上述语句运行后,其结果如下:Tem中第6个位置上的字符为:iTem中包含的字符串为:especially for those searching for a purposeTem中第1次出现字符y的位置是:10字符串Tem的长度为:44将Tem中的所有字符全部转换成大写字母为:ESPECIALLY FOR THOSE SEARCHING FOR A PURPOSE以第5个字符开始的10字符为:ially for Met中包含的字符串为:mysterious and complicated force两个字符串不相等!被替换后的Tem中包含的字符串为:especially from those searching from a purpose实验指导5-2:使用不同的日期格式显示日期创建两个指定日期的DateTime实例和一个TimeSpan类的实例,以不同的格式输出DateTime实例,最后比较两个DateTime实例,并用TimeSpan实例返回他们相差多少小时。Dim time1 As DateTime = New DateTime(1998, 9, 15)Dim time2 As DateTime = New DateTime(1999, 10, 7)Dim time_dif As TimeSpanConsole.WriteLine(以dddd,MMM dd,yyyy格式输出time1为: & _ time1.ToString(dddd,MMM dd,yyyy)Console.WriteLine(以MMMM yy格式输出time2为: & time2.ToString(MMMM yy)Console.WriteLine(以MM/dd/yy h:mm:ss tt格式输出time1为: & _ time1.ToString(MM/dd/yy h:mm:ss tt)Dim Bool As IntegerBool = DateTime.Compare(time1, time2)If Bool 0 Then Console.WriteLine(time1大于time2)Else Console.WriteLine(time1等于time2)End Iftime_dif = time2.Subtract(time1)Console.WriteLine(time2与time1之间相差 & time_dif.TotalDays() & 天)Console.WriteLine(time2与time1之间相差 & time_dif.TotalHours & 小时)将上述语句运行后,其结果如下:以dddd,MMM dd,yyyy格式输出time1为:星期二,九月 15,1998以MMMM yy格式输出time2为:十月 99以MM/dd/yy h:mm:ss tt格式输出time1为:09-15-98 12:00:00 上午time1小于time2time2与time1之间相差387天time2与time1之间相差9288小时实验指导5-3:使用MessageBox类创建消息对话框使用MessageBox类创建一个消息对话框,在该对话框中显示“终止”、“重试”和“忽略”3个按钮,并且要求显示的图标为。Imports System.Windows.FormsModule Module1 Sub Main() Dim DiagResult As DialogResult DiagResult = MessageBox.Show(显示消息对话框!, 请选择按钮, _ MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Exclamation, _ MessageBoxDefaultButton.Button3) Select Case DiagResult Case DialogResult.Abort Console.WriteLine(用户单击了【终止】按钮!) Case DialogResult.Retry Console.WriteLine(用户单击了【重试】按钮!) Case Else Console.WriteLine(用户单击了【忽略】按钮!) End Select Console.ReadLine() End SubEnd Module将上述语句运行后,首先弹出如图5-12所示的消息对话框,当选择一个按钮后,它将输出一条对应的消息。例如,单击【重试】按钮后,将输出下列信息:用户单击了【重试】按钮!图5-12 有图标和3个按钮的消息对话框实验指导5-4:运用队列和堆栈有一个String类实例,其值为“just how the doomed man chose to spend his last”,该实例中有10个单词。首先用Split方法将这些单词赋予一个String数组,然后将这个数组的各元素作为队列的元素和堆栈的元素。Imports System.Collections.QueueImports System.Collections.Stack Dim ZT As String = just how the doomed man chose to spend his last Dim ZFU() As String ZFU = ZT.Split( ) Dim i As Integer Console.Write(显示String数组中的元素:) For i = 0 To ZFU.Length - 1 If i = 0 Then Console.Write(ZFU(i) Else Console.Write(Space(2) & ZFU(i) End If Next i Console.WriteLine() Dim que As New Queue Dim sta As New Stack 将数组中的元素添加到que队列 For i = 0 To ZFU.Length - 1 que.Enqueue(ZFU(i) Next i 将数组中的元素压入堆栈sta For i = 0 To ZFU.Length - 1 sta.Push(ZFU(i) Next i Console.WriteLine(删除的que队列的顶部元素是: & que.Dequeue) Console.WriteLine(删除的sta堆栈的栈顶元素是: & sta.Pop)上述语句的倒数第2行表示从队列中返回队顶元素并将其删除,最后一行表示从堆栈中返回栈顶元素并将其删除。将上述语句运行后,从其结果能够看出队列和堆栈两种存储结构的不同,结果如下:显示String数组中的元素:just how the doomed man chose to spend his last删除的que队列的顶部元素是:just删除的sta堆栈的栈顶元素是:last6.6 实验指导实验指导6-1:测试类接口IComparable和IComparer在本练习中,将会创建一个解决方案来实现IComparer和IComparable接口。在本解决方案中我们将创建一个数组列表保存图书的基础信息,该解决方案允许用户根据图书编号和图书价格来排序记录。图6-15演示了解决方案的完整的主窗体,单击“按价格排序”按钮将按照图书的价格进行升序排列,如图6-16所示。 图6-15 未排序列表 图6-16 按价格排序列表(1)启动VS.NET,创建一个新的解决方案并创建一个Windows应用程序项目Exercises06-1。(2)从【工具箱】中选择控件在【窗体设计器】窗口创建如图6-15所示的控件实例。(3)创建一个Resource.vb类文件,声明一个Book结构,它具有下面的成员和数据类型ID:Integer,BookName:String,Publisher:String,Author:String,Price:Single。(4)实现IComparable接口,以便根据ID域进行比较。(5)在相同的结构中创建一个类CompareByPrice,它实现IComparer接口。该类中的方法根据Price成员的内容比较货存项目。(6)在窗体中声明一个数组列表BookList来保存Book结构的实例。(7)在窗体上的Load载入过程中编写初始化创建必要的Book结构的语句。然后把结构记录信息添加到创建的数组列表BookList中。(8)在窗体设计器中添加4个按钮,“第一个”、“前一个”、“下一个”和“最后一个”,然后分别为按钮编写必要的语句来分别定位第一个、前一个、下一个和最后一个记录。(9)在窗体上创建一个“按编号排序”按钮,编写语句根据ID成员的内容排序BookList数组列表。排序BookList之后,显示列表中的第一个记录。(10)在窗体上创建一个“按价格排序”按钮,编写语句根据Price 成员的内容排序数组。排序之后,显示列表中的第一个记录。实验指导6-2:再现IComparable和IComparer接口在本练习中,将会再次创建一个实现Icomparable和IComparer接口的解决方案但是,用户将会根据不同的域执行排序,并且可以指定按照升序和降序排序数据。另外,用户能够从列表中添加,修改和删除记录。如图6-17所示显示了解决方案“按编号升序”排列数据,在各文本框中输入新值再单击“更新记录”按钮可更新当前记录,如图6-18所示。本解决方案中使用了“实验指导1”相同的Book结构。 图6-17 按编号升序排列 图6-18 更新当前记录(1)启动Visual Studio .NET,创建一个新的解决方案Exercises06-2.sln和一个Windows应用程序项目。(2)从【工具箱】中选择控件在【窗体设计器】窗口创建如图6-17所示的控件实例。(3)编写语句声明一个Book结构,它的成员与“实验指导1”中的Book结构相同。(4)在窗体中声明一个数组列表BookList来保存Book结构的实例。(5)实现IComparable接口,以便根据ID域进行比较。(6)在相同的结构中创建一个类DescCompareByID,它实现IComparer接口根据ID域进行降序排序。如下所示是它的实现语句: Public Class DescCompareByID Implements IComparer Public Function Compare(ByVal x As Object, ByVal y As System.Object) As Integer _ Implements IComparer.Compare If CType(x, Book).ID CType(y, Book).ID Then Return -1 ElseIf CType(x, Book).ID CType(y, Book).ID Then Return 1 Else Return 0 End If End Function End Class(7)在窗体上的Load载入过程中编写初始化创建必要的Book结构的语句。然后把结构记录信息添加到创建的数组列表BookList中。(8)在窗体设计器中添加4个按钮,“第一个”、“前一个”、“下一个”和“最后一个”,然后分别为按钮编写必要的语句来分别定位第一个、前一个、下一个和最后一个记录。(9)在窗体上添加3个按钮,“添加记录”、“删除记录”和“更新记录”。然后,分别为这些按钮编写语句来添加、修改和删除记录。(10)在窗体上添加“按编号升序”和“按编号降序”两个按钮。然后编写语句调用IComparable和IComparer接口实现对编号的升、降序排列。(11)在窗体上添加“退出”按钮,并编写退出程序的必要语句。实验指导6-3:IEnumerable接口枚举数组列表在本练习中,将创建一个解决方案来实现枚举程序。解决方案实现了IEnumerable接口对数组列表进行枚举并将项目信息添加到下拉列表框中。如图6-19所示演示了解决方案的运行效果。 图6-19 显示枚举列表 图6-20 设计枚举窗体布局 (1)启动VS.NET,创建一个新的解决方案Exercises06-3.sln。(2)编写语句声明一个Book结构,它的成员与“实验指导1”中的Book结构相同。重写ToString方法以便以在每一个成员之前嵌入提示符并且用空格分隔各成员。(3)创建一个类BookFileList,它实现IEnumerable接口。BookFileList类的构造函数具有一个参数,要枚举读取的数组列表。(4)在返回枚举程序的BookFileList类中编写语句返回数组列表。(5)接下来创建实际的枚举程序,命名实现IEnumerator 接口的类为IEnumeratorBook。(6)在IEnumeratorBook类中创建构造函数和方法,以便提供接口IEnumerator的实现方式。(7)在主窗体上设计枚举窗口的布局,如图6-20所示。编写语句来创建BookFileList类实例,读取BookList数组列表枚举BookFileList类实例,将项目添加显示到下拉列表框中。(8)在窗体上添加“退出”按钮,并编写退出程序的必要语句。7.5 实验指导实验指导5-1:综合使用复选框和单选按钮在一个窗体中添加3个GroupBox控件、一个TextBox控件、两个CheckBox控件和6个RadioButton控件,并为这些控件设置属性,如图7-27所示为创建好的窗体。运行该应用程序时,如果在复选框中选中【窗体】,那么选择颜色后,窗体的颜色随着改变,选择【文本】与之相似。另外,当选择字体大小后,文本框中的文字的大小就会随着改变。图7-27 添加控件后的窗体下面为该窗体中各个控件的触发事件编写代码。CheckBox1(即窗体)的CheckChanged事件的代码如下所示: Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged,_ RadioButton1.CheckedChanged, RadioButton2.Che

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论