0 引言
实验室设备管理一直是一项繁琐的工作,包括实验耗品的入库和领用,硬件设备的入库、领用和报废等。由于缺少数据的集中管理,查找设备的相关信息时比较困难。本文实现了Django技术开发的实验室设备管理系统,该系统有助于实验设备管理人员对实验设备进行管理。
1 关键技术
Django是一个开源的Web应用框架,由Python语言编写,用来减少开发复杂的数据库驱动站点所要求的工作。Django注重组件的重用性和“可插拔性”,以及敏捷开发和DRY法则。Django框架的核心包括:一个面向对象的映射器,用作数据模型(以Python类的形式定义)和关联性数据库间的媒介;一个基于正则表达式的URL分发器;一个视图系统,用于处理请求;一个模板系统<sup>[1]</sup>。
Django可以运行在许多Web服务器上,例如Apache,或者是任何WSGI兼容的服务器。同时,Django还支持许多数据库引擎,例如PostgreSQL、MySQL、Oracle。
2 系统需求分析
2.1 功能需求分析
根据实验室设备的日常管理,系统主要功能分为如下几个部分:
(1)实验耗品管理。每年实验室都会申购一批实验耗品,例如焊锡、松香、实验用电路板、可充电电池等。该功能负责管理实验耗品的购入、使用、存量、记录和查询等数据信息。
(2)非易耗品设备管理。实验设备主要是一些非易耗品,例如电脑、投影仪等。这些非易耗品不会经常损耗,但是会涉及到设备的采购入库、报废、设备的领用场地等数据<sup>[2]</sup>。该功能主要实现这些非易耗品的入库、报废、设备目前使用情况等数据信息的管理。
(3)领用申请模块。要使用实验耗品和非易耗品都需要进行领用的申请。领用申请包括领用数量、领用类型、领用人、领用原由等信息<sup>[3]</sup>。根据这些信息,可以快速、准确地查到实验设备的使用情况。
2.2 非功能需求分析
非功能需求通常包括系统的效率、可靠性、可用性、可维护性、适应性和易用性等。系统在高校内部使用,因而用户不会太多,但仍然对并发访问时的系统性能有要求:①单用户操作系统时,2s之内出现结果;②多个用户同时访问操作系统,要求并发的响应时间不得超过8s;③对于恶意入侵,比如网络包攻击、SQL注入攻击等具有防范能力;④系统的理想故障频率为1次/年,最坏故障频率为2次/年,最理想故障频率为0.5次/年。
系统的易用性在设计方面的要求是界面友好、符合用户操作习惯、易上手。即:①系统界面简单整洁,布局设计合理,符合目前一般用户的使用习惯;②尽量减少使用者的输入量,人机对话友好,有操作错误提示,处理错误的数据输入。
3 系统设计
3.1 系统体系结构设计
Django是一个典型的MVC模型框架,view.py、url.py、model.py分别代表模型、视图和控制,分别处理表现层、控制层和数据层的业务处理。系统体系结构如图1所示。
图1 实验室设备管理系统体系结构
使用MVC结构,使得基于实验室设备管理系统满足如下要求:
(1)非功能性需求中的易用性。用户使用系统不需要占用客户机太多的资源,在人机交互过程中操作简便。
(2)非功能性需求中的可用性。系统采用B/S、MVC结构,在服务器端设置网络防火墙可以防止一般的网络攻击。在系统方面,MVC分离了页面和数据库,无法通过控制直接修改数据库内的数据,由于使用了Django的模板技术和自带的ORM框架,保证了系统的安全可用。
(3)非功能需求中的可维护性和适应性。系统的分层设计使得系统的升级维护更加简单。系统只是在服务器上运行,客户通过浏览器进行访问,所以系统的升级维护都只需要在客户机上进行,不需要耗费大量成本进行维护升级。
3.2 系统功能设计
根据功能需求分析,系统需要完成对耗材、非耗材的领用情况、库存方面的管理。系统功能模块如图2所示。
图2 系统功能模块
3.3 数据库设计
系统数据库的主要实体表如表1—表3所示。
表1 耗品清单(nlab_consumption)
字段名数据长度是否允许空备注
idint(4)否主键
consumptionVarchar(50)是耗品名称
cnumberInt(4)是耗品数量
storageTimesmalldatetime是入库时间
表2 设备清单(nlab_device)
字段名数据长度是否允许空备注
idInt(4)否主键
devicenvarchar(50)是设备名称
damountInt(4)是设备数量
dtypenvarchar(50)是设备类型
dstrorageTimedatetime是入库时间
scrapint(4)是是否报废
assetNumbernvarchar(20)是资产号
表3 领用信息(nlab_useinfo)
字段名数据长度是否允许空备注
idInt(4)否主键
usernameVarchar(20)是领用人名字
usertimeSmalldatetime是领用时间
purposeVarchar(20)是用途
usenumberInt(4)是领用数量
returnInt(4)是是否归还
4 系统实现
4.1 开发环境
系统开发采用Python2.7,Django1.6版本,Web服务器采用Apache,数据库使用MySQL。编写代码的工具采用Eclipse,利用PyDev插件,实现了在Eclipse中开发Django的应用项目。项目文件如图3所示。
4.2 部分实现代码
使用Eclipse创建一个Django的工程后,会产生一些.py的文件,包括views.py、urls.py、settings.py、admin.py等,这些文件包括了项目的配置、Django自带后台的管理配置、数据库ORM、视图和控制的配置与开发等。
图3 项目文件
4.2.1 urls.py
urls.py文件负责配置URL的地址映射和管理URL的地址格式。通过正则表达式注册站点信息,核心代码如下:
admin.autodiscover()
urlpatterns = patterns('', include(admin.site.urls)),)
4.2.2 settings.py
settings.py是Django工程的配置文件,与工程相关的工程模块和数据库全局配置信息都在settings.py中设置。在该文件中加入项目及配置数据库,相关代码如下:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contri
b.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'nlab', #这里添加了nlab项目
)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangoNlab',
'USER':'root',
'PASSWORD': ' ',
}
}
4.2.3 models.py
借助Django内部的对象关系映射机制,可以用Python语言实现对数据库表中实体的操作,实体模型的描述需要在文件models.py中配置。models.py中nlab_consumption表对应的代码如下:
class nlab_consumption(models.Model):
id = models.IntegerField (max_length = 4)
consumption = models.CharField(max_length = 50)
cnumber = models.IntegerField (max_length = 4)
storageTime = models.DateField(blank = False,null = True)
def __unicode__(self):
return self. consumption
class Meta:
ordering = ['id ']
4.2.4 admin.py
admin.py中添加要管理的对象。当配置文件的改动完成后,执行命令,Django会根据模型的定义自动完成ORM的数据库映射工作,屏蔽了底层数据库细节和SQL查询的编写。注册对象代码如下:
admin.site.register(nlab_consumption)
5 结语
通过实验室设备管理系统,可以高效地查询到耗品和硬件设备的使用情况,能够提高耗品的使用效率,避免重复购买。同时可以掌握硬件设备的使用年限和使用人,对即将报废和已报废的设备进行统计管理,实现了动态监管,提高了资产设备清查效率。
参考文献:
\.电脑编程技巧与维护,2009(2): 56-58.
[2] 万发桃.实验室设备的管理与维护[J].黑河学刊,2012(8):27-28.
[3] 陈剑明.实验室设备管理问题的思考[J].中国科技纵横,2013(9):250-250.