《https://www.doczj.com/doc/151563230.html,开发技术》实验指导书
编著甘小红
https://www.doczj.com/doc/151563230.html,开发技术实验指导书
目录
绪论 (1)
一、引言 (1)
二、目的与要求 (1)
三、主要仪器设备及消耗品 (1)
四、考核与成绩评定 (1)
五、实验报告内容及规范 (2)
六、实验项目 (2)
实验一 VISUAL https://www.doczj.com/doc/151563230.html,的集成开发环境 (3)
实验二 https://www.doczj.com/doc/151563230.html,控制语句和数组的使用 (1)
实验三面向对象编程应用 (1)
实验四使用https://www.doczj.com/doc/151563230.html,类编程 (3)
实验五类接口编程 (7)
实验六图形用户接口的开发 (11)
实验七 MDI程序设计 (16)
实验八文件处理 (21)
实验九创建.NET控件 (25)
实验十综合性设计 (29)
附录1 (33)
附录2 (36)
绪论
一、引言
本课程采用https://www.doczj.com/doc/151563230.html,这一最容易被接受和掌握并且应用极为广泛的业界主流开发平台Visual https://www.doczj.com/doc/151563230.html,为教学和实验环境。为培养适应管理信息系统和软件行业发展需要的实用性、复合型、国际化人才提供支撑,课程的指导思想是将新型、高效、实用、有前景的软件开发工具作为实践考核类课程的主讲内容,定位是本科生的专业基础选修课,其中课堂讲授32学时,实验课时32学时。在该课程的总学时中,课堂讲授与实验课时的比例为1:1,通过综合性设计实验进一步强化了学生综合基本理论知识能力和实际动手能力的培养。
二、目的与要求
1.实验目的
通过本实验课的训练,使学生全面掌握https://www.doczj.com/doc/151563230.html,面向对象程序的编程方法,能灵活应
用https://www.doczj.com/doc/151563230.html,面向对象技术和https://www.doczj.com/doc/151563230.html,技术,开发WINDOWS窗体和WEB窗体应用程序。同时,进一步地培养学生的项目开发能力、团队协作的精神,使其适应信息化社会发展要求的
自学能力以及获取计算机新知识、新技术的能力得到进一步的升华。
2.基本要求
对于每一次上机实验,一般要求按以下步骤进行:
(1)准备工作,上机前明确本次实验的目的和主要内容,并预先设计出相关的程序。
(2)实践操作,在上机操作中,发现问题及时做好详细记录,并给出相应的解决办法,学会使用调试工具。
(3)对本次实验的经验和出现的问题进行分析和总结。
每人实验完后要提交程序电子文档、实验报告电子文档以及打印文档各一份。
三、主要仪器设备及消耗品
每位学生拥有一台具有Windows XP操作系统、Visual https://www.doczj.com/doc/151563230.html, IDE和SQL Server 2000配置的电脑且可连接互联网。
四、考核与成绩评定
实验考核成绩占总课程成绩的70%,即70分,它包括基本实验(20分)、综合设计性实验(30分)和实验报告三个部分,具体的评分标准细节如下:
1.综合性设计实验(30分)
在完成规定的功能基础上进行了创新,创新部分合理,同时程序编写符合规范,注释齐全、明确得28~30分。完成了规定的功能但创新不明显,只限于界面布局的调整,但程序编写规范、清晰,有一定的通用性得25~27分。完成了规定的功能但没有任何创新,程序编写的基本符合规范、较清晰得22~24分。基本上完成了规定的功能,但存在一些小的Bug得18~21分。只完成一部分规定的功能且系统存在严重的缺陷得15~17分。
2.基本实验(20分)
不同的基本实验,具体要求不一样,在此主要依据学生实践过程中表现的动手与创新
能力、程序设计的实用性、扩充性和通用性来评判。
3.基本实验报告与总结报告(各占10分)
(1)报告内容完整,表达清晰,得9~10分。
(2)报告内容较完整,表达较清晰,存在少许错误,得7~8分。
(3)报告内容较完整,表达基本清晰,存在一些错误,得6分。
(4)报告内容基本完整,但表达不够清晰,得5分。
(5)报告内容不完整,表达不清晰,得4分。
实验教师必须对每份实验报告进行批改,用红笔指出实验报告中的错、漏之处,并给出评语、成绩,签全名、注明日期。待实验课程结束以后,要求每个学生把全部实验报告整理好,交给实验指导教师,加上目录和封面后,统一装订成册。
五、实验报告内容及规范
实验报告参考格式,详见《https://www.doczj.com/doc/151563230.html,开发技术实验指导书》附录。
六、实验项目
实验一Visual https://www.doczj.com/doc/151563230.html,的集成开发环境
一、实验目的与要求
1.熟悉Visual https://www.doczj.com/doc/151563230.html,集成开发环境;
2.学会管理https://www.doczj.com/doc/151563230.html,项目;
3.掌握创建控制台应用程序和Windows窗体应用程序的创建方法。
二、实验内容
(一)了解Visual https://www.doczj.com/doc/151563230.html,的集成开发环境
1.Visual https://www.doczj.com/doc/151563230.html,的起始页
2.环境配置文件
3.设置帮助选项
4.起始页中的其它页
5.解决方案中的项目组成
6.配置管理器与解决方案配置
7.自定义Visual https://www.doczj.com/doc/151563230.html,的工具栏
8.Visual https://www.doczj.com/doc/151563230.html,中的菜单结构
9.Visual https://www.doczj.com/doc/151563230.html,集成开发环境的窗口
(二)创建控制台应用程序和Windows应用程序
练习1:输入姓名并显示欢迎词。
编写一个控制台应用程序,程序执行时将出现一行提示,要求您输入您的姓名,输入姓名后将显示出如下文字:欢迎你,***同志!。程序运行界面见图1-1所示。
图1-1 程序运行界面
练习2:对两个数求和。
创建一个Windows应用程序,该程序能够实现的功能是对两个整数求和,并且在按下【清空】按钮后可以重新输入数据。创建这个程序的操作步骤如下:
(1)打开https://www.doczj.com/doc/151563230.html,窗口的【起始页】,在窗口中单击【新建项目】按钮创建新的项目Sum,类型为Windows应用程序。
(2)单击【确定】按钮。打开Form1.vb的窗体设计器,从【工具箱】窗口中添加控件实例到窗体Form1中,并根据所指定的属性进行设置,如图1-2所示。
图1-2 为窗体添加控件并设置属性图1-3 运行创建的项目“两数之和”
(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
End
End Sub
(6)在完成代码的编写后,按F5运行该项目。弹出运行界面,在“操作数1”文本框中输入150,在“操作数2”文本框中输入20,单击【求和】按钮,其执行结果如图1-3所示。单击【清空】按钮,可以将文本中的数据清空,然后重新输入数据。最后,单击【退出】按钮退出运行界面。
实验二https://www.doczj.com/doc/151563230.html,控制语句和数组的使用
一、实验目的与要求
1.熟悉https://www.doczj.com/doc/151563230.html,的语法规则、表达式和常用系统函数的使用;
2.熟练地掌握https://www.doczj.com/doc/151563230.html,提供的常用控制语句及数组的用法;
3.熟悉Windows窗体应用程序的调试工具。
二、实验内容
练习1:利用Select Case语句实现多个分支。
某航空公司规定在旅游的旺季7—9月份,如果定票超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季1—5月份、10月份、11月份,如果定票超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%。假设现在是5月份,并且要定购30张机票,根据该月份的优惠率算出应付金额(一张机票的价格为3000)。
Dim month As Integer = 5
Dim quantity As Integer = 30
Dim r As Integer
Dim unit As Integer = 3000
Dim pay As Double
Select 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 = 10
End Select
pay = unit * (1 - r / 100) * quantity
上述语句中变量month、quantity、r、unit分别表示月份、购买的数量、优惠率和一张机票的价格,最后将求出变量pay,即应付的总价格。其中的Select Case语句用来计算优惠率,它根据不同的月份和购买机票的数量来确定优惠率。将上述语句代入完整程序后,其运行结果如下:
购买30张机票应付63000元。
练习2:利用冒泡法对数组中的数据进行排序。
已知一个一维数组,该数组中包含有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:运用二维数组
在表2-1中列出了5个部门的各季度销售额:
表2-1 各季度销售额
第一季度第二季度第三季度第四季度部门1 750 660 910 800
部门2 800 700 950 900
部门3 700 600 750 600
部门4 850 800 1000 950
部门5 900 800 960 980 首先声明一个二维数组Sales,根据表2-1中的数据为其赋予初值。下面给出为该二维数组的第一个元素赋予初值,其他与此相似。
Dim Sales(4, 3) As Integer
Sales(0, 0) = 750
编写一个循环来计算每一个部门的年销售额。
Dim Depart_Total(4) As Integer
Dim i, j As Integer
For 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
编写一个循环来计算每一季度的销售额。该循环与上述相似,同学们可以试着编写,这里省略。
实验三面向对象编程应用
一、实验目的与要求
1.熟悉并理解类、构造函数与析构函数、属性的设置的概念与方法。
2.掌握类的创建及事件、方法、属性的创建方法,进一步巩固学习类的继承、重载、
重写的应用。
二、实验内容
练习1:计算图书价格
在本练习中,将创建四个类,它们用于计算图书销售中的折扣价。假设一家以批发图书为主的销售商,它主要经营初、高中教课书及辅导,以及计算机,大学英语四、六级等图书。其中初、高中的教课书及辅导为7折,计算机售价为8折,英语四、六级图书销价为8.5折。本解决方案最终运行结果如图3-1所示。
图3-1 最终运行结果
(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)在“计算”按钮中添加对这两个类的处理代码。
练习2:学生管理
在本练习中,我们将使用一个数组列表ArrayList保存类的实例引用。另外,还将创建一个类Student,Student类中包含有属性:学号、姓名、系别、数学成绩、语文成绩、英语成绩,用于计算总分数的方法Sum,计算平均成绩的方法Avg。本项目将使用数组列表和类以实现对学生的学习成绩进行管理。
(1)项目Ch04Ex2的最终运行结果如图3-2所示。
图3-2 最终运行结果
(2)在窗体添加如图3-2控件所示的控件。
(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)为其它按钮编写实现其功能的代码。
实验四使用https://www.doczj.com/doc/151563230.html,类编程
一、实验目的与要求
1.熟练掌握String类和Date类的使用。
2.灵活应用MessageBox类实现不同格式的消息对话框显示。
3.掌握堆栈操作的编程方法。
二、实验内容
练习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个位置上的字符为:i
Tem中包含的字符串为:especially for those searching for a purpose
Tem中第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
练习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 TimeSpan
Console.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 Integer
Bool = https://www.doczj.com/doc/151563230.html,pare(time1, time2)
If Bool < 0 Then
Console.WriteLine("time1小于time2")
ElseIf Bool > 0 Then
Console.WriteLine("time1大于time2")
Else
Console.WriteLine("time1等于time2")
End If
time_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小于time2
time2与time1之间相差387天
time2与time1之间相差9288小时
练习3:使用MessageBox类创建消息对话框
使用MessageBox类创建一个消息对话框,在该对话框中显示“终止”、“重试”和“忽略”3个按钮,并且要求显示的图标为。
Imports System.Windows.Forms
Module 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 Sub
End Module
将上述语句运行后,首先弹出如图4-1所示的消息对话框,当选择一个按钮后,它将输出一条对应的消息。例如,单击【重试】按钮后,将输出下列信息:
用户单击了【重试】按钮!
图4-1 有图标和3个按钮的消息对话框
练习4:运用队列和堆栈
有一个String类实例,其值为“just how the doomed man chose to spend his last”,该实例中有10个单词。首先用Split方法将这些单词赋予一个String数组,然后将这个数组的各元素作为队列的元素和堆栈的元素。
Imports System.Collections.Queue
Imports 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堆栈的栈顶元素是:last
实验五类接口编程
一、实验目的与要求
1.掌握基本接口的设计方法。
2.掌握IComparable接口、IEnumerable接口和ICollection接口的应用。
二、实验内容
练习1:测试类接口IComparable和IComparer
在本练习中,将会创建一个解决方案来实现IComparer和IComparable接口。在本解决方案中我们将创建一个数组列表保存图书的基础信息,该解决方案允许用户根据图书编号和图书价格来排序记录。
图5-1演示了解决方案的完整的主窗体,单击“按价格排序”按钮将按照图书的价格进行升序排列,如图5-2所示。
图5-1 未排序列表图5-2 按价格排序列表
(1)启动https://www.doczj.com/doc/151563230.html,,创建一个新的解决方案并创建一个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 成员的内容排序数组。排序之后,显示列表中的第一个记录。
练习2:再现IComparable和IComparer接口
在本练习中,将会再次创建一个实现Icomparable和IComparer接口的解决方案但是,用户将会根据不同的域执行排序,并且可以指定按照升序和降序排序数据。另外,用户能够从列表中添加,修改和删除记录。如图5-3所示显示了解决方案“按编号升序”排列数据,在各文本框中输入新值再单击“更新记录”按钮可更新当前记录,如图5-4所示。
本解决方案中使用了“实验指导1”相同的Book结构。
图5-3 按编号升序排列图5-4 更新当前记录(1)启动Visual Studio .NET,创建一个新的解决方案Exercises06-2.sln和一个Windows 应用程序项目。
(2)从【工具箱】中选择控件在【窗体设计器】窗口创建如图5-3所示的控件实例。
(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 https://www.doczj.com/doc/151563230.html,pare
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)在窗体上添加“退出”按钮,并编写退出程序的必要语句。
练习3:IEnumerable接口枚举数组列表
在本练习中,将创建一个解决方案来实现枚举程序。解决方案实现了IEnumerable接口对数组列表进行枚举并将项目信息添加到下拉列表框中。如图5-5所示演示了解决方案的运行效果。
图5-5 显示枚举列表
图5-6 设计枚举窗体布局
(1)启动https://www.doczj.com/doc/151563230.html,,创建一个新的解决方案Exercises06-3.sln。
(2)编写语句声明一个Book结构,它的成员与“实验指导1”中的Book结构相同。重写ToString方法以便以在每一个成员之前嵌入提示符并且用空格分隔各成员。
(3)创建一个类BookFileList,它实现IEnumerable接口。BookFileList类的构造函数具有一个参数,要枚举读取的数组列表。
(4)在返回枚举程序的BookFileList类中编写语句返回数组列表。
(5)接下来创建实际的枚举程序,命名实现IEnumerator 接口的类为IEnumeratorBook。
(6)在IEnumeratorBook类中创建构造函数和方法,以便提供接口IEnumerator的实现方式。
(7)在主窗体上设计枚举窗口的布局,如图5-6所示。编写语句来创建BookFileList 类实例,读取BookList数组列表枚举BookFileList类实例,将项目添加显示到下拉列表框中。
(8)在窗体上添加“退出”按钮,并编写退出程序的必要语句。
实验六图形用户接口的开发
一、实验目的与要求
1.熟悉Windows窗体的基本属性和方法的使用。
2.熟练地掌握常用控件(Label控件、TextBox控件、RichTextBox控件、按钮类、列
表类、图片控件、时钟等控件的基本属性、方法和事件的使用。
二、实验内容
练习1:综合使用复选框和单选按钮
在一个窗体中添加3个GroupBox控件、一个TextBox控件、两个CheckBox控件和6个RadioButton控件,并为这些控件设置属性,如图6-1所示为创建好的窗体。运行该应用程序时,如果在复选框中选中【窗体】,那么选择颜色后,窗体的颜色随着改变,选择【文本】与之相似。另外,当选择字体大小后,文本框中的文字的大小就会随着改变。
图6-1 添加控件后的窗体
下面为该窗体中各个控件的触发事件编写代码。CheckBox1(即窗体)的CheckChanged 事件的代码如下所示:
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged,_
RadioButton1.CheckedChanged, RadioButton2.CheckedChanged,_
RadioButton3.CheckedChanged
If CheckBox1.Checked = True Then
If RadioButton1.Checked = True Then
Me.BackColor = ColorSet(0)
ElseIf RadioButton2.Checked = True Then
Me.BackColor = ColorSet(1)
ElseIf RadioButton3.Checked = True Then
Me.BackColor = ColorSet(2)
End If
Else
Me.BackColor = ColorSet(16)