当前位置:文档之家› 用VB编写modbus源代码的过程

用VB编写modbus源代码的过程

用VB编写modbus源代码的过程
用VB编写modbus源代码的过程

用VB编写modbus源代码的过程

今天是周六,现在刚从单位自愿加班回来。为什么自愿加班呢?因为自己和老板夸下海口说:一个礼拜把modbus上位机程序写好(也就是这个礼拜拉)。现在终于把这个程序写好拉。

感想很多啊!该如何说起呢?我语文不好,把自己想表达的意思说出来就行拉。

首先:还是那句话:一切得靠自己!上周一时,老板说让我做个modbus界面,我想:这个简单啊。不就是串口收发么?于是我计划安排上写了1个礼拜搞定。然后开始安装DELPHI(我在单位一直搞C编程,机子没有装这些),完后就打开我那曾经熟悉的界面。恩?怎么看似熟悉的界面怎么这么陌生呢/于是上网找资料。。。这个3天的期间我感慨好深啊:因为我大四学习的DELPHI,所以我感觉这个还熟悉点,可是当时做课程设计的时候也没有用过串口,这个串口编程咋得和MCU串口不一样呢?它就是不一样!晕晕。上网找SPCOMM。。。,学习了一天也不会用。于是徒劳了3天也没有效果。转眼就到了周四,我心里那个急呀。唉!还是忍痛抛弃delphi吧!为什么呢?它没有自带串口控件,下载并安装了还是出错啊。

VB好象是我大二学的,具体时间我也忘了,反正就记得做课设的时候用它连个ACCESS实现了插入删除查询工作。以后知道这个周四我也没有用过,甚至没有见到过它的界面。我选择它一个因为我选择,我喜欢。更重要的是它安装了自带串口控件,不用下载什么的了,用起来实打实的心里有底。

大家现在知道我的底子了吧?周四我借公司里的一本VB书看了一天的串口,然后心理有底了,周五动手一天,收获很大,今天早晨8点起床,心理还琢磨着程序的事情,由于家里没有实验仪器,于是打算去公司,一直做到现在,终于搞定拉。这个礼拜上网找源代码的时候看着好多像我一样找源码的人发帖子要源程序,但是大多只是网页写了一大堆代码。没有用!为什么呢?你怎么知道人家用什么控件,什么功能呢?还是老老实实的自己写吧。没什么的,很简单的啊。说实话,这个程序只要你把浮躁的心放下来写就可以了。我自从毕业一直没有做过WINDOWS编程,都是直接对单片机的,上学那会也是天天乐呼呼的,没学到什

么东西,就这样我还不是搞定了吗?(当然这个建立在看网上那堆源程序的基础上)。

现在我就把这个程序发在网页上,这个程序已经调通了,写在这里的目的是让大家做个程序参考,你也不知道我界面上的控件,所以没有必要复制粘贴。(不是我小气,是因为这个工程涉及到公司机密,这个产品还没有送检,所以不给。发布啊,望谅解)欢迎大家和我讨论,谢谢!

'Global Data Definitions

Dim MyHandle As Long 'Handle to Connection

Dim MyStatus As Integer 'Status returned from mbMasterV7 Control Dim Slave As Integer 'Slave, Cmd, Address, & Length

Dim Cmd As Integer

Dim Address As Long

Dim Length As Integer

Dim LoopbackMsg(20) As Byte

Public Sub show_status(ErrCode As Integer)

If (ErrCode = 0) Then

STATUS.Text = "正常通行ing"

ElseIf (ErrCode < 255) Then

' STATUS.Text = "Slave Device Exception Response"

STATUS.Text = "从设备没有响应"

ElseIf (ErrCode = 256) Then

STATUS.Text = "无效连接"

ElseIf (ErrCode = 257) Then

STATUS.Text = "消息超时"

ElseIf (ErrCode = 258) Then

STATUS.Text = "无效地址"

ElseIf (ErrCode = 259) Then

STATUS.Text = "无效从设备地址"

ElseIf (ErrCode = 260) Then

STATUS.Text = "无效数据长度"

ElseIf (ErrCode = 261) Then

STATUS.Text = "不支持modbus命令格式"

ElseIf (ErrCode = 263) Then

STATUS.Text = "从设备超时"

ElseIf (ErrCode = 264) Then

STATUS.Text = "无效传输模式"

ElseIf (ErrCode = 265) Then

STATUS.Text = "CRC校验错误"

ElseIf (ErrCode = 266) Then

STATUS.Text = "没有建立连接"

ElseIf (ErrCode = 267) Then

STATUS.Text = "无效从设备响应"

ElseIf (ErrCode = 271) Then

STATUS.Text = "演示时间到"

ElseIf (ErrCode = 272) Then

STATUS.Text = "无效 modbus/TCP 命令"

End If

End Sub

' Hide the contrtol when the form loads

Private Sub Form_Activate()

MbMasterV71.HideControl

End Sub

' Handler for the CONNECT SERIAL Button

Private Sub ConnectSerial_Click()

' Connect to COMM Port

MbMasterV71.BaudRate = 9600 '9600 Baud

MbMasterV71.Parity = 0 '0=NOPARITY, 1=ODDPARITY, 2=EVENPARITY,

3=MARKPARITY, 4=SPACEPARITY

MbMasterV71.DataBits = 8 '8 DataBits

MbMasterV71.StopBits = 0 '0=ONESTOPBIT, 1=ONE5STOPBITS,

2=TWOSTOPBITS

MbMasterV71.TimeOut = 2000 '2000 msec

