ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:48.90KB ,
资源ID:11926543      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11926543.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《面向对象程序设计实验》指导书.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《面向对象程序设计实验》指导书.docx

1、面向对象程序设计实验指导书面向对象程序设计实验指导书实验日期实验1 11.20实验2 :11.27实验3:12.4适应专业:通信工程06级08级学 时:16执 笔 人:杨崇实验一制作图片浏览器一 实验目的:学习并掌握Visual Basic基本控件的使用,学习并掌握Visual Basic6.0的基本语法规则,理解并掌握容器的概念,掌握面向对象编程的基本原理与方法。二 实验内容:利用PicturBoxe、Image控件结合文件系统空间制作支持多种静态图片文件格式的浏览器。三 实验原理: Visual Basic6.0支持几乎全部的图片格式,包括BMP,JPG GIF ,CUR,ICO等格式,通

2、过文件系统控件可以访问到全部本地磁盘、软盘、光盘、移动存储设备以及局域网内用油访问权限的逻辑磁盘上的文件,通过利用FileListBox 控件的文件过滤功能,将可显示的图片罗列出来后在Image控件中进行显示。 PictureBox控件是一款用来加载和处理图片的控件,它不仅仅可以用来显示图片,而且可以加载上面的图片进行更高级的编辑,如按位操作、像素级图像处理等,PictureBox拥有独立的坐标系统,可作为容器来加载其他控件。 Image控件是一款专门用来显示图片的控件,它可以显示全部图像格式,同时由于具备Stretch属性,可以使图像按照Image控件的二维视图区域进行显示,又由于该控件占用

3、的内存空间比PictureBox控件小得多,因此在不对图像进行处理的场合下应优先选择。 加载图像使用VB自带的LoadPicture函数,它的引用方法为:Picture1.picture=LoadPicture (Pathname)Image1.picture= LoadPicture (Pathname)其中Picture1为图片框控件PictureBox的对象引用名称,Image1为图像框控件Image的对象引用名称。 Pathname为图片文件的路径。由于本实验仅仅涉及图片的浏览,因此建议使用Image控件。同时,显示过程中为了保证图像显示的完整性,应该使Image控件的大小符合图片自身

4、的大小,在支持缩放时,图片的高和宽两项参数应该按比例同时发生变化。在显示图片时,首先应该将Image控件的Visible属性设置为False,Stretch属性设置为False,此时,Image控件不可见,同时,加载图片后,Image控件的大小与图片的原始大小相同。为了适应显示窗口,需要选择具有独立坐标系统的PictureBox控件作为显示区,并要求Image控件在PictureBox的限定范围内显示全部的图像信息。由于图片的自身大小各异,高宽比(Height/Width)未知,因此,为了在限定显示区内显示全部图片信息,应该考虑图像自身高宽比与显示区高宽比的关系,它们的比例关系有如下两种情况,

5、见下图: 显示区 显示区 图1 图2在图1中,图片的高宽比小于显示区的高宽比,此时,为了显示全部图像信息,应将图片的高度等同于显示区的高度,而宽度则按比例做适应性调整。在图2中,图片的高宽比大于显示区的高宽比,此时,为了显示全部图像信息,应将图片的宽度等同于显示区的宽度,而高度则按比例做适应性调整。当然,若图片与显示区高宽比相同,则按上述两种情况之一执行即可。当图片的大小小于显示区,可直接进行显示不必进行调整。另外,在对图片进行浏览、缩放时需要对图片进行居中调整,可使显示效果更加美观。图片的TOP属性(显示区域高度图片高度)2图片Left属性(显示区域宽度图片宽度)2具体示例代码如下:Dim

6、WHP As Single 定义图片框控件高宽比的变量Dim WHF As Single 定义图像框控件(显示区域)高宽比的变量Image1.Visible = False 设置图片框不可见,避免显示抖动Image1.Stretch = False 设置图片框大小等同于随图片大小Image1.Picture = LoadPicture(Pathname) 加载图片到图片框WHP = Image1.Width / Image1.Height 取得图片框即原始图像的高宽比WHF = Picture1.Width / Picture1.Height 取得图像框即显示区域的高宽比If WHP = WH

