1、基于visual basic瓦斯报警监控系统*大学课程设计基于VB的瓦斯报警监控系统单 位 专 业 学 号 学生姓名 指导教师 完成日期2010 年 09月15 日摘要计算机技术的发展促进了程序语言的发展,特别是面向对象程序设计语言的出现,极大的改进了传统的程序设计方法。Visual basic 是一个功能强大的应用程序开发工具,它具有可视化的界面设计技术、面向对象的程序设计方法。事件驱动的编程机制。支持动态数据交换(DDE)技术和对象的链接与嵌入(OLE)技术,支持数据库的访问,支持多媒体和网络开发等特点。VB的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单建立应用程序
2、的GUI系统,但是又可以开发相当复杂的程序。VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组件的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。近几年煤矿事件频发 ,而矿难多与瓦斯浓度过高有关,因此对煤矿瓦斯浓度的监控并采取必要措施避免矿难的发生已刻不容缓。瓦斯报警监控系统是基于visual basic语言的瓦斯浓度监控系统,它能有效监测瓦斯浓度并能够及时报警。论文主要围绕visual basic语言的体系结构,介绍了瓦斯监控系统的总体分析与设计,包括用户管理、功能模块分析、数据获取和数据库设计。最后,利用dat
3、a report对报表打印进行了实现,并作了详细描述,主要采用图片与代码结合的方式详细地叙述了系统功能的实现。关键词:瓦斯监控系统,visual basic,数据库,控件,data report目录摘要 21系统功能需求分析 41.1系统概述 41.2组成及各模块功能 41.3运行环境 42系统设计 42.1设计思想 42.2流程图 43 系统实现 53.1 源代码 53.1.1 用户登录 53.1.2用户注册 63.1.3用户密码修改 63.1.4 绘制实时动态曲线 63.1.5 datagrid控件和数据库 63.2 界面抓图和系统使用 63.2.1 开始界面 63.2.2 用户登录界面
4、63.2.3 用户注册界面 63.2.4 用户密码修改界面 63.2.5 动态数据曲线界面 63.2.6 采用datagrid控件显示数据 63.2.7 报表打印 64 总结 65 参考文献 65.1 visual basic程序设计(第二版), 王学军 张玉梅 中国铁道出版社 65.2 Visual Basic 6.0绘制实时曲线 ,编程爱好者博客http:/ 61系统功能需求分析1.1系统概述瓦斯监控系统基于visual basic 语言设计,是集数据提取,数据描绘,数据处理,数据实现于一体的监控瓦斯浓度的系统,并能实现瓦斯浓度超标报警的功能。系统引入了vb的基本功能及模块,成功运用acc
5、ess数据库和data report报表。1.2组成及各模块功能 Access实现了数据的存储、提取功能,构成了该系统的核心部分,用户的管理和瓦斯浓度的监测都用到了该组件。Vb庞大的控件和模块为该系统提供了支持,data report实现了报表的打印,使得瓦斯浓度数据更加直观的展现并能够打印。1.3运行环境 该系统既可以在visual basic程序中运行,也可以转换成exe格式,能够在任意环境下不需安装运行。2系统设计2.1设计思想近几年瓦斯事故频繁发生,而基于visual basic语言能够实现瓦斯浓度的监控。2.2流程图瓦斯报警监控系统用户管理数据处理数据库用户删除用户密码修改用户登录报
6、表制作实时曲线绘制随即函数监控报警数据获取数据打印用户注册3 系统实现3.1 源代码3.1.1 用户登录与数据库链接,实现了用户名和密码的验证登陆Dim trytimes As IntegerPrivate Sub Command1_Click() If Text1.Text = Or Text2.Text = Then MsgBox 用户名或密码不能为空,请重新输入!, vbOKOnly + vbExclamation, 警告 Text1.SetFocus Else Adodc1.RecordSource = select * from 用户表 where 用户名= & Text1.Text
7、 & and 密码= & Text2.Text & Adodc1.Refresh If Adodc1.Recordset.EOF = True Then MsgBox 用户名或密码输入错误,请重新输入!, vbOKOnly + vbExclamation, 警告 Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) Text1.SetFocus trytimes = trytimes + 1 If trytimes = 3 Then MsgBox 您已经三次尝试本系统,均不成功,系统将关闭, vbOKOnly + vbExclamation,
8、 警告 Unload Me End If Else Me.Hide Form6.Show End If End IfEnd SubPrivate Sub Command2_Click() EndEnd SubPrivate Sub Command3_Click() Form2.Show Form2.Text1.SetFocusEnd SubPrivate Sub Command4_Click() Me.Hide Form3.ShowEnd SubPrivate Sub Timer1_Timer()End SubPrivate Sub Command5_Click()Me.HideForm6.S
9、howEnd Sub3.1.2用户注册采用数据库实现了用户的注册Private Sub Command1_Click() If Text1.Text = Then MsgBox 请输入用户名!, vbOKOnly + vbExclamation, 信息提示 Text1.SetFocus Else Adodc1.RecordSource = select * from 用户表 where 用户名= & Text1.Text & Adodc1.Refresh If Not Adodc1.Recordset.EOF Then MsgBox 用户名已存在,请重新输入用户名!, vbOKOnly + v
10、bExclamation, 信息提示 Text1.SetFocus Text1.Text = : Text2.Text = : Text3.Text = Else If Text2.Text Text3.Text Then MsgBox 两次输入密码不一样,请确认!, vbOKOnly + vbExclamation, 警告 Text2.SetFocus Text2.Text = : Text3.Text = Else Adodc1.RecordSource = select * from 用户表 With Adodc1.Recordset Adodc1.Recordset.AddNew Ad
11、odc1.Recordset.Fields(用户名) = Text1.Text Adodc1.Recordset.Fields(密码) = Text2.Text Adodc1.Recordset.Update Adodc1.Recordset.Close End With MsgBox 添加用户成功!, vbOKOnly + vbExclamation, 添加用户 Me.Hide Form1.Show End If End If End If End SubPrivate Sub Command2_Click() Me.Hide Form1.ShowEnd Sub3.1.3用户密码修改数据库的
12、应用实现了用户密码的修改Private Sub Command1_Click()If Text1.Text = Then MsgBox 请输入用户名!, vbOKOnly + vbExclamation, 信息提示 Text1.SetFocusElse Adodc1.RecordSource = select * from 用户表 where 用户名= & Text1.Text & and 密码= & Text2.Text & Adodc1.Refresh If Adodc1.Recordset.EOF = True Then MsgBox 用户名或密码输入错误,请重新输入!, vbOKOnl
13、y + vbExclamation, 警告 Text1.SetFocus Text1.Text = : Text2.Text = : Text3.Text = : Text4.Text = Else If Text3.Text Text4.Text Then MsgBox 密码输入不正确,请确认, vbOKOnly + vbExclamation, 信息提示 Text3.SetFocus Text3.Text = : Text4.Text = Else Adodc1.RecordSource = select * from 用户表 where 用户名= & Text1.Text & Adodc
14、1.Refresh Adodc1.Recordset.Fields(密码) = Text3.Text Adodc1.Recordset.Update MsgBox 密码修改成功!, vbOKOnly + vbExclamation, 密码修改 Text1.Text = : Text2.Text = : Text3.Text = : Text4.Text = Me.Hide Form1.Show End If End IfEnd IfEnd SubPrivate Sub Command2_Click() Me.Hide Form1.ShowEnd Sub3.1.4 绘制实时动态曲线采用数据库,p
15、icture box控件,line方法实现实时动态曲线的描绘,采用随机函数模拟瓦斯浓度Option ExplicitDim DataFromCom As Integer 从串口读过来的实时值Dim DataFromComLast As Integer 上次的串口值Dim TimeCount As IntegerDim a As Integer 从串口读过来的实时值Dim b As Integer 上次的串口值Dim c As IntegerDim d As Integer 从串口读过来的实时值Dim e As Integer 上次的串口值Dim f As IntegerPrivate Sub
16、PicScale(picX As PictureBox) 调整图像框的坐标系picX.Scale (0, picX.ScaleHeight)-(picX.ScaleWidth, -picX.ScaleHeight)End SubPrivate Sub PicMidleLine(picX As PictureBox) 在图像框中画一条中线picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen 画出中线End SubPrivate Sub DrawRealLine(picX As PictureBox, TIMECOUNTX As Integer, DataF
17、romComX As Integer, DataFromComLastX As Integer, ax As Integer, bx As Integer, cx As Integer, dx As Integer, ex As Integer, fx As Integer)If TIMECOUNTX = 0 ThenpicX.Line (TIMECOUNTX - 1) * 10, DataFromComLastX)-(TIMECOUNTX * 10, DataFromComX), vbWhiteEnd IfIf ax = 0 ThenpicX.Line (ax - 1) * 10, cx)-
18、(ax * 10, bx), vbRedEnd IfIf dx = 0 ThenpicX.Line (dx - 1) * 10, fx)-(dx * 10, ex), vbYellowEnd IfEnd SubPrivate Sub Command1_Click()Unload MeForm4.ShowEnd SubPrivate Sub Command2_Click()Unload MeForm1.Showend SubPrivate Sub Pic_Click()End SubPrivate Sub Timer1_Timer()DataFromComLast = DataFromComc
19、= bf = eRandomizeDataFromCom = 3000 * Rnd + 1000Randomizeb = 3000 * Rnd + 1000Randomizee = 3000 * Rnd + 1000If DataFromCom 3900 ThenMsgBox 一区瓦斯浓度超标,请采取措施, vbOKOnly, 警告 End If If b 3900 ThenMsgBox 二区瓦斯浓度超标,请采取措施, vbOKOnly, 警告 End If If e 3900 ThenMsgBox 三区瓦斯浓度超标,请采取措施, vbOKOnly, 警告 End Ifa = a + 5d =
20、 d + 5TimeCount = TimeCount + 5DrawRealLine Pic, TimeCount, DataFromCom, DataFromComLast, a, b, c, d, e, f 画出实时的曲线End SubPrivate Sub Timer2_Timer()Label3.Caption = Hour(Now) & : & Minute(Now) & : & Second(Now)End SubPrivate Sub Timer3_Timer() Adodc1.RecordSource = select * from 瓦斯浓度表 where 监测点= & Te
21、xt1.Text & Adodc1.RecordSource = select * from 瓦斯浓度表 where 时间= & Hour(Now) & : & Minute(Now) & : & Second(Now) & Adodc1.RecordSource = select * from 瓦斯浓度表 where 瓦斯浓度= & DataFromCom & ” Adodc1.Refresh Adodc1.RecordSource = select * from 瓦斯浓度表 With Adodc1.Recordset Adodc1.Recordset.AddNew Adodc1.Recor
22、dset.Fields(时间) = Hour(Now) & : & Minute(Now) & : & Second(Now) Adodc1.Recordset.Fields(监测点) = Text1.Text Adodc1.Recordset.Fields(瓦斯浓度) = DataFromCom Adodc1.Recordset.Update End WithEnd SubPrivate Sub Timer4_Timer()Adodc1.RecordSource = select * from 瓦斯浓度表 where 监测点= & Text2.Text & Adodc1.RecordSour
23、ce = select * from 瓦斯浓度表 where 时间= & Hour(Now) & : & Minute(Now) & : & Second(Now) & Adodc1.RecordSource = select * from 瓦斯浓度表 where 瓦斯浓度= & b & Adodc1.Refresh Adodc1.RecordSource = select * from 瓦斯浓度表 With Adodc1.Recordset Adodc1.Recordset.AddNew Adodc1.Recordset.Fields(时间) = Hour(Now) & : & Minute
24、(Now) & : & Second(Now) Adodc1.Recordset.Fields(监测点) = Text2.Text Adodc1.Recordset.Fields(瓦斯浓度) = b Adodc1.Recordset.Update End WithEnd SubPrivate Sub Timer5_Timer()Adodc1.RecordSource = select * from 瓦斯浓度表 where 监测点= & Text3.Text & Adodc1.RecordSource = select * from 瓦斯浓度表 where 时间= & Hour(Now) & :
25、 & Minute(Now) & : & Second(Now) & Adodc1.RecordSource = select * from 瓦斯浓度表 where 瓦斯浓度= & e & Adodc1.Refresh Adodc1.RecordSource = select * from 瓦斯浓度表 With Adodc1.Recordset Adodc1.Recordset.AddNew Adodc1.Recordset.Fields(时间) = Hour(Now) & : & Minute(Now) & : & Second(Now) Adodc1.Recordset.Fields(监测
26、点) = Text3.Text Adodc1.Recordset.Fields(瓦斯浓度) = e Adodc1.Recordset.Update End WithEnd Sub3.1.5 datagrid控件和数据库Private Sub Command1_Click()DataReport1.ShowEnd SubPrivate Sub Command2_Click()Me.HideForm6.ShowEnd Sub3.2 界面抓图和系统使用3.2.1 开始界面使用photoshop图片处理软件制作3.2.2 用户登录界面登录界面由用户名、密码、登录按钮、退出按钮、注册按钮、修改密码按钮组
27、成。登录时写入用户名和密码单击登录按钮进行登录,修改密码和注册新用户直接按相应的按钮。3.2.3 用户注册界面注册界面由用户名、密码、确认密码组成,注册用户是输入用户名和密码,确认密码和密码要相同,然后单击注册。3.2.4 用户密码修改界面用户密码修改界面由用户名、原密码、密码、确认密码、确认键组成。输入用户名和原来密码 ,再输入新密码,单击确认键。3.2.5 动态数据曲线界面动态函数曲线界面由pictures box控件、打印报表、返回键组成。在pictures box中以实时动态函数曲线的形式展示了瓦斯浓度。独有的监控系统让使用者轻松发现瓦斯浓度超标情况 ,采取有效措施。单击打印报表键能够
28、实现瓦斯浓度数据的打印。3.2.6 采用datagrid控件显示数据在瓦斯浓度表上清晰的显示出来各个监测点在各个时间的瓦斯浓度 ,为报表的打印做好了基础。单击打印报表即可进行报表的打印。3.2.7 报表打印datareport控件和dataenvironment控件的结合,实现报表打印,相应数据清晰显示。关闭报表时只需关闭报表窗口即可 。4 总结选题时,瓦斯报警监控系统让我眼睛一亮,这是一个具有超级现实意义的系统,有很强的实用型,引起了我的兴趣,毫不犹豫的选择了它。咋一接触,发现它并没有开始想象的让人心动,它的核心需要数据库知识,需要报表打印,这都是从来没有学过的,而最为困难的是实现数据已动态
29、曲线形式体现。我暗自为自己的选择后悔,但他的困难又激发了我征服她它的欲望,对他的的编程就如同是一条荆棘之路。每一点都需要学习因为从未接触过数据库、报表、实时曲线,从头开始。年前学弟基础也有部分遗忘,让我的编程难上加难。让我一度不知所措、急躁不安。前几天仅仅完成了用户的管理部分,后面的硬骨头毫无进展。仅仅实时动态曲线的知识就让我查阅了两天。初步学会了line方法和picture box控件的使用。我班的国伟一步一步脚踏实地地做,不会的就查书,在我之前就做好了用户管理的数据库,让我新生敬意,也让我很是惭愧,感觉自己太不用功了。第一次阶段性检查,我做的不好,成绩不高,我暗下决心一定要努力做的尽可能完美,取得一个较好的成绩。因此我采用了不同于其他两个同学的动态实时曲线。15号下午,我完成了程序的设计,对自己的设计颇为满意。很不幸,晚上我选的那台机器竟然有病毒,1k快捷方式病毒把我的文件都给变成快捷方式了。我满怀信心的用1k快捷杀毒软件查杀了我的U盘,但是我的大部分文件都被删除了,设计的程序就在其中 。我顿时紧张起来,这可是我花了9天时间做的啊,最重要的是老师还要检查,而我第一阶段检查的成绩很差。我尝试着在网络上查找一些可以恢复文件的方法,最终我用金山U盘专杀把我的文件给修复了,不过是下午之
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1