MbMasterV71.TransmissionMode = 1 '0=ASCII, 1=RTU

MyHandle = MbMasterV71.ConnectSerial(1) ' Connect to COMM Port 1 If MyHandle > 0 Then

' Connection was successful

' (This example only allows a single connection)

' Disable All Connection Buttons

' Enable the Read, Write & Disconnect Buttons

ConnectSerial.Enabled = False

ConnectTAPI.Enabled = False

ConnectTCP.Enabled = False

Disconnect.Enabled = True

' LoopBackTst.Enabled = True

STATUS.Text = "正在连接ing"

READMODBUS.Enabled = True

WRITEMODBUS.Enabled = True

Else

'Connection Attempt Failed

'(Another application must have control of the COM Port)

STATUS.Text = "串口忙,请稍候"

End If

End Sub

' Handler for the CONNECT TAPI Button

Private Sub ConnectTAPI_Click()

Dim nTAPIDevices As Long

Dim TAPIDevice As String

'Go through the motions of getting the TAPI Device List nTAPIDevices = MbMasterV71.NumberOfTAPIDevices()

TAPIDevice = MbMasterV71.GetTAPIDeviceName(0)

'Setup the phone number to dial

MbMasterV71.PhoneNumber = "645-5966"

'Dial the call

MyHandle = MbMasterV71.DialTAPIDevice(0)

If MyHandle > 0 Then

'Call should be in progress now

'Don't enable the Read & Write Buttons

'until we get the CallEstablished Event

STATUS.Text = "正在连接ing"

ConnectSerial.Enabled = False

ConnectTAPI.Enabled = False

ConnectTCP.Enabled = False

Disconnect.Enabled = False

'LoopBackTst.Enabled = False

READMODBUS.Enabled = False

WRITEMODBUS.Enabled = False

Else

STATUS.Text = "没有连接"

End If

End Sub

' Handler for the CONNECT TCP Button

Private Sub ConnectTCP_Click()

' Select the Device to connec to

' In this case use the IP Loopback address to

' connect to the local machine

MbMasterV71.TCPDevice = "127.0.0.1"

MyHandle = MbMasterV71.ConnectModbusTCP(502)

If MyHandle > 0 Then

'Connection should be in progress now

'Don't enable the Read & Write Buttons

'until we get the CallEstablished Event

STATUS.Text = "正在连接ing"

ConnectSerial.Enabled = False

ConnectTAPI.Enabled = False

ConnectTCP.Enabled = False

Disconnect.Enabled = False

' LoopBackTst.Enabled = False

READMODBUS.Enabled = False

WRITEMODBUS.Enabled = False

Else

STATUS.Text = "没有连接"

End If

End Sub

' ConnectionEstablished Event Handler

' Initiated from either ConnectModbusTCP() or DialTAPIDevice() Private Sub MbMasterV71_ConnectionEstablished(ByVal hConnect As Long) 'Enable the Disconnect Button

'Enable Read & Write Buttons

ConnectSerial.Enabled = False

ConnectTAPI.Enabled = False

ConnectTCP.Enabled = False

Disconnect.Enabled = True

'LoopBackTst.Enabled = True

STATUS.Text = "正常通信ing"

READMODBUS.Enabled = True

WRITEMODBUS.Enabled = True

End Sub

' ConnectionDropped Event Handler

Private Sub MbMasterV71_ConnectionDropped(ByVal hConnect As Long) 'Either the TCP or TAPI connection attempt failed

'or something has happened to abort the connection after it 'has been established for a while.

'In either case we're now disconnected so enable the

'buttons accordingly

MyHandle = -1

ConnectSerial.Enabled = True

ConnectTAPI.Enabled = True

ConnectTCP.Enabled = True

Disconnect.Enabled = False

'LoopBackTst.Enabled = False

STATUS.Text = "没有连接"

READMODBUS.Enabled = False

WRITEMODBUS.Enabled = False

End Sub

' Handler for the DISCONNECT Button

Private Sub Disconnect_Click()

'Tell the control to Disconnect

MyStatus = MbMasterV71.Disconnect(MyHandle)

MyHandle = -1

'ReEnable the Connect Buttons for new connection attempt

ConnectSerial.Enabled = True

ConnectTAPI.Enabled = True

ConnectTCP.Enabled = True

Disconnect.Enabled = False

'LoopBackTst.Enabled = False

STATUS.Text = "没有连接"

READMODBUS.Enabled = False

WRITEMODBUS.Enabled = False

End Sub

Private Sub Frame2_DragDrop(Source As Control, X As Single, Y As Single) End Sub

' Handler for the READ Button

Private Sub READMODBUS_Click()

'Get the Slave Node Address, Modbus Command, Address & Length

' from the appropriate Edit controls

Slave = NODEADDRESS.Text

Cmd = POINTTYPE.Text

Address = READADDRESS.Text

Length = READLENGTH.Text

'We must remember these parameters so we can use

'them in the ReadResponse method to make sure we

'get what we ask for

'

'Initiate the Read Request

MyStatus = MbMasterV71.PollModbus(MyHandle, Slave, Cmd, Address, Length)

'Check the status to make sure the request went out.

If MyStatus = 0 Then

STATUS.Text = "串口忙,请稍侯"

Else

show_status (MyStatus)

End If

End Sub

'Process the Slave Read Response Message

'Modbus_Master SlaveReadResponse Event Handler

Private Sub MbMasterV71_SlaveReadResponse(ByVal hConnect As Long)

