《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 一种高扩展性的设备管理系统设计与实现
一种高扩展性的设备管理系统设计与实现
2014年微型机与应用第16期
李文藻1,黄 强2,杨宗泽3
1.成都信息工程学院 通信工程学院,四川 成都 610225; 2.四川大学华西医院 公共实验技术中心,四川 成都 610041; 3.四川大学华西医院 疾病遗传资源中心,四川 成都 610041
摘要: 在某科研单位的设备使用场景及实际需求背景下,为了实现设备的灵活管理与流程管理,介绍了一种基于B/S模式的可扩展性较高的设备管理系统的设计及实现方式。系统通过Microsoft Visual Studio .NET平台技术,利用C#语言与SQL Server数据库,最终实现了操作方便、扩展容易、数据传输可靠的以WEB进行数据录入及查询的设备管理系统。实际使用证明,该系统极大地提高了设备管理的工作效率,并且通过扩展性设计极大地延长了系统的生命周期。
Abstract:
Key words :

  摘  要: 在某科研单位的设备使用场景及实际需求背景下,为了实现设备的灵活管理与流程管理,介绍了一种基于B/S模式的可扩展性较高的设备管理系统的设计及实现方式。系统通过Microsoft Visual Studio .NET平台技术,利用C#语言与SQL Server数据库,最终实现了操作方便、扩展容易、数据传输可靠的以WEB进行数据录入及查询的设备管理系统。实际使用证明,该系统极大地提高了设备管理的工作效率,并且通过扩展性设计极大地延长了系统的生命周期。

  关键词: B/S模式;设备管理系统;C#语言;SQL Sever数据库

  目前在众多企业及科研单位,其设备管理通常通过人工利用表格录入进行查询及报废等工作,这样的方式随着设备的增加、设备流动性的加强以及业务逻辑的复杂,逐步呈现出管理过程繁复、容易出错并且不易追朔的特征。本系统是根据某科研单位的需求,合作开发的一套基于网络化的设备管理平台。该科研单位由于设备逐步增加,业务流程逐步改革,传统的人工模式不能适应设备管理的需要,本系统在设备管理上可极大地减轻管理人员的负担,更符合该单位目前需求与未来发展。

  C#是运行于.NET Framework上由微软公司发布的面向对象的开发语言,它在2000年由Anders Hejlsberg主持开发,对整个IT界具有很大的影响[1-2]。其中最重要的影响是在.NET平台下开发应用程序变得更加简便、现代及通用,并且.NET使Internet的行为方式被改变,利用一种较为新型的开发、发行及使用方式,更好地体现了软件服从于服务的思想[3]。随着国内网络信息交流的频繁与局域网的发展,其网络数据带宽得到了较大提高[4],其中B/S模式的管理系统也具有无需安装客户端,在目前网络条件下具有访问快捷与变更灵活等特征,所以设计以.NET平台下利用C#语言开发的B/S系统,结合SQL Sever数据库的三层模型,是开发设备管理系统较为理想的方式。

1 系统需求与功能分析

  在对该单位设备管理流程以及管理对象进行认真调研及分析后,确定了系统的基本功能与需求。系统需要对科研设备进行统一的管理及部署,实现对设备信息的录入及查询两大基本模块,并可以由一般权限人员对设备进行查询。系统主要由服务器、数据库、交换设备以及浏览终端组成,其网络部署拓扑如图1所示。

001.jpg

  使用者角色为管理员与普通用户,其权限的职能划分如下:

  (1)管理员权限:主管信息系统的设备及信息录入、删除、设备信息修改等。

  (2)浏览用户权限:可以查询单个设备信息、检索类设备信息、系统留言信息等。

  以上权限根据其应用需求,适合采用模块化设计,并根据用户的认证权限决定各模块是否显示。

  通过实际管理流程分析,针对设备属性方面分为设备操作属性与设备自身属性。设备操作属性包括设备的调拨、报废、录入、删除及维修。其自身属性包括设备所属地、名称、价值、管理员信息及参数等数据。而合理的参数设置以及在系统设计中充分考虑到设备的属性修改的便捷性,对系统的扩展及生命力具有重要的意义。