7、F Then 判断,若图片框高宽比大于或等于图像框高宽比Image1.Width = Picture1.WidthImage1.Height = Image1.Width / WHP 调整图片框宽度和高度参数Else 否则,若图片框高宽比小于图像框高宽比Image1.Height = Picture1.HeightImage1.Width = Image1.Height * WHP 调整图片框宽度和高度参数End IfImage1.Top = (Picture1.Height - Image1.Height) / 2Image1.Left = (Picture1.Width - Image1.

8、Width) / 2 居中调整图片框Image1.Stretch = True 拉伸图片到合适大小Image1.Visible = True 显示图片四、实验步骤1 新建工程,名称自拟。2 添加一个窗体,名称自拟。3 添加六个Command控件,名称自拟。添加一个Timer控件,设置它的Interval属性为1000。4 添加一个PictureBox控件,然后再将一个Image控件添加到PictureBox控件上。5 添加一个DriveListBox控件,一个DirListBox控件,一个FileListBox控件。6 在DriveListBox控件、DirListBox控件的Change事件

9、中填写代码使三个文件系统控件实现连接互动。在FileListBox控件的Click事件中填写加载图片文件以及位置调整的代码。7 将六个Command控件的Caption属性分别设置为:“上一个”、“下一个”、“自动播放”、“停止”、“放大”、“缩小”,并在对应的Click事件中填写相关处理代码。8 选定菜单-文件-保存工程选项,保存工程后,按F5调试程序。9 打包,发布,异地安装并运行该程序。10 代码部分自主编写,可参考实验课示例代码。其他可扩展部分自拟,功能应丰富,不拘泥于教师课堂讲授的内容。五、实验中应注意的问题与思考题:1 当图片大小小于显示区间时,应使用原来大小现实图片,避免失真。2

10、 如何保证文件列表控件显示的文件都是可显示文件类型?3 当加载文件为非法格式时,程序将出错中断,应怎样处理?4 如何设置慢速自动浏览,快速自动浏览及自定义浏览速度?5 应用程序界面自行定义,美观大方,不拖沓。六、实验报告内容:1 实验原理与要求2 实验步骤截图3 程序源代码4 实验结果截图5 实验中遇到的问题及解决方案。6 回答思考题。实验二 制作圆盘式时钟一 实验目的:通过实验了解并掌握Visua Basic坐标系统的特征和开发技巧,了解并掌握Timer 控件和Line、Shape控件的使用方法。培养解决实际问题时数学建模能力。二 实验内容:利用Timer 控件和Line、Shape等控件利

11、用制作一个圆盘式时钟。要求时钟的初始化时间与系统时间相同。三 实验原理:坐标系统PC机的屏幕坐标原点位于屏幕的左上方。从左至右为X轴正方向,从上至下为Y轴正方向。如下图 第三象限 第四象限 (0,0) X第一象限 第二象限 Y圆盘式时钟的示例见下图 X (0,0)秒针时针分针 Y圆盘式时钟的三个指针:时针、分针、秒针均为顺时针旋转。它们的数学关系如下:1秒160分13600小时。而对于圆盘式时钟而言,由于圆周为2。则秒针单位转动增量弧度为23030。当每秒钟秒针运行30时,分针的转动增量弧度为(3060)1800。由于圆盘式时钟的一个圆周为12小时,则时针此时的转动增量弧度为:(180012)

12、21600。即,每秒钟秒针转动30,分针转动1800,时针转动21600。当顺时针转动时,转动时弧度均为增量。当某个指针转动一定的角度时,它的坐标位置会随着自身的转动而发生改变,当然,在这里指针的“轴”位置(x1,y1)不会发生改变,发生改变的是指针位置的坐标值(x2,y2)。转动时,它们的数学关系为:x2 = x1 + Cos(当前弧度) *指针长度。当前弧度为指针在坐标系统中的弧度值,当指针指向0点时,弧度为32系统启动时,应保证时钟显示的当前时间与计算机系统的时间一致,此时应该应对指针进行一次初始化。若当前系统时间为14:58:58,此时,将得到系统的小时、分、秒分别为14、58、58,