Dim MyData As Long

Dim i As Integer

' Read the data returned from the slave

' and update the text controls

For i = 0 To Length - 1

MyStatus = MbMasterV71.ReadResults(hConnect, Slave, Cmd, Address + i, MyData)

show_status (MyStatus)

If MyStatus = 0 Then

'Text1(i).Text = MyData

If i = 0 Or i = 8 Or i = 16 Then

Text1(i).Text = MyData * 系数

End If

If i = 2 Or i = 10 Or i = 18 Then

Text1(i).Text = MyData * 系数

End If

If i = 4 Or i = 12 Or i = 20 Or i = 6 Or i = 14 Or i = 22 Then Text1(i).Text = MyData * 系数

End If

If i = 28 Or i = 30 Then '3P,3Q

Text1(i).Text = MyData * 系数

End If

If i = 29 Then 'cosq

Text1(i).Text = MyData * 系数

End If

If i = 27 Then 'F

Text1(i).Text = MyData * 系数

End If

If i = 1 Or i = 5 Or i = 7 Or i = 9 Or i = 13 Or i = 15 Or i = 17 Or i = 21 Or i = 23 Or i = 25 Or i = 23 Or i = 26 Or i = 31 Then Text1(i).Text = 0 '没有测量的量默认为0

End If

' Else

' Text1(i).Text = "Error"

End If

Next i

End Sub

Private Sub WRITEMODBUS_Click()

Dim IsRegister As Boolean

Dim i As Integer

Dim junk As Integer

Slave = NODEADDRESS.Text

Address = WRITEADDRESS.Text

Length = WRITELENGTH.Text

If Length > 200 Then

Length = 200

End If

For i = 0 To Length - 1

junk = MbMasterV71.FillWriteBuffer(MyHandle, i, PATTERN.Text) Next i

If POINTTYPE.Text < 2 Then

If Length = 1 Then

Cmd = 5 'write single coil

Else

Cmd = 15 'write multiple coils

End If

Else

If Length = 1 Then

Cmd = 6 'write single register

Else

Cmd = 16 'write multiple registers

End If

End If

MyStatus = MbMasterV71.WRITEMODBUS(MyHandle, Slave, Cmd, Address, Length)

' Make sure the write request was transmitted

If MyStatus = 0 Then

STATUS.Text = "串口忙,请稍侯"

Else

show_status (MyStatus)

End If

End Sub

'Process the Slave Write Response Message

'Modbus_Master SlaveWriteResponse Event Handler

Private Sub MbMasterV71_SlaveWriteResponse(ByVal hConnect As Long)

'read the results of the write request

MyStatus = MbMasterV71.WriteResults(hConnect, Slave, Cmd, Address, Length)

' and update the status display

show_status (MyStatus)

End Sub

Private Sub LoopBackTst_Click()

Slave = NODEADDRESS.Text

Cmd = 8

MyStatus = MbMasterV71.FillUserMsgBuffer(MyHandle, 0, Slave)

MyStatus = MbMasterV71.FillUserMsgBuffer(MyHandle, 1, Cmd)

MyStatus = MbMasterV71.FillUserMsgBuffer(MyHandle, 2, 0)

MyStatus = MbMasterV71.FillUserMsgBuffer(MyHandle, 3, 0)

MyStatus = MbMasterV71.FillUserMsgBuffer(MyHandle, 4, 0)

MyStatus = MbMasterV71.FillUserMsgBuffer(MyHandle, 5, 0)

MyStatus = MbMasterV71.SendUserMsg(MyHandle, 6)

'Check the status to make sure the request went out.

If MyStatus = 0 Then

STATUS.Text = "串口忙,请稍侯"

Else

show_status (MyStatus)

End If

End Sub

Private Sub MbMasterV71_UserMsgResponse(ByVal hConnect As Long, ByVal NumberOfBytes As Long)

Dim temp As Integer

If NumberOfBytes > 0 Then

For i = 0 To NumberOfBytes - 1

MyStatus = MbMasterV71.ReadUserMsgResponse(hConnect, i, temp)

LoopbackMsg(i) = temp

Next i

STATUS.Text = LoopbackMsg

End If

End Sub

VB6.0的小程序计算器

VB6.0的小程序计算器 对于刚入门学习VB6的朋友来说肯定会做些小程序吧,这里就是给大家演示个简单的计算器程序,仅供参考啦。 界面上加减乘除四个按钮分别是cmdAdd、cmdPlus、cmdMultiple、cmdDevide,小数点按钮是cmdDot,负号按钮是cmdMinuse,数字0~9为了偷懒,用了控件数组cmdNumber(0)~ cmdNumber(9),上面txtShow是显示数字和结果用的,txtOperate是显示中间步骤的。 思路大致是这样,点加减乘除这类操作符的时候,把当前txtShow的值保存在模块变量mstrParam1里,同时把操作符保存到mstrOperate里,按等于号时把先把当前txtShow的值保存在模块变量mstrParam2里,然后对mstrParam1和mstrParam2进行运算,当然要记得设法把String转换成数值进行运算。 转换的过程要注意,这里是用的Variant数据类型,vParam1和vParam2都是Variant 类型,保存的是mstrParam1和mstrParam2的数值。之所以不用integer、long、double 这些标准类型,是因为这些类型都有大小限制,做出来用着不方便,VB最大的整型long才到 2147483647,这意味着计算器的计算结果只能限制在9位到10位。而Variant类型可以支持非常大的数,具体多大不清楚,但起码几十位是能够支持的。另外,最后算完的结果也要做格式化,因为如果数值非常大的话,VB会自动转成科学计数法,所以要用Format函数进行调整。 如果需要源代码的话在我百度空间里留言。https://www.doczj.com/doc/018797417.html,/zhaozhigang517

