基于visual basic瓦斯报警监控系统.docx

上传人:b****4 文档编号:4680630 上传时间:2022-12-07 格式:DOCX 页数:18 大小:524.65KB
下载 相关 举报
基于visual basic瓦斯报警监控系统.docx_第1页
第1页 / 共18页
基于visual basic瓦斯报警监控系统.docx_第2页
第2页 / 共18页
基于visual basic瓦斯报警监控系统.docx_第3页
第3页 / 共18页
基于visual basic瓦斯报警监控系统.docx_第4页
第4页 / 共18页
基于visual basic瓦斯报警监控系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于visual basic瓦斯报警监控系统.docx

《基于visual basic瓦斯报警监控系统.docx》由会员分享,可在线阅读,更多相关《基于visual basic瓦斯报警监控系统.docx(18页珍藏版)》请在冰豆网上搜索。

基于visual basic瓦斯报警监控系统.docx

基于visualbasic瓦斯报警监控系统

******大学课程设计

基于VB的瓦斯报警监控系统

 

 

单位

专业

学号

学生姓名

指导教师

 

完成日期2010年09月15日

摘要

计算机技术的发展促进了程序语言的发展,特别是面向对象程序设计语言的出现,极大的改进了传统的程序设计方法。

Visualbasic是一个功能强大的应用程序开发工具,它具有可视化的界面设计技术、面向对象的程序设计方法。

事件驱动的编程机制。

支持动态数据交换(DDE)技术和对象的链接与嵌入(OLE)技术,支持数据库的访问,支持多媒体和网络开发等特点。

VB的中心思想就是要便于程序员使用,无论是新手或者专家。

VB使用了可以简单建立应用程序的GUI系统,但是又可以开发相当复杂的程序。

VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组件的属性和方法。

因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。

近几年煤矿事件频发,而矿难多与瓦斯浓度过高有关,因此对煤矿瓦斯浓度的监控并采取必要措施避免矿难的发生已刻不容缓。

瓦斯报警监控系统是基于visualbasic语言的瓦斯浓度监控系统,它能有效监测瓦斯浓度并能够及时报警。

论文主要围绕visualbasic语言的体系结构,介绍了瓦斯监控系统的总体分析与设计,包括用户管理、功能模块分析、数据获取和数据库设计。

最后,利用datareport对报表打印进行了实现,并作了详细描述,主要采用图片与代码结合的方式详细地叙述了系统功能的实现。

 

关键词:

瓦斯监控系统,visualbasic,数据库,控件,datareport

目录

摘要2

1系统功能需求分析4

1.1系统概述4

1.2组成及各模块功能4

1.3运行环境4

2系统设计4

2.1设计思想4

2.2流程图4

3系统实现5

3.1源代码5

3.1.1用户登录5

3.1.2用户注册6

3.1.3用户密码修改6

3.1.4绘制实时动态曲线6

3.1.5datagrid控件和数据库6

3.2界面抓图和系统使用6

3.2.1开始界面6

3.2.2用户登录界面6

3.2.3用户注册界面6

3.2.4用户密码修改界面6

3.2.5动态数据曲线界面6

3.2.6采用datagrid控件显示数据6

3.2.7报表打印6

4总结6

5参考文献6

5.1《visualbasic程序设计》(第二版),王学军张玉梅中国铁道出版社6

5.2《VisualBasic6.0绘制实时曲线》,编程爱好者博客http:

//6

1系统功能需求分析

1.1系统概述

瓦斯监控系统基于visualbasic语言设计,是集数据提取,数据描绘,数据处理,数据实现于一体的监控瓦斯浓度的系统,并能实现瓦斯浓度超标报警的功能。

系统引入了vb的基本功能及模块,成功运用access数据库和datareport报表。

1.2组成及各模块功能

Access实现了数据的存储、提取功能,构成了该系统的核心部分,用户的管理和瓦斯浓度的监测都用到了该组件。

Vb庞大的控件和模块为该系统提供了支持,datareport实现了报表的打印,使得瓦斯浓度数据更加直观的展现并能够打印。

1.3运行环境

该系统既可以在visualbasic程序中运行,也可以转换成exe格式,能够在任意环境下不需安装运行。

2系统设计

2.1设计思想

近几年瓦斯事故频繁发生,而基于visualbasic语言能够实现瓦斯浓度的监控。

2.2流程图

瓦斯报警监控系统

用户管理

数据处理

数据库

用户删除

用户密码修改

用户登录

报表制作

实时曲线绘制

随即函数

监控报警

数据获取

数据打印

用户注册

