摘 要
文中以某中小型企业的设备管理为例,对设备管理系统的设计与应用进行研究,旨在通过设备管理系统提高内部设备的利用率及实现其最大的经济效益。文中首先对设备管理的现状及其重要性进行了分析,分析实现设备管理信息系统的必要性与可行性。其次针对所需要设备信息,分析设备管理系统流程,设计并开发一套设备管理系统。最后,文章对系统的设计实现过程进行了阐述。
文中详细阐述了各子模块的功能和实现过程,并对系统的核心技术作了特别讲解。从试运行情况来看,系统加强了对于仪器设备的有效管理,提高了管理的效率和科学性,实现了信息资源的共享,达到了建设一个仪器设备管理系统的预定目标。
关键词:设备管理;仪器设备;管理系统
2.2 功能需求
管理系统主要包括两大功能:
(1)用户模块
a)用户信息:用户可以查看自己的基本信息
b)资料修改:用户的基本信息有时候会变化,比如联系电话等,对于这种情况就可以对资料及时修改更新。
(2)设备管理模块
a)设备一览:查看所有的设备。
b)设备的添加和报废:对添加新增设备以及对报废设备的信息进行处理。
c)设备的维修和调拨:对维修中的设备的详细信息进行管理以及对设备的调拨及其信息管理。
d)设备的查询:根据设备名称查询设备,设备的查询使用模糊查询,以尽可能的把符合用户要求的设备显示给用户。
3.2 系统功能模块
图1 系统功能模块
4.1 用户登录模块
用户登录模块主要是检查用户名和密码是否匹配,并且可以通过“注册”按钮进入注册页面。如果用户的用户名和密码匹配则进入系统;不匹配则转入登录错误页面。在登录错误页面用户可以选择进入登录页面和注册页面。
系统对用户的登录方式采用的是用户名/密码方式,在用户进入系统的时候要求用户输入用户名和密码,并比较两者和数据库中用户名和密码对应。代码如下:
Dim conn As New System.Data.sqlclient.SqlConnection
Dim cmd As New System.Data.sqlclient.SqlCommand
Dim objreader As System.Data.sqlclient.SqlDataReader
conn.ConnectionString = ("SERVER=(local);USER ID=sa;PWD=;DATABASE=atai")
conn.Open()
cmd.Connection = conn
cmd.CommandText = "select * from userlist where username='" + Textusername.Text + " 'and pwd='" + pwd + "'"
objreader = cmd.ExecuteReader
If objreader.HasRows Then
Response.Redirect("index.html")
Else
Response.Redirect("false.htm")
End If
但是,使用明文对用户密码进行存储时,很容易被非法使用者识别。因此,先对密码进行哈希后再写入数据库中,让非法使用者不能识别,用户密码相对更为安全,代码入下:
Public Shared Function MD5(ByVal Sourcein As String) As String
Dim MD5CSP As System.Security.Cryptography.MD5CryptoServiceProvider = New System.Security.Cryptography.MD5CryptoServiceProvider
Dim MD5Source() As Byte = System.Text.Encoding.UTF8.GetBytes(Sourcein)
Dim MD5Out() As Byte = MD5CSP.ComputeHash(MD5Source)
Return Convert.ToBase64String(MD5Out)
End Function
实现截图:
图2 用户登录
4.2 用户注册模块
用户在注册模块主要是为新用户提供注册,新用户在次填写详细信息进行注册,在注册的时候自动把权限设为普通用户。
在用户注册的时候首先判断用户名是否存在,代码如下:
cmd.CommandText = "select * from userlist where username='" + Textusername.Text + "'"
objreader = cmd.ExecuteReader
If objreader.HasRows Then
'存在
args.IsValid = False
Session("username") = Textusername.Text
Else
'不存在
args.IsValid = True
End If
conn.Close()
在用户注册时,为了防止用户粗心,在输入密码时不小心输入错误,因此在用户输入密码后还需要用户再一次输入,通过判断两次输入是否相同来判断用户是否输入错误,相关代码如下:
If Textuserpwd.Text = Textuserpassword.Text Then
'匹配
args.IsValid = True
Else
'不匹配
args.IsValid = False
End If
当所有的条件都满足后才会向数据库中写入注册信息,写入数据库的代码如下:
Dim conn As New System.Data.sqlclient.SqlConnection
Dim cmd As New System.Data.sqlclient.SqlCommand
Dim objreader As System.Data.sqlclient.SqlDataReader
conn.ConnectionString = ("SERVER=(local);USER ID=sa;PWD=;DATABASE=atai")
conn.Open()
cmd.Connection = conn
If Textusername.Text = Session("username") Then
Else
If Textuserpwd.Text = Textuserpassword.Text Then
Dim pwd As String = MD5(Textuserpwd.Text)
cmd.CommandText = "insert into userlist values('" + Textusername.Text + "','" + pwd + "','" + sexchoose.SelectedValue + "','" + position.SelectedValue + "','" + Texttelephone.Text + "',' 0 ')"
cmd.ExecuteNonQuery()
Response.Redirect("useraddsuccess.htm")
End If
End If
conn.Close()
实现截图:
4.3 设备一览模块
设备一览模块主要是查看目前所拥有的设备。该模块通过DataList控件来处理从数据源读取的数据。DataList控件的分页显示则是通过先根据当前页号Session(“CurrPage”)、分页大小PageSize来计算要显示的记录号范围,然后将数据集中需显示的记录存放到一个临时表tempbook中,再将该临时表绑定到DataList控件实现的,这样就可以显示指定页号的各记录。另外,为了在页面间传递页号值,使用了Session变量CurrPage,当用户单击“上一页”时,将Session(“CurrPage”)减1;当用户单击“下一页”时,将Session(“Currpage”)加1。在nabledwhatbutton()中编写Session(“CurrPage”)的初值和结束处理。
在设备一览页面,可以通过单击“添加设备”来增加新的设备。
在DataList控件中绑定列中,“设备名称”采用超级连接,用户单击可以查看设备的详细信息,通过单击“修改”进入修改设备详细,在修改设备状态时,如果设备状态是维修则转入维修设备添加页面,如果是报废,则进入添加报废设备页面,在添加的同时更改设备一览中该设备的状态为相应状态;单击“删除”删除该设备的所有的信息。
DataList控件的分页显示是通过先根据当前页号Session(“CurrPage”)、分页大小PageSize来计算要显示的记录号范围,当前页号Session(“CurrPage”)的代码如下:
Sub enabledwhatbutton()
If Session("currpage") = 1 Then
firstpage.Enabled = False
prevpage.Enabled = False
Else
firstpage.Enabled = True
prevpage.Enabled = True
End If
If Session("currpage") = Session("totalpage") Then
nextpage.Enabled = False
lastpage.Enabled = False
Else
nextpage.Enabled = True
lastpage.Enabled = True
End If
End Sub
而分页大小PageSzie的计算代码如下:
Dim totalrec As Integer = equipmentlist.Rows.Count
'计算总页数
Dim totalpage As Integer
If totalrec < pagesize Then
totalpage = 1
Else
If totalrec Mod pagesize <> 0 Then
totalpage = totalrec \ pagesize + 1
Else
totalpage = totalrec / pagesize
End If
End If
Session("totalpage") = totalpage
有了当前页号Session(“CurrPage”)和分页大小PageSize就可以计算出显示的记录号范围,然后将数据集中需显示的记录存放到一个临时表tempbook中,再将该临时表棒定到DataList控件来实现,这样就可以显示指定页号的个记录,相关代码如下:
Dim tempequipmentlist As DataTable = equipmentlist.Clone()
Dim i, j As Integer
For i = (pageno - 1) * pagesize To pageno * pagesize - 1
If i < 0 Or i > equipmentlist.Rows.Count - 1 Then Exit For
Dim row As DataRow = tempequipmentlist.NewRow
For j = 0 To equipmentlist.Columns.Count - 1
row(equipmentlist.Columns(j).ColumnName) = equipmentlist.Rows(i).Item(j)
Next
tempequipmentlist.Rows.Add(row)
Next
DataGridshow.DataSource = tempequipmentlist
DataGridshow.DataBind()
为了在页面间传递页号值,使用了Session变量CurrPage,当用户单击“上一页”时,将Session(“CurrPage”)减1;当用户单击“下一页”时,将Session(“CurrPage”)加1。判断代码如下:
Sub pagechange(ByVal sender As Object, ByVal e As CommandEventArgs)
Select Case e.CommandArgument
Case "firstpage"
Session("currpage") = 1
Case "prevpage"
If Session("currpage") > 1 Then
Session("currpage") -= 1
Else
Session("currpage") = 1
End If
Case "nextpage"
Session("currpage") += 1
Case "lastpage"
Session("currpage") = Session("totalpage")
End Select
enabledwhatbutton()
bindlist(Session("currpage"))
End Sub
实现截图:
4.4 设备调度模块
设备调度模块主要是查看所有处于调度中的设备,和调度设备的调度信息。该模块通过DataList控件处理从数据源读取的数据。绑定列中,“设备名称”采用超级连接,用户单击可以查看设备的详细调度信息,通过单击“修改”进行调度信息的修改;单击“删除”可以删除该设备的调度信息。修改调度信息代码如下:
cmd.CommandText = "insert into allot values('" + Tname.Text + "', '" + Toldteam.Text + "','" + Tnewteam.Text + "', '" + Tolduse.Text + "', '" + Tnewuse.Text + "','" + Ttime.Text + "','" + Tnotation.Text + "')"
objreader = cmd.ExecuteReader
objreader.Close()
cmd.CommandText = "update equipmentlist set buyteam = '" + Tnewteam.Text + "',usepeople = '" + Tnewuse.Text + "'where name = '" + Tname.Text + "' "
objreader = cmd.ExecuteReader
objreader.Close()
cmd.CommandText = "select * from allot where newteam = '" + Tnewteam.Text + "' and newuse = '" + Tnewuse.Text + "'"
objreader = cmd.ExecuteReader
If objreader.HasRows Then
seccess.Text = "添加成功"
Tname.Text = " "
Toldteam.Text = " "
Tnewteam.Text = " "
Tolduse.Text = " "
Tnewuse.Text = ""
Ttime.Text = ""
Tnotation.Text = ""
Else
seccess.Text = "添加失败"
End If
实现截图:
图5 调度信息修改
4.5 设备维修模块
设备维修模块主要是查看所有处于维修中的设备,及其详细信息。该模块同样采用了DataList控件来处理从数据源读取的数据。绑定列中,“设备名称”采用超级连接,用户单击可以查看详细的维修信息。通过单击“修改”可以修改设备的维修信息;单击“删除“按钮可以删除该设备的维修信息。对设备维修信息的修改代码如下:
cmd.Connection = conn
cmd.CommandText = "update badequipment set badtime = '" + Tbadtime.Text + "',notation = '" + Tnotation.Text + "'where name = '" + Tname.Text + "'"
cmd.ExecuteNonQuery()
cmd.CommandText = "select * from badequipment where name = '" + Tname.Text + "' and badtime = '" + Tbadtime.Text + "'"
objreader = cmd.ExecuteReader
If objreader.HasRows Then
seccess.Text = "修改成功"
End If
维修信息的删除代码如下:
Dim cmd As New System.Data.sqlclient.SqlCommand
cmd.CommandText = "delet * from badequipment where name='" + Tname.Text + "'"
Response.Redirect("badequipment.aspx")
实现截图:
图6 设备维护信息修改
4.6 设备报废模块
设备报废模块主要是查看所有的报废了的设备,及其详细信息。该模块采用了DataList控件来处理从数据源读取的数据。绑定列中,“设备名称“采用了超级连接,用户单击可以查看详细信息。通过单击”修改“可以修改报废设备的信息;用户单击”删除“按钮可以删除该设备的信息。对报废设备信息的修改代码如下:
cmd.CommandText = "update badequipment set badtime = '" + Tbadtime.Text + "',notation = '" + Tnotation.Text + "'where name = '" + Tname.Text + "'"
cmd.ExecuteNonQuery()
cmd.CommandText = "select * from badequipment where name = '" + Tname.Text + "' and badtime = '" + Tbadtime.Text + "'"
objreader = cmd.ExecuteReader
If objreader.HasRows Then
seccess.Text = "修改成功"
End If
实现截图
图7 报废信息修改
4.7 用户信息模块
用户信息模块主要是用户查看自己的详细资料。用户可能因为各种原因自己的资料有所改变,又忘了自己是不是已经对自己的资料进行了更新修改,用户则可以通过用户信息模块查看自己的信息是否正确。在用户登录的时候就首先把用户的信息进行绑定,代码如下:
cmd.CommandText = "select * from userlist where username='" + Textusername.Text + " ' and pwd='" + pwd + "'"
objreader = cmd.ExecuteReader
If objreader.HasRows Then
Session("name") = Textusername.Text
objreader.Close()
cmd.CommandText = "select * from userlist where username ='" + Session("name") + "' "
Dim objadpt As New System.Data.sqlclient.SqlDataAdapter(cmd)
Dim ds As New DataSet
objadpt.Fill(ds, "userlist")
Dim userlist As DataTable = ds.Tables("userlist")
Session("sex") = userlist.Rows(0).Item(2)
Session("position") = userlist.Rows(0).Item(3)
Session("telephone") = userlist.Rows(0).Item(4)
Session("power") = userlist.Rows(0).Item(5)
在用户查看自己的信息时,把绑定的用户信息显示出来,代码如下:
usernameshow.Text = Session("name")
sexshow.Text = Session("sex")
positionshow.Text = Session("position")
telephoneshow.Text = Session("telephone")
实现截图:
图8 用户信息
4.8 资料修改模块
资料修改模块主要是用户用来修改自己的资料。用户可能因为工作等原因资料有所改变,需要进行修改,即使更新。资料修改模块为用户提供该功能。在用户修改资料后点击修改后,使用对数据库的更新操作来更新用户信息,代码如下:
If Textpwd.Text = Textpwdagain.Text Then
cmd.CommandText = "update userlist set pwd='" + Textpwd.Text + "',sex='" + sexchoose.SelectedValue + "',position='" + position.SelectedValue + "',telephone='" + Texttelephone.Text + "' where username='" + Session("name") + "'"
cmd.ExecuteNonQuery()
Response.Redirect("main.aspx")
End If
实现截图:
图9 用户资料修改