用VB设计图书管理系统

摘要 随着人类社会的发展,人类对知识的需求也不断地增长。在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一定的位置。绘本图书与其他普通图画书的区别在于绘本图书通常有独立的绘画著者,图画有个人风格,画面即情即景,可单幅成画,容易提高儿童读书的积极性。如何科学地管理绘本馆不但关系到读者求知的方便程度,也关系到绘本馆的发展,因此,开发一套完善的绘本图书馆管理系统就成不可少了,图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。 经过分析,使用Microsoft公司的Visual Basic6.0为开发工具,利用其提供的各种面向对象的可视化开发平台作为开发工具,采用面向对象技术,图形化的应用开发环境,尤其是它有一个功能极其强大的集成环境提供级开发人员,使得开发人员可通过菜单、界面、图形浏览工具、对话框以及嵌入的各种生成器来轻松地完成各种复杂的操作。开发过程中不断修正和改进,直到形成用户满意的可行系统。 本文介绍了在Visual Basic6.0环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发本系统的详细过程,提出实现绘本图书馆信息管理、资源共享的基本目标,从而推动迈向数字化绘本图书馆的步伐,并阐述系统结构设计和功能设计,从绘本图书的入库登记到查询浏览,形成了一个整体自动化管理模式,从软件工程的角度进行了科学而严谨的阐述。 关键词:绘本;图书管理系统;Visual Basic6.0 I

Abstract With the development of society , Mankind need more knowledge also constantly increase, Under such circumstances, book gradually become the main path to obtain the knowledge of life, and library naturally occupied in people certainly position, how science ground the management library not only relate to the convenient degree that the reader beg to know, but also relate to the library that strategy of development, therefore, develop the management system of a perfect library can't little, Library management system is a typical management information system (MIS), which mainly includes the establishment of database and front-end application maintenance and development of the two. After analysis, the use of Microsoft's development tool Visual Basic6.0 for the use of its various kinds of object-oriented visual development platform as a development tool, object-oriented technology and graphical application development environment, especially its There is an extremely powerful level of integration environment to provide developers, allowing developers through the menu, interface, graphical browsing tools, dialog boxes, and a variety of embedded generators to easily complete a variety of complex operations. Development process, constantly revised and improved, until users are satisfied with it. This paper introduced under the Visual Basic6.0 the environment adoption" from top to bottom total programming, from the detailed process that bottom but up applied development" develop this system, from the step that but the push head into the arithmetic figure of the library, and shows the system construction design and function design, from the books of store in warehouse to register the search to view, books that issue from library card to angle of borrow , become a the whole automation the management the mode, and proceeds careful explain from the software engineering science. Keywords:library; borrow; search to view; Visual Basic6.0

推箱子程序设计报告

程序设计报告 推 箱 子 通信学院 电子信息1204工程班 1207050420 郝国成 一.设计思路 推箱子游戏是一款很有趣味的游戏,其开发过程有一定的技

巧和方法,其中涉及到二维数组、键盘操作以及图形化函数等方面的知识。 设计推箱子这个游戏,目的是将箱子推到指定的空位,以完成游戏。 首先,要在窗口上,绘制地图,画出墙和草地。 然后,要保证人和箱子可以移动,这个就用到了case WM_KEYDOWN函数去控制了。 下来,就是要制定游戏规则,根据游戏规则,箱子可以在空地之间、目的地之间、空地和目的地之间来回移动,。 最后,把全部箱子移动到指定位置才算完成本次游戏,因此箱子每移动一次都必须判断全部箱子当前位置是否到达指定坐标。 而且,只要游戏没有结束,就没有时间的限制。 大体思路确定以后就是要去怎么做,怎么去实现自己的想法。 我是采用二维数组绘制地图的原理,把资源图片一张张绘制到窗口DC上,然后记录人物资源的坐标,通过方向键响应,改变人物坐标,达到控制人物移动的目的。箱子也同样是这个道理。 想好思路以后,就是动手写代码。这期间我又认识了好多新的Windows的函数,不断的修改,使我更能深刻理解到WIN 32 的作用,收获很大。 二.部分代码 // 推箱子.cpp : Defines the entry point for the application. #include "stdafx.h" #include "resource.h" //#include "mmsystem.h"//导入声音头文件

//#pragma comment(lib,"winmm.lib")//导入声音头文件库 #define MAX_LOADSTRING 100 #define width 48 #define heigth 48 typedefstruct { int x; int y; }point; char map1[10][10]= //地图二维数组 { " ####", " ### @#", " # b #", " ## # ###", " # # #*#", " # # b*#", " # b *#", " ########", " " }; char map2[10][10]= //地图二维数组 { "nnnn#####", "nnnn# @#", "###n#bb #", "#*#n# b #", "#*### ###", "#* ##n", "# # #n", "#### #", "nnn#####", " " }; staticintbStarted=0; int a = 0; intaimnum_qj=0; intaimnum=0; intboxoknum_qj=0; charmap_mid[10][10]; char map[10][10];

Modbus 通讯协议编程(VB源代码)

