基于QT的药品查询与管理系统设计方案.docx
- 文档编号:15962341
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:15
- 大小:28.11KB
基于QT的药品查询与管理系统设计方案.docx
《基于QT的药品查询与管理系统设计方案.docx》由会员分享,可在线阅读,更多相关《基于QT的药品查询与管理系统设计方案.docx(15页珍藏版)》请在冰点文库上搜索。
基于QT的药品查询与管理系统设计方案
基于QT的药品查询与管理系统设计方案
目录
摘要I
第一章引言1
1.1药品管理系统的背景与意义1
1.2系统开发工具与开发模式的选择2
第二章需求分析3
2.1可行性分析3
2.2用户需求分析3
第三章药品管理系统整体设计4
3.1药品管理系统原理4
3.2药品管理系结构4
3.3药品管理系统软件设计方案4
3.4ARM开发板的选择和介绍5
第四章药品管理系统的各模块的设计与实现7
4.1WebSever模块7
4.1.1WebSever介绍7
4.1.2WebSever实现的功能8
4.1.3实现方案8
4.2ARM开发板QT模块10
4.2.1QT模块介绍10
4.2.2QT模块实现功能11
4.2.3实现方案11
第五章系统测试13
第六章总结14
参考文献16
基于QT的药品查询与管理系统设计
摘要
本文介绍了基于QT的药品查询与管理系统,系统分为WebSever模块,QT模块,数据库模块三部分。
用户所需的是一个可以连接网络的ARM终端,写入的QT程序指向了WebSever服务器,通过终端上的操作来实现对药品的管理与查询。
本文描述了系统的原理与设计,阐述了设计的过程,软件的编写以及系统的集成的各个细节,讨论了系统出现的问题以及解决方案。
关键词:
药品管理、基于QT、WebSever服务器
第一章引言
1.1药品管理系统的研究背景
21世纪随着IT技术的发展,自动化管理与办公系统逐渐成为新时代的趋势。
随着产品生命周期管理与企业资源计划的概念的引入与普及,企业的研发能力和控制成本的能力得到极大的提升。
由于激烈的市场竞争和产业整体水平的提升,一些领头企业越发察觉到下一轮竞争的焦点将集中在产品和服务的质量。
传统的管理办法存在着信息采集与管理的不规范、问题反馈与追溯的不易;产品质量控制不够严谨,效率低下;决策与分析时信息不健全等问题。
而随着信息管理技术的应用,研发、生产、采购和销售过程的信息化与自动化程度不断提高,质量管理部门对采用质量信息系统来辅助质量管理并与其他部门实现顺畅的沟通的需求也越发强烈。
采用信息化进行质量管理的一个重要部分就是数字化实验室。
他是将传统实验室与计算机技术、网络技术、多媒体技术等相关的技术的有机结合,以此来进行信息加工处理与传播[1]。
现在高校中的生物化学实验室内通常都使用着种类繁多的化学药品,其中包含了易燃易爆物品和剧毒物品。
除此之外,有的实验要在高温度、高压力或者超低温、真空、强磁、微波、辐射、高电压和高转速等特殊环境下或条件下进行[2],稍有疏忽就将造成严重的人员财产损失。
因此使用高效,精准的信息化管理系统成为了必然选择。
信息化管理系统具有以下几点优势。
1.简单,客观。
信息化管理系统能以超高的速度对数据进行计算、统计、分析与处理。
2.易于标准化,将各种数据以简洁,清晰的格式提供给用户,遍于用户的读取。
3.通过此种信息化管理系统的使用,能够达到优化组织结构,调整企业管理体制,推进扁平化管理的目的。
在提高办公效率的同时,亦能增加组织的协同能力,实现信息的充分与快速共享,及数字化的办公模式。
而其使用数字设备办公的方式,亦能符合现在所倡导的无纸化办公理念。
数字化管理系统基于工作流的概念,以计算机为中心,采用一系列现代化的办公设备和先进的通信技术,广泛、全面、迅速地收集、整理、加工、存储和使用信息,使工作人员能够方便快捷地共享信息,高效地协同工作;改变过去复杂、低效的手工管理方式,具备大数据处理的能力,从而实现科学管理和决策服务的目的。
数字化管理系统强调管理的严谨,目的是提高管理效率,需具备以下特点:
易用性、健壮性、开放性、严密性以及实用性。
易用性,及功能的易用,系统方便快捷对用户友好。
健壮性,级具备大用户,高并发应用的稳定性,能够承担大数据的运算。
开放性,能够与其他软件系统甚至第三方系统实现关联性整合。
严密性,级系统设计的严谨,需实现数据上的大集中与小独立的统一,同时具备标准化和个性化定制。
实用性,及软件功能必须贴近用户,必须与管理务实紧密相结合。
1.2系统开发工具与开发模式的选择
药品查询与管理系统主要业务为数据处理,主要使用平台因为个人移动设备。
因此,本系统选用了ARM开发板作为个人终端设备,WebServer作为业务端。
选用ARM开发板的原因是近年来移动设备处理性能的飞速提高,市场上出现了大量的使用ARM作为开发平台的设备。
由于市场需求的旺盛,ARM设备的潜力也在不断被挖掘出来,因此本平台还是相对稳定和成熟的。
在此基础上,ARM平台还具有性价比上的优势,他具有较高的性能,较低的功耗以及实惠的价格,避免了PC系统研发成本高、系统携带不便、使用环境复杂和维护成本偏高等的问题[10]。
ARM主要针对嵌入式应用设计,能够在满足性能要求的前提下,实现较低的功率消耗,在性能/功耗比(MIPS/W)方面,ARM达到了业界领先的地位。
而基于ARM核的处理器价格目前也是很低的。
ARM处理器本身是32位设计,但也配备16位指令集,通常此种存储器比等价的32位存储器节省多达35%的空间,却能保留32位系统的所有优势。
通过使用ARM作为开发平台,可以制作出方便快捷而,成本低廉的手持式应用终端。
而随着互联网技术的飞速发展,通过网络服务器的使用,既可以削减客户端的被占用的存储空间,降低运算要求,减少重复处理,又可实现异地监控与操作,将地点的差异对管理带来的不便降到最低。
使用Web服务器给用户提供服务,就可以达到共享信息,多人共同操作的目的。
因为通过互联网连接,没有假设成本,组网方便,周期短,结构灵活。
相比于硬件设备的更新维护,Web服务器的后期开发更为方便,快捷与高效。
而使用ARM终端通过网络与服务器连接后,便能实现许许多多的功能。
但是服务器也有自身固有的弊端,因为需执行多台终端设备的指令,时刻进行着大量的数据处理,因此对硬件的要求较高,相对应的设备价格也是相当高昂的。
第二章需求分析
2.1可行性分析
信息化管理系统发展至今已经基本成熟。
本系统采用了成熟的JavaWeb开发架构Struts2,轻量的数据库Mysql,轻量的服务器Tomcat以及为满足嵌入式开发需求而设计的Qt语言。
具有兼容性好,可移植性好,硬件性能要求低的特点。
由于开发阶段运行需求低,数据量少,此系统需要的硬件设备仅为个人主机一台和ARM开发板一台。
2.2用户需求分析
本自动化办公系统面向的客户是化学,生物或医药实验室工作人员。
目的在于通过运用软件技术,嵌入式技术,网络技术,以先进的管理理念为指导,实现对实验室的全过程管理[6]。
系统设计的原则本着便捷性,实用性,客户友好性以及管理准确性。
其便捷性体现在使用手持式终端作为开发平台,便于用户携带。
ARM开发板为易携带终端,只有存在网络,就可以进行使用。
由于使用变成语言为跨平台语言,在PC终端,智能机上也存在使用的基本条件。
实用性,及系统能够切实的满足管理的需求,用户正真能通过系统的使用来减轻工作的繁琐操作。
客户友好性,体现在界面设计的简洁明了;操作步骤较少,避免繁杂;上手快,第一次接触本系统也能通过界面理解其运作方式。
管理准确性,及系统逻辑的严谨,避免二义性,功能冲突或者数据的遗漏丢失。
第三章药品管理系统整体设计
3.1药品管理系统原理
本系统采用Qt与JavaWeb混合开发。
实现嵌入式Qt能够与javaweb进行信息交互的关键在于Jsp的跨平台行。
通过QWebkit搭建浏览器,即可访问jsp页面,并保证jsp页面对于用户友好的界面效果。
Javaweb直接与sql数据库进行数据交互,则能保证交互的效果高速和准确。
并且由于java是款面向对象语言,可以利用javaweb进行模块化开发,软件复用性高,可扩展性好,可满足以后私人订制管理系统的需求。
3.2药品管理系统结构
本药品管理系统采用三层架构设计,及将业务应用分为界面层,业务逻辑层,数据访问层。
相对应的工程分成了三部分:
QT前端(界面层),WebSever服务器(业务逻辑层)以及Mysql数据库(数据访问层)。
QT前端部署在ARM开发板上,作为手持式终端。
利用Qt的Webkit集成与QeNetWork模块,进行与web的混合开发。
从WebSever获取JavaScript以及数据。
WebSever服务器主要作为数据处理环节,从数据库取出数据,响应终端的请求处理并返回数据。
QT构建UI直接面向用户
图3-2系统结构图
3.3药品管理系统软件设计方案
软件部分的模块主要包括用户,药品,出入库,申请,消息推送。
其逻辑关系如下所示:
出入库
图3-3软件模块图
由图可知,软件的设计以用户为核心,及其他模块可依据用户需求进行增删改。
每个功能模块均需要通过与数据库进行数据的交互才能够完成各自的功能[5]。
现阶段包括药品管理,药品申请,出入库管理以及消息推送。
其他模块的信息将通过消息模块通知用户。
用户可使用的功能模块数由用户的权限控制。
如主管可以享有各模块服务,而药剂师则无法插手药品的存储管理部分。
仓管员可以申请购买新的药品,而药剂师只可领用不可购买。
相应的,仓管员只能管理药品,并不能领取并使用药品。
而如果存在即是仓管员又是药剂师的情况则可通过个性化配置使其具有其他模块的服务。
3.4ARM开发板的选择和介绍
本工程选用了S32416开发板。
该开发板以SAMSUNGARM9(ARM926EJ)为内核,7寸电容屏,可安装Linux和WINCE6.0操作系统。
开发板可通过ftp连接网络,并可扩展无线wifi功能。
具备低功耗、高性能、低成本的性价比等优势,是一款较为优秀且典型的开发板。
该开发板专门专为消费类电子、工业控制、车载导航、行业PDA等电子产品的开发而设计,主要供广大企业用户进行产品前期软硬件性能评估验证、设计参考用。
开发板配置:
1.标配256MBSLGFLASH,64MBDR2内存
2.标配7寸TFTLCD电容屏,分辨率为800*480
3.支持操作系统LINUX和WINCE6.0
4.Wolfson专业声卡WM8960
5.RJ4510/100M自适应标准网络接口。
6.底板:
180mm*100mm核心板:
80mm*55mm
7.标准20针JTAG接口
8.2D图形加速
9.SD接口存储卡
10.USB2.0 Device接口下载,快速升级系统
11.支持Nandflash、SD卡启动,支持4路高速串口
12.支持VGA输出
选择该开发板作为前端后,我选用了Linux3.0.1操作系统,搭配了Qtopia-2.2.0图形化界面和QtE-4.7运行库。
Qtopia是Trolltech公司开发的综合应用平台,主要目的是能够在使用嵌入式Linux操作系统的消费电子设备上进行使用。
Qtopia中包含灵活的用户界面、窗口操作系统、完整的应用层、应用程序的启动程序和开发框架。
第四章药品管理系统的各模块的设计与实现
4.1WebSever模块
4.1.1WebSever介绍
WebServer即中文中的网页服务器。
其主要功能是向用户提供网络信息浏览服务。
WebSever可以解析http协议。
其主要的工作原理是接受http请求并返回一个响应。
本系统中WebSever使用JavaWeb编写,通过Tomcat进行部署。
其具有跨平台性,可部署于Linux或者Windows服务器上。
JavaWeb是使用java技术解决web互联网领域问题的相关技术总和。
JavaWeb包含有多种框架,但是他们都遵循着一定的规范。
这些框架的几个共通的特点遍是使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或Annotation实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。
本系统的编写使用了Struts2框架。
Struts2框架使用WebWork作为核心,采用拦截器的机制来处理用户的请求,通过这种设计可以使业务逻辑控制器与ServletAPI脱离开来。
此框架原理如图所示:
前端界面
图4-1.1Struts2结构图
Struts2框架业务逻辑部分由Action,Dao,Bean三部分组成。
Bean文件定义了数据类,其中的类会对应数据库中的一张表,由Dao文件进行调用。
因为此种定义方式对应的是单张表中的字段,因此也是种单表查结构。
Dao文件为数据访问接口,封装了对数据库操作的方法。
Action是用户请求和业务逻辑间的桥梁,其直接接受前端的用户请求和数据,调用Dao方法对对数据库进行操作,以此实现系统的业务功能。
经过业务逻辑处理后会向用户传递一个调用JSP页面的url,通过此种方式可以实现动态页面效果。
4.1.2WebSever实现的功能
WebSever主要包括以下几个功能:
用户数据管理,药品数据管理,药品出入库管理,药品采购与领取管理。
这几个功能分别包含多个子模块。
用户数据管理,包含用户申请,用户信息修改,用户权限划分。
用户依据权限划分分为四种:
超级管理员,管理员,保管员与药剂师。
用户需由超级管理员配置与创建,不能自由申请,以此保证只有内部人员可以使用。
超级管理员可以创建用户,修改用户信息,给用户配置权限。
管理员是业务的管理者,可以查询所有用户信息,浏览出入库消息,审批药品领用的申请,并且具有药剂师的所有权限。
管理员中又包含财务管理员,只有财务管理员有资格审批采购申请。
而保管员职责是负责药品管理,其有记录药品出库入库的功能,审批药剂师的领用申请以及浏览药品信息。
但并无特殊药品的审批权限,特殊药品的领用申请需由管理员进行审批。
药剂师是药品的直接使用者。
其权限包括药品信息的查询,药品领用的申请。
药品数据管理,及药品信息的查询和增删改。
药品信息包括了基本信息。
基本信息及学名,化学成分,存量以及特殊属性如易燃易爆等特殊药品。
当药品存量归零时会向保管员发送提醒。
出库入库管理。
入库管理包含了药品的经办人,批次,采购价格,采购数量,生产日期和有效日期。
采购数量会自动累加到药品数据的存量中。
而有效日期为入库时经办人录入,每日零时会自动结算日期,若药品过期将会更改药品状态为过期,并向保管员发送消息提醒,将药品的存量自动减去。
药品采购与领用申请分为采购申请与领用申请。
采购申请由保管员发出,由财务管理员审批。
采购申请包含采购药品信息,用途说明,申请人,审批人。
审批人若拒绝还需填写拒绝原因。
领用申请由药剂员发出,由保管员审批。
但当系统检测到申请的药品为特殊药品时会检测审批人是否具有审批资质。
申请单包含领用药品名称,数量,用途说明,申请人,审批人。
审批人若拒绝还需填写拒绝原因。
4.1.3实现方案
1.人员信息列表和药品信息列表的分页输出与查询:
要求将信息从数据库取出并作为列表输出。
由Action向Dao发出查询的指令,Dao文件会将数据从数据库中Select出,并通过list返回给action。
List包括两个参数,查询的数据集合和Page类。
我们使用了page.setTotalRows来放置记录总数。
使用selectcount(*)加上查询条件查询符合要求的记录总数。
在进行slect查询时会附上getPageNo()和getPageSize()方法。
当中getPageNo()用于获取页号信息,getPageSize()用于页面总记录数。
其后将数据存入List
2.记录的添加与编辑:
从列表添加页面新增或选中记录进行编辑。
选中记录后会由jsp调用action,并转向添加页面。
选中记录的数据会通过el表达式传递给添加页面,填写修改信息后记录会通过form表单传递给action并调用dao文件写入数据库。
Jsp页面会对输入数据格式进行确认以确保记录的正确。
当数据成功添加进数据库后会返回一个值表示成功并回到列表页面。
当添加入库记录时会先查找有无改药品的档案,若没有将会提醒用户先进行档案的添加。
3.图片上传:
在药品档案中会有上传药品实物图等功能供用户选择。
该功能的实现使用iframe进行图片或文件的上传。
进行编辑时,会先查找有无照片,及medicalBean.image字段是否为空,若存在,将会显示缩略图。
图片上传分为importfile添加图片接口和removefile删除图片接口。
(1)添加图片接口:
文件上传在jsp上使用了jquery上传插件wef版uploadify。
在js中调用了sf包括两个参数,swf:
文件的相对JS文件的路径,uoloader:
后台处理程序的相对路径。
在action中使用了response.setContentType(MIME),其作用是使客户端浏览器,区分不同种类的数据,并依据传输的MIME不同调用浏览器内不同的程序嵌入模块来处理相应的数据。
使用response.getWriter()将响应返回给当前客户端,以此向用户反馈图片上传进度以及成功与否。
使用FileInputStream获取文件名file,并加上时间戳和格式,将图片保存到指定路径下。
使用FileOutputStream文件输出流来给文件进行重新命名。
然后将文件转换成byte格式将内容写入重新命名过的文件中并覆盖重名文件,达到图片与文件上传的目的。
上传成功后将会看到图片预览效果。
(2)图片删除接口:
当用户上上传错误图片时想要撤销操作,点击删除即可。
点击删除调用相应后台removeFile。
使用request.getParameter获得文件名,使用file.isFile()判断是否为一个标准文件并用file.exists()判断文件是否存在。
若存在,使用file.delete()删除文件并将结果返回给前端。
4.申请发送:
用户发送申请,后台会根据申请类型找出符合条件的审批人。
当审批人不符合条件时会弹出提示阻止发送。
填写领取药品后后台会查询判断该药品是否为特殊药品以及受理人是否存在权限。
申请发送成功后会在数据库中添加一条未审批状态的申请记录。
5.通知提醒:
申请发送成功后,会在数据库消息列表news中添加一条新的记录,并将已读字段status置为未读状态。
News中还记录了消息接收人以及消息发出人,消息时间和消息类型。
用户点击消息同时将消息置成已读,并同时显示该条申请记录。
当审批人对记录做出拒绝或同意操作时,会在news中添加一条新消息,提示申请人他的申请已经受理。
6.零时结算:
编写ResetTask.java文件,启用一个线程。
将其至为一个循环,调用程序将当前日期与过期日期做对比。
若过期,则将状态置为过期并减去存量。
使用Thread.sleep设定延时,每隔一段时间运行一次。
当日期变更,及经过零时时,就会将所有药品状态重新结算一次,以此达到药品过期提醒的目的。
当出现新的过期药品时,会将该批次从存量中减去并把改批次药品的出库操作禁止并打上未处理标签。
工作人员将过期药品处理后课将状态改为已处理。
7.存量统计:
当新的药品入库时,工作人员填写相应信息后会在medical表中加上数量。
在出库的时候也会将出库部分数量减去。
药品过期时会减去相应的存量。
4.2ARM开发板QT模块
4.2.1QT模块介绍
QT是一个跨平台的C++图形用户界面应用程序框架。
它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。
他出现的原因是越来越多的嵌入式终端需要一个图形化的人机接口界面(GUI)。
一个良好的人机接口界面是嵌入式系统开发时的一个关键,可以有效的提高人机交互的效率[3]。
Qt很容易扩展,并且允许真正地组件编程。
QT拥有优良的跨平台特性,支持几乎所有的主流操作系统。
QT具有丰富的API,Qt包含了超过250个C++类,在此之外还提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time类。
在本系统中使用Qt搭建前端UI界面,并部署于ARM开发板中。
其与WebSever交互使用了QWebKit。
在此种交互模式下,Qt通过URL指向对应的Javascript页面,充分发挥了Javascript的跨平台特性。
其交互方式如下图所示:
CustomURL
自定义url
Qt前端
图4-2.1QT交互原理图
因为Qt前端通过QWebKit与javaScript交互,Qt与jsp直接并没有直接的依赖,因此保证了jsp的跨平台性。
4.2.2QT模块实现功能
Qt前端模块主要实现了以下功能:
Web服务器,用户登录,个性化菜单显示,消息提醒。
前端ui界面验证用户身份后,会依据用户权限生成个性化菜单,并通过QWebKit类访问Web服务器。
4.2.3实现方案
1.Jsp页面的浏览:
选用Qwebkt作为Baseclass,使用QWebKit中的QWebView控件。
QWebView的主要功能是用于浏览网页。
工程中将按钮与QWebKit内联,当发生clicked()点击事件时会传递一个Qurl,在QWebView中跳转向其中存储的url地址达到访问WebSever效果。
操作过程为ui->webview->load。
2.登录:
使用了Qt Designer Form Class类,并选用Dialog without Buttons,设置文本框用于输入用户名与密码。
将登录按钮连接单机事件的槽函数。
从数据库查询用户名对应的字段,与密码做判断。
若不正确,弹出警告框QMessageBox。
同时需加入#include
在Qt Designer Form Class类中加入初始化语句,QLineEdit:
:
Password,使得密码呈现为小黑点。
3.Qt访问数据库:
使用QSqlDatabase类进行数据库的交互。
QSqlDatabase类提供了一个访问数据库的接口,其表示一个数据库的连接,其数据库的驱动继承自QSqlDriver。
该类使用静态方法 addDatabase() 创建一个数据库连接(及QSqlDatabase的实例),并在其中指定驱动或驱动种类(及所访问的数据库类型)和连接名称。
由于选用Mysql数据库所以使用QSQLITE驱动,并设置好地址,端口,名称等信息,连接数据库。
在程序中使用QString来保存sql语句,使用QDebug来运行。
4.个性化菜单:
登录成功时会从数据库取出用户所有信息。
然后会根据用户的权限号码生成菜单。
菜单为按钮形式,至于用户信息下方,并与Qwebview内联。
5.消息提醒:
登录成功的同时会从消息列表news中查询用户的未读消息并显示出来,点击即可拉出消息列表。
主要需实现分页查询功能。
Qt实现分页查询:
消息列表的分页显示使用了QTableView。
QWebView长用于将数据以表格的形式显示出来。
在主窗口头文件中建立私有成员变量,运用QSqlQueryModel建立查询模型,使用QTableView做表格显示,QLabel类中的totalPageLabel表示当前文本页,currentPageLabel表示总页数,QLineEditswitchPageLineEdit作为跳转页码的输入。
建立私有槽函数进行页面跳转,并在主窗口文件中建立信号槽的连接提供跳转动作的响应。
声明数据模型queryModel->setQuery(sql)得到查询结果。
设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QT 药品 查询 管理 系统 设计方案