13、在计算指针初始化弧度时,应考虑三个问题:1 每个指针因为当前时间值带来的弧度偏移量。2 分针除自身时间值带来偏移量外因为秒针偏移量带来的微小偏移 。3时针除自身时间值带来偏移量外因为分针偏移量带来的微小偏移。如当前时间为14:58:58,则分针的指示位置不应该为指向58分的位置,而应该是很接近59分的位置,同理,时针的位置不该是指向14点(2点),而应该很接近15点(3点)的位置。由于当指针位于零点时初始弧度为32,因此此时它们的具体数学关系如下:秒针偏移秒数260秒数30。分针偏移分数30秒针偏移60时针偏移时数6分针偏移12 秒针位置32秒针偏移分针位置32分针偏移时针位置32时针偏移控件

14、简介Timer控件是VB集成的系统控件,它可在规定时间间隔内向用户发送中断,用户可在中断处理事件中填写相应处理代码以实现定时处理任务。Timer控件设计时可见,运行时不可见,因此编程时可以不必考虑它在窗体的具体位置。Timer控件的Interval属性提供给用户设置中断时间间隔,单位为毫秒,即1000毫秒1秒。当Interval属性为0时,Timer控件停止工作。Enabled属性可看作是它的开关,当该属性值为True时,Teimer控件启动,若未False,则停止工作。在本实验中,Timer控件的Interval属性设置为1000。Line控件是绘图控件,它为用户提供一个线型外观,通过设置它

15、的端点坐标值(x1,y2)(x2,y2)来设置它的位置,VB没有提供它的长度参数,不过它的长度可以通过空间两点距离公式求得:长度用户可以设置它的显示颜色以及粗细等信息,其他属性见教材。Shape控件是绘图控件,它为用户提供一个二维图形外观,可自由设置显示矩形、圆、椭圆等多种显示模型。用户用户可以设置它的显示颜色以及粗细等信息,其他属性见教材。示例代码见实验课附件四、实验步骤1 创建一个工程,名称自拟2 添加一个窗体,名称自拟3 在窗体上放置一个Timer控件,一个Shape控件(表盘),三个Line控件(指针)控件名称自拟。4 设置Timer的中断属性为1000,设置Shape控件Shape属

16、性为3即circle。BroderWidth属性为5,调整三个Line控件,其中秒针最细长,分针次之,时针粗短,通过设置BroderWidth可调整指针的粗细,通过调整Brodercolor配置指针的颜色,配色方案自拟。5 在Form_Load事件中填写初始化代码6 在Timer控件的Timer事件中填写定时修改指针位置的代码。7选定菜单-文件-保存工程选项,保存工程后,按F5调试程序。8 打包,发布,异地安装并运行该程序。9 代码部分自主编写,可参考实验课示例代码。其他可扩展部分自拟,功能应丰富,不拘泥于教师课堂讲授的内容。五、实验中应注意的问题与思考题:1 放置Line控件时其初始位置对运

17、行结果有影响吗,如果有如何避免这种影响?2 如果Timer控件的Interval属性设置过小或过大,会影响显示效果吗,为什么?3 如果在程序执行过程中,用户修改系统时间,那么显示效果会发生变化吗?如何实现保证显示效果与系统时钟的实时性?4 的值定为3.1416。如果取3.14会带来什么样的影响?5 由于时间偏移持续累加,如果程序长时间运行,会使保存时钟偏移的变量溢出,应该怎样解决这个问题?六、实验报告内容:1 实验原理与要求2 实验步骤截图3 程序源代码4 实验结果截图5 实验中遇到的问题及解决方案。6 回答思考题。实验三 网络通信实验一 实验目的:了解并掌握网络通信的基本原理与方法,了解TC