最近,本人为了实现电脑与Delta V FD-M变频器通讯,特意用VB6.0编了一个Modbus协议通讯软件。 这只是一个测试版,但Modbus的ASCII协议和RTU协议都已经实现。 现在将源程序上传,希望可以帮助到有需要的朋友,谢谢! 另外,假如你觉得有更好的想法,欢迎指教。 如果对本程序有任何意见和建议,也可以一起讨论,共同进步。 大家多多支持俺啊。 附:VB6源程序 Option Explicit Private Text1text As String Private RTUCRC As String '串口选择 Private Sub Combo1_Click() https://www.doczj.com/doc/018797417.html,mPort = Combo1.ListIndex + 1 End Sub '数据位改变< span style="color: #008000;"> Private Sub Combo2_Click() Call setting End Sub '波特率改变< span style="color: #008000;"> Private Sub Combo3_Click() Call setting End Sub '奇偶校验改变< span style="color: #008000;"> Private Sub Combo4_Click() Call setting End Sub '停止位改变< span style="color: #008000;"> Private Sub Combo5_Click() Call setting

Private Sub setting() MSComm1.Settings = CStr(Combo3.Text) & ","& CStr(Combo4.Text) & ","& CStr(C ombo2.Text) _ & ","& CStr(Combo5.Text) End Sub '打开关闭串口< span style="color: #008000;"> Private Sub Command1_Click() On Error Resume Next If MSComm1.PortOpen = False Then MSComm1.PortOpen = True Else MSComm1.PortOpen = False End If If MSComm1.PortOpen Then'打开关闭按钮显示文字及combo1使能 Command1.Caption = "关闭串口" Combo1.Enabled = False Else Command1.Caption = "打开串口" Combo1.Enabled = True End If If Err Then'打开串口失败,则显示出错信息 MsgBox Error$, 48, "错误信息" Exit Sub End If End Sub '10转16进制< span style="color: #008000;"> Private Sub Command2_Click(Index As Integer) On Error Resume Next Text4.Text = Hex(Text3.Text) If Err Then''则显示出错信息< span style="color: #008000;"> MsgBox Error$, 48, "错误信息" Exit Sub End If

基于VC++的推箱子游戏设计与实现

本科毕业设计(论文) 基于VC++的推箱子游戏设计与实现 学院自动化学院 专业电子信息科学与技术 年级班别2008级(2)班 学号3108001166 学生姓名吕文财 指导教师 ________张学习 ___ __ 2012年6月

基于 VC++ 的推箱子游戏的设计与实现 吕文财 自动化学院

摘要 近年来随着科技的飞速发展, Visual C++语言的应用正在不断深入。Visual C++语言是当今国际上非常流行的计算机高级编程语言之一,它是面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它更以自动编译功能和高级除错功能著称。因此,广泛受到编程人员青睐。不仅适合作为系统描述语言,也用来编写系统软件,还可以用来编写应用软件和设计游戏等。 本论文着重分析用Microsoft Visual C++语言实现一个较为简单的推箱子游戏,旨在介绍推箱子游戏的实现方法,并逐步介绍Microsoft Visual C++6.0图形编程的方法和技巧。本设计通过主界面对话框类、关口选择对话框类、帮助对话框类三大类以及键盘操作模块、游戏规则模块、地图文件读取模块、背景音乐播放模块、地图绘制模块,共五大模块构成。实现了任意关数选择、难度依次加大、游戏步数记录、背景音乐播放、游戏帮助、胜负判断等多个功能,采用图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。 关键词:推箱子,c++语言,模块,图形编程

计算器vb源代码

计算器v b源代码 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

计算器vb源代码.txt性格本身没有好坏,乐观和悲观对这个世界都有贡献,前者发明了飞机,后者发明了降落伞。完全版的前后台代码... '请把下面的保存为 VERSION Begin Calculator BorderStyle = 1 'Fixed Single Caption = "计算器" ClientHeight = 2970 ClientLeft = 2580 ClientTop = 1485 ClientWidth = 3270 ClipControls = 0 'False BeginProperty Font Name = "System" Size = Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Icon = "":0000 LinkMode = 1 'Source LinkTopic = "Form1" MaxButton = 0 'False PaletteMode = 1 'UseZOrder ScaleHeight = 2970 ScaleWidth = 3270 WhatsThisHelp = -1 'True Begin Number Caption = "7" Height = 480 Index = 7 Left = 120 TabIndex = 7 Top = 600 Width = 480 End

用VB编写一个简单的图书管理系统

用VB编写一个简单的图书管理系统 Srl2011009(学号)石二辽(姓名)指导教师徐哲鑫 【摘要】笔者采用Visual Basic 为开发工具,设计一款具备友好的图形用户界面、简便操作的图书管理系统。充分利用计算机功能实现读者管理、书籍管理、借还书籍管理等信息的自动化控制,将使图书管理员从繁杂、重复的劳作中解放出来。 【关键词】图书;面向对象;软件工程 1概述 开发背景 用计算机管理图书馆里一切信息是一种计算机应用技术的创新,在计算机还未普及之前图书管理都是由图书管理人员手工记帐的方式来操作的.现在一般的图书馆都是采用计算机作为工具,使用实用的图书管理程序来帮助图书馆管理员进行更有效的图书管理。 图书管理系统产生的背景 图书管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于台数据库的建立和维护要求建立起数据一致性和完整性强、数据安全性好的库。而对于前端应用程序则要求应用程序具备功能完备、友好的图形用户界面、便捷使用等特点[1]。 系统功能要求的分析 开发本系统的总体任务是实现图书管理系统的系统化和自动化,帮助图书管理员更好更高效地完成图书管理工作,本系统要完成的功能主要有: 书籍管理部分:图书类别管理和图书信息管理。其中,书籍类别管理包括添加书籍类别、修改书籍类别、删除书籍类别等;书籍信息管理包括书籍信息的添加、修改、查询、删除等。 读者管理部分:读者类别管理和读者信息管理,读者类别管理包括读者类别添加、修改、删除等;读者信息包括读者添加读者信息、修改读者信息、查询读者信息、删除读者信息等。 借阅管理部分:借书信息管理和还书信息管理,借书信息管理、还书信息管理均包括其信息的添加、修改、查询等。 系统管理部分:添加管理员,修改密码,退出系统。 2开发环境及实现技术介绍

