1、(完整版)实验室信息管理系统的设计与实现 实验室信息管理系统的设计与实现摘要:本文介绍基于Web技术开发的实验室信息管理系统(LIMS)。 系统在Microsoft Windows XP + Microsoft Access 2003 + IIS5。1 环境下开发,使用的主要技术为ASP技术和数据库技术,并采用了许多第三方组件,如利用ASPupload进行文件的上传。系统分成管理员子系统和注册用户子系统进行设计。 系统主要实现的功能有:设备预约管理、设备管理、易耗品管理、物品借用管理、物品损耗管理、试验标准下载、信息发布管理、留言板、和单位换算,同时管理员还能实现用户管理、数据库备份等。 本设
2、计最大的特色是克服了以往一些设备管理系统缺乏交互性的缺点,用户可以方便的查询设备信息并提交预约申请,管理员根据设备使用情况安排使用时间。所有预约信息会实时显示在网络上。同时,本系统还拥有功能全面、实用性强、界面友好、页面美观等特点。关键词:实验室信息管理系统(LIMS)、设备预约、ASP、ACCESS、 Aspupload1。引言 管理信息化是现代管理技术发展的趋势,本文介绍的实验室信息管理系统(LIMS)就是一种结合现代网络技术与管理经验,并针对本人所在公司的特点开发的实验室管理网站。由于本人在实验室从事管理工作多年,对实验室的管理流程、方式和内容有深刻的了解,结合自己的实际工作经验和公司的
3、管理特点开发的LIMS更能切合实际工作的需要。系统在开发过程中得到了公司领导的大力支持,在测试中获得良好的反响,一致认为这是改进管理效率、提高设备利用率的最好方式。 本文第一部分简要地介绍了系统的应用背景和主要技术.第二部分结合本人的工作经验和公司的管理特点,进行了系统分析,完成了设计目标和总体功能,并列有业务流程图、系统总功能结构图、前台注册用户功能结构图和后台管理员用户功能结构图。第三部分讲述数据库的设计,根据功能需求,设计了关键实体的属性图及E-R图,并画出了所有实体的关联图。随后设计了系统所需要的11个数据表。第四部分为论文的主要部分,详细讲述了各子模块的设计方法和思路,并列出了具有代
4、表性的源程序以及网页导航图和网页截图.第五章主要讲述有关系统安全方面的技术和本系统采用的安全技术。第六部分为设计总结部分,讲述本系统的特色以及开发过程中遇到的问题和解决办法,总结开发过程中的经验和教训,提出了系统的不足以及后续改善方向.2.应用背景与主要技术2。1应用背景和需求分析2。1。1 应用背景 利用计算机进行实验室的信息管理简称LIMS (Laboratory Information Management System ),已经有20多年的历史,而基于Web技术的第四代实验室信息管理系统是目前实验室管理的发展趋势. 相对于以前的LIMS,基于Web技术的实验室信息管理系统具有如下优点:
5、 (1)基于 (B/S) 结构,很容易部署在广域网和Internet上;只需要管理好服务器,客户端只采用Web 浏览器,无需安装任何客户端软件,无需维护;不限制用户规模,就可实现远程维护、升级和数据共享。 (2)可以容易地利用Internet联结多个地点的实验室。通过Internet,用户可以在家、在旅途等任何一个有Internet连接的地方使用LIMS,无限扩展了LIMS的适用范围;(3)支持无线用户,即通过支持WAP (无线应用协议) 使得用户可以非常方便地利用移动电话和掌上电脑等无线设备随时掌握实验室的信息,这为需要经常参加各种会议的实验室管理人员提供了极大的方便。 然而,每个公司的组织
6、架构和管理模式千差万别,目前市面上还没有完全通用的产品。因此,根据公司自身特点,进行有针对性地设计是现在设计LIMS的通行做法.2.1。2 需求分析 由于本人所在公司的实验室刚成立1年,预约管理、设备管理、易耗品管理、试验标准管理等均通过各种传统报表实现,繁琐的各类报表不仅使得管理效率低下,设备闲置浪费,而且还造成许多数据的重复输入,资源无法沟通与共享,与先进的实验室设备极不相称。因此,构建基于计算机网络的实验室信息系统,不仅是满足毕业设计的要求,而且也是提高实验室管理水平的重要保证.同时,为了实现更有效的资源利用,通过网络将实验室资源面向社会开放,不仅可以提高设备的利用率,还可以极大地提高实
7、验室的经济效益.2。2 主要技术在设计系统时,需要掌握的技术有ASP技术、HTML技术和数据库技术.2。2.1 工具软件采用HTML语言设计,静态网页采用Dreamweaver8.0制作。2.2。2 Vbscript或者Javascript脚本语言这两种脚本语言是网页制作中在服务器上运行的语言。许多服务器端的数据处理都是通过它们来实现。2.2。3 ASP技术 ASP包含了若干内嵌对象和可安装的Activex Server组件。使用它们可以增加ASP脚本程序的功能,使生成的网页具有很强的动态性和交互性. 内嵌对象可以与脚本语言有机地融合在一起,以增加服务器端的操作灵活性。Activex Serv
8、er组件则可用来方便地制作网上广告、访问Web文件、操纵Web数据库,从而使设计者可以以透明的方式进行访问而不必顾及底层的复杂动作。2。2。4 数据库管理系统Web服务器上的数据库采用数据库管理系统 (Database Management System,DBMS) 进行管理,这个管理系统提供了一个操作数据库的接口,使用户通过该接口可以对数据库中的数据进行访问。常见的数据库管理系统有:Access、SQL Server和Oracle等。本系统采用Access 2003。2。3 开发环境本系统的软件设计环境为:Microsoft Windows XP + IIS5.1 + Microsoft A
9、ccess 2003 + Dreamweaver 8.0 + Microsoft Internet Explorer 5。0 + ASP Edit Plus 2.0 .该软件系统的所有源代码均在此环境下调试通过。3。系统总体设计3.1设计目标 通过建立实验室信息管理系统(LIMS),为实验室使用者和实验室管理者提供一个沟通的平台,使用者通过LIMS查询实验室所拥有的设备、试验用消耗品等资源的信息。使用者可以根据自己的需要对设备进行网上预约,管理员根据预约申请单,安排合适的设备和具体使用时间。同时,使用者还可以借用实验室的一些工具、文件、试验消耗品等.管理员通过LIMS,能够将物品的借用和损耗信
10、息进行公布,可以提醒使用者及时归还实验室的物品,减少物品的损耗,提高使用效率. 试验标准是进行测试的依据,是实验室文件的重要组成部分。LIMS应具备测试者方便查看、下载试验标准的功能,管理员应能上传和管理标准,以保证及时更新最新版的标准。为了提高系统的坚固性和安全性,管理员应能对数据库进行备份.系统应能提供必要的安全机制,使得管理员、注册用户以及一般访问者具有不同的权限,以提高系统的安全性。3。2 总体功能 系统的开发分为管理员子系统和注册用户子系统两大部分。主要围绕预约管理、设备管理、易耗品管理、物品借用、物品损耗和试验标准下载这六个子模块进行设计.同时,还能够实现留言板、单位换算等功能。为
11、了提高数据的安全性,管理员应能方便的对数据进行备份。具体功能为:(1)管理员子系统:用户管理、设备管理、易耗品管理、信息发布管理、设备预约管理、物品借用管理、物品损耗管理、试验标准管理、留言板管理以及数据库备份等。(2)注册用户子系统:注册登录、设备信息查询、设备预约、易耗品信息查询、物品借用信息查询、物品损耗信息查询、试验标准下载、留言板信息查询和留言,以及单位换算等。3。3 功能流程图下面以设备预约为例,列出其功能流程图:开始设备信息填写预约申请已登录未登录主页注册登录注销登录内容检查 出错提示申请成功提示登录符合不符合网上预约图31设备预约功能流程图3。4 功能模块框图 3.4.1功能结
12、构总图实验室信息管理系统(LIMS)管理员子系统注册用户子系统图3-2系统功能结构总图 3.4.2 前台用户功能结构图主页会员区预约信息易耗品会员登录我的借用纪录会员资料修改预约清单设备详情查询易耗品清单单位换算注销登录设备信息设备清单预约详情查询预约申请递交网上预约易耗品搜索借用纪录物品清单物品搜索损耗纪录损耗物品清单按编号搜索留言板辅助功能我的预约申请我的留言分类搜索分类搜索分类搜索文件资料文件目录新用户注册图33前台用户功能结构图 3。4。3 后台用户功能结构图首页用户管理物品管理信息管理管理员用户注册用户资料修改删除设备管理预约详情数据库备份设置管理易耗品名称信息发布其它设备预约借用记
13、录损耗记录易耗品管理试验标准管理留言管理用户添加资料修改删除用户添加资料修改删除设备添加资料修改删除易耗品添加资料修改删除记录添加资料修改删除记录添加资料修改删除文件上载留言回复管理员留言返回首页易耗品添加资料修改删除注销图3-4 后台用户功能结构图3.5总体设计思路 根据上述系统所需实现的功能,本人对实验室信息管理系统的整体规作了以下的设计。整个系统分为七个主要子模块,分别是:预约管理子模块、设备管理子模块、易耗品管理子模块、借用管理子模块、损耗管理子模块、试验标准下载子模块、和注册登录子模块。 预约管理模块:使用者在设备查询页面查看相关设备,如果设备符合自己的使用要求,可以在网上填写并递交
14、设备预约申请单。管理员收到申请单后,根据设备的使用情况安排设备、使用时间和使用天数等.查看和填写预约申请在登录后方可操作. 设备管理模块:使用者在这个页面上看到所有设备的清单,可以根据设备编号和设备状态快速查询到自己所要的设备,并能查看到这台设备的档案。管理员能够增加、修改或者删除设备信息。 易耗品管理模块:这个页面显示所有易耗品的清单,可以根据易耗品类别和易耗品节余情况快速查询到易耗品.管理员能够增加、修改或者删除易耗品信息。 借用管理模块:这个页面显示所有借出物品清单,可以根据借用人、借用时间及归还状态查询。管理员能够增加、修改或者删除物品借用记录。 损耗管理模块:这个页面上显示所有损耗物
15、品清单,可以根据责任人、损耗时间及处理结果查询。管理员能够增加、修改或者删除物品损耗记录。 试验标准下载模块:在这个页面上使用者可以查询到常用测试标准并进行下载。管理员能够增加、修改或者删除试验标准。 注册登录子模块:对于不同的用户具有不同的权限,非注册用户可以查看设备信息、易耗品信息等,但不能进行设备预约和物品借用;非注册用户可以通过注册成为注册用户。注册用户可以执行设备预约,同时,注册用户应能方便地查询和管理自己的信息;管理员用户可以对系统资源进行设置,执行各项管理工作。4.数据库设计4.1数据表的设计 在设备预约功能中,每个注册用户应能预约多台设备,而每一台设备应能被不同的注册用户预约,
16、它们是一个多对多(M:N)的关系,如下图所示:M预约注册用户设备N图41 设备预约 E-R图由于“多对多”关系实现起来比较困难,为了简化设计,增加一个预约清单表,专门用于存放设备预约信息.以下为实际使用的设备预约ER图:提交注册用户registuser预约申请单 orderlistM预约设备equipN管理员用户admin批准N图42 设备预约 E-R图根据系统功能的需要,对各个数据实体进行分析,确定实体必要的属性。下图以设备为例,说明了设备所具有的属性:设备equip单价price价格单位unit说明remark编号sn名称name型号model供应商supplier安装位置location
17、工作状态status购买日期adddate图43 设备属性图根据以上的方法,可以很容易地设计其它几个表的属性及其ER图。以下为系统数据表总的关联图:图44 数据表关联图4.2数据表清单以下为根据系统功能设计的11个数据表,全部放在数据库lab。mdb内.1) 【管理员表】 admin表412) 【注册用户表】 registuser表4-2 3)【预约清单表】 orderlist表43 4)【设备表】 equip表445)【易耗品信息表】 consume表456)【易耗品名称表】 consumename表467)【借用记录表】 lend表478)【损耗记录表】 damage表489)【消息表】
18、notice表4910)【留言表】 msg表41011)【标准表】 document表4115.ASP+Access的安全隐患5.1 安全隐患 ASPAccess解决方案的主要安全隐患来自Access数据库的安全性,其次在于ASP网页设计过程中的安全漏洞。 1)Access数据库的存储隐患 在ASPAccess应用系统中,如果获得或者猜到Access数据库的存储路径和数据库名,则该数据库就可以被下载到本地。例如:对于网上书店的Access数据库,一般命名为book。mdb、store。mdb等,而存储的路径一般为“URL/database”或干脆放在根目录(“URL/”)下。这样,只要在浏览器
19、地址栏中输入地址:“URL/database/store。mdb”,就可以轻易地把store。mdb下载到本地的机器中. 要解决这个问题,可以将文件的后缀名.mdb改为.asp,这样就不能被下载了。本系统正是采用了此安全策略,将数据库名由“lab.mdb”改为“lab.asp”。 2)Access数据库的解密隐患 由于Access数据库的加密机制非常简单,所以即使数据库设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行异或形成一个加密串,并将其存储在*.mdb文件中从地址“&H42开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.md
20、b文件中的加密串进行第二次异或操作,就可以轻松地得到Access数据库的密码。基于这种原理,可以很容易地编制出解密程序. 由此可见,无论是否设置了数据库密码,只要数据库被下载,其信息就没有任何安全性可言了. 3)源代码的安全隐患 由于ASP程序采用的是非编译性语言,这大大降低了程序源代码的安全性。任何人只要进入站点,就可以获得源代码,从而造成ASP应用程序源代码的泄露。 4)程序设计中的安全隐患 ASP代码利用表单(form)实现与用户交互的功能,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证直接进入某一页面。例如在浏览器中输入“page。as
21、p?x=1,即可不经过表单页面直接进入满足“x=1”条件的页面。因此,在设计验证或注册页面时,必须采取特殊措施避免此类问题的发生。 5.2提高数据库的安全性 由于Access数据库加密机制过于简单,因此,如何有效地防止Access数据库被下载就成了提高ASPAccess解决方案安全性的重中之重. 1)非常规命名法 防止数据库被找到的简便方法是为Access数据库文件起一个复杂的非常规名字,并把它存放在多层目录下.例如,对于网上书店的数据库文件,不要简单地命名为“book。mdb”或“store.mdb”,而是要起个非常规的名字,例如:faq19jhsvzbal.mdb,再把它放在如./akkj
22、j16t/kjhgb661/acd/avccx55 之类的深层目录下。这样,就能有效地阻止一些通过猜的方式得到Access数据库文件名而进行的非法访问。 2)ODBC数据源在ASP程序设计中,应尽量使用ODBC数据源,不要把数据库名直接写在程序中,否则,数据库名将随ASP源代码一同失密。例如: DBPath =Server.MapPath(。/akkjj16t/kjhgb661/acd/avccx55/faq19jhsvzbal.mdb ”) conn.Open driver=Microsoft Access Driver (.mdb);dbq=DBPath 可见,即使数据库名字起得再怪异,隐
23、藏的目录再深,ASP源代码失密后,数据库也很容易被下载。如果使用ODBC数据源,就不会存在这样的问题了: conn.open ”ODBCDSN名3)对ASP页面进行加密为有效地防止ASP源代码泄露,可以对ASP页面进行加密。一般有两种方法进行加密:一种是使用组件技术将编程逻辑封装入DLL之中;另一种是使用微软的Script Encoder对ASP页面进行加密。使用组件技术存在的主要问题是每段代码均需组件化,操作比较烦琐,工作量较大;而使用Script Encoder对ASP页面进行加密,操作简单、收效良好。Script Encoder方法具有许多优点: HTML仍具有很好的可编辑性操作简单可以
24、批量加密文件Script Encoder是免费软件。该加密软件可以从微软网站下载:http:/msdn。microsoft。com/scripting/vbscript/download/x86/sce10en。exe.下载后,运行安装即可。 4)利用Session对象进行注册验证 为防止未经注册的用户绕过注册界面直接进入应用系统,可以采用Session对象进行注册验证.Session对象最大的优点是可以把某用户的信息保留下来,让后续的网页读取.比如:设计要求用户注册成功后系统启动orderlist。asp?page=1页面。如果不采用Session对象进行注册验证,则用户在浏览器中输入“UR
25、L/hrmis.asp?page=1即可绕过注册界面,直接进入系统。利用Session对象可以有效阻止这一情况的发生。本系统正是利用Session对象进行注册验证,以区分不同用户及权限.6.总结6.1 本系统的主要特色 本设计最大的特色是克服了以往一些设备管理系统缺乏交互性的缺点,用户可以方便地查询设备信息并提交预约申请,管理员根据设备使用情况安排使用时间。所有预约信息会实时显示在网络上.同时,本系统还具有功能全面、实用性强、界面友好、页面美观等特点。6。2开发中所遇到的问题及解决方法 由于本人是第一次开发如此大的系统,而且此前对于ASP技术十分陌生,因此开发难度可想而知。开发过程中面对的既有
26、技术上的问题,也有怎么用程序语言实现一个业务流程的问题。在开发初期,技术问题是最大的困扰。对命令不熟悉,经常由于拼写错误使得程序出错,唯一的解决办法就是多练。其次就是数据类型,常量和变量的定义。对于数据类型,要根据使用的具体情况定义,并认真做好标识,保持程序和数据库内数据类型的一致。否则,在调试过程中极易发生因为数据类型不一致而出错。对于变量,一定要预先进行定义。例如,在设定document表标准编号的数据类型时,最先定义为整数型,当选择按编号搜索时,完全输入数字没有问题,但如果在输入框里输入了非整形的字符时,网页就出错.起先将数据库内document表的sn字段的数据类型改为text,可是程
27、序一运行,还是出错,显示为“Microsoft JET Database Engine (0x80040E10)至少一个参数没有被指定值”。经分析,可能是程序设定的变量的类型错误。这是原来的一段程序rs.Open ”select * from equip where sn=”selectsn&” order by adddate desc” ,conn,1,1后来经试验,将原来&selectsn改为&selectsn”,问题就解决了. 数据库的连接,对我们初学者而言是十分困难的。这时候,就要采取先易后难的办法,先模仿指导老师给的习作,多联系和模仿,逐渐了解其用法。然后将数据库的连接做成一个公共
28、文件,每次需要调用数据库时,就先调用这个文件打开数据库,然后用变量完成和数据库的交互。在利用第三方组件ASPUPLOAD时,发现一旦安装了ASPUPLOAD,浏览器的中文都成了“?。问题的根源找了很长时间,开始以为是浏览器的字体设置问题,改成各种字体都没有效果.后来在电脑的控制面板上选择“区域和语言选项”,将系统设为“中文”,non-unicode也设置成中文,并在每个程序源代码上都预先将语言和编码方式进行定义,就不会出现这样的情况了。在开发的后期,当将系统移植到服务器上进行测试的时候,发现原本在电脑上排版正常的页面,在很多客户机上都出现页面排版混乱。通过调整页面内表格宽度的属性(如:将页面的
29、绝对宽度调整为相对百分比宽度,对一些表格设定了可以根据页面自动调整宽度的功能),就解决了这个问题。 致谢 网络本科的学习即将结束,在此,我要感谢我的老师、朋友和家人,没有他们的鼓励和支持,整个实验室信息管理系统设计能够按时、圆满地完成,我要特别感谢指导老师曹邦伟教授的关怀和教导,他认真负责的教学态度,严谨的治学精神和深厚的理论水平使我受益非浅,无论是在理论上还是在实践中,都给予我很大的帮助,使我在各方面能力都有了长足的进步,这对于我以后的工作和学习都是一种巨大的帮助。再次向各位老师表示感谢!参考文献1 尚俊杰:网络程序设计:清华大学出版社,2004年2月第2版2 尚俊杰:ASP.NET程序设计案例教程:清华大学出版社,2005年9月第1版3 (韩)高京熙:Dreamweaver从入门到精通:中国青年出版社,2006年10月第1版4 黄雷 杨志 游坤等:ASP+HTML+Dreamweaver+Access开发动态网站实例荟萃:机械工业出版社,2006年2月第1版