18、PUDP协议的通信原理与区别,掌握利用TCPUDP协议的技术特征与编程方法。了解并掌握Winsock控件的使用方法,掌握高层用户通信协议的设计方法。培养编写网络通信程序的实践能力。二 实验内容:利用TCPUDP协议结合Winsock 控件开发点对点、C/S模式通信程序。三 实验原理:网络编程基础:关于TCP和UDPTCP:传输控制协议,面向连接的网络传输模式,在传输数据前,发送端和接受端必须事先建立连接,然后再进行数据传输。 UDP:用户数据报协议,面向无连接的网络传输模式,发送端发送数据前不必和接受端建立连接,只需直接发送数据即可。 特点:TCP发送数据代价高,需要事先建立连接,但数据传输稳

19、定,可靠。在网络设施不可靠的情况下传输品质好。UDP:发送成本低,不需要建立连接,数据传输不稳定,不可靠。但在网络设施可靠的情况下,性价比比TCP协议高。微软为Visual 系列用户提供了使用网络编程功能Microsoft Visual Basic提供了用于Windows Sockets编程的可用控件Winsock控件。该控件为用户提供了访问TCP和UDP网络的极其方便的途径。并且适用于Microsoft Access、Visual Basic、Visual C和Visual FoxPro等多种可视化环境。通过Winsock控件编制C/S程序,程序员无须了解TCP或低级Winsock API调

20、用实现的细节,如用户无须考虑网络字节顺序与本机字接顺序便可直接进行数据的传送。用该控件实现网间进程通信极其方便。Winsock 控件的基本属性Index LocalPort RemotehostRemotePort Protocol Index :控件数组的下标值。 LocalPort: 设置本地通信的端口。1000以上即可。Remotehost:设置远程主机名。可以是计算机名,也可 以是IP地址。RemotePort:设置远程主机的通信端口。 Protocol: 选择协议,TCPUDP。.事件:Error 错误 DataArrival 数据到达 ConnectionRequest连接请求 C

21、onnect 连接.方法: Bind 本地端口,本地IP地址绑定本地端口。 Accept 申请号接受申请号。 Listen 监听网络信号。Close 关闭网络连接和控件功能。SendData String发送数据(字符串)。Connect 远程主机,远程主机端口 连接。使用TCP协议编程TCP协议即数据传输协议,它允许创建和维护与远程计算机的连接,使其彼此可以进行数据传输。利用TCP协议通讯必须分别建立客户应用程序和服务器应用程序。 在TCP应用中,为了建立一个网络连接实例的服务器端,只需设置本地服务端口号,然后服务器调用方法Listen进入阻塞状态,等待来自客户的连接请求。与此对应的客户端不

22、但要将Winsock的属性RemoteHost置为服务器的名称(IP地址或网络代号),还应设置服务器所监听的相应服务的端口号(RemotePort),如FTP服务在21号端口,HTTP在81号端口等。然后调用方法Winsock.Connect向服务器发出请求。服务器接收到客户请求时,事件ConnectionRequest将被触发。如服务器愿意提供服务,则可调用Accept方法接受连接。一旦连接建立,两端均可使用SendData或GetData进行数据的发送或接收。事件DataArrival将在另一端数据准备就绪时被触发。 简单的过程如下: S为服务器,C为客户端。 S绑定本地端口,S监听端口,

23、C设置服务器的主机名 或IP地址和远程端口,进行连接,S收到后接受请求, 建立连接,两端进行通信。利用UDP协议编程方法 UDP协议也称为用户数据报文协议,是一个无连接协议。何谓无连接协议?就是说利用此协议连接时,不必象TCP协议那样:需要服务器端侦听,客户机端请求连接,服务器端建立连接后双方才能通信。另外,UDP应用程序可以是客户机,也可以是服务器程序,而不必向TCP应用程序那样必须分别建立客户机程序和服务器程序。 UDP协议通信的过程:UDP协议中,为了在甲乙两机中传输数据,必须先分别设置两机的LocalPort属性;再将甲机的RemoteHost属性设置为乙机的IP地址,RemotePo

