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

news2024/11/27 2:28:21

 

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

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

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

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.coloradmin.cn/o/1671271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.基本概念,半导体基础

1.电压降&#xff1a; 指电流通过阻抗负载时的电位降的大小。&#xff08;线段或部件两端的电压&#xff09;。 2.数量较多的载流子称为多子 3.二极管和稳压管 4.习题

银发经济背后百万亿市场,解析冷门暴利的中老年AI赚钱项目!

最近“银发经济”这个词频繁出现&#xff0c;如果你注意到了抖音被封号的“秀才”以及仍在活跃的“一笑倾城”这两个账号&#xff0c;你就会明白中老年赛道的前景是多么广阔。 《银发经济蓝皮书》数据显示&#xff0c;到目前为止&#xff0c;我国60岁及以上的老年人口已超过2.8…

2024最佳项目管理软件整理

在项目管理领域&#xff0c;选择合适的任务管理软件对于提高团队效率和确保项目顺利进行至关重要。 以下是一些优秀的项目任务管理软件&#xff0c;以及它们的官网地址和特点介绍 序号软件名称官网地址特点介绍1zz-planhttps://zz-plan.com/一款在线甘特图协作软件&#xff0c…

炫酷渐变官网源码

炫酷渐变官网源码 效果图部分代码领取源码下期更新预报 效果图 部分代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title…

下载驱动包提示 通常不会下载 未验证的下载

打开设置 添加允许站点 如果还是下载不了&#xff0c;那只能换资源了

基于网络的无人海洋船舶控制

书籍&#xff1a;Network-Based Control of Unmanned Marine Vehicles 作者&#xff1a;Yu-Long Wang&#xff0c;Qing-Long Han&#xff0c;Chen Peng&#xff0c;Lang Ma 出版&#xff1a;Springer 书籍下载-《基于网络的无人海洋船舶控制》控制系统中的通信网络可能引起延…

9.多数元素

文章目录 题目简介题目解答解法一&#xff1a;排序代码&#xff1a;复杂度分析&#xff1a; 解法二&#xff1a;摩尔投票法代码&#xff1a;复杂度分析&#xff1a; 解法三&#xff1a;哈希表代码复杂度分析&#xff1a; 题目链接 大家好&#xff0c;我是晓星航。今天为大家带来…

Meilisearch vs Elasticsearch

2个搜索引擎的比较&#xff08;官方说法&#xff09;&#xff1a;Meilisearch vs Elasticsearch Elasticsearch 做为老牌搜索引擎&#xff0c;功能基本满足&#xff0c;但复杂&#xff0c;重量级&#xff0c;适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需…

《intel开发手册卷3》读书笔记1

1、CPU工作模式 1&#xff09;实模式&#xff1a;8086的寄存器只有16位&#xff0c;我们也习惯于称8086的工作模式为16位模式。后续的CPU为了保持兼容性&#xff0c;在芯片上了电以后&#xff0c;还必须运行于16位模式之下。这种模式还有个正式的名字叫做实模式。在实模式下&am…

转移插槽笔记

4.3.4.转移插槽 我们要将num存储到7004节点&#xff0c;因此需要先看看num的插槽是多少&#xff1a; 如上图所示&#xff0c;num的插槽为2765. 我们可以将0~3000的插槽从7001转移到7004&#xff0c;命令格式如下&#xff1a; 具体命令如下&#xff1a; 建立连接&#xff1a;…

零一万物发布千亿参数模型Yi-Large,李开复呼吁关注TC-PMF,拒绝Ofo式烧钱打法

5月13日&#xff0c;在零一万物成立一周年之际&#xff0c;零一万物 CEO 李开复博士携带千亿参数 Yi-Large 闭源模型正式亮相&#xff0c;正式进军全球 SOTA 顶级大模型之首&#xff0c;在斯坦福最新的 AlpacaEval 2.0 达到全球大模型 Win Rate 第一。除此之外&#xff0c;零一…

你知道在 TS 中判断两个类型相等有多难吗?

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ TypeScript 中的类型相等 如果我们想判断两个变量是否相等&#xff0c;可以简单的通过 或 来进行比较&#xff0c;但是对比两个类型则不行。 在 TypeScript 中&#xff0c;类型是静态的&#xff0c;只会在编译时…

国标GB28181协议EasyGBS视频监控云平台端口正常却不能播放,是什么原因?

国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入&#xff0c;并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强&#xff0c;支持将接入的视频流进行全终端、全平台分发&#xff0c;分发的视频…

Deepin20.9使用系统工具升级到DeepinV23Bete3没有显卡驱动问题

心血来潮看到官网上有最新的桌面版就升级了 原来Deepin20.9使用系统工具升级到DeepinV23Bete3 升级后就出现错误了&#xff0c;没有分辨率设置&#xff0c;分辨率为800*600 查看硬件驱动&#xff0c;发现是没有显卡驱动 上命令直接安装&#xff1a; sudo apt-get install…

数据结构-栈的讲解

栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底&#xff08;因为先进后出&#xff09;。栈中的数据元素遵守后进先出LIFO&#xff08;Last In Firs…

【游戏引擎】unity

目录 Unity入门教程&#xff1a;从零到英雄的旅程前言第一步&#xff1a;下载和安装Unity第二步&#xff1a;创建你的第一个Unity项目第三步&#xff1a;熟悉Unity界面第四步&#xff1a;创建一个简单的游戏对象第五步&#xff1a;编写脚本赋予游戏对象生命第六步&#xff1a;运…

【一触即发】快来围观C3安全大会酷炫九宫格!

C3安全大会2024 2024年5月18日 南京扬子江国际会议中心 C3安全大会2024 即将揭幕&#xff01; 图解C3 | 九宫格 数智变革&#xff0c;“AI”正以其颠覆性力量&#xff0c;重塑我们对未来的定义。亚信安全邀您共襄盛举&#xff0c;见证这场于5月18日盛大开幕的C3安全大会2024…

办公软件_EdrawMax 免安装版教程 (亿图图示综合图形图表设计软件)

前言 万兴亿图图示(Wondershare EdrawMax)是一款综合图形图表设计软件,Visio国产替代.亿图图示中文版(Edraw Max)是一款办公绘图软件的思维导图软件.无需任何绘图功底,即可轻松创建各类思维导图.亿图图示专家,提供大量事例和在线模板,用于创建流程图,信息图,组织结构图,科学教…

数据可视化训练第6天(美国人口调查获得关于收入与教育背景的数据,并且可视化)

数据来源 https://archive.ics.uci.edu/dataset/2/adult 过程 首先&#xff1b;关于教育背景的部分翻译有问题。 本次使用字典嵌套记录数据&#xff0c;并且通过lambda在sorted内部进行对某个字典的排序&#xff0c;最后用plotly进行绘图 本次提取数据的时候&#xff0c;用到…

海外青云私有云产品种类介绍

青云(QingCloud)是一家领先的云计算服务提供商&#xff0c;其私有云产品系列在海外市场上也备受关注。以下是对海外青云私有云产品种类的科普介绍。 在海外市场中&#xff0c;青云的私有云产品以其高度的灵活性、可扩展性和安全性而著称。这些产品能够满足不同行业、不同规模企…