电子信息课程设计报告

上海电力学院

信息网络技术设计

课程设计报告

题 目: 门禁系统的设计

姓 名: 邱苗苗

学 号: 20101918

院 系: 电子与信息工程学院

专业年级: 电子信息工程 2010 级

同组成员:

2014 年 1 月 14 日

一.设计目的

本课程设计的目的是综合应用VB.NET 软件以及SQL 数据库建立门禁管理系统应用软件。

二.设计平台

硬件:IC 读卡器、IC 卡与PC 机

软件:VS2008,SQL Server2008

三.设计内容与要求

本课程设计的门禁管理系统的设计分为两部分:VB.NET 编写的应用软件以及SQL 数据库。SQL 数据库用来建立VS 中需要连接的各类表。软件主要包括虚拟串口以及模拟IC 卡刷卡机,可以完成计算机串口与IC 卡硬件设备的通信功能、门禁管理数据库的操作功能以及根据读入的IC 卡数据显示相应的数据列表的功能。

四.设计步骤

新建表,表名如图1所示。

1. 建立数据库

图1 表

2. 启动VS2008,新建项目“门禁管理系统”,添加5个Windows 窗体(帮助0,查询结果,5登录2,选择4,准备1) ,添加1个模块文件(Module1)

3. 页面设计和编程

(1)准备1(图2)

添加label ,timer, ,ProcessBar 控件,引导进入登录界面

图2. 准备1

(2)登录2(图3 )

添加label ,textbox ,button ,growbox 控件,以及SqlCommand1 ,SqlDataAdapter 管理员生成的DataSet1管理员1(连接SQL 中的管理员表)和SqlConnection1。

图3 登录2

不可见控件(图4):

图4不可见控件

当管理员或者密码输入错误时,显示对话框(图5)

当管理员或者密码为空时,显示对话框(图6)

图5. 错误 图6不能为空

代码:

Public Class 登录2

Private Sub 登录2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load

Label 时间.Text = Now

TextBox 管理员.Text = ""

TextBox 密码.Text = ""

End Sub

Private Sub Button 确定_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 确定.Click

If TextBox管理员.Text.Length 0 Or TextBox密码.Text.Length 0 Then

SqlConnection1.Open()

SqlCommand1.Connection = SqlConnection1

DataSet 管理员1.Clear()

SqlDataAdapter 管理员.SelectCommand.CommandText = "select*from 管理员 where 管理员='" & TextBox管理员.Text & "'and 密码='" & TextBox密码.Text & "'"

SqlDataAdapter 管理员.Fill(DataSet管理员1)

If DataSet管理员1. 管理员.Rows.Count = 1 Then

frm4.Show()

Else

MsgBox(" 管理员或密码错误"

, MsgBoxStyle.Critical)

End If

DataSet 管理员1.Clear()

SqlConnection1.Close()

Else

MessageBox.Show(" 管理员和密码不能为空" )

End If

End Sub

Private Sub Button 刷新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 刷新.Click

TextBox 管理员.Text = ""

TextBox 密码.Text = ""

End Sub

(3)选择4(图7)

添加label ,button ,growbox ,combobox ,timer 控件,以及SqlCommand1 ,SqlDataAdapter 进出资料生成的DataSet1进出资料1(连接SQL 中的进出资料表)和SqlConnection1。

图7 选择4

不可见控件:(图8)

连接串口后,填写“机器编号”,选择串口编号,然后刷卡,出现数据。(图9)

图9. 数据

代码:Public Class 选择4

Public Readstr As String

Private Sub Button 确定_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 确定.Click

If TextBox机器编号.Text.Length 0 And ComboBox串口编号.Text.Length 0 Then

Select Case ComboBox串口编号.Text

Case "COM2"

AxMSComm1.CommPort = 2

Case "COM1"

AxMSComm1.CommPort = 1

Case "COM3"

AxMSComm1.CommPort = 3

Case "COM4"

AxMSComm1.CommPort = 4

Case "COM5"

AxMSComm1.CommPort = 5

End Select

AxMSComm1.Settings = "19200,N,8,1"

AxMSComm1.InBufferSize = 1024

AxMSComm1.OutBufferSize = 1024

AxMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary

AxMSComm1.InputLen = 0

AxMSComm1.RThreshold = 1

AxMSComm1.PortOpen = True

Timer2.Enabled = True

Label1.Text = " 请刷卡"

Else

MessageBox.Show(" 您未设置机器编号或串口号码!" )

End If

End Sub

Private Sub Button 返回_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 返回.Click

Timer2.Enabled = False

If AxMSComm1.PortOpen = True Then

AxMSComm1.PortOpen = False

End If

Me .Hide()

frm2.Show()

End Sub

Private Sub 选择4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

MyBase .Load

DataSet 进出资料1.Clear()

TextBox 非法用户.Text = 0

TextBox 正常.Text = 0

TextBox 时间.Text = DateTime.Now.ToShortDateString()

Label1.Text = " 串口未设置"

Timer1.Enabled = True

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

TextBox 时间.Text = DateTime.Now.ToLongTimeString()

TextBox 时间.Refresh()

End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

Dim jihao As Byte

jihao = CByte (TextBox机器编号.Text)

AxMSComm1.OutBufferCount = 0

AxMSComm1.InBufferCount = 0

Dim ByteCodeAct(3) As Byte

ByteCodeAct(1) = &HAA

ByteCodeAct(2) = jihao

ByteCodeAct(3) = &HBB

AxMSComm1.Output = ByteCodeAct

End Sub

Private Function Hex2(ByRef c As String ) As String

Hex2 = Hex(CInt (c))

If Len(Hex2)

Hex2 = "0" & Hex2

End If

End Function

Private Sub AxMSComm1_OnComm(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxMSComm1.OnComm

Dim i As Object

Dim DataRead() As Byte

Dim bytData As Object ' 用来从接受缓冲区读取数据

Readstr = ""

On Error Resume Next

Select Case AxMSComm1.CommEvent

Case MSCommLib.OnCommConstants.comEvReceive

Readstr = ""

bytData = AxMSComm1.Input ' 将接收到的数据放入bytData 数组中

ReDim DataRead(UBound(bytData)) ' 取得接收到数据的最终长度,重新定义DataRead 的 ' 长度

For i = 0 To UBound(bytData)

DataRead(i) = bytData(i)

Readstr = Readstr & Hex2(CStr (DataRead(i)))

Next i

If Readstr.Substring(0, 2) = "FF" And Readstr.Substring(18, 2) = "FF" Then

TextBox1.Text = Readstr.Substring(6, 8)

End If

End Select

'Timer1.Enabled = True '重新打开定时器

End Sub

Private Sub Button 查询_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 查询.Click

Me .Hide()

frm5.Show()

End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

If TextBox1.Text.Length = 0 Then

Exit Sub

End If

If SqlConnection2.State = ConnectionState.Closed Then

SqlConnection2.Open()

End If

DataSet 用户1.Clear()

SqlCommand1.Connection = SqlConnection2 'SqlCommand1控件连接数据库

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where 卡号='" & TextBox1.Text & "'"

SqlDataAdapter 用户.Fill(DataSet用户1)

If DataSet用户1. 用户.Rows.Count = 1 Then

MessageBox.Show(" 门已打开!" )

TextBox 正常.Text = TextBox正常.Text + 1

DataGrid1.Update()

SqlCommand1.CommandText = "update 用户 set 时间组 = '" & TextBox 时间.Text & "' where 卡号='" & TextBox1.Text & "' "

SqlCommand1.ExecuteNonQuery()

SqlDataAdapter 进出资料.SelectCommand.CommandText = "select * from 用户 where 卡号='" & TextBox1.Text & "'"

SqlDataAdapter 进出资料.Fill(DataSet进出资料1)

DataGrid1.Update()

SqlConnection2.Close() ' 关闭数据库连接

TextBox1.Text = "" ' 清空TextBox1

Else

MessageBox.Show(" 非法用户!" )

TextBox 非法用户.Text = TextBox非法用户.Text + 1

SqlDataAdapter 进出资料.SelectCommand.CommandText = "select * from 用户 where 卡号='" & TextBox1.Text & "'"

SqlDataAdapter 进出资料.Fill(DataSet进出资料1)

End If

End Sub

End Class

(4)查询结果5(图10)

添加label ,textbox ,button ,datagrid ,mainmenu 控件,以及SqlCommand1 ,SqlDataAdapter 用户生成的DataSet1用户资料1(连接SQL 中的用户表)和SqlConnection1。

图10. 查询结果5

不可见控件(图11):

图11 不可见控件

查询:通过单个或多个信息(ID ,卡号,姓名,性别,部门,联系方式)可查出相对应的用

户资料。

添加:添加数据,由于ID 为主键,因此ID 不能为空。

删除:根据主键ID ,可一并删除该ID 内的其他信息。

修改:对于某一条记录,必须先填写ID ,然后填写其他要修改的数据,点击“修 改“,完成修改。

返回:返回上一级菜单,即登录2。

日志管理:选择查询日志。

总人数统计:选择查询人员出入信息。

帮助:显示帮助页面。

代码:Public Class 查询结果5

Private Sub 查询结果5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load

End Sub

Private Sub menjin()

SqlConnection1.Open()

DataSet 用户资料1.Clear()

SqlCommand1.Connection = SqlConnection1

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where 卡号='" & TextBoxID.Text & "'"

SqlDataAdapter 用户.Fill(DataSet用户资料1)

If DataSet用户资料1. 用户.Rows.Count = 1 Then

MessageBox.Show(" 门已打开!" )

SqlCommand1.CommandText = "insert into 日志(卡号, 备注) values('" & TextBoxID.Text & "',' 开门')"

SqlCommand1.ExecuteNonQuery()

Else

MessageBox.Show(" 非法用户!" )

SqlCommand1.CommandText = "insert into 日志(卡号, 备注) values('" & TextBoxID.Text & "',' 非法用户')"

SqlCommand1.ExecuteNonQuery()

End If

SqlConnection1.Close()

End Sub

Private Sub Button 返回_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 返回.Click

选择4.Show()

Me .Hide()

End Sub

Private Sub Button 查询_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 查询.Click

SqlConnection1.Open()

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where 卡号 = '" & TextBox 卡号.Text & "'or 姓名 = '" & TextBox姓名.Text & "' or 性别 = '" & TextBox性别.Text & "'or 部门 = '" & TextBox部门.Text & "'"

SqlConnection1.Close()

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.Fill(DataSet用户资料1)

DataGrid1.Update()

DataGrid1.Refresh()

TextBoxID.Text = ""

TextBox 姓名.Text = ""

TextBox 性别.Text = ""

TextBox 卡号.Text = ""

TextBox 联系方式.Text = ""

TextBox 部门.Text = ""

End Sub

Private Sub Button 添加_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 添加.Click

SqlConnection1.Open()

SqlCommand1.Connection = SqlConnection1

SqlCommand1.CommandText = "insert into 用户(ID,卡号, 姓名, 性别, 部门, 联系方式) values('" & TextBoxID.Text & "', '" & TextBox卡号.Text & "','" & TextBox姓名.Text & "','" & TextBox性别.Text & "','" & TextBox 部门.Text & "','" & TextBox联系方式.Text & "')"

SqlCommand1.ExecuteNonQuery()

SqlConnection1.Close()

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.Fill(DataSet用户资料1)

DataGrid1.Update()

TextBoxID.Text = ""

TextBox 姓名.Text = ""

TextBox 性别.Text = ""

TextBox 部门.Text = ""

TextBox 联系方式.Text = ""

End Sub

Private Sub Button 删除_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 删除.Click

SqlConnection1.Open()

SqlCommand1.Connection = SqlConnection1

SqlCommand1.CommandText = "delete from 用户 where ID = '" & TextBoxID.Text & "'

SqlCommand1.ExecuteNonQuery()

SqlConnection1.Close()

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.Fill(DataSet用户资料1)

DataGrid1.Update()

DataGrid1.Refresh()

End Sub

Private Sub Button 修改_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 修改.Click

If TextBoxID.Text.Length 0 Then

SqlConnection1.Open()

SqlCommand1.Connection = SqlConnection1

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where ID= '" & TextBoxID.Text & "'"

SqlDataAdapter 用户.Fill(DataSet用户资料1)

If DataSet用户资料1. 用户.Rows.Count 0 Then

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 姓名='" & TextBox 姓名.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 卡号='" & TextBox 卡号.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 性别='" & TextBox 性别.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 部门='" & TextBox 部门.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 联系方式='" & TextBox 联系方式.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where ID='" & TextBoxID.Text & "'"

SqlDataAdapter 用户.Fill(DataSet用户资料1)

DataGrid1.Update()

DataGrid1.Refresh()

SqlConnection1.Close()

End If

Else

MsgBox("ID 不能为空!" , MsgBoxStyle.Critical)

End If

TextBoxID.Text = ""

TextBox 姓名.Text = ""

TextBox 性别.Text = ""

TextBox 部门.Text = ""

TextBox 联系方式.Text = ""

End Sub

Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem 帮助.Click

Me .Hide()

frm0.Show()

End Sub

End Class

(7)帮助0(图12)

添加label ,button 控件。

图12 帮助0

五.问题及解决方法

在做的过程中,我碰到了很多问题,因为对于数据库本身的操作也不是很懂外加VB 编程也可以说是初次接触,所以开始有些吃力。比如说:我想要加将进出资料显示出来,思路是有的,可是代码不知道怎么写,在经过询问老师以及和同学的共同探讨和检查下,终于实现了相关功能。想要加实时时间,还是由于对于代码的不了解,在老师给别的同学改的基础上自己经过仔细推敲和不断地调试,也终于成功了。

六.实验小结:

通过这次门禁管理的课程设计我了解和基本掌握了VB.NET 、SQL 数据库以及串口操作的基本原理和编程方法,并学会在VS 中连接数据库以及配置串口。在语句的编写方面还显得有些不熟练,容易犯一些低级的错误,这是今后要改正的。另外在设计中我碰到了各种各样的问题,例如控件找不到,无法正确的修改数据, 串口连接问题等等,在同学和老师的帮助下都成功解决了,这也为毕业设计的软件编程方面打下了基础。

软件的使用,首先要建立属于自己的数据库,然后在VS2008的背景下建立项目,加入自己想要实现的功能模块,并编写相关代码,在完成以上的基础上,然后一步一步的调试,直到成功的实现功能。

上海电力学院

信息网络技术设计

课程设计报告

题 目: 门禁系统的设计

姓 名: 邱苗苗

学 号: 20101918

院 系: 电子与信息工程学院

专业年级: 电子信息工程 2010 级

同组成员:

2014 年 1 月 14 日

一.设计目的

本课程设计的目的是综合应用VB.NET 软件以及SQL 数据库建立门禁管理系统应用软件。

二.设计平台

硬件:IC 读卡器、IC 卡与PC 机

软件:VS2008,SQL Server2008

三.设计内容与要求

本课程设计的门禁管理系统的设计分为两部分:VB.NET 编写的应用软件以及SQL 数据库。SQL 数据库用来建立VS 中需要连接的各类表。软件主要包括虚拟串口以及模拟IC 卡刷卡机,可以完成计算机串口与IC 卡硬件设备的通信功能、门禁管理数据库的操作功能以及根据读入的IC 卡数据显示相应的数据列表的功能。

四.设计步骤

新建表,表名如图1所示。

1. 建立数据库

图1 表

2. 启动VS2008,新建项目“门禁管理系统”,添加5个Windows 窗体(帮助0,查询结果,5登录2,选择4,准备1) ,添加1个模块文件(Module1)

3. 页面设计和编程

(1)准备1(图2)

添加label ,timer, ,ProcessBar 控件,引导进入登录界面

图2. 准备1

(2)登录2(图3 )

添加label ,textbox ,button ,growbox 控件,以及SqlCommand1 ,SqlDataAdapter 管理员生成的DataSet1管理员1(连接SQL 中的管理员表)和SqlConnection1。

图3 登录2

不可见控件(图4):

图4不可见控件

当管理员或者密码输入错误时,显示对话框(图5)

当管理员或者密码为空时,显示对话框(图6)

图5. 错误 图6不能为空

代码:

Public Class 登录2

Private Sub 登录2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load

Label 时间.Text = Now

TextBox 管理员.Text = ""

TextBox 密码.Text = ""

End Sub

Private Sub Button 确定_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 确定.Click

If TextBox管理员.Text.Length 0 Or TextBox密码.Text.Length 0 Then

SqlConnection1.Open()

SqlCommand1.Connection = SqlConnection1

DataSet 管理员1.Clear()

SqlDataAdapter 管理员.SelectCommand.CommandText = "select*from 管理员 where 管理员='" & TextBox管理员.Text & "'and 密码='" & TextBox密码.Text & "'"

SqlDataAdapter 管理员.Fill(DataSet管理员1)

If DataSet管理员1. 管理员.Rows.Count = 1 Then

frm4.Show()

Else

MsgBox(" 管理员或密码错误"

, MsgBoxStyle.Critical)

End If

DataSet 管理员1.Clear()

SqlConnection1.Close()

Else

MessageBox.Show(" 管理员和密码不能为空" )

End If

End Sub

Private Sub Button 刷新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 刷新.Click

TextBox 管理员.Text = ""

TextBox 密码.Text = ""

End Sub

(3)选择4(图7)

添加label ,button ,growbox ,combobox ,timer 控件,以及SqlCommand1 ,SqlDataAdapter 进出资料生成的DataSet1进出资料1(连接SQL 中的进出资料表)和SqlConnection1。

图7 选择4

不可见控件:(图8)

连接串口后,填写“机器编号”,选择串口编号,然后刷卡,出现数据。(图9)

图9. 数据

代码:Public Class 选择4

Public Readstr As String

Private Sub Button 确定_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 确定.Click

If TextBox机器编号.Text.Length 0 And ComboBox串口编号.Text.Length 0 Then

Select Case ComboBox串口编号.Text

Case "COM2"

AxMSComm1.CommPort = 2

Case "COM1"

AxMSComm1.CommPort = 1

Case "COM3"

AxMSComm1.CommPort = 3

Case "COM4"

AxMSComm1.CommPort = 4

Case "COM5"

AxMSComm1.CommPort = 5

End Select

AxMSComm1.Settings = "19200,N,8,1"

AxMSComm1.InBufferSize = 1024

AxMSComm1.OutBufferSize = 1024

AxMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary

AxMSComm1.InputLen = 0

AxMSComm1.RThreshold = 1

AxMSComm1.PortOpen = True

Timer2.Enabled = True

Label1.Text = " 请刷卡"

Else

MessageBox.Show(" 您未设置机器编号或串口号码!" )

End If

End Sub

Private Sub Button 返回_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 返回.Click

Timer2.Enabled = False

If AxMSComm1.PortOpen = True Then

AxMSComm1.PortOpen = False

End If

Me .Hide()

frm2.Show()

End Sub

Private Sub 选择4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

MyBase .Load

DataSet 进出资料1.Clear()

TextBox 非法用户.Text = 0

TextBox 正常.Text = 0

TextBox 时间.Text = DateTime.Now.ToShortDateString()

Label1.Text = " 串口未设置"

Timer1.Enabled = True

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

TextBox 时间.Text = DateTime.Now.ToLongTimeString()

TextBox 时间.Refresh()

End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

Dim jihao As Byte

jihao = CByte (TextBox机器编号.Text)

AxMSComm1.OutBufferCount = 0

AxMSComm1.InBufferCount = 0

Dim ByteCodeAct(3) As Byte

ByteCodeAct(1) = &HAA

ByteCodeAct(2) = jihao

ByteCodeAct(3) = &HBB

AxMSComm1.Output = ByteCodeAct

End Sub

Private Function Hex2(ByRef c As String ) As String

Hex2 = Hex(CInt (c))

If Len(Hex2)

Hex2 = "0" & Hex2

End If

End Function

Private Sub AxMSComm1_OnComm(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxMSComm1.OnComm

Dim i As Object

Dim DataRead() As Byte

Dim bytData As Object ' 用来从接受缓冲区读取数据

Readstr = ""

On Error Resume Next

Select Case AxMSComm1.CommEvent

Case MSCommLib.OnCommConstants.comEvReceive

Readstr = ""

bytData = AxMSComm1.Input ' 将接收到的数据放入bytData 数组中

ReDim DataRead(UBound(bytData)) ' 取得接收到数据的最终长度,重新定义DataRead 的 ' 长度

For i = 0 To UBound(bytData)

DataRead(i) = bytData(i)

Readstr = Readstr & Hex2(CStr (DataRead(i)))

Next i

If Readstr.Substring(0, 2) = "FF" And Readstr.Substring(18, 2) = "FF" Then

TextBox1.Text = Readstr.Substring(6, 8)

End If

End Select

'Timer1.Enabled = True '重新打开定时器

End Sub

Private Sub Button 查询_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 查询.Click

Me .Hide()

frm5.Show()

End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

If TextBox1.Text.Length = 0 Then

Exit Sub

End If

If SqlConnection2.State = ConnectionState.Closed Then

SqlConnection2.Open()

End If

DataSet 用户1.Clear()

SqlCommand1.Connection = SqlConnection2 'SqlCommand1控件连接数据库

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where 卡号='" & TextBox1.Text & "'"

SqlDataAdapter 用户.Fill(DataSet用户1)

If DataSet用户1. 用户.Rows.Count = 1 Then

MessageBox.Show(" 门已打开!" )

TextBox 正常.Text = TextBox正常.Text + 1

DataGrid1.Update()

SqlCommand1.CommandText = "update 用户 set 时间组 = '" & TextBox 时间.Text & "' where 卡号='" & TextBox1.Text & "' "

SqlCommand1.ExecuteNonQuery()

SqlDataAdapter 进出资料.SelectCommand.CommandText = "select * from 用户 where 卡号='" & TextBox1.Text & "'"

SqlDataAdapter 进出资料.Fill(DataSet进出资料1)

DataGrid1.Update()

SqlConnection2.Close() ' 关闭数据库连接

TextBox1.Text = "" ' 清空TextBox1

Else

MessageBox.Show(" 非法用户!" )

TextBox 非法用户.Text = TextBox非法用户.Text + 1

SqlDataAdapter 进出资料.SelectCommand.CommandText = "select * from 用户 where 卡号='" & TextBox1.Text & "'"

SqlDataAdapter 进出资料.Fill(DataSet进出资料1)

End If

End Sub

End Class

(4)查询结果5(图10)

添加label ,textbox ,button ,datagrid ,mainmenu 控件,以及SqlCommand1 ,SqlDataAdapter 用户生成的DataSet1用户资料1(连接SQL 中的用户表)和SqlConnection1。

图10. 查询结果5

不可见控件(图11):

图11 不可见控件

查询:通过单个或多个信息(ID ,卡号,姓名,性别,部门,联系方式)可查出相对应的用

户资料。

添加:添加数据,由于ID 为主键,因此ID 不能为空。

删除:根据主键ID ,可一并删除该ID 内的其他信息。

修改:对于某一条记录,必须先填写ID ,然后填写其他要修改的数据,点击“修 改“,完成修改。

返回:返回上一级菜单,即登录2。

日志管理:选择查询日志。

总人数统计:选择查询人员出入信息。

帮助:显示帮助页面。

代码:Public Class 查询结果5

Private Sub 查询结果5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load

End Sub

Private Sub menjin()

SqlConnection1.Open()

DataSet 用户资料1.Clear()

SqlCommand1.Connection = SqlConnection1

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where 卡号='" & TextBoxID.Text & "'"

SqlDataAdapter 用户.Fill(DataSet用户资料1)

If DataSet用户资料1. 用户.Rows.Count = 1 Then

MessageBox.Show(" 门已打开!" )

SqlCommand1.CommandText = "insert into 日志(卡号, 备注) values('" & TextBoxID.Text & "',' 开门')"

SqlCommand1.ExecuteNonQuery()

Else

MessageBox.Show(" 非法用户!" )

SqlCommand1.CommandText = "insert into 日志(卡号, 备注) values('" & TextBoxID.Text & "',' 非法用户')"

SqlCommand1.ExecuteNonQuery()

End If

SqlConnection1.Close()

End Sub

Private Sub Button 返回_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 返回.Click

选择4.Show()

Me .Hide()

End Sub

Private Sub Button 查询_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 查询.Click

SqlConnection1.Open()

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where 卡号 = '" & TextBox 卡号.Text & "'or 姓名 = '" & TextBox姓名.Text & "' or 性别 = '" & TextBox性别.Text & "'or 部门 = '" & TextBox部门.Text & "'"

SqlConnection1.Close()

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.Fill(DataSet用户资料1)

DataGrid1.Update()

DataGrid1.Refresh()

TextBoxID.Text = ""

TextBox 姓名.Text = ""

TextBox 性别.Text = ""

TextBox 卡号.Text = ""

TextBox 联系方式.Text = ""

TextBox 部门.Text = ""

End Sub

Private Sub Button 添加_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 添加.Click

SqlConnection1.Open()

SqlCommand1.Connection = SqlConnection1

SqlCommand1.CommandText = "insert into 用户(ID,卡号, 姓名, 性别, 部门, 联系方式) values('" & TextBoxID.Text & "', '" & TextBox卡号.Text & "','" & TextBox姓名.Text & "','" & TextBox性别.Text & "','" & TextBox 部门.Text & "','" & TextBox联系方式.Text & "')"

SqlCommand1.ExecuteNonQuery()

SqlConnection1.Close()

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.Fill(DataSet用户资料1)

DataGrid1.Update()

TextBoxID.Text = ""

TextBox 姓名.Text = ""

TextBox 性别.Text = ""

TextBox 部门.Text = ""

TextBox 联系方式.Text = ""

End Sub

Private Sub Button 删除_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 删除.Click

SqlConnection1.Open()

SqlCommand1.Connection = SqlConnection1

SqlCommand1.CommandText = "delete from 用户 where ID = '" & TextBoxID.Text & "'

SqlCommand1.ExecuteNonQuery()

SqlConnection1.Close()

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.Fill(DataSet用户资料1)

DataGrid1.Update()

DataGrid1.Refresh()

End Sub

Private Sub Button 修改_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button 修改.Click

If TextBoxID.Text.Length 0 Then

SqlConnection1.Open()

SqlCommand1.Connection = SqlConnection1

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where ID= '" & TextBoxID.Text & "'"

SqlDataAdapter 用户.Fill(DataSet用户资料1)

If DataSet用户资料1. 用户.Rows.Count 0 Then

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 姓名='" & TextBox 姓名.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 卡号='" & TextBox 卡号.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 性别='" & TextBox 性别.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 部门='" & TextBox 部门.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

If TextBox姓名.Text.Length 0 Then

SqlCommand1.CommandText = "update 用户 set 联系方式='" & TextBox 联系方式.Text & "'where ID='" & TextBoxID.Text & "'"

SqlCommand1.ExecuteNonQuery()

End If

DataSet 用户资料1.Clear()

SqlDataAdapter 用户.SelectCommand.CommandText = "select * from 用户 where ID='" & TextBoxID.Text & "'"

SqlDataAdapter 用户.Fill(DataSet用户资料1)

DataGrid1.Update()

DataGrid1.Refresh()

SqlConnection1.Close()

End If

Else

MsgBox("ID 不能为空!" , MsgBoxStyle.Critical)

End If

TextBoxID.Text = ""

TextBox 姓名.Text = ""

TextBox 性别.Text = ""

TextBox 部门.Text = ""

TextBox 联系方式.Text = ""

End Sub

Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem 帮助.Click

Me .Hide()

frm0.Show()

End Sub

End Class

(7)帮助0(图12)

添加label ,button 控件。

图12 帮助0

五.问题及解决方法

在做的过程中,我碰到了很多问题,因为对于数据库本身的操作也不是很懂外加VB 编程也可以说是初次接触,所以开始有些吃力。比如说:我想要加将进出资料显示出来,思路是有的,可是代码不知道怎么写,在经过询问老师以及和同学的共同探讨和检查下,终于实现了相关功能。想要加实时时间,还是由于对于代码的不了解,在老师给别的同学改的基础上自己经过仔细推敲和不断地调试,也终于成功了。

六.实验小结:

通过这次门禁管理的课程设计我了解和基本掌握了VB.NET 、SQL 数据库以及串口操作的基本原理和编程方法,并学会在VS 中连接数据库以及配置串口。在语句的编写方面还显得有些不熟练,容易犯一些低级的错误,这是今后要改正的。另外在设计中我碰到了各种各样的问题,例如控件找不到,无法正确的修改数据, 串口连接问题等等,在同学和老师的帮助下都成功解决了,这也为毕业设计的软件编程方面打下了基础。

软件的使用,首先要建立属于自己的数据库,然后在VS2008的背景下建立项目,加入自己想要实现的功能模块,并编写相关代码,在完成以上的基础上,然后一步一步的调试,直到成功的实现功能。


相关内容

  • 电子信息专业认识实习报告
  • 实 习 报 告 实习名称 专 业 认 识 实 习 专业班级 电子1142 姓 名 学 号 成 绩 评 定 电气与信息工程学院 二0一二年十月 实习纪律要求和成绩考核办法 实习纪律要求和成绩考核办法 1.实习过程必须听从教师和现场工作人员指导,严格遵守安全操作规程.不准违规操作,未经现场工作人员允许不 ...

  • CDIO课程教学的构建与实施
  • 课程教学的构建与实施 成都信息工程学院 杨玲2011年11月30日年月 电子工程学院简况 硕士研究生专业 信号与信息处理 2004 电子工程学院 四川省特色专业 电子信息工程 1978 在校本科生近2000人,硕士生近300人,教师约80人 本科专业 生物医学工程生物医学工程电子信息科学与技术雷电防 ...

  • 电子信息工程专业认知度调查报告
  • 物 理 与 电 子 信 息 学 院 专业认知调查报告 专 业: 年 级: 姓 名: 学 号: 指导教师: 完成时间: 电子相关企业对电子专业毕业生基本技能要求的调查报告 前言 由于信息时代的到来,据调查,现阶段对于电子信息工程人才的需要量十分巨大,"电子信息工程"的专业,对缓解当 ...

  • 电子商务实务总结报告
  • TIANJIN VOCATIONAL COLLEGE OF ELECTRONICS AND INFORMATION <电子商务实务> 课程建设总结报告 专业代码: 620405 学院专业编码: 1001001 制(修)订系: 计算机应用技术系_ 责任人: 王蓓 目录 一.建设概述.... ...

  • 电子商务系统建设课程设计
  • 湖南涉外经济学院 课程设计报告 课程名称: 报告题目: 学生姓名: 所在学院: 专业班级: 学生学号: 指导教师: 20 年 月 日 <企业电子商务系统建设>课程设计任务书 适用班级:13级电子商务 起止时间:2015年6月22日~2015年7月3日 一.设计题目:XX 企业电子商务系统 ...

  • [电子商务实务]课程实验实训指导书
  • <电子商务实务>课程实验实训指导书 3<电子商务实务>课程实验实训指导书 一.课程基本信息 二.课程任务和目的 <电子商务实务>是一门讲授利用计算机技术和网络技术等现代信息技术所进行的包括货物贸易.服务贸易.和知识产权贸易等在内的各类商务活动的课程,是电子商务专业 ...

  • 电子商务课程设计报告
  • < 电子商务 >课程设计Ⅰ任务书 前言............................................................................................................................. ...

  • 电子商务专业人才培养方案论证报告
  • 河南省职业教育特色学校 建设项目 电子商务专业人才培养方案论证报告 从目前我省的信息产业人员结构的比例来看,电子商务从业人员有较大的缺口,基于这种情况,结合目前人才市场的需求和学校的工作安排,由电子商务专业教师组成的专业建设论证小组.电子商务专业建设指导委员会专家对我校设臵电子商务专业进行了可行性调 ...

  • 电子商务专业行业人才需求调研报告
  • 电子商务专业行业人才需求 调研报告 一.行业发展目标 目前,许多技工学校都开设了电子商务专业或相关课程,由于电子商务是一种新型的复合型商务模式,各学校对于人才培养的模式还未达成共识,尚未形成一个比较有权威性的能够与实践需要相吻合的有代表性的电子商务人才培养模式.面对就业需求形势与培养模式的不确定性, ...

  • 电子商务应用软件实训教案
  • 电子商务应用软件实训教案 一.课程性质及任务 1.课程性质 本实训项目是电子商务专业的主干课程实训之一,主要研究和介绍电子商务的基本模式.基本原理.关键技术及其相关软件应用操作.学习本实训项目要求学生熟悉计算机基本操作.计算机网络技术.数据库技术.管理学及市场营销学的基本原理.同时,只有在掌握了本课 ...