24、rt属性设置为乙机的LocalPort属性值,此时甲机调用SendData方法就可以传送数据了,乙机同样使用DataArrival事件中的GetData方法来获取甲机发送给乙机的信息。如想乙机向甲机传送数据,只需仿照上面的过程设置即可。 用UDP协议来传输信息较TCP协议来说简单的多,它无须侦听(LISTEN),也无须请求连接(CONNECT),就象我们平时发信一样,只要写好地址及收信人姓名并发送出去即可。简单的过程如下:A、B分别绑定本地端口(LocalPort)A、B分别设置对方的主机名或IP地址为远程主机名(RemoteHost)A、B分别设置对方的本地端口号为远程端口号 (Remote

25、Port)A、B双方可以发送数据(Senddata) 或接受数据(Getdata)使用TCP/UDP实现C/S模式通信 C/S即ClientServer模式是一种一对多的通信模式,首先,所有客户端与服务器端建立连接,并将本地IP地址和端口通知服务器,此时,服务器得知所有客户端的IP地址和端口,此时,客户端可以通过服务器将数据转发给另一端的客户端,或者在通过服务器得到对方IP地址和端口后,直接将数据发送给对方客户端。高层用户协议的设置 由于客户端服务器、客户端客户端通信不仅仅有普通的数据信息,更多的是诸如登录信息、上线、下线、客户端用户资料等诸多控制信息,因此,区分数据的性质是非常重要的,定制用

26、户协议不可或缺。设置用户协议的要求:1 避免冗余,数据报的合成采用“最小使用原则”。2 控制界限分明,避免解析错误。3 协议定义详细明确,避免二义性。四、实验步骤1 创建一个工程,工程名字为TCPA2 添加一个窗体,窗体名称自拟。3 添加一个Winsock控件“W”,Protocol属性设置为0即sckTCPProtocol,添加两个TextBox控件“T1”“T2”,添加一个Command控件“Command1。4 填写代码Private Sub Command1_Click()W.ConnectEnd SubPrivate Sub Form_Load()W.RemotePort = 120

27、1End SubPrivate Sub T2_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 ThenW.SendData T2T2 = End IfEnd SubPrivate Sub W_DataArrival(ByVal bytesTotal As Long)Dim a As StringW.GetData aT1 = T1 & a & Chr(13) & Chr(10)End Sub5 创建一个工程,工程名字为TCPB6 添加一个窗体,窗体名称自拟。7 添加一个Winsock控件“W”,Protocol属性设置为

28、0即sckTCPProtocol,添加两个TextBox控件“T1”“T2”。8填写代码Private Sub Form_Load()W.Bind 1201W.ListenEnd SubPrivate Sub T2_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 ThenW.SendData T2T2 = End IfEnd SubPrivate Sub W_ConnectionRequest(ByVal requestID As Long)If W.State sckClosed Then W.CloseMsgBox

29、连接成功,可以进行通信!W.Accept requestIDEnd SubPrivate Sub W_DataArrival(ByVal bytesTotal As Long)Dim a As StringW.GetData aT1 = T1 & a & Chr(13) & Chr(10)End Sub9 存盘,将两个工程分别在两台机器上运行调试10创建一个工程,工程名字为UDPA11 添加一个窗体,窗体名称自拟。12 添加一个Winsock控件“W”,Protocol属性设置为1即sckUDPProtocol,添加两个TextBox控件“T1”“T2”。13 添加代码Private Sub

30、Form_Load()W.Bind 1201W.RemoteHost = 192.168.0.3W.RemotePort = 1200End SubPrivate Sub T2_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 ThenW.SendData T2T2 = End IfEnd SubPrivate Sub W_DataArrival(ByVal bytesTotal As Long)Dim a As StringW.GetData aT1 = T1 & a & Chr(13) & Chr(10)End Sub14 创建一个工程,工程名字为UDPA15 添加一个窗体,窗体名称自拟。16 添加一个Winsock控件“W“,Protocol属性设置为1即sckUDPProtocol,添加两个TextBox控件“T1”“T2”。17 添加代码:Private Sub Form_Load()W.Bind 1200W.RemoteHost = 192.168.0.2W.RemotePort = 1201End SubPrivate Sub T2_KeyDown(KeyCode As Integer,

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

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