2 设备管理系统的设计

  2.1 系统模块设计

  设备管理系统的管理对象是设备,根据用户的实际使用情况,系统主要划分为设备管理操作模块、系统设置管理模块、信息查询模块与密码修改模块4大部分,参考Aspect-Orient Programming(AOP)设计思想[5],各模块之间横切关注点分离开,其功能划分具有更好的封装性。其功能框图如图2所示。

002.jpg

  各模块主要功能如下:

  (1)设备管理模块:系统管理员权限可见,负责设备的信息录入、修改、维修登记、调拨登记以及报废登记,可细分为图2所示的5个主要操作页面。

  ZI2)9UB1XT_9FE~93K`1MJ2.jpg

  通过系统设置管理模块,可以大大提高系统的通用性以及系统使用的便捷性,避免了由于诸如部门更名而系统必须修改的情况。

  (3)信息查询模块:系统管理员权限与浏览用户权限均可见,主要负责对设备统计搜索查询、维修搜索查询、调拨搜索查询以及报废统计查询。查询中必须定义:

  099EVVZ0NW}EHW8S}]HEDL4.png

  其中,D1为查询设备集,D2为维修设备集,D3为调拨设备集,D4为报废设备集。在系统中存在唯一查询De的一个页面,保证全部设备可列出,并由状态栏显示其所属子集。其他页面查询只显示子集列表,通过这样的设计,随着设备量的增加,能保证设备可列数量较少,提高工作效率,也可以通过限制显示列表数量的方式,为后续的手机系统作为查询终端奠定可扩展的空间[6]。

  2.2 系统扩展性设计

  设备管理系统的设计应遵循易用性与可扩展性原则[7]。随着使用单位的部门名称变更、管理流程变更以及功能模块的增加,都会让初始设计的系统陷入不能使用的尴尬境地。从使用者的角度,设备管理系统开发周期长、设计成本高、数据库导入、导出与修改的方法繁复,其做系统更换的代价较大,也极大地影响了一个系统的生命周期。针对以上出现的问题,如何设计系统的可扩展性是评判系统设计优良的一个重要指标。本系统中的扩展性设计基于以下两方面:

  (1)部门与设备个别特征的可配置性。在系统中,考虑到通用性与扩展性的需求,部门设计中以部门为管理单位,对设备进行归属部门的挂靠,并由组织机构模块负责部门的录入,其功能模块如图3所示。

003.jpg

  图3中,实线框表示可设置的操作对象模块,虚线框表示相应步骤中的操作功能选择,通过这样的设计,在部门发生变动的情况下也可以具有很好的通用性与扩展性。

  (2)设备管理系统架构采用软件架构上采用的表现层、逻辑层和数据访问层3层架构。系统中功能目录结构利用数据库实现表现层与逻辑层的联系,页面中目录以树形结构显示,并由H_systemtree表中Parentid项与序号ID项进行树形目录显示及叶节点、根节点的确定。H_systemtree表结构设计如表1所示。

004.jpg

  通过设计H_systemtree表控制目录树显示,具有修改方便、扩展性强的特点,通过数据表项的修改,可以方便调整目录树的显示结构,也可以通过页面的链接较为快速地对系统进行模块化的扩充。

3 设备管理系统关键技术的实现

  3.1 数据库实现

  通过用户的实际需要,首先设计了包括H_DeviceInfo在内的10余张表,以满足用户的数据存储访问以及系统控制的需要。由于会面临多次数据库的访问,因此在系统中声明一个新的访问接口类,其继承通用类OleDbmanager,并调用类的多个构造函数,以实现在未来数据库类型更改的情况下,或是有修改数据类型的链接时,对这个实现类进行修改就可以适应,而不需要去改变接口的定义,从而避免由于上层应用程序变更而变更接口的定义[8]。连接数据库构造函数定义部分代码如下:

  Public IDbConnection connectDb();

  {

  If(Connection==NULL)

  {

  Connection=new OleDbConnection(Connect_string)

  }

  try{Connection.open();}

  return Connection;

  }

  3.2 ArrayList对象的数据存储

  根据设备管理系统信息录入的特点,通用性的设计标题类数据利用HTML标记语言中的td标记进行单元格定义,并由td标记标签进行静态文本的显示,这样的好处是方便修改背景色、表格大小等属性。利用asp:textbox控件进行数据的获取,利用asp:dropdownlist控件进行数据选择,利用asp:button控件进行操作函数的触发。对程序设计进行规定后,其后续的开发以及设备上线后的调试与修改,将会具有一定的便捷性。在asp:textbox控件与asp:dropdownlist控件填写完相应的信息以后,会由asp:button进行具体的数据获取与执行,进行数据库的写入。

  在数据库写入时,考虑到程序的扩展性,利用数组的方法进行数据库的对齐写入。一般情况下,有ArrayList和LinkedList两个实现类可以实现数组的结构,但是这两种方法的实现方式不一致,Linklist类是由链表实现,而ArrayList类则是由数组实现。由于对齐方式写入数据库方式更能保证数据的查错与修改,具有更好的格式性[9],这里考虑利用ArrayList类中Add方法进行数据的获取保存,并通过调用SQL语句写入数据库。其关键代码如下:

  /*获取模块中所需信息*/

  ArrayList Device=new ArrayList();

  …

  Device.Add(DeviceNo.text);//设备编号

  Device.Add(DeviceName);//设备名

  …

  /*插入数据库*/

  String SQL="insert into H_DeviceInfo(…deviceNo,deviceName…)values("+…,′"Device[n]+"′,′"Device[n+1]+"′…)";

  通过以上方式,就可以把设备编号与设备名称分别插入到表H_DeviceInfo中的deviceNo项与deviceName项中。在查询模块中,其数据的读出显示也采用类似的原理。通过这样的设计,较大程度地加强了程序的可读性,并使程序在后续的修改中实现了较为便捷的目的。

  系统设计以某科研单位的实际需求为设计依据,概述了基于.NET利用C#语言开发的设备管理系统的设计过程,参考AOP的编程思想,提出了其中关键技术的实现方式。并且在设计及实现的过程中,通过使用模块化设计、树形菜单的数据库控制及显示、新声明数据库接口、控件使用相对单一和横切关注点分离的编程思想,提高了程序的可读性、简易性,最终实现了可扩展、生命周期长以及通用性高的设备管理系统。该系统可以较为方便地部署,通过后续的系统运行测试,代替了传统的设备管理模式,也验证了系统的扩展性及可靠性,并且可以方便地扩展到手持终端的查询,丰富系统访问途径。

  参考文献

  [1] 张荣,王培俊,曹永彦,等.基于ASP .NET技术的实验中心信息化管理平台的设计[J].计算机技术与发展,2011,21(5):235-237.

  [2] 林金田,谭鉴荣,周钦强,等.基于Web气象技术装备管理与查询系统设计[J].成都信息工程学院学报,2009,24(3):264-267.

  [3] 曹蕾,李楠,宁燕子,等.基于C#. Net的公司内部管理系统的设计与实现[J].数字技术与应用,2011,2(2):50-52.

  [4] Zhang Donglai, CODDINGTON P, WENDELBORN A. Web services workflow with result data forwarding as resources [J]. Future Generation Computer Systems,2011,27(6):694-702.

  [5] 陈旻.基于ADO .NET数据库访问实例的设计实现与应用[J].软件导刊,2010,9(7):101-103.

  [6] MAES S H. Distributed device information management system as a distributed information repository system: U.S. Patent 7,949,569[P].(2011-5-24).http://www.freepatentsonline.com/y2008/0183753.html

  [7] 周芹,周远龙,王磊.基于B/S结构的高校设备管理系统设计[J].软件导刊,2013,12(2):82-83.

  [8] 陈月娟,李慧,刘光远,等.基于AOP的信息管理系统的研究与实现[J].计算机应用与软件,2010,27(2):130-133.

  [9] SENTHIL J, ARUMUGAM S, KAPOOR S M A A. Automatic code generation for recurring code patterns in Web based applications and increasing efficiency of data access code[J]. International Journal of Computer Science, 2012, 9(3):473-476.


此内容为AET网站原创,未经授权禁止转载。