VB计算器源代码

Dim sum As Double Dim flag1 As Integer Dim flag2 As Integer Public wen As Double Private Sub Command19_Click() Command24_Click Operator = Index NewEntry = True End Sub Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 wen = 0 Label1.Caption = "" Case 1 Text1.Text = Str(wen) Case 2 If Text1.Text = "" Then wen = 0 Label1.Caption = "" Else wen = Val(Text1.Text) Label1.Caption = "M" End If Text1.Text = "" Case 3 wen = Val(Text1.Text) + wen Label1.Caption = "M" End Select End Sub Private Sub Command12_Click() If Text1.Text <> "" Then

Text1.Text = Text1.Text * -1 Else MsgBox "输入不能为空!", vbOKOnly, "警告" Text1.SetFocus End If End Sub Private Sub Command16_Click() If InStr(Text1.Text, ".") = 0 Then Text1.Text = Text1.Text & "." Else Exit Sub End If End Sub Private Sub Command21_Click() Text1.Text = Str(Sqr(Val(Text1.Text))) End Sub Private Sub Command22_Click() sum = Text1.Text flag1 = 5 flag2 = 1 End Sub Private Sub Command23_Click() Text1.Text = Str(Val(Text1.Text / 1)) flag2 = 0 End Sub Private Sub Command24_Click() Select Case (flag1) Case 1 Text1.Text = sum + Text1.Text Case 2 Text1.Text = sum - Text1.Text Case 3 Text1.Text = sum * Text1.Text Case 4 If Text1.Text = 0 Then df = MsgBox("除数不能为零!请重新输入.", vbOKOnly + vbInformation, "警告") Text1.Text = "" Text1.SetFocus Exit Sub

c语言推箱子代码

#include #include void map1(); void map2(); void map3(); void show(); void move(); void main(int argc,char*argv[]) { time_t a,b; time(&a); system("color 1E"); loop1: { system("cls");//刷屏 printf("\n\n\n\n\n\n\t\t\t\t欢迎进入推箱子游戏\n\n\t\t\t\t 请按a b c选择游戏\n\n\t\t\t\t 按 d 键结束"); int t=getch(); if(t=='d') { printf("\n\t\t\t "); } else { if(t=='a') { map1(); goto loop1; } if(t=='b') { map2(); goto loop1; } if(t=='c') { map3(); goto loop1; } else { printf("\n\n\t\t\t\t 请重新输入:"); goto loop1; } }

time(&b); printf("\n\n\n\n\t\t\t\t 游戏总共用时%.3d秒\n\t\t\t ",b-a); getch();//等待读取回车符以结束程序 } void map1() { time_t p,q,o; time(&p); int i=4,j=4,m=6,n=2,t=1,k=3; system("cls");//刷屏 system("color 2E"); int x=1,y=7; char z,a[9][9]= { /*为背景设置初始资料*/ {'#','#','#','#','#','#','#','#','#'}, {'#','#','#', 3, 0 , 0 , 0 , 1 ,'#'}, {'#','#', 0 , 0 , 0 ,'#', 0 ,'#','#'}, {'#', 0 , 0 ,'#', 0 , 0 , 5 , 0 ,'#'}, {'#', 0 , 5 , 5 , 3 , 0 , 0 , 0 ,'#'}, {'#','#', 0 ,'#', 0 , 0 ,'#','#','#'}, {'#','#', 3 , 0 , 0 , 0 ,'#','#','#'}, {'#','#','#','#','#','#','#','#','#'}, {'#','#','#','#','#','#','#','#','#'} }; show(a);//调用输出函数 loop://语句标号 move(a,&x,&y,i,j,m,n,t,k,&z); if(a[i][j]=='!'&&a[m][n]=='!'&&a[t][k]=='!') { system("cls");//刷屏 show(a); printf("\t\t\t\t YOU ARE WIN!\n"); time(&q); printf("\t\t\t\t\t 用时%.3d秒\n",q-p); printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t"); getch(); } else { time(&o); if(z=='d') { return;

VB简单计算器编程代码(附图)

课程设计说明书正文 一、题目:计算器的创作和相应程序的编写 二、本题的主要功能:通过计算器的创作熟悉各控件的属性和练习程序的编写。 三、程序截图: 四、源程序清单: Begin VB.Form Form1 Caption = "计算器" ClientHeight = 3765 ClientLeft = 165 ClientTop = 855 ClientWidth = 5355 Icon = "Form1.frx":0000 LinkTopic = "Form1" LockControls = -1 'True ScaleHeight = 3765 ScaleWidth = 5355 StartUpPosition = 3 '窗口缺省 Begin https://www.doczj.com/doc/018797417.html,mandButton Command4 Caption = "=" Height = 495 Left = 4470 TabIndex = 28 Top = 3060

Width = 735 End Begin https://www.doczj.com/doc/018797417.html,mandButton Command3 Caption = "1/x" Height = 495 Left = 4470 TabIndex = 27 Top = 2520 Width = 735 End Begin https://www.doczj.com/doc/018797417.html,mandButton Command2 Caption = "%" Height = 495 Left = 4470 TabIndex = 26 Top = 1980 Width = 735 End Begin https://www.doczj.com/doc/018797417.html,mandButton Command1 Caption = "sqrt" Height = 495 Left = 4470 TabIndex = 25 Top = 1440 Width = 735 End Begin https://www.doczj.com/doc/018797417.html,mandButton cmbDOT Caption = "." Height = 495 Left = 2910 TabIndex = 24 Top = 3060 Width = 735 End

图书馆管理系统源代码

源程序清单 1、文件名 login(login.frm) 功能说明:整个系统的登陆界面,需要输入用户名和登陆密码才能进入到系统中,进行借阅等操作。 源代码: Option Explicit Dim cnt As Integer Private Sub Command1_Click() Dim sql As String Dim rs_login As New ADODB.Recordset If Trim(Combo1.Text) = "" Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else sql = "select * from 系统管理 where 用户名='" & Combo1.Text & "'" rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else If Trim(rs_login.Fields(1)) = Trim(txtpwd.Text) Then userID = Combo1.Text rs_login.Close Unload Me form1.Show Else MsgBox "密码不正确", vbOKOnly + vbExclamation, "" txtpwd.SetFocus End If

End If cnt = cnt + 1 If cnt = 3 Then Unload Me End If Exit Sub End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim connectionstring As String connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _ "data source=book.mdb" conn.Open connectionstring cnt = 0 End Sub Private Sub txtuser_Change() End Sub 2、文件名 form1(form1.frm) 功能说明:整个系统的主界面,其中包括图书管理、读者管理、图书借阅管理、系统管理、关于,以及在这下面的子菜单。 源代码: Private Sub add_admin_Click() frmadduser.Show End Sub Private Sub add_back_book_Click() frmbackbookinfo.Show

用java实现推箱子(sokoban)游戏

推箱子游戏 一、功能描述: 可以通过面板上的按钮或是键盘上的pageup,pagedown键选择上下关 可以通过面板上按钮或是键盘上的Backspace键后退,一直后退自己想要的位置,知道游戏开始时的位置。 可以通过面板上的按钮或是键盘上的字母r重新开始当前关卡游戏。 可以在复选框内选择想要玩的关卡。 二、界面及运行截图

三、源代码(三部分) 1、地图类 package box; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader;//读取字符文件类FileReader import java.io.IOException; public class map { int[][] map=new int[20][20]; int manX,manY;

public map(int level){ String filepath="mapc/"+level+".txt"; File file = new File(filepath); FileReader fr = null;//利用FileReader流来读取一个文件中的数据 BufferedReader br = null;//字符读到缓存里 try { fr = new FileReader(file); br = new BufferedReader(fr); for (int i = 0; i < 15; i++){ String line = br.readLine();//以行为单位,一次读一行利用BufferedReader 的readLine,读取分行文本 byte[] point = line.getBytes();//将字符串转换为字节数组 for (int j = 0; j < 15; j++) { map[i][j] = point[j] - 48;// 根据ASCall码表要减掉30H(十进制的48) if (map[i][j] == 5 || map[i][j] == 6 || map[i][j] == 7|| map[i][j] == 8){ manX = i; manY = j; } } } } catch (FileNotFoundException e){ e.printStackTrace();//深层次的输出异常调用的流程 } catch (IOException e){ e.printStackTrace();//深层次的输出异常调用的流程 } catch(NullPointerException e){ e.printStackTrace();//深层次的输出异常调用的流程 } finally { if (br == null){ try{ br.close(); } catch (IOException e){ e.printStackTrace(); } br = null; } if (fr == null){ try {

推箱子源代码

#include #include #include #include #include using std::cout; using std::endl; #ifndef SOKOBAN_H_ //防止文件重复包含 #define SOKOBAN_H_ #include using std::queue; //每一步的数据类型 struct node { int bx, by; //箱子的坐标 int px, py; //人的坐标 }; //推箱子类 class Sokoban { private: enum {L = 15, H = 7}; char GameMap[H][L]; //地图 int Pex, Pey; //人的位置 int Boxx, Boxy; //箱子的位置 int Succeed, Prove; //是否成功到目的地, 是否可玩性 int dx[4], dy[4]; //方向数组 protected: char Empty; char People; char Box; char Block; char Target; int dir; //记录按键方向 node s, e; public: Sokoban(); //构建函数 ~Sokoban() {} //析构函数,即为inline //地图初始化函数 void Initial(); //箱子路劲验证函数,参数为箱子坐标(bx,by),人坐标(px,py) void Box_Bfs(int bx, int by, int px, int py); //人路劲验证函数,人所到的目的地(ex,ey)

vb编写的计算器代码

Option Explicit Const CC1 = 1E+28, CC2 = 0.000000000000001, CC3 = 100000000000000# Dim Op1, Op2 ' 预先输入操作数。 Dim DecFlag% ' 小数点存在吗? Dim Klast ' 指示上一次按键事件的类型。 Dim OpFlag ' 指示未完成的操作。 Dim Kedt% ' 指示键入状态,0-未操作,1-算过,2-改过Dim MemNum ' 存储器 Dim Temp2 ' Function sqr28(a As V ariant) As V ariant Dim c As Double c = Sqr(a) If c > CC3 Or c < CC2 Then sqr28 = c Else sqr28 = CDec(Sqr(a)) sqr28 = sqr28 - (sqr28 * sqr28 - a) / sqr28 * 0.5 End If End Function Function cur28(a As V ariant) As V ariant Dim t As V ariant, c As Double c = Abs(a) ^ (1 / 3) If c > 1000000000# Or c < 0.000000001 Then cur28 = c * Sgn(a) Else cur28 = CDec(c) * Sgn(a) t = cur28 * cur28 cur28 = cur28 - (cur28 * t - a) / t / 3 End If End Function ' 存入存储器 Private Sub BtMS_Click() If Kedt = 2 Then GetOp1 MemNum = Op1 LabMem.Visible = MemNum <> 0 Kedt = 1 End Sub ' 取出存储器数据 Private Sub BtMr_Click() CancelEntry_Click Op1 = MemNum

VBnet图书管理系统

目录 1登录窗体模块组成 (1) 2各窗体介绍 (1) 2.1登录窗口 (1) 2.2登录成功后的主窗口实现 (1) 2.3登录窗口 (1) 2.1登录窗口 (1) 2.1登录窗口 (1) 2.1登录窗口 (1) 2.1登录窗口 (1) 2.1登录窗口 (1) 2.1登录窗口 (1) 2.1登录窗口 (1) 2.1登录窗口 (1) 2.1登录窗口 (1) 2.1登录窗口 (1) I

I 1登录窗体模块组成 1登录窗口 2数据库连接定义窗口 3读者增加 4学生借书与查询历史窗口 5书籍借阅历史 6主窗口 7读者选择 8增加书籍 9书籍选择 10管理员增加 2各窗体介绍 在窗体Module1.vb 中定义了数据库的连接,每次读完数据库都将数据库连接关闭,在每次需要用到数据库的时候打开连接就可以了,以免以后每次用到数据库都要重新定义连接。其定义如下 Public constr As String = "User ID=sa; Password=; database=homework; server=(local)" Public mycon As New SqlConnection(constr) Public mycom As SqlCommand Public myda As SqlDataAdapter 2.1 登录窗口 图2登录窗口界面 其登录按钮代码为: If ComboBox1.Text = "" Or TextBox1.Text = "" Then MessageBox.Show("用户名或密码不能为空", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 此句的作用是判断用户名或者密码是否为空 Dim sqlstr As String = "select Count(*) from Administrator Where Name='"

VB图书管理系统

1、概述 为适应教育现代化的迫切要求,提高高校图书馆的现代化管理水平,提高图书馆使用效率,更好的配置图书资源,降低工作人员劳动强度;结合本人实际兴趣及知识,开发了此软件。 2、详细设计 2.1.系统功能模块图 2.2. 数据流图: 3.数据库设计 3.1 数据库概念结构设计:

3.2数据库逻辑结构的设计 包括有系统用户表yonghu、读者表duzhe、图书表tushu、借阅表jieshu、设置表shez。 图书表tushu 字段名称类型说明 图书编号文本 书名文本 作者文本 出版社文本 单价文本 本数文本 已借出数文本 借出次数文本 读者表duzhe 字段名称类型说明

借阅表jieshu 设置表shez

续借期限整型 最大借书数整型 4、主要功能模块设计 4.1.系统登陆界面设计 功能介绍: 用户选择用户名并输入密码,系统按用户名查看yonghu表,若密码正确,则按权限进入图书管理系统的主界面;若用户密码输入不正确,则系统提示出错,要求重新输入密码否则不得进入本系统。(注:还定义了一个模块名为 module1.bas ,pubyh和quanxian都是全局变量,一个保存用户名,一个保存权限、还有hsqx 、xjqx 、zdjss用于保存还书期限、续借期限、最大借书数。) 代码实现: Private Sub Command1_Click()

Adodc1.RecordSource = "select * from yonghu where 用户名='" & DataCombo1.Text & "' and 密码='" & Text1.Text & "'" Adodc1.Refresh If Adodc1.Recordset.EOF = False Then pubyh = DataCombo1.Text quanxian = Adodc1.Recordset.Fields("权限") Me.Hide MDIForm1.Show Else

推箱子游戏代码

#include #include #include #include #include #include typedef struct winer { int x,y; struct winer *p; }winer; char status [20][20]; char far *printScreen=(char far* )0xB8000000; void putoutChar(int y,int x,char ch,char fc,char bc); void printWall(int x, int y); void printBox(int x, int y); void printBoxDes(int x, int y); void printDestination(int x, int y); void printDestination1(int x,int y,winer **win,winer **pw); void printMan(int x, int y); void init(); winer *initStep1(); winer *initStep2(); winer *initStep3(); winer *initStep4(); void moveBoxSpacetoSpace(int x ,int y, char a); void moveBoxDestoSpace(int x ,int y, char a) ; void moveBoxSpacetoDes(int x, int y, char a); void moveBoxDestoDes(int x, int y, char a); int judge(int x, int y); void move(int x, int y, char a); void reset(int i); void putoutChar(int y,int x,char ch,char fc,char bc) { printScreen[(x*160)+(y<<1)+0]=ch; printScreen[(x*160)+(y<<1)+1]=(bc*16)+fc; } void printWall(int x,int y) { putoutChar(y-1,x-1,219,GREEN,BLACK); status[x][y]='w'; } void printBox(int x,int y) { putoutChar(y-1,x-1,10,WHITE,BLACK); status[x][y]='b'; } void printDestination1(int x,int y,winer **win,winer **pw) {

相关主题
文本预览
相关文档 最新文档