版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原理工大学毕业设计(论文)用纸.绪论1.1本课题的研究背景网购越来越成为当代人们所热衷的一种购物形式。在近几年内,淘宝、58同城这类的网站迅速崛起,也就意味着网购必将成为一种风尚。但是目前为止,大部分新兴起来的购物网站都是基于服饰、化妆品一类的,在医药品一类还处于劣势。究其根本,人们对医药管理的安全性以及有效性还有一部分的顾虑之情,毕竟药品的安全性与我们的身体健康有着极其紧密的联系。所以,一个高效的、安全的医药管理系统,将会推动医药网站达到一个新的高度。对于患者而言:一方面,随着现代生活越来越信息化,人们患了一些常见的疾病往往不会再选择去医院排长长的队伍去挂号看病、买药,而是选择上网搜索有无大碍,若无严重症状就自己买一些像阿莫西林一类的非处方药物来治疗。另一方面,网购既方便又实惠,同时可以直接查看详细的药品详情。对于销售方而言:一方面,可以简化一直以来繁琐的人工管理记录的方式,使管理工作更加有条不紊的进行。另一方面,可以随时查看药品的销售状况以及各大厂家的供应货物情况。如今人们大多还是比较信赖在药店购买药品,认为药店的药品更加安全,信誉更加可靠,这就加大了我们推崇网购药品的难度。于是,我们必须使其管理条理化、规范化,增强我们的可信度,排除买家的顾虑。随着科技信息的步步发展,管理系统必将渗透于各个领域,如果不想被时代淘汰就必须紧跟科技发展的脚步,这也就意味着一套高效、可靠的管理机制必将深受消费者以及管理者的喜爱与推崇。1.2国内外研究现状在信息飞速发展的当代,人们从日常生活到工作都在利用网络进行一些信息查询和信息管理。国内外各大企业更是越来越重视信息的管理,这为他们带来了成本的极大节约,以及管理的进一步规范化、系统化,使得管理更加的具有高效性、灵活性。这不仅提高了流程的可视化,更加提高了工作效率。随着网络的一步步普及以及其迅猛的发展,如今,信息技术在国际管理市场上占据了越来越重要的位置,逐步演变成了对各国经济、科技和社会发展情况的直观体现。正如一九八八年九月五日,邓小平提出的“科学技术是第一生产力”,就反映了在中国越来越重视科技的现状。管理模式越来越信息化将成为一种必然趋势,但是由于我国在信息化道路上起步较晚,信息管理系统技术相对落后,使用范围有所局限,功能不够完善等原因,研究并开发出一套相对较完善的管理系统,就成了当务之急。1.3本课题的主要工作人们除了关注药品的药理反应外,最注重的就是药品的保质期,这种现象同样出现在销售方,不合理的信息管理会导致药品的浪费。由于其较一般商品而言,具有时效性强、规律性差、容易损耗等特点。各个销售方为了保证适应所有季节性的、常见的疾病下,很难避免出现相应产品供应不足或一些药品供远大于求的情况,究其根本,就是信息管理不合理,没有在适当时候做出调整。综上所述,本课题拟设计一个药品进销存管理系统,用以将一些变动直观的展示给管理者,同时也方便其对信息进行简单的控制以及调整,节约人力,是管理系统化,信息化。主要实现的功能包括以下几点:1.订单管理:根据用户对药品的购买情况对后台数据进行自动更新库存信息的操作;2.用户信息管理:管理用户的姓名、性别、密码等基本信息;3.入库信息管理:根据具体情况药品进货情况,对库存中的药品信息进行添加,并生成入库信息单;4.供应厂家信息管理:可以查看相应厂家的地址、联系人等详情;5.药品信息管理:管理库存中现存药品的类别等药品信息的管理。1.4目的和意义随着药品经济与技术的发展,人们对药品的需求也进一步扩大,医药行业从古至今在社会各领域中一直处于一个相对稳定且必不可少的重要地位。这就导致新医院和药店的迅速增加,要想在竞争激烈的时代里获得一席之地,就要与时俱进,在原有传统的管理模式下进行改革,即使管理信息化,以达到管理规范化、系统化等。提高运营效率、信息处理速度、信息处理精准度等,最大限度的减少人为因素造成的信息缺失、不准确等错误。2.开发工具及技术2.1开发工具页面设计初期使用Dreamweaver进行的设计,后期转换格式为Jsp。后台设计主要使用MyEclipse以及其所包含的后台服务器Tomcat完成。数据库使用Mysql数据库进行表的创建以及数据的添加等。下面对上述内容进行简要说明。MyEclipseMyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是一个非常优质的用于开发Java、J2EE等的Eclipse插件的集合,是对EclipseIDE的一个扩展。它是功能非常丰富的JavaEE集成开发环境,包含了完备的编码、调试、测试和发布功能。同时MyEclipse具有完善的功能,广泛的支持平台(完整支持HTML,JSP,CSS,Javascript,SQL)。在对于数据库和JavaEE的开发以及对应用程序服务器的开发上面都提高了我们的工作效率。TomcatTomcat是一个应用服务器,与其他服务器相比它具有小型轻量级的特点。在对其进行运行时,它实际上是作为一个独立的进程而运行的。可以这样认为,当在一台机器上配置好Apahce服务器,可利用它来对HTML页面的访问请求进行响应。实际上它是对Apache服务器的扩展,但与之不同的是它是可以独立运行的。它在一些中小型的系统中和并发访问用户不多的场合下被广泛的使用,是开发和调试JSP程序的首选工具。MysqlMysql是使用C语言和C++语言编写的关系型数据库管理系统,并且使用了多种编译器进行测试,从而保证了源代码的可移植性;第二它的具有很广泛的支持平台,比如:支持Linux、MacOS、OpenBSD、Solaris、Windows等多种操作系统;第三它为多种编程语言提供了API;第四支持多线程,可以充分利用CPU资源;第五提供TCP/IP、ODBC和JDBC等多种数据库连接的途径;第六可以处理拥有上千万条记录的大型数据库。对于一般的使用者,它所具备的功能已经很完善了。所以,我们在此选用MySql来操作数据库。开发技术2.2.1JSP JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。实现网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。JSP页面由HTML代码和嵌入其中的Java代码所组成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网,多样化和功能强大的开发工具支持以及支持服务器端组件等的特点。2.2.2MyBatisMyBatis是一个支持一般的SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis几乎取消了所有繁琐的JDBC代码、直接手工设置的参数和对于结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和普通的Java对象映射成数据库中的一条一条的记录。其最大的优势就是它的动态语句功能,它免除了使用JDBC对SQL语句严谨的格式规范(如何处加空格,何处加逗号等),从而方便程序设计人员对数据库繁琐的操作。2.2.3JavaScriptJavaScript是一种基于对象和事件驱动并且具有相对安全性的客户端脚本语言。同时也是一个广泛用于客户端Web开发的客户端脚本语言。在HTML网页中经常会添加JavaScript脚本语言来实现页面的动态效果。比如对用户的鼠标点击、鼠标移动等操作进行响应。JavaScript有一个十分重要特性就是面向对象,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间建立了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了javascript技术,比如说,检验用户输入的信息是否有效,账号信息是否重复,是否为空等等。2.2.4jQuery以及jQueryEasyUIjQuery是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作。目前已有将近59%使用了jQuery,是目前最受欢迎的JavaScript库。
jQueryEasyUI是一组基于jQuery的UI插件集合体。开发人员在对css以及html没有很深入了解的前提下,只需要知道一些简单的html常用标签,就可以轻松的写出一个界面美观、功能丰富的UI界面,避免了编写复杂的javascript代码,使工作更便捷高效。软硬件需求1.硬件需求:CPU:Pentium以上计算机内存:512M以上2.软件需求:操作系统版本:WindowsXP/vista/Win7开发工具:MyEclipse2013后台服务器:ApacheTomcat7.0开发语言:Java数据库:MySQL3.需求分析需求调研由于信息管理中,难免有一些人为错误的出现,为了最大限度的减少人为错误,提高工作效率,而设计一套完整的药品进销存管理系统,实现对药品信息的录入、更改的规范化、系统化以及对相应药品的供应商的信息进行严格的录入,避免在药品进出库问题上产生不必要的纠纷等。可行性分析为了避免因为一些美好但不切实际的想法,而造成时间上面的以及资源上面的浪费,在统筹去做一个项目之前,需要进行可行性分析报告。下面主要从以下四个方面来进行论述。3.2.1技术的可行性药品进销存管理系统针对于普通用户的前台界面可以通过Dreamweaver来实现,用Jsp进行完善并实现静态页面以及一部分的动态。针对于管理员以及超级管理员的管理页面,用jQueryEasyUI来实现。后台的制作可以使用MyEclipse和Mysql数据库。开发语言使用Java语言。利用MyEclipse可是实现前台和后台的交互,Mysql可以存储我们所需要的药品数据、用户数据、厂家数据、订单数据、入库单数据等。总体设计难度不大。在大学期间,学习过相应的Java、UML、Web等基础课程,并在以前做过一些类似的项目,具备相应的系统分析、设计以及测试的能力。就此看来,完成该项目在技术上具有可行性。经济的可行性药品进销存管理系统,需要的隐私数据并不多,并且由于是面向大多数对计算机并不熟悉的人群,必然要求操作简单,以可以提高数据的管理难度和速度,从而不需要太高的软硬件配置。综上所述,项目难度系数不高,要求并不复杂,故其成本本身就不会很高。再从长远的角度分析,它所带来的利益、便捷远远超过其所需成本。就此看来,完成该项目在经济上具有可行性。3.2.3操作可行性药品进销存管理系统,主要针对无相应技术的工作者(只需要具备电脑的一般操作能力),功能一目了然,操作技术含量低,简单容易操作。在使用之前,只需要花一小部分时间熟悉界面以及了解大致功能,便可以运用自如。就此来看,完成该项目在操作上具有可行性。3.2.4法律的可行性药品进销存管理系统,存储的主要信息是面对药品的。从存储的数据来讲,由于均是药品信息的一些名称、市场价格等,并不会存在法律侵权的问题,故具有法律可行性。从开发的角度来讲,本系统主要使用的MyEclipse软件开发环境进行开发,是开源代码,Mysql数据库也是开源代码,所以不存在法律上的侵权问题。就此来看,完成该项目在法律上具有可行性。综上所述,设计一个药品进销存管理系统是必要可行的。系统用户用例图1.普通用户用例图如图3-1所示:图3-1普通用户用例图2.管理员用例图如图3-2所示:图3-2管理员用例图3.超级管理员用例图如图3-3所示:图3-3超级管理员用例图功能需求本系统将实现以下基本功能:1.整洁简单的页面,操作简单便捷;2.普通用户具有查看药品详情、购买、查看购物车、查看订单、登陆、注册、修改个人信息除了个人权限等功能;3.管理员用户具有药品信息管理、入库信息管理、厂家信息管理、查看用户信息和订单信息、修改个人信息除了个人权限等功能;4.超级管理员用户具有药品信息管理、入库信息管理、厂家信息管理、用户信息管理和订单信息管理等功能;5.安全性较强,可以避免用户的恶意操作,并作出相应的提醒。3.4.1用户功能模块图说明1.用户信息修改模块:普通用户通过前台主页的用户信息修改按钮,可以对用户名、密码、性别、年龄等个人信息的进行更改,但不包括个人权限;2.注册模块:在该模块中定义了要录入用户信息的各种框架,其功能是让用户完成个人信息填写,以录入数据库;3.登陆模块:普通用户通过登录页面可以直接跳转到系统主页面,从而具有对药品查看以及购买等的权限;4.管理购物车模块:在该模块中定义了用户需要购买的药品信息,其功能是记录用户需要购买的药品信息,并对其进行增加药品或者删除药品的操作;5.购买药品模块:在该模块中定义了要购买药品的价格、名称等,其功能是完成购买药品并且生成订单操作;6.查看药品信息模块:在该模块中定义了药品的编号、名称等基本信息,其功能是方便用户对药品的了解。普通用户功能模块图如图3-4所示:用户信息修改用户信息修改注册登陆管理购物车购买药品查看药品信息增加药品删除药品普通用户图3-4普通用户功能模块图3.4.2管理员功能模块图说明1.管理员信息修改模块:普通管理员通过前台主页的用户信息修改按钮,可以对用户名、密码、性别、年龄等个人信息的进行更改,但不包括个人权限;2.登陆模块:普通管理员通过登录页面可以直接跳转到系统管理页面,从而具有对厂家信息、药品信息以及入库信息的可读可写权限,对用户信息和订单信息只有可读权限;3.用户信息查看模块:该模块中定义了注册用户的基本信息,普通管理员对用户信息只有查看的权限;4.订单信息查看模块:该模块中定义了用户下单后的信息,普通管理员对用户的订单信息也只有查看的权限;5.厂家信息管理模块:该模块中定义了供应厂家的基本信息,其功能方便管理员是对厂家的名称、地址、联系人等进行相应的增删改查操作;6.药品信息管理模块:该模块中定义了库存药品的基本信息,其功能方便管理员是对库存中药品信息进行增删改查操作;7.入库信息管理模块:该模块中定义了药品以及相应供应商的基本信息,其功能是对进货的信息进行增删改查操作。管理员功能模块图如图3-5所示:管理员用户用户信息查看订单信息查看药品信息管理修改药品信息管理员用户用户信息查看订单信息查看药品信息管理修改药品信息查看药品信息增加药品信息删除药品信息药品厂家管理修改厂家信息查看厂家信息增加厂家信息删除厂家信息入库信息管理修改入库信息查看入库信息增加入库信息删除入库信息管理员信息修改登陆管理员用户用户信息查看订单信息查看药品信息管理修改药品信息查看药品信息增加药品信息删除药品信息药品厂家管理修改厂家信息查看厂家信息增加厂家信息删除厂家信息入库信息管理修改入库信息查看入库信息增加入库信息删除入库信息管理员信息修改登陆管理员用户用户信息查看订单信息查看药品信息管理修改药品信息查看药品信息增加药品信息删除药品信息药品厂家管理修改厂家信息查看厂家信息增加厂家信息删除厂家信息入库信息管理修改入库信息查看入库信息增加入库信息删除入库信息管理员信息修改登陆管理员用户用户信息查看订单信息查看药品信息管理修改药品信息查看药品信息增加药品信息删除药品信息药品厂家管理修改厂家信息查看厂家信息增加厂家信息删除厂家信息入库信息管理修改入库信息查看入库信息增加入库信息删除入库信息管理员信息修改登陆管理员用户用户信息查看订单信息查看药品信息管理修改药品信息查看药品信息增加药品信息删除药品信息药品厂家管理修改厂家信息查看厂家信息增加厂家信息删除厂家信息入库信息管理修改入库信息查看入库信息增加入库信息删除入库信息管理员信息修改登陆图3-5管理员功能模块图3.4.3超级管理员功能模块图说明1.超级管理员信息修改模块:超级管理员通过前台主页的用户信息修改按钮,可以对用户名、密码、性别、年龄以及个人权限等个人信息的进行更改;2.登陆模块:超级管理员通过登录页面可以直接跳转到系统管理页面,从而具有对厂家信息、药品信息、用户信息、订单信息以及入库信息的可读可写权限;3.用户信息管理模块:该模块中定义了注册用户的基本信息,其功能是对用户信息进行增删改查等操作;4.订单信息管理模块:该模块中定义了用户下单后的信息,其功能是方便超级管理员对用户的订单的信息进行增删改查等操作;5.厂家信息管理模块:该模块中定义了供应厂家的基本信息,其功能方便管理员是对厂家的名称、地址、联系人等进行相应的增删改查操作;6.药品信息管理模块:该模块中定义了库存药品的基本信息,其功能方便管理员是对库存中药品信息进行增删改查操作;7.入库信息管理模块:该模块中定义了药品以及相应供应商的基本信息,其功能是对进货的信息进行增删改查操作。超级管理员功能模块图如图3-6所示:超级管理员超级管理员药品信息管理增删改查药品信息入库信息管理增删改查入库信 用户信息管理增删改查用户信 订单信息管理增删改查订单信 修改超级管理员信息厂家信息管理增删改查厂家信息登陆图3-6超级管理员功能模块图设计的基本思想1.采用B/S模式(即浏览器/服务器模式)进行系统的开发。由于它是和浏览器相关的,故再系统开发、维护和升级方面对十分方便,只要有浏览器的用户都可以访问(开放性强)。由于现今用户均使用浏览器进行日常操作,对其操作也比较了解,在一定程度上方便了用户的操作。2.采用面向对象的开发与设计理念。将具有一定规律的对象封装为一个类,即对整体系统进行抽象,从而保证较强的易用性、可维护性以及稳定性。并且在一定程度上提高了开发的效率。3.采用模块化设计。模块化设计要求将整个系统划分成基于小的模块,有利于代码的重载,简化设计和实现过程。4.简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。5.设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。性能需求为了保证药品进销存管理系统可以长期、稳定、高效的运行,应该尽可能满足一下几点要求:1.准确性系统需要对接收到的信息进行准确的处理。数据之间的联系必须准确无误,这决定了该系统的可用性、高效性。从而应该在采用一定的方法来尽可能保证系统数据的准确性。2.及时性一个好的系统,必然运行顺畅。当用户提交某种请求时,系统需要及时对用户的需求做出合理的响应,以免耽误用户的时间,消耗用户的耐心。最终造成系统的用户量流失,系统的高效性受到质疑。3.易用性药品管理系统主要针对没有很好专业技能的用户,故易用性是不可或缺的重要特性。这就要求我们的系统给用户提供一个良好的接口,用于实现人机交互。权限需求药品进销存管理系统需要在各用户权限上进行严格的划分。只有在该系统注册的用户才能进入网页中进行购买等的操作。对于没有注册的用户,权限只能局限于对药品信息的浏览操作。已经注册的用户,可以在该系统下进行查看药品信息,购买等的操作。普通管理员可以管理厂家的信息、药品的信息、入库的信息,修改管理员个人信息,但是只能够查看订单信息和用户信息。超级管理员可以进行以上所以用户的操作并且可以管理用户信息以及订单信息,即对其的增删改查操作。数据需求1.各种信息的完整性,药品编号、账号等重要信息不能为空;2.在各个表中,数据关联的准确性;3.数据类型的准确性。界面需求在一个优秀的系统中,除了后台程序的完备,从用户的角度来讲,界面的美观远比程序的完备更加具有说服力。因而,界面的设计慢慢的变成了评估一个软件是否优秀的重要的评测标准。首先,界面的设计必须条理,不适合太复杂,而影响用户的操作;其次,界面的设计必须和谐,动静结合,从而使用户赏心悦目;最后,对于系统开发人员来讲,界面的布局必须条理,各个标签的命名必须遵循一定的规范进行编写。从而使系统的开发更加条理,提高后台开发人员的工作效率。为了更好的实现页面的功能,我们在此使用Jsp脚本语言进行编写。它给整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。可以极大的提高开发效率,实现动态的可交互的页面。用户界面是指软件系统与用户交互的接口,通常包括输出、输入以及人-机对话的界面格式等。4.数据库的分析与设计在进行了可行性研究报告和需求分析以后,为了具体的实现本系统最初想要实现的功能,我们需要进行总体设计,对系统的各部分进行详细的分析与设计,最终完成一个完整的系统。在数据库中存储着大量的重要信息,包括在页面上需要显示的药品信息等,以及在页面上不显示的用户信息等。在数据库系统的支持下,信息的整理、检索、更新等操作才得以实现。可以看出,数据库是信息系统中的核心,也就是关键所在。它的完备与否直接决定这系统的成败。对于系统数据库的设计一般分为概念设计、逻辑设计以及物理设计3个步骤。一下是对其进行的简要介绍。数据库的概念结构设计概念结构设计是采用结构化分析方自底向上的建立整个系统的结构。首先从用户使用的视角设计视图,之后将其归类集成,最后进行优化,得到最终结果。概念模式是与数据库逻辑结构相互独立的。目的是产生概念模式。实体—联系(E-R)模型设计方法能过准确直观的显示系统中各种实体与其所涉及的属性或者所关联的实体属性,E-R模型的构成成分是实体集、属性和联系集。是在数据库概念结构设计中常用的设计方法。1.用户信息E-R图如图4-1所示:图4-1用户实体E-R图2.药品信息实体E-R图如图4-2所示:图4-2药品信息实体E-R图3.厂家信息实体E-R图如图4-3所示:图4-3厂家信息实体E-R图4.订单信息实体E-R图如图4-4所示:图4-4订单信息实体E-R图5.入库信息实体E-R图如图4-5所示:图4-5入库信息实体E-R图数据库的逻辑结构设计我们都知道,数据库概念模型独立于任何特定的数据库管理系统。因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型。E-R模型向关系数据库模型转换应遵循下列原则:1.每一个实体要转换成一个关系,实体的属性就是关系的属性。实体的码就是关系的码;2.所有的主键必须定义非空(NOTNULL);3.具有相同码的关系模式可合并;4.同一实体集的实体间的联系,即自联系,也可按下述1:1、1:n和m:n三种情况分别处理;5.一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性,该关系的码则有三种情况:1)若联系为1:1,则每个实体的码均是该关系的后选码;2)若联系为1:n,则关系的码为n端实体的码;3)若联系为m:n,则关系的码为诸实体码的组合。根据E-R模型,药品进销存管理系统建立了以下逻辑数据结构,下面是对各数据表的详细说明。1.用户信息表主要用于记录用户的基本信息以及各信息的数据类型、是否为主键、是否允许为空、相应说明等信息。表结构如表4-1所示:表4-1用户信息表(USER)列名数据类型长度是否允许为空是否主键说明USER_IDVARCHAR32否是账号USER_NAMEVARCHAR100是否姓名USER_PASSWORDVARCHAR128否否密码USER_SEXVARCHAR2是否性别USER_AGEINT4是否年龄USER_TELVARCHAR30是否联系方式USER_EMAILVARCHAR128是否邮箱USER_ADDRESSVARCHAR128是否地址USER_IDENTITYVARCHAR32是否身份2.药品信息表主要是记录了药品的基本信息以及各信息的数据类型、是否为主键、是否允许为空、相应说明等信息。表结构如表4-2所示:表4-2药品信息表(MEDICINEINFO)列名数据类型长度是否允许为空是否主键说明MED_NOVARCHAR32否是产品编号MED_NAMEVARCHAR128否否通用名称APP_NOVARCHAR128是否批准文号MARK_PRICEDECIMAL10,2否否市场价格IHEALTH_PRICEDECIMAL10,2否否i健康价格FAC_NAMEVARCHAR128否否生产厂家MED_DATEVARCHAR128否否生产日期MED_NUMINT10否否药品数量MED_CLASSVARCHAR128否否药品类别3.厂家信息表主要是记录了厂家基本信息以及各信息的数据类型、是否为主键等信息。表结构如表4-3所示:表4-3厂家信息表(FACTORYINFO)列名数据类型长度是否允许为空是否主键说明FAC_NAMEVARCHAR128否是厂家名称FAC_ADDRESSVARCHAR256是否厂家地址CONN_NAMEVARCHAR100是否联系人FAC_TELVARCHAR30是否联系电话FAC_EMAILVARCHAR128是否联系邮箱4.订单信息表主要是记录了药品销售的基本信息以及各信息的数据类型、是否为主键等信息。表结构如表4-4所示:表4-4订单信息表(ORDERFORMINFO)列名数据类型长度允许空是否主键说明ORDER_NOVARCHAR32否是订单编号USER_IDVARCHAR32否否用户账号CONSIGNEE_NAMEVARCHAR100否否收件人CONSIGNEE_TELVARCHAR30否否联系电话CONSIGNEE_ADDRESSVARCHAR128否否收件地址MED_NOVARCHAR32否否药品编号MED_NAMEVARCHAR128否否药品名称IHEALTH_PRICEDECIMAL10,2否否i健康价格BUY_NUMINT10否否购买数量TOTAL_PRICEDECIMAL10,2否否总价格DELIVERYVARCHAR100否否配送方式ORDER_STATEVARCHAR10否否订单状态5.入库信息表主要是记录了入库销售的基本信息以及各信息的数据类型、是否为主键等信息。表结构如表4-5所示:表4-5入库信息表(STOCKINFO)列名数据类型长度允许空是否主键说明STO_NOVARCHAR128否是入库编号FAC_NAMEVARCHAR128否否厂家名称MED_NOVARCHAR32否否药品编号MED_NAMEVARCHAR128否否药品名称OPERATOR_NAMEVARCHAR100是否操作人FAC_TELVARCHAR30是否联系电话STO_NUMINT10否否数量STO_PRICEDECIMAL10,2否否价格数据库的连接原理4.3.1JDBC采用JDBC的方式进行数据库的连接,首先在工程的相应文件夹里导入对应数据库的jar包。然后在DBHelp.java中用Class.forName()方法来加载驱动程序,之后用DriverManager的getConnection()方法创建数据库的连接。程序采用的是DAO模式来操作数据库,DAO(DataAccessObject,数据访问对象),是Java编程中的一种经典模式。DAO模式的主要思想就是从抽象数据源获取与操纵数据的方法。抽象数据的含义就是编写应用程序的程序员不必关心数据库的物理位置,已经是何种数据库,只需使用封装数据库中表示记录的数据对象即可。其思想如图4-6所示:使用使用创建/使用封装获取/修改BusinessObjectDataAccessObjectDataSourceDataTransferObject图4-6DAO模式类图图中BussinessObject是业务对象,是使用DAO模式的客户端;DataTransferObject数据传输对象,用来在应用程序不同层次之间传输对象。在一个分布式应用程序中,通常可以提高整体的性能;DataObjectAcces数据输入/输出对象封装了对数据源的一些基本操作;DataSource指的是数据源。可以从图中看出,DAO模式分离了业务逻辑和数据逻辑,是的编写的软件具有良好的层次式体系结构。本系统为了方便数据库的操作,主要使用DBContent的对象连接一个数据库(建立一个类DBHelp),主要代码如下:1.获取数据库驱动,连接数据库,并设置数据库登录名以及密码;Class.forName("com.mysql.jdbc.Driver");Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/medicinemanager","root","liang");2.通过定义exeSQL类(返回类型为boolean)和一个queryMsg类(返回类型为ResultSet)来对数据库中的数据进行增删改查;PreparedStatementpst=getConnection().prepareStatement(sql);intnum=pst.executeUpdate();ResultSetrs=pst.executeQuery();这样在程序需要连接数据库的地方,只需要生成一个DBHelp的对象,就可以对数据库进行连接并操作。4.3.2MyBatis1.在创建好表、实体类、定义好数据访问接口后,创建Mybatis映射文件UserDao.xml。核心映射文件:通过配置mapper标签中的namespace属性来指定命名空间。通过设置resultMap结果映射标签来描述如何从数据库结果集中加载对象。通过设置insert标签、update标签、delete标签、select标签来对数据库中的数据进行增删改查的操作;2.创建Mybatis配置文件configuration.xml。引入perties来设置name、dataSource.driverClassName(获取驱动)、dataSource.url(获取路径)、dataSource.username(设置数据库登陆名)、dataSource.password(设置数据库密码)。3.SqlSession接口。首先在mybatis-config.xml中通过配置properties属性里面的resource值来引用外部属性文件。通过environments配置适应多种环境,有助于应用多种数据库配置,来配置环境参数。通过配置mappers中的package标签中的name参数来映射文件查找策略。5.系统功能实现继需求分析以及系统设计等阶段后,就着手开始系统功能实现阶段。将系统从技术层面提升到物理层面上,使用户能够直接通过一个直观的界面操纵数据。是之前各个阶段的结合。5.1登陆页面实现1.描述:为了保证各用户可以分别管理自己的信息,并保证系统以及用户信息的安全性,在使用该系统之前,需要对用户身份以及账户信息进行验证。(即验证用户的账号及密码)。2.程序运行效果图如图5-1所示:图5-1系统登陆页面设计3.实现过程在登陆页面输入账号和密码后,点击登陆按钮,通过jQuery对账号和密码是否为空进行验证。之后跳转到登陆的serviceLoginServlet.java中,它将前台数据与数据库中数据进行匹配,验证信息正确性并确定用户权限,使用AJAX验证输出结果,或登录成功则获取用户权限转而进入index.jsp中。由于doGet方法的安全性不如doPost方法的安全性高,故将这里的doPost方法写入doGet方法。在doPost方法中写入我们的主要操作。1)在登录页面中,使用的是MyBatis框架,故需要在一开始通过resource来加载配置文件和映射文件(mybatis-config.xml);2)构造读取xml文件的方式。需要创建SqlSessionFactory类的实例(相当于是产生连接池),通过调用SqlSessionFactoryBuilder类的实例的build方法来完成。正如它名字暗示那样;3)通过SqlSessionFactory来创建一个SqlSession实例。SqlSession包含了所有执行数据库SQL语句的方法,然后可以通过SqlSession实例执行映射SQL语句;4)通过session中的getMapper方法从会话中获取mapper,从而得到相应数据库中的userid和password,并写if语句对userid和password的正确性进行验证;5)最后,通过关闭会话。LoginService.java关键代码如下:SqlSessionsession=sqlSessionFactory.openSession(true);UserDaouserDao=session.getMapper(UserDao.class);Useruser=newUser();user=userDao.getUserById(userid);if(user!=null&&user.getPassword().equals(password)){pw.print(true);}else{ pw.print(false);}finally{ session.close();}5.2注册页面实现1.描述:主要用于实现新用户的注册功能。在用户没有i健康账号的时候,如果需要进行购买、查看订单等操作时,需要注册一个用户。其中包括:账号、密码、姓名、年龄、联系方式、性别等用户的基本信息。验证注册用户信息的正确性,使其具有进入系统的权限以及购买等的权限。2.程序运行效果图如图5-2所示:图5-2系统注册页面设计3.实现过程在注册页面的第一个标签页:设置登录名中,输入账号和密码,点击下一步按钮,通过jQuery对用户输入信息是否为空进行验证。之后跳转到注册的service中,通过UserJudgementServlet.java将前台数据与数据库中数据进行匹配,验证账号信息是否重复。验证通过进入下一个标签页:填写账户信息,输入姓名、性别、年龄、电话、邮箱、所在地区等,点击注册按钮,跳转到注册的service中,通过UserAddServlet.java将前台上传的用户数据添加到数据库的用户信息表中。其中标签页的切换以及错误信息提醒通过AJAX实现。1)在注册页面中,使用的是MyBatis框架,通过resource来加载配置文件和映射文件(mybatis-config.xml);2)通过调用SqlSessionFactoryBuilder类的实例的build方法来构造读取xml文件的方式SqlSessionFactory;3)通过SqlSessionFactory创建SqlSession实例来执行映射SQL语句;4)通过session中的getMapper方法从会话中获取mapper,从而得到相应数据库中的userid以及用户的其他重要信息,并通过UserJudgementServlet.java中的条件判断语句user==null来验证输入用户是否已经存在,如果不为空则该用户已经存在,提示错误信息;如果不存在则跳转到UserAddServlet.java中,获取各个字段的值、创建新用户设置各个字段的值、增加该用户信息到数据库中;5.最后,关闭会话。UserAddServlet.java关键代码如下: Stringuserid=req.getParameter("userid"); users.setUserId(userid);userDao.addUser(users);5.3用户信息管理在后台管理界面中,在左侧栏中选择用户信息,进入用户信息管理界面。上面主要显示了各用户的基本信息(包括账号、姓名、密码、性别、年龄、联系方式、邮箱、住址等内容)。可以进行用户信息的增删改查操作。界面设计主要通过jQueryEasyUi实现数据以表格的形式显示并添加相关的样式以及对数据的编辑等功能。其中实现如下:1)通过Userinfodel.java将管理员选中行信息进行删除;2)通过UserinfoAdd.java将新添加信息添加到数据库中;3)通过Userinfoupd.java将数据修改部分在数据库中更新;4)通过UserinfoOperate.java对新增加数据以及已修改数据进行保存;5)通过UserinfoQuery.java实现对数据的查询功能。程序运行效果图如图5-3所示:图5-3用户信息管理页面设计5.3.1用户信息录入1.描述:管理员登陆到用户管理界面后,鼠标右击选择添加或者直接选择添加按钮,均可弹出添加用户信息窗口,在该窗口中进行用户信息添加即可。如果信息输入有误,则弹出出错提示。否则,添加成功,并在该页面中显示出刚添加用户的信息。2.程序效果图如下图5-4所示(两种方式):图5-4用户信息添加页面设计3.实现过程1)有关doGet和doPost方法与之前的用户登录与注册页面基本相同,故再之后的描述中均不再赘述,如需要,可以转到之前的登录和注册描述中查看;2)有关于中文乱码的解决。通过对req和resp的setCharacterEncoding属性为UTF-8来解决在代码及数据库中出现的中文乱码问题;3)通过jdbc连接到数据库。创建一个DBHelp对象来将录入的信息插入数据库中。UserinfoAdd.java主要代码如下:Stringsql="insertintouservalues(?,?,?,?,?,?,?,?)";booleanboo=newDBHelp().exeSQL(sql,userid,username,password,sex,age,tel,email,address);5.3.2用户信息修改1.描述:管理员登陆到用户管理界面后,单击选中要修改用户信息的行,鼠标右击选择修改,方可弹出修改窗口,在该窗口中进行该用户信息的修改即可。如果信息输入有误,则弹出出错提示。否则,修改成功,并在该页面中显示出刚添加用户的信息。2.程序效果图如下图5-5所示: 图5-5用户信息修改页面设计3.实现过程1)先通过request.getParameter()方法得到通过Post方法提交过来的数据;2)然后通过以下语句对数据库中的相应信息进行修改。Userinfoupd.java主要代码如下:Stringsql="updateusersetUSER_NAME=?,USER_PASSWORD=?,USER_SEX=?,USER_AGE=?,USER_TEL=?,USER_EMAIL=?,USER_ADDRESS=?whereUSER_ID=?";5.3.3用户信息删除1.描述:管理员登陆到用户管理界面后,单击选中要修改用户信息的行,鼠标右击选择删除或者直接选择删除按钮,均可弹出删除窗口,之后选择确定即可删除该行信息。删除后,该信息将不在用户信息界面中出现。2.程序效果图如下图5-6所示:图5-6用户信息删除页面设计3.实现过程1)先通过request.getParameter()方法得到通过Post方法提交过来的数据。即该条信息的主键信息;2)然后通过以下语句对数据库中的相应信息进行删除。Userinfodel.java主要代码如下:Stringsql="deletefromuserwhereUSER_ID=?";5.3.4用户信息查询1.描述:管理员登陆到用户管理界面后,鼠标右击选择查询或者直接选择查询按钮,在窗口的最右边会显出一个查询框,在下拉列表框中可以选择你想要依靠什么关键字来查询,选择关键字,在框中输入你要查询的内容,点击查询。就会在用户信息管理界面中显示出你所查询的内容。2.程序效果图如下图5-7所示:图5-7用户信息查找页面设计3.实现过程1)由于页面中使用了分页,所以在查询数据的时候,需要使用page变量和rows变量进行操控。相应代码在文下已有;2)创建类queryUserinfoMsg(Stringsql,intpage,introws)用来获取查询到的信息的所有数据,并存放在数组中;3)然后通过StringBufferstringBuffer=newStringBuffer();创建一个字符串缓存区来存放查询出来的数据并用stringBuffer.append给界面中追加信息。UserinfoQuery.java主要代码如下:sql="select*fromuserwhere"+usernameKey+"like'%"+usernameValue+"%'limit"+(1)*rows+","+rows;sqlCount="selectcount(*)fromuserwhere"+usernameKey+"like'%"+usernameValue+"%'";5.4药品信息管理在后台管理界面中,在左侧栏中选择药品信息,进入药品信息管理界面。上面主要显示了药品的基本信息(包括药品编号、药品名称、生产编号、市场价格、i健康价格、生产厂家、生产日期、药品数量、药品类别等信息)。可以进行药品信息的增删改查操作。其中实现如下:1)通过MedicineDel.java将管理员选中行信息进行删除;2)通过MedicineAdd.java将新添加信息添加到数据库中;3)通过MedicineUpd.java将数据修改部分在数据库中更新;4)通过MedicineOperate.java对新增加数据以及已修改数据进行保存;5)通过MedicineQuery.java实现对数据的查询功能。程序运行效果图如图5-8所示:图5-8药品信息管理页面设计5.4.1药品信息录入1.描述:管理员登陆到药品管理界面后,鼠标右击选择添加则弹出添加药品信息窗口,在该窗口中进行药品信息添加即可。或者直接选择添加按钮,在所有信息的最后一行之后会添加一条新的空白行,在空白行的输入框内输入数据,点击保存按钮,添加信息无误,弹出保存成功信息。如果信息输入有误,则弹出出错提示。否则,添加成功,并在该页面中显示出刚添加药品的信息。2.程序效果图如下图5-9所示:图5-9用户信息添加页面设计3.实现过程通过jdbc连接到数据库。创建一个DBHelp对象来将录入的信息插入数据库中。MedicineAdd.java主要代码如下:Stringsql="insertintomedicineinfovalues(?,?,?,?,?,?,?,?,?)";5.4.2药品信息修改1.描述:管理员登陆到药品管理界面后,单击选中要修改药品信息的行,鼠标右击选择修改,方可弹出修改窗口,在该窗口中进行该药品信息的修改即可。如果信息输入有误,则弹出出错提示。否则,修改成功,并在该页面中显示出刚修改药品的信息。2.程序效果图如下图5-10所示:图5-10药品信息修改页面设计3.实现过程1)先通过request.getParameter()方法得到通过Post方法提交过来的数据;即该条信息的主键以及其他信息;2)然后通过以下语句对数据库中的相应信息进行修改。Medicineupd.java主要代码如下:Stringsql="updatemedicineinfosetMED_NAME=?,APP_NO=?,MARK_PRICE=?,IHEALTH_PRICE=?,FAC_NAME=?,MED_DATE=?,MED_NUM=?,MED_CLASS=?whereMED_NO=?";5.4.3药品信息删除1.描述:管理员登陆到药品管理界面后,单击选中要修改药品信息的行,鼠标右击选择删除或者直接选择删除按钮,均可弹出删除窗口,在显示信息中显示具体删除几个数据,在核对无误后,选择确定(即ok)即可删除该行信息。删除后,该信息将不在药品信息界面中出现。2.程序效果图如下图5-11所示:图5-11药品信息删除页面设计3.实现过程1)先通过request.getParameter()方法得到通过Post方法提交过来的数据。即该条信息的主键信息;2)然后通过以下语句对数据库中的相应信息进行删除。Medicinedel.java主要代码如下:Stringsql="deletefrommedicineinfowhereMED_NO=?";5.4.4药品信息查询1.描述:管理员登陆到药品管理界面后,鼠标右击选择查询或者直接选择查询按钮,在窗口的最右边会显出出一个查询框,在下拉列表框中可以选择你想要依靠什么关键字来查询,选择关键字,在框中输入你要查询的内容,点击查询。就会在药品信息管理界面中显示出你所查询的内容。2.程序效果图如下图5-12所示:图5-12药品信息查询页面设计3.实现过程1)页面中使用了分页管理,在数据库中查询需要查询的数据时,使用page变量和rows变量进行操控;2)创建类queryUserinfoMsg(Stringsql,intpage,introws)用来获取查询到的信息的所有数据,并存放在数组中;3)然后通过StringBufferstringBuffer=newStringBuffer();创建一个字符串缓存区来存放查询出来的数据并用stringBuffer.append给界面中追加信息。5.5厂家信息管理在后台管理界面中,在左侧栏中选择厂家信息,进入厂家信息管理界面。上面主要显示了厂家的基本信息(包括厂家名称、厂家地址、联系人、联系电话、联系邮箱等内容)。可以进行厂家信息的增删改查操作。其中实现如下:1)通过FactoryDel.java将管理员选中行信息进行删除;2)通过FactoryAdd.java将新添加信息添加到数据库中;3)通过FactoryUpd.java将数据修改部分在数据库中更新;4)通过FactoryOperate.java对新增加数据以及已修改数据进行保存;5)通过FactoryQuery.java实现对数据的查询功能。程序运行效果图如图5-13所示:图5-13厂家信息管理页面设计5.5.1厂家信息录入1.描述:登陆到厂家信息管理界面后,鼠标右击选择添加或者直接选择添加按钮,均可弹出添加厂家信息窗口,在该窗口中进行厂家信息添加即可。如果信息输入有误,则弹出出错提示。否则,添加成功,并在该页面中显示出刚添加厂家的信息。2.程序效果图如下图5-14所示:图5-14药品信息添加页面设计3.实现过程通过jdbc连接到数据库。创建一个DBHelp对象来将录入的信息插入数据库中。FactoryAdd.java主要代码如下:Stringsql="insertintofactoryinfovalues(?,?,?,?,?)";5.5.2厂家信息修改1.描述:管理员登陆到厂家管理界面后,单击选中要修改厂家信息的行,鼠标右击选择修改,方可弹出修改窗口,在该窗口中进行该厂家信息的修改即可。如果信息输入有误,则弹出出错提示。否则,修改成功,并在该页面中显示出刚修改厂家的信息。2.程序效果图如下图5-15所示:图5-15厂家信息修改页面设计3.实现过程1)先通过request.getParameter()方法得到通过Post方法提交过来的数据;2)然后通过以下语句对数据库中的相应信息进行修改。Factoryupd.java主要代码如下:Stringsql="updatefactoryinfosetFAC_ADDRESS=?,CONN_NAME=?,FAC_TEL=?,FAC_EMAIL=?whereFAC_NAME=?";5.5.3厂家信息删除1.描述:管理员登陆到厂家管理界面后,单击选中要修改厂家信息的行,鼠标右击选择删除或者直接选择删除按钮,均可弹出删除窗口,之后选择确定即可删除该行信息。删除后,该信息将不在厂家信息界面中出现。2.程序效果图如下图5-16所示:图5-16厂家信息删除页面设计3.实现过程1)先通过request.getParameter()方法得到通过Post方法提交过来的数据;2)然后通过以下语句对数据库中的相应信息进行删除。Factorydel.java主要代码如下:Stringsql="deletefromfactoryinfowhereFAC_NAME=?";5.5.4厂家信息查询1.描述:管理员登陆到厂家管理界面后,鼠标右击在弹出框中选择查询或者直接选择查询按钮,在窗口的最右边会显出出一个查询框,在下拉列表框中可以选择你想要依靠什么关键字来查询,选择关键字,之后在搜索框中输入你要查询的具体内容(如输入北京,则出现厂家地址包含北京的所有信息),点击查询或者按下回车键。就会在厂家信息管理界面中显示出你所查询的内容。2.程序效果图如下图5-17所示:图5-17厂家信息查找页面设计3.实现过程1)由于页面中使用了分页,所以在查询数据的时候,需要使用page变量和rows变量进行操控;2)创建类queryUserinfoMsg(Stringsql,intpage,introws)用来获取查询到的信息的所有数据,并存放在数组中;3)然后通过StringBufferstringBuffer=newStringBuffer();创建一个字符串缓存区来存放查询出来的数据并用stringBuffer.append给界面中追加信息。5.6订单信息管理在后台管理界面中,在左侧栏中选择订单信息,进入订单信息管理界面。上面主要显示了订单的基本信息(包括厂家名称、厂家地址、联系人、联系电话、联系邮箱等内容)。可以进行订单信息的增删改查操作。其中实现如下:1)通过OrderformDel.java将管理员选中行信息进行删除;2)通过OrderformAdd.java将新添加信息添加到数据库中;3)通过OrderformUpd.java将数据修改部分在数据库中更新;4)通过OrderformOperate.java对新增加数据以及已修改数据进行保存;5)通过OrderformQuery.java实现对数据的查询功能。程序运行效果图如图5-18所示:图5-18订单信息管理页面设计5.6.1订单信息录入1.描述:管理员登陆到订单信息管理界面后,鼠标右击选择添加或者直接选择添加按钮,在弹出的添加订单信息窗口中进行订单信息添加即可。之后会显示在列表中。2.程序效果图如下图5-19所示:图5-19订单信息添加页面设计3.实现过程通过jdbc连接到数据库。创建一个DBHelp对象来将录入的信息插入数据库中。OrderformAdd.java主要代码如下:Stringsql="insertintoorderforminfovalues(?,?,?,?,?,?,?,?,?,?,?,?)";5.6.2订单信息修改1.描述:管理员登陆到订单管理界面后,单击选中要修改订单信息的行,鼠标右击选择修改,方可弹出修改窗口,在该窗口中进行该订单信息的修改即可。如果信息输入有误,则弹出出错提示。否则,修改成功,并在该页面中显示出刚修改订单的信息。2.程序效果图如下图5-20所示:图5-20订单信息修改页面设计3.实现过程1)先通过request.getParameter()方法得到通过Post方法提交过来的数据;2)然后通过以下语句对数据库中的相应信息进行修改。Orderformupd.java主要代码如下:Stringsql="updateorderforminfosetUSER_ID=?,CONSIGNEE_NAME=?,CONSIGNEE_TEL=?,CONSIGNEE_ADDRESS=?,MED_NO=?,MED_NAME=?,"+"IHEALTH_PRICE=?,BUY_NUM=?,TOTAL_PRICE=?,DELIVERY=?,ORDER_STATE=?whereORDER_NO=?";5.6.3订单信息删除1.描述:管理员登陆到订单管理界面后,单击选中要修改订单信息的行,鼠标右击选择删除或者直接选择删除按钮,均可弹出删除窗口,之后检查上面输出的删除数量是否正确,如果确定正确则选择确定即可删除该行信息。删除后,该信息将不在订单信息界面中出现。2.程序效果图如下图5-21所示:图5-21订单信息删除页面设计3.实现过程1)先通过request.getParameter()方法得到Post方法提交的数据。即主键信息;2)然后通过以下语句对数据库中的相应信息进行删除。Orderformdel.java主要代码如下:Stringsql="deletefromorderforminfowhereORDER_NO=?";5.6.4订单信息查询1.描述:管理员登陆到订单管理界面后,鼠标右击选择查询或者直接选择查询按钮,在窗口的最右边会显出出一个查询框,在下拉列表框中可以选择你想要依靠什么关键字来查询,选择关键字,在框中输入你要查询的内容,点击查询。就会在订单信息管理界面中显示出你所查询的内容。2.程序效果图如下图5-22所示:图5-22订单信息查询页面设计3.实现过程1)由于页面中使用了分页,所以在查询数据的时候,需要使用page变量和rows变量进行操控;2)创建类queryUserinfoMsg(Stringsql,intpage,introws)用来获取查询到的信息的所有数据,并存放在数组中;3)然后通过StringBufferstringBuffer=newStringBuffer();创建一个字符串缓存区来存放查询出来的数据并用stringBuffer.append给界面中追加信息。5.7入库信息管理在后台管理界面中,在左侧栏中选择入库信息,进入入库信息管理界面。上面主要显示了入库的基本信息(包括入库编号、厂家名称、药品编号、药品名称、操作人、联系电话、数量、价格等内容)。可以进行入库信息的增删改查操作。其中实现如下:1)通过StockDel.java将管理员选中行信息进行删除;2)通过StockAdd.java将新添加信息添加到数据库中;3)通过StockUpd.java将数据修改部分在数据库中更新;4)通过StockOperate.java对新增加数据以及已修改数据进行保存;5)通过StockQuery.java实现对数据的查询功能。程序运行效果图如图5-23所示:图5-23入库信息管理页面设计5.7.1入库信息录入1.描述:管理员登陆到入库信息管理界面后,鼠标右击选择添加或者直接选择添加按钮,均可弹出添加入库信息窗口,在该窗口中进行订单信息添加即可。如果信息输入有误,则弹出出错提示。否则,添加成功,并在该页面中显示出刚添加入库的信息2.程序效果图如下图5-24所示:图5-24入库信息添加页面设计3.实现过程通过jdbc连接到数据库。创建一个DBHelp对象来将录入的信息插入数据库中。StockAdd.java主要代码如下:Stringsql="insertintostockinfovalues(?,?,?,?,?,?,?,?)";5.7.2入库信息修改1.描述:管理员登陆到入库管理界面后,单击选中要修改入库信息的行,鼠标右击选择修改,方可弹出修改窗口,在该窗口中进行该入库信息的修改即可。如果信息输入有误,则弹出出错提示。否则,修改成功,并在该页面中显示出刚修改入库的信息。2.程序效果图如下图5-25所示:图5-25入库信息修改页面设计3.实现过程1)先通过request.getParameter()方法得到通过Post方法提交过来的数据;2)然后通过以下语句对数据库中的相应信息进行修改。Stockupd.java主要代码如下:Stringsql="updatestockinfosetFAC_NAME=?,MED_NO=?,MED_NAME=?,OPERATOR_NAME=?,FAC_TEL=?,STO_NUM=?,STO_PRICE=?whereSTO_NO=?";5.7.3入库信息删除1.描述:管理员登陆到入库管理界面后,单击选中要修改入库信息的行,鼠标右击选择删除或者直接选择删除按钮,均可弹出删除窗口,之后检查上面输出的删除数量是否正确,如果确定正确则选择确定即可删除该行信息。删除后,该信息将不在订单信息界面中出现。2.程序效果图如下图5-26所示:图5-26入库信息删除页面设计3.实现过程1)先通过request.getParameter()方法得到通过Post方法提交过来的数据。即该条信息的主键信息;2)然后通过以下语句对数据库中的相应信息进行删除。Stockdel.java主要代码如下:Stringsql="deletefromstockinfowhereSTO_NO=?";5.7.4入库信息查询1.描述:管理员登陆到入库管理界面后,鼠标右击选择查询或者直接选择查询按钮,在窗口的最右边会显出出一个查询框,在下拉列表框中可以选择你想要依靠什么关键字来查询,选择关键字,在框中输入你要查询的内容,点击查询。就会在入库信息管理界面中显示出你所查询的内容。2.程序效果图如下图5-27所示:图5-27入库信息查询页面设计3.实现过程1)由于页面中使用了分页,所以在查询数据的时候,需要使用page变量和rows变量进行操控;2)创建类queryUserinfoMsg(Stringsql,intpage,introws)用来获取查询到的信息的所有数据,并存放在数组中;3)然后通过StringBufferstringBuffer=newStringBuffer();创建一个字符串缓存区来存放查询出来的数据并用stringBuffer.append给界面中追加信息。5.8药品页面实现1.描述:所有用户登录到index.jsp页面后(即主页面),在搜索框中输入数据库中已有药品或者在页面的侧边栏等地方点击某药品都可以跳转到所选择或者查找的药品详细信息页面。该页面主要显示药品的通用名称、产品编号、批准文号、市场价格、i健康价格、生产厂家、购买数量等详细信息。并且添加了加入购物车和立即购买按钮,方便用户对药品进行购买操作。2.程序效果图如下图5-28所示:图5-28药品信息页面设计3.实现过程1)在com.data中创建MedicineInfo.java类在封装有关于药品的详细信息;2)在com.dao包中创建MedicineDao.java和MedicineDaoImpl.java类里面封装了三个接口,一个是findAllMedicineinfo,主要是通过药品编号来查找药品信息。用于单击某个药品名称时使用。另一个是findOneMedicine,主要是通过药品名称来查找药品信息。用于主页面和其他页面在搜索框中输入某个药品名称时使用。第三个是AddOrderform,用户增加订单信息;3)在product.jsp页面中通过${medicineinfo.medNo}的方式来或缺来自数据库中的数据并显示在页面上;4)页面中的购买数量的+、-通过js来实现;5)给立即购买按钮加入立即购买按钮事件,点击后直接提交订单并打开购物车页面。通过OrderformAddServlet.java中的findOrderform在已有的订单中查 找订单来判断购物车中是否存在相同的药品如果没有,则通过AddOrderform将信息订单信息添加到未完成订单中,否则通过updateOrderformMedicineNum来更新已有信息。添加成功则转到OrderformQueryServlet.java中通过判 断订单的orderState的值(当前为null),进而通过findAllOrderforms获取所有订单状态为0的药品,并将页面跳转到购物车页面;6)给加入购物车按钮加入购物车按钮事件,只是提交订单,不打开购物车页面,通过设置href到orderformAddServlet.java中进行相应操作,添加成功后,显示添加成功提示。5.9购买功能实现5.9.1购物车页面1.描述:当用户在药品页面点击立即购买,或者先进行加入购物车之后点击页面特定位置上的购物车标识的时候,页面将跳转到shoppingcart.jsp页面中。在该页面中主要显示用户需要购买药品的信息(药品、单价、数量、小计、操作、总价等信息)。同时可以对药品信息进行数量的增减以及对药品进行删除等操作。2.程序效果图如下图5-29所示:图5-29购物车页面设计3.实现过程1)在com.data中创建OrderformInfo.java类在封装有关于药品的详细信息;2)在com.dao包中创建OrderformDao.java和OrderformDaoImpl.java类。OrderformDao.java中创建了:updateOrderformMedicineNum,用来修改订单中数量和计算后的总价格;3)在shoppingcart.jsp页面中通过${orderforminfo.totalPrice}的方式来或缺来自数据库中的数据并显示在页面上;4)页面中的购买数量的+、-等通过js来实现;5)给结算按钮加上事件,点击后直接提交订单并打开订单确定。通过js的ajax来实现,设置url到OrderformUpdateNumServlet.java将前台数据与数据库中数据进行同步,确定最终需购买的药品信息(其中所使用的方法updateOrderformMedicineNum),如果成功则设置href到order.jsp页面中进行相应的操作。确定订单页面1.描述:当用户在购物车页面点击结算按钮时,页面将跳转到订单确定页面。该页面主要显示用户及收件人的基本信息(姓名、联系电话、地址、配送方式)。以及刚才所提交的需要购买药品的基本信息。2.程序效果图如下图5-30所示:图5-30确定订单页面设计3.实现过程1)在com.dao包中创建OrderformDao.java和OrderformDaoImpl.java类。OrderformDao.java中创建了:一updateOrderformConsignee,修改订单中收件人信息;二updateOrderformState,用来修改订单状态(支付状态“1”与未支付状态“0”);2)在order.jsp页面中通过${user.userName}的方式来或缺来自数据库中的数据并显示在页面上;3)页面中的修改收件人、提交订单等动态效果通过js来实现;4)在com.servlet包中另外创建了两个类,分别为:OrderformUpdateConsignee.java和OrderformUpdateStateServlet.java类。通过OrderformUpdateConsignee.java将前台用户输入的需更改信息传入后台,并更新数据库中有关收件人的信息(其中所使用的方法updateOrderformConsignee);通过OrderformUpdateStateServlet.java在提交后更改订单状态(其中所使用的方法updateOrderformState)。5.9.3订单页面1.描述:实现用户对已购买药品信息的浏览。当用户完成订单确认操作后,将自动跳转到订单页面。该页面主要显示了订单编号、药品、单价、数量、小计、收件人、物流等基本信息。2.程序效果图如下图5-31所示:图5-31订单页面设计3.实现过程1)主要的数据交互在上面已经详细描述过,故不再重复;2)页面中信息的获取通过${order.orderNo}来实现;3)通过jQuery获取当前用户的id以及其他药品信息。5.10用户信息管理页面实现1.描述:实现用户对自己信息管理。2.程序效果图如下图5-32所示:图5-32用户信息管理页面设计3.实现过程1)通过jQuery获取当前用户的id等信息;2)通过UserUpdateServlet.java来实现对用户信息的更改。5.11主页面实现1.描述:实现用户对系统信息的总体浏览。对所需药品进行查询、各页面的入口以及退出登录等操作。2.程序效果图如下图5-33所示:图5-33主页面设计3.实现过程1)通过jQuery获取当前用户的id;2)通过MedicineQueryServlet.java将前台数据与数据库中数据进行匹配,查找相应药品,此处使用模糊查找;3)通过AJAX进行页面的跳转以及错误信息提醒;4)通过LogoutServlet.java来结束本次会话从而退出登录;5)通过js实现页面的动态效果。6.系统测试6.1系统测试目的与意义系统测试是管理信息系统开发周期中一个十分重要而漫长的的阶段。其重要性体现在它是保证系统质量与可靠性的最后关口,同时也是对整个系统开发过程(系统的分析、系统的设计以及系统的实现)的最终审查。系统测试的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东科贸职业学院《生理药理学》2023-2024学年第一学期期末试卷
- 广东警官学院《文学批评方法》2023-2024学年第一学期期末试卷
- 广东江门中医药职业学院《智能运输系统概论》2023-2024学年第一学期期末试卷
- 广东技术师范大学《金融企业会计》2023-2024学年第一学期期末试卷
- 广东海洋大学《机械工程技术交流》2023-2024学年第一学期期末试卷
- 广东工商职业技术大学《机器学习原理》2023-2024学年第一学期期末试卷
- 广东第二师范学院《生物药物制剂技术》2023-2024学年第一学期期末试卷
- 广东潮州卫生健康职业学院《城市绿地规划》2023-2024学年第一学期期末试卷
- 广东财经大学《建筑设计(Ⅱ)》2023-2024学年第一学期期末试卷
- 《国际肿瘤护理进展》课件
- 泌尿外科膀胱镜检查技术操作规范
- 避雷针、线保护范围计算表
- 10KV变配电室交接班管理制度
- 风机振动正常范围国标标准
- 江苏省南京市外国语学校2022-2023学年七年级上学期第一次段考英语试卷
- 针对土石方运输重难点解决措施
- 多工步组合机床的plc控制系统设计
- 常见酸和碱说课课件
- 三年级下册英语说课稿-《Lesson 11 What Do They Eat》|冀教版(三起)
- 2023-2024学年湖北省利川市小学语文六年级期末通关测试题详细参考答案解析
- 商品和服务税收分类编码(开票指引)
评论
0/150
提交评论