ASP.NET仪器设备管理系统设计与实现

 

文中以某中小型企业的设备管理为例,对设备管理系统的设计与应用进行研究,旨在通过设备管理系统提高内部设备的利用率及实现其最大的经济效益。文中首先对设备管理的现状及其重要性进行了分析,分析实现设备管理信息系统的必要性与可行性。其次针对所需要设备信息,分析设备管理系统流程,设计并开发一套设备管理系统。最后,文章对系统的设计实现过程进行了阐述

文中详细阐述了各子模块的功能和实现过程,并对系统的核心技术作了特别讲解。从试运行情况来看,系统加强了对于仪器设备的有效管理,提高了管理的效率和科学性,实现了信息资源的共享,达到了建设一个仪器设备管理系统的预定目标。

关键词:设备管理;仪器设备;管理系统

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  用户资料修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/696835.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

租赁小程序开发搭建支持时租日租月租

租赁小程序开发搭建支持时租日租月租 一款开源版的小程序&#xff0c;专为物品租赁服务设计&#xff0c;能满足客户在各种租赁场景中的需求。 该程序支持时租、日租、夜租等多种租赁方式&#xff0c;并配备了DIY页面和分销系统。用户可以通过平台轻松租赁商品&#xff0c;支付…

MySql软件安装

1.打开mysql官网网址 MySQL :: Download MySQL Community Server 2.本次针对版本8的图形化界面安装&#xff0c;下载成功后接下来对MySQL进行安装 3.图形化下载后有一个MSI文件 4.我们安装典型即可&#xff0c;选择第一个 5.选择数据库信息存放的路径&#xff0c;我默认放在C盘…

区块链的跨链交互:从学校间交流看跨链技术

区块链是一种去中心化的分布式账本技术&#xff0c;它通过加密学和共识机制来确保数据的安全性和不可篡改性。每个区块链就像一所独立的学校&#xff0c;有自己的制度、学生和重点专业。它们各自运行&#xff0c;有时在同一领域展开不同的活动。随着区块链技术的不断发展&#…

宝塔面板各种疑难杂症处理命令教程

下载地址&#xff1a;宝塔面板各种疑难杂症处理命令教程 这份宝塔面板各种疑难杂症处理命令教程&#xff0c;可以解决市面上遇到的各种难题&#xff0c;建议有技术能行的下载使用&#xff0c;小白也可以下载来学习可以帮助你解决宝塔面板遇到的各种难题

ssm123基于java web的网上书城系统的设计与实现+vue

基于java web的网上书城系统的设计与实现vue 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff0c;商品交易当然也不能排除在外&#xff0c;随着商品交易管理的不断成熟&#xff0c;它彻底改变了…

快团团新人怎么找供货团长?免费教程一学就会!

作为快团团的新手&#xff0c;想要寻找供货团长&#xff0c;可以按照以下步骤进行&#xff1a; 打开微信&#xff1a;首先&#xff0c;在您的手机上打开微信应用。 搜索快团团&#xff1a;在微信顶部的搜索框中输入“团长运营之家”&#xff0c;选择出现的“团长运营之家”公号…

WIFI模块的AT指令联网数据交互--第十天

1.1.蓝牙&#xff0c;ESP-01s&#xff0c;Zigbee, NB-Iot等通信模块都是基于AT指令的设计 初始配置和验证 ESP-01s出厂波特率正常是115200, 注意&#xff1a;AT指令&#xff0c;控制类都要加回车&#xff0c;数据传输时不加回车 1.2.上电后&#xff0c;通过串口输出一串系统…

pytest教程-44-钩子函数-pytest_report_collectionfinish

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_report_header钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_report_collectionfinish钩子函数的使用方法。 pytest_report_collectionfinish 钩子函数在 pytest 完成所有测…

汇聚荣科技:拼多多开店时后期押金可以退吗?

在电商领域&#xff0c;拼多多以其独特的团购模式迅速崛起&#xff0c;吸引了众多商家入驻。对于这些商家而言&#xff0c;了解平台的各项费用政策尤为重要&#xff0c;其中押金的退还问题是大家关注的焦点之一。那么&#xff0c;拼多多开店时后期押金可以退吗?答案是肯定的。…

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式&#xff1a; 当键盘按ctrlc的时候&#xff0c;切换消息读取方式&#xff0c;一般情况为读取指定编号的消息&#xff0c;按ctrlc之后&#xff0c;指定的编号不读取&#xff0c;读取其他所有编号的消息…

simulink-仿真以及PID参数整定/PID tuner 的使用流程

控制器搭建与参数整定 搭建一个前馈PID控制器控制系统PID tuner使用 一个懂点控制但不多的小白&#xff0c;因为需要利用simulink仿真&#xff0c;所以不得不学习一些仿真的知识&#xff0c;这篇文章适合和我一样的新手入门&#xff0c;有理解错误的地方希望大手们能够指出来共…

车载电子电器架构 —— UDS Service 11介绍

车载电子电器架构 —— UDS Service 11介绍 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证…