3系统实现

3.1源代码

3.1.1用户登录

与数据库链接,实现了用户名和密码的验证登陆

DimtrytimesAsInteger

PrivateSubCommand1_Click()

IfText1.Text=""OrText2.Text=""Then

MsgBox"用户名或密码不能为空,请重新输入!

",vbOKOnly+vbExclamation,"警告"

Text1.SetFocus

Else

Adodc1.RecordSource="select*from用户表where用户名='"&Text1.Text&"'and密码='"&Text2.Text&"'"

Adodc1.Refresh

IfAdodc1.Recordset.EOF=TrueThen

MsgBox"用户名或密码输入错误,请重新输入!

",vbOKOnly+vbExclamation,"警告"

Text1.SelStart=0

Text1.SelLength=Len(Text1.Text)

Text1.SetFocus

trytimes=trytimes+1

Iftrytimes>=3Then

MsgBox"您已经三次尝试本系统,均不成功,系统将关闭",vbOKOnly+vbExclamation,"警告"

UnloadMe

EndIf

Else

Me.Hide

Form6.Show

EndIf

EndIf

EndSub

PrivateSubCommand2_Click()

End

EndSub

PrivateSubCommand3_Click()

Form2.Show

Form2.Text1.SetFocus

EndSub

PrivateSubCommand4_Click()

Me.Hide

Form3.Show

EndSub

PrivateSubTimer1_Timer()

EndSub

PrivateSubCommand5_Click()

Me.Hide

Form6.Show

EndSub

3.1.2用户注册

采用数据库实现了用户的注册

PrivateSubCommand1_Click()

IfText1.Text=""Then

MsgBox"请输入用户名!

",vbOKOnly+vbExclamation,"信息提示"

Text1.SetFocus

Else

Adodc1.RecordSource="select*from用户表where用户名='"&Text1.Text&"'"

Adodc1.Refresh

IfNotAdodc1.Recordset.EOFThen

MsgBox"用户名已存在,请重新输入用户名!

",vbOKOnly+vbExclamation,"信息提示"

Text1.SetFocus

Text1.Text="":

Text2.Text="":

Text3.Text=""

Else

IfText2.Text<>Text3.TextThen

MsgBox"两次输入密码不一样,请确认!

",vbOKOnly+vbExclamation,"警告"

Text2.SetFocus

Text2.Text="":

Text3.Text=""

Else

Adodc1.RecordSource="select*from用户表"

WithAdodc1.Recordset

Adodc1.Recordset.AddNew

Adodc1.Recordset.Fields("用户名")=Text1.Text

Adodc1.Recordset.Fields("密码")=Text2.Text

Adodc1.Recordset.Update

Adodc1.Recordset.Close

EndWith

MsgBox"添加用户成功!

",vbOKOnly+vbExclamation,"添加用户"

Me.Hide

Form1.Show

EndIf

EndIf

EndIf

EndSub

PrivateSubCommand2_Click()

Me.Hide

Form1.Show

EndSub

3.1.3用户密码修改

数据库的应用实现了用户密码的修改

PrivateSubCommand1_Click()

IfText1.Text=""Then

MsgBox"请输入用户名!

",vbOKOnly+vbExclamation,"信息提示"

Text1.SetFocus

Else

Adodc1.RecordSource="select*from用户表where用户名='"&Text1.Text&"'and密码='"&Text2.Text&"'"

Adodc1.Refresh

IfAdodc1.Recordset.EOF=TrueThen

MsgBox"用户名或密码输入错误,请重新输入!

",vbOKOnly+vbExclamation,"警告"

Text1.SetFocus

Text1.Text="":

Text2.Text="":

Text3.Text="":

Text4.Text=""

Else

IfText3.Text<>Text4.TextThen

MsgBox"密码输入不正确,请确认",vbOKOnly+vbExclamation,"信息提示"

Text3.SetFocus

Text3.Text="":

Text4.Text=""

Else

Adodc1.RecordSource="select*from用户表where用户名='"&Text1.Text&"'"

Adodc1.Refresh

Adodc1.Recordset.Fields("密码")=Text3.Text

Adodc1.Recordset.Update

MsgBox"密码修改成功!

",vbOKOnly+vbExclamation,"密码修改"

Text1.Text="":

Text2.Text="":

Text3.Text="":

Text4.Text=""

Me.Hide

Form1.Show

EndIf

EndIf

EndIf

EndSub

PrivateSubCommand2_Click()

Me.Hide

Form1.Show

EndSub

3.1.4绘制实时动态曲线

采用数据库,picturebox控件,line方法实现实时动态曲线的描绘,采用随机函数模拟瓦斯浓度

OptionExplicit

DimDataFromComAsInteger'从串口读过来的实时值

DimDataFromComLastAsInteger'上次的串口值

DimTimeCountAsInteger

DimaAsInteger'从串口读过来的实时值

DimbAsInteger'上次的串口值

DimcAsInteger

DimdAsInteger'从串口读过来的实时值

DimeAsInteger'上次的串口值

DimfAsInteger

PrivateSubPicScale(picXAsPictureBox)'调整图像框的坐标系

picX.Scale(0,picX.ScaleHeight)-(picX.ScaleWidth,-picX.ScaleHeight)

EndSub

PrivateSubPicMidleLine(picXAsPictureBox)'在图像框中画一条中线

picX.Line(0,0)-(picX.ScaleWidth,0),vbGreen'画出中线

EndSub

PrivateSubDrawRealLine(picXAsPictureBox,TIMECOUNTXAsInteger,DataFromComXAsInteger,DataFromComLastXAsInteger,axAsInteger,bxAsInteger,cxAsInteger,dxAsInteger,exAsInteger,fxAsInteger)

IfTIMECOUNTX>=0Then

picX.Line((TIMECOUNTX-1)*10,DataFromComLastX)-(TIMECOUNTX*10,DataFromComX),vbWhite

EndIf

Ifax>=0Then

picX.Line((ax-1)*10,cx)-(ax*10,bx),vbRed

EndIf

Ifdx>=0Then

picX.Line((dx-1)*10,fx)-(dx*10,ex),vbYellow

EndIf

EndSub

PrivateSubCommand1_Click()

UnloadMe

Form4.Show

EndSub

PrivateSubCommand2_Click()

UnloadMe

Form1.Show

endSub

PrivateSubPic_Click()

EndSub

PrivateSubTimer1_Timer()

DataFromComLast=DataFromCom

c=b

f=e

Randomize

DataFromCom=3000*Rnd+1000

Randomize

b=3000*Rnd+1000

Randomize

e=3000*Rnd+1000

IfDataFromCom>3900Then

MsgBox"一区瓦斯浓度超标,请采取措施",vbOKOnly,"警告"

EndIf

Ifb>3900Then

MsgBox"二区瓦斯浓度超标,请采取措施",vbOKOnly,"警告"

EndIf

Ife>3900Then

MsgBox"三区瓦斯浓度超标,请采取措施",vbOKOnly,"警告"

EndIf

a=a+5

d=d+5

TimeCount=TimeCount+5

DrawRealLinePic,TimeCount,DataFromCom,DataFromComLast,a,b,c,d,e,f'画出实时的曲线

EndSub

PrivateSubTimer2_Timer()

Label3.Caption=Hour(Now)&":

"&Minute(Now)&":

"&Second(Now)

EndSub

PrivateSubTimer3_Timer()

Adodc1.RecordSource="select*from瓦斯浓度表where监测点='"&Text1.Text&"'"

Adodc1.RecordSource="select*from瓦斯浓度表where时间='"&Hour(Now)&":

"&Minute(Now)&":

"&Second(Now)&"'"

Adodc1.RecordSource="select*from瓦斯浓度表where瓦斯浓度='"&DataFromCom&"'”

Adodc1.Refresh

Adodc1.RecordSource="select*from瓦斯浓度表"

WithAdodc1.Recordset

Adodc1.Recordset.AddNew

Adodc1.Recordset.Fields("时间")=Hour(Now)&":

"&Minute(Now)&":

"&Second(Now)

Adodc1.Recordset.Fields("监测点")=Text1.Text

Adodc1.Recordset.Fields("瓦斯浓度")=DataFromCom

Adodc1.Recordset.Update

EndWith

EndSub

PrivateSubTimer4_Timer()

Adodc1.RecordSource="select*from瓦斯浓度表where监测点='"&Text2.Text&"'"

Adodc1.RecordSource="select*from瓦斯浓度表where时间='"&Hour(Now)&":

"&Minute(Now)&":

"&Second(Now)&"'"

Adodc1.RecordSource="select*from瓦斯浓度表where瓦斯浓度='"&b&"'"

Adodc1.Refresh

Adodc1.RecordSource="select*from瓦斯浓度表"

WithAdodc1.Recordset

Adodc1.Recordset.AddNew

Adodc1.Recordset.Fields("时间")=Hour(Now)&":

"&Minute(Now)&":

"&Second(Now)

Adodc1.Recordset.Fields("监测点")=Text2.Text

Adodc1.Recordset.Fields("瓦斯浓度")=b

Adodc1.Recordset.Update

EndWith

EndSub

PrivateSubTimer5_Timer()

Adodc1.RecordSource="select*from瓦斯浓度表where监测点='"&Text3.Text&"'"

Adodc1.RecordSource="select*from瓦斯浓度表where时间='"&Hour(Now)&":

"&Minute(Now)&":

"&Second(Now)&"'"

Adodc1.RecordSource="select*from瓦斯浓度表where瓦斯浓度='"&e&"'"

Adodc1.Refresh

Adodc1.RecordSource="select*from瓦斯浓度表"

WithAdodc1.Recordset

Adodc1.Recordset.AddNew

Adodc1.Recordset.Fields("时间")=Hour(Now)&":

"&Minute(Now)&":

"&Second(Now)

Adodc1.Recordset.Fields("监测点")=Text3.Text

Adodc1.Recordset.Fields("瓦斯浓度")=e

Adodc1.Recordset.Update

EndWith

EndSub

3.1.5datagrid控件和数据库

PrivateSubCommand1_Click()

DataReport1.Show

EndSub

PrivateSubCommand2_Click()

Me.Hide

Form6.Show

EndSub

3.2界面抓图和系统使用

3.2.1开始界面

使用photoshop图片处理软件制作

3.2.2用户登录界面

登录界面由用户名、密码、登录按钮、退出按钮、注册按钮、修改密码按钮组成。

登录时写入用户名和密码单击登录按钮进行登录,修改密码和注册新用户直接按相应的按钮。

3.2.3用户注册界面

注册界面由用户名、密码、确认密码组成,注册用户是输入用户名和密码,确认密码和密码要相同,然后单击注册。

3.2.4用户密码修改界面

用户密码修改界面由用户名、原密码、密码、确认密码、确认键组成。

输入用户名和原来密码,再输入新密码,单击确认键。

3.2.5动态数据曲线界面

动态函数曲线界面由picturesbox控件、打印报表、返回键组成。

在picturesbox中以实时动态函数曲线的形式展示了瓦斯浓度。

独有的监控系统让使用者轻松发现瓦斯浓度超标情况,采取有效措施。

单击打印报表键能够实现瓦斯浓度数据的打印。

3.2.6采用datagrid控件显示数据

在瓦斯浓度表上清晰的显示出来各个监测点在各个时间的瓦斯浓度,为报表的打印做好了基础。

单击打印报表即可进行报表的打印。

3.2.7报表打印

datareport控件和dataenvironment控件的结合,实现报表打印,相应数据清晰显示。

关闭报表时只需关闭报表窗口即可。

4总结

选题时,瓦斯报警监控系统让我眼睛一亮,这是一个具有超级现实意义的系统,有很强的实用型,引起了我的兴趣,毫不犹豫的选择了它。

咋一接触,发现它并没有开始想象的让人心动,它的核心需要数据库知识,需要报表打印,这都是从来没有学过的,而最为困难的是实现数据已动态曲线形式体现。

我暗自为自己的选择后悔,但他的困难又激发了我征服她它的欲望,对他的的编程就如同是一条荆棘之路。

每一点都需要学习因为从未接触过数据库、报表、实时曲线,从头开始。

年前学弟基础也有部分遗忘,让我的编程难上加难。

让我一度不知所措、急躁不安。

前几天仅仅完成了用户的管理部分,后面的硬骨头毫无进展。

仅仅实时动态曲线的知识就让我查阅了两天。

初步学会了line方法和picturebox控件的使用。

我班的国伟一步一步脚踏实地地做,不会的就查书,在我之前就做好了用户管理的数据库,让我新生敬意,也让我很是惭愧,感觉自己太不用功了。

第一次阶段性检查,我做的不好,成绩不高,我暗下决心一定要努力做的尽可能完美,取得一个较好的成绩。

因此我采用了不同于其他两个同学的动态实时曲线。

15号下午,我完成了程序的设计,对自己的设计颇为满意。

很不幸,晚上我选的那台机器竟然有病毒,1k快捷方式病毒把我的文件都给变成快捷方式了。

我满怀信心的用1k快捷杀毒软件查杀了我的U盘,但是我的大部分文件都被删除了,设计的程序就在其中。

我顿时紧张起来,这可是我花了9天时间做的啊,最重要的是老师还要检查,而我第一阶段检查的成绩很差。

我尝试着在网络上查找一些可以恢复文件的方法,最终我用金山U盘专杀把我的文件给修复了,不过是下午之

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

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

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