基于JAVA WEB的医药管理系统

更新时间:2024-05-11 03:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

合肥财经职业学院

毕业论文(实践)报告

系 别 工程学院

专 业 计算机网络技术

年 级 2008 学 制 学 号

姓 名

二0一0 年 十 月

题目 基于JAVA WEB的医药管理系统 医药管理系统是现代化在线医药管理必不可少的基础设施与技术支撑环境。本系统前台采用Dreamweaver开发,后台采用MySql 作为数据库开发工具,这些技术目前相对比较成熟,方便产品的维护。本系统可以实现用户在线注册、登录、修改主 要 内 容 个人信息,用户进行药品选购、查看药品详细信息、提交订单信息,管理员对药品、药品分类、用户信息和订单信息进行在线维护和管理。 导 师 评 语 成 绩 导 师

基于JAVA WEB的医药管理系统 作者:++ 合肥财经职业学院毕业论文 2010年10月

目 录

摘 要 ...................................................................... 1 ABSTRACT .................................................................... 2 第1章 开发的目的和意义 .................................................... 3 第2章 需求分析 ............................................................ 4 2.1 系统工作流程分析 ...................................................... 4 2.2 系统实现目标 .......................................................... 4 第3章 总体设计 ............................................................ 5 3.1 系统设计的总体思想 .................................................... 5 3.2 系统设计的体系和结构 .................................................. 5 3.2.1 系统的设计体系 .................................................... 5 3.2.2 系统的结构架构 .................................................... 6 3.3 系统的功能和结构框图 .................................................. 7 3.3.1 系统功能模块 ...................................................... 7 3.3.2 系统结构框图: .................................................... 8 3.4 开发平台和开发工具 ................................................... 11 第4章 开发平台和工具的简介 ............................................... 11 4.1 JSP的简要说明 ........................................................ 11 4.2 MYSQL的简要说明 ...................................................... 11 4.3 系统配置过程 ......................................................... 12 4.4 配置关键性问题的解决 ................................................. 14 4.4.1 Servlet和JSP 性能调整 ........................................... 14 第5章 系统的详细设计 ..................................................... 15 5.1 数据库的实现 ......................................................... 15 5.1.1 数据库关系模式的设计 ............................................. 15 5.1.2 数据库的具体实现(表结构) ....................................... 16 5.2 数据库的连接 ......................................................... 19 5.3 功能模块的详细设计 ................................................... 21 5.3.1 组件包结构 ....................................................... 21 5.3.2 具体模块的代码和相应界面 ......................................... 22 第6章 经验总结 ........................................................... 38 致 谢 .................................................................... 39 参考文献 ................................................................... 40

摘 要

医药管理系统是现代化在线医药管理必不可少的基础设施与技术支撑环境。本系统前台采用DreamWeaver开发,后台采用MySql 作为数据库开发工具,这些技术目前相对比较成熟,方便产品的维护。本系统可以实现用户在线注册、登录、修改个人信息,用户进行药品选购、查看药品详细信息、提交订单信息,管理员对药品、药品分类、用户信息和订单信息进行在线维护和管理。

JSP(Java Server Pages)是由Sun Micrososystems公司倡导的、许多公司参与的一起建立的一种动态网页技术标准,JSP技术是在Servlet技术基础上发展起来的,它在飞速发展过程中,现在已经成为Java服务器编程的重要组成部分。虽然它未成型,但是它必然将和J2EE一起发展。

MySql是一种高效的关系数据库系统,它与Windows NT/2000及Windows 9x等操作系统紧密集成。这种安排使MySql能充分利用操作系统所提供的特性。对于今天复杂的客户/服务器系统来说,MySql是一个很好的选择。

关键字:医药管理系统,Java,MySql

1

Abstract

The medical administrative system is the modernized online medicine management system, which is the essential infrastructure and technological back-up environment. This systematic front desk adopts DreamWeaver development, and the backstage supporter adopts MySql as the database developing instrument. These technologies are relative mature at present, facilitate the maintenance of the products. This system can realize user's online registration , log-in , revision of personal information , selection and order of medicines, examination of the detailed information of medicines , submittal of the order information, maintenance and management of medicines, classification of the medicines ,user’s information and order information online.

JSP (Java Server Pages ) is advocated by Sun Micrososystems Company, a kind of dynamic webpage technical standard of setting-up together which a lot of companies participate in. JSP technology is developed on Servlet technological foundation. In the course of developing at full speed, it have already become the important component of server programming of Java now. Though it does’t shape, it must develop with J2EE.

MySql is an efficient relation database system. It is close integrated with Windows 2000/NT and Windows 9X OS. MySql can utilize fully the characteristics provided by OS .MySql is a good choice for the complicated Cilent/Server systems nowaday.

Key Word: Medical Administrative System, JSP, MySql

2

第1章 开发的目的和意义

开发软件的一个目的是针对目前普遍的医药管理系统存在的功能不全,操作复杂,系统要求高等一系列问题。该管理系统采用电子商务设计模式,可靠,方便,并且功能齐全。当然对该软件的态度是渴望获得显著的社会效益。

开发软件的另一个目的是使其具有强大的实用价值,即它可以满足中小型医药公司的管理需要。随着小型医药企业规模的扩大,手工工作已经不能满足业务上的需求。而该医药管理系统的实施,能集中处理药品的进销存业务,管理好企业的应收应付账目,为企业的调整发展创造一个新的条件。

随着我国市场经济的蓬勃发展和人们对医药产品需求的迅速增加,医药行业正处于一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的市场竞争中谋求发展,客观上要求企业必须加强内部管理,提高运营效率。

另外,由于医药产品种类繁多、销售模式特殊、业务最大,单凭手工记帐已很难适应工作的需要。医药作为一个关系到人们健康的特殊行业,国家对此又有一些不同于其他行业的管理政策,这些都加大了管理的难度。

如何尽快建立和完善现代企业的信息化管理机制问题,已成为医药企业发展的关键所在。而方便、安全、快捷的医药管理软件系统正是在这样的背景下发展起来的。

这种管理软件对硬件的要求很低,一般有一个比较简单的服务器与PC机组成的网络即可,再加上使用比较廉价、性能不错的软件,这样就可以以较低的成本来实现一个足够使用的功能,而这种模式也正满足了那种中小型医药公司的要求。但是目前对这种管理软件的开发还处于一种比较原始的阶段。开发者往往都是出于资金和时间的顾虑使用比较陈旧的技术,而且各为己见,并且很少涉及网络。可是当今是一个网络化的社会,单机版的管理软件多如牛毛,去开发一个类似的软件无疑是一种在时间上、精神上和资源上的极大浪费。所以为这种有需要的中小型企业开发一种基于网络的医药管理软件是非常有实用价值的。

3

第2章 需求分析

2.1 系统工作流程分析

传统的医药管理模式是手工记帐的,但由于目前医药产品种类繁多、销售模式特殊、业务量大,单凭手工记帐已经很难适应工作的需要。根据目前医药企业的实际需求,系统应实现的具体功能如下:

首先是客户界面,客户可以通过网络进行注册认证,然后可以通过身份登录

后进行药品的分类查找和选购,可以查看药品的详细说明,可以查找最新药品,有购物车功能,可以在线下订单,有订单详细信息;为了能够同客户很好地交流,还要有访客留言、系统公告、问卷调查等功能。

其次是管理界面,管理员登录后可以对药品信息进行修改、增加和删除操作,

可以对药品分类信息进行添加、删除操作,可以对客户信息进行相关维护,还要处理访客留言、订单信息以及系统其它相关操作等等。

2.2 系统实现目标

(1) 系统界面友好,操作简单 (2) 可随时掌握药品的进销存信息 (3) 灵活准确的收费,提高工作效率 (4) 查询灵活方便,数据安全可靠

(5) 从用户需求到售后服务,形成一套严密、科学、完善的管理体系 (6) 功能全面,实用性强

4

………

第3章 总体设计

3.1 系统设计的总体思想

页面模块化:

把页面中一些常用的部分集成为模块,例如页面的头和尾部,这样设计新的

页面时如果重复出现的部分只需要拿现成的模块来组装就可以了。

数据存取技术:

数据库是管理信息系统的核心内容。目前,Web与数据库接口技术有很多,其中JDBC是Java程序连接和存取数据库的应用程序接口,由一组用Java语言编写的类与接口组成,是执行SQL语句的Java API。在本管理信息系统中,采用了 JSP/Servlet+JDBC的技术,即客户端不产生数据库查询命令,客户端上的浏览器通过URL和中间层的Web服务器建立连接。Web服务器主要负责接收本地或远程浏览器的HTTP数据请求,然后中间层的Servlet收到请求后,通过执行程序中的SQL语句,利用JDBC提供的标准API对数据库进行访问和相应的操作处理。Servlet再将查询的数据传给JSP,最后生成标准的JSP页面将结果返回给提出请求的浏览器。这样,不仅将客户端与数据库服务器端分开,同时提高了数据库的访问效率。

3.2 系统设计的体系和结构

3.2.1 系统的设计体系

目前,在大多数Browser/Server结构的Web应用中,浏览器直接通过HTML或者JSP的形式与用户交互,响应用户的请求。虽然很直观,但是大多数管理信息系统操作的数据量都是惊人的,随着代码的增多会使JSP页面臃肿不堪,Web服务器的负荷过重。因此,在中间层上采用基于模型视图控制器(MVC.Model-View-Controller)的设计模式。Model层用来实现业务逻辑,View层用来显示用户界面,Controller层主要负责View层和Model层之间的控制关系。

5

具体实现时,把Servlet用作应用程序的控制器,把JSP文档作为视图,JavaBeans被用来表示模型。在这种设计模式下,各层次之间的数据传递如下图:

HTTP请求 获取数据 Controller

View 文档输出 更新模型 (JSP) (Servlet) Model (JavaBeans) DataBase 转交 请求 图3-1: 各层次之间的数据传递示意图

3.2.2 系统的结构架构

管理信息系统(MIS)是一个由人、计算机等组成的能进行信息的收集、传递、存储、加工和使用的系统。随着科技的发展,信息的膨胀,企业信息化成了企业在竞争中处于不败地位的有效手段之一。而MIS不仅能够及时全面地提供信息和数据,简化统计工作,对不同的管理层次提出不同的报告之外,还能根据过去的数据预测未来的情况。因此,采用何种方法开发出一种兼顾开发效率和运行效率,同时满足分布式事件处理功能的管理信息系统就显得尤为重要。

采用三层架构设计,它的工作原理如图:

6

客户机 浏览器 http服务器 数据库 应用程序服务器 Servlet容器 servlet JDBC jsp

图3-2: 采用三层架构设计的工作原理示意图

整个管理信息系统采用Browser/Web/DataBase的三层体系结构。Web服务器接受请求,通过应用程序服务器执行一个Java服务器端小程序Servlet并返回其输出,从而实现与客户机进行信息资源的交互。数据库服务器用来存储管理信息系统中所用到的各种数据,数据由数据库管理程序直接录入。系统的客户端只需要一个浏览器即可。相关人员通过浏览器来查询、增加、修改、删除数据,对信息进行管理。

3.3 系统的功能和结构框图

3.3.1 系统功能模块

客户端:

? 用户注册、登录 ? 修改用户个人信息

? 药品选购(可以分类查找药品,或通过关键字查询相关说明) ? 查看药品详细情况(包括药名、英文、生产厂家、批号、单价、图片、

详细介绍等) ? 购物车功能

7

? 查看、修改、提交用户订单信息 ? 新药介绍

? 客户留言(包括添加、修改、删除操作) ? 问卷调查 ? 系统公告 管理端:

? 现有药品管理:新增、修改、删除、查看 ? 药品分类管理:新增、删除 ? 用户信息管理:查看、修改、删除

? 订单管理:查看订单清单,更新订单付款,出货状态,删除订单? 系统维护:维护客户留言、发系统公告

3.3.2 系统结构框图:

全局结构框图:

8

医药管理系统 客户端界管理端界JavaBeans 数据库 在线购药界面 购物车界面 订单信息管理 登录注册界面 客户留言界面 药品管理模块 添加药品分类订单信息模块 登录模块 系统维护模块 客户管理模块 药品管理 订单管理 用户管理 药品分类类 药品分类管理类 药品类 药品管理类 订单类 订单管理类 购物车类 购物车管理类 用户类 用户管理类 用户登录类 图3-3: 全局结构示意图

客户界面的系统功能模块图:

9

客户登录 在线购药 在线购药 查看购物车 客户留言 查看订单信息 药品查询 购买 查看药品详细 客户注册登录 修改购买数量 删除已购药品 提交购物车 清空购物车 继续购药 查看订单详细 购买 查看药品详细购买

图3-4: 客户界面的系统功能模块图示意图

管理界面的系统功能模块图:

管理员登录 现有药品管添加新药品 添加药品分类 订单管理 系统维护 用户管理 理 查看药品资料 现有药品管删除药品 添加新药品 添加药品分类 删除药品分类 查看订单资料 删除订单 查看用户资料 查看用户资料 修改用户资料 删除用户 理

10

图3-5: 管理界面的系统功能模块图示意图

3.4 开发平台和开发工具

由于采用JSP架构,系统的功能加强,但其开发平台和开发工具的选择也是非常复杂。如上所述,系统结构采用Jsp/servlet + Javabeans + MySql;具体开发工具:前台页面使用DreamWeaver 2004 MX开发,这种工具对JSP的支持比FrontPage好;对于组件Bean的编写和编译用JCreator,方便的提示符和小巧的内存占用是我的首先;Jsp服务器选用TomCat5.0,后台数据库MySql4.0,为了更好地操作数据库,使用EMS Sql Manager 3.0进行windows图形化界面的数据库操作。

第4章 开发平台和工具的简介

4.1 JSP的简要说明

JSP即Java Server Pages,在电子商务开发上,还可以选择ASP平台。但比较过两者优劣后才决定选择JSP。

JSP和ASP技术明显的不同点:开发人员在对两者各自软件体系设计的深入了解的方式不同。JSP技术基于平台和服务器的互相独立,输入支持来自广泛的,专门的,各种工具包,服务器的组件和数据库产品开发商所提供。相比之下,ASP技术主要依赖微软的技术支持。

JSP技术依附于一次写入,之后,可以运行在任何具有符合JavaTM语法结构的环境。取而代之过去依附于单一平台或开发商,JSP技术能够运行在任何WEB服务器上并且支持来自多家开发商提供的各种各样工具包。

这种基于组件的模式很有效提高应用程序的开发效率,因为这种模式能够使开发人员利用快捷的子组件快速创建模板应用程序,然后再整合一些附加功能以后便可使用。像这样有效的方法在JSP中无处不在,并可将其打包成一个Javabean或一个工业标准化的Javabean组件。

终上所述,JSP继承JAVA一贯的跨平台、易维护的特性,是我开发的首选。

4.2 MySql的简要说明

11

选择一个好的数据库是开发一个系统的前提,当然用MySql也是与其它数据库比较过的。下面列出MySql与其它数据库的全方位对比: 安全性:

SQL server

没有获得任何安全证书。 Oracle Server

获得最高认证级别的ISO标准认证。 DB2

获得最高认证级别的ISO标准认证。 MySql

获得最高认证级别的ISO标准认证。 多线程:

MySQL是完全多线程化的,每个连接有它自己的线程,这意味着没有线程必须等待另一个线程(除非一个线程正在修改一张表,另外的线程想要存取);而在SQL server中,一旦一个连接被建立了,所有其它线程必须等到第一个线程完成,不管连接正在运行的查询是短的或是长的。 联结:

如果改变一个SELECT中的表的顺序,SQL Server可能变得异常地慢。在基准套件中,比MySQL要慢超过15000倍的时间。这是由于SQL Server缺乏一个联结优化器以便用最佳的顺序排定表。 Perl接口:

MySql和SQL Server有基本相同Perl接口,有一些增加的功能。 价格:

MySql的免费成为不可取代的优势。

终上所述,MySQL以其极高的性价比成为中小型数据建库的首选,本系统也选用MySql。

4.3 系统配置过程

由于JSP架构采用不同公司的软件产品,所以配置的复杂性是肯定的。下面

列出其配置详细过程: 所需软件:

(1) j2sdk-1_4_2-windows-i586.exe (2) jakarta-tomcat-5.0.28.exe (3) mysql-4.0.24-win.zip

(mysql有5.0的bate版,不过对其NullPointException出错一直是不能被广泛接

12

受的原因,在本系统下也只能用较为稳定的4.0版本。) (4) jdbc驱动

(mysql的驱动程序,其中connector采用mysql-connector-java-3.0.8-stable-bin.jar可以正常运行;而在后面一个较新的版本会出现StringOutOfRange错误,用最新的版本又会因为本数据库设计的时间格式已经不支持而不能正常读取,所以版本的选择是非常重要的。) 一、安装j2sdk

在Windows下,直接运行下载的j2sdk-1_4_1_01-windows-i586.exe文件,根据安装向导安装到一个目录,例如安装到d:\\server\\j2sdk。 1.配置环境变量: 添加CLASSPATH变量

./;%CLASSPATH%;D:\\server\\j2sdk1.4.0\\lib\\dt.jar;d:\\server\\j2sdk1.4.0\\lib\\tools.jar; 2.添加JAVA_HOME变量,变量值为d:\\server\\j2sdk1.4.0 3.在原来的path变量中,添加d:\\server\\j2sdk1.4.0\\bin,重新启动 二、Tomcat的安装

jakarta-tomcat-5.0.28.exe安装文件,设安装目录为d:\\server\\tomcat。 下面设置环境变量:

同jdk的环境变量,添加变量TOMCAT_HOME,值为d:\\server\\tomcat;增加变量CATALINA_HOME,值为d:\\tomcat\\server,在path变量中加入d:\\server\\tomcat\\bin。

下面启动tomcat,运行tomcat目录下的bin/startup.bat文件就出现tomcat运行控制台,则tomcat安装成功。 三、安装MySQL

第一步:解压mysql-4.0.24-win.zip,运行mysql安装文件,把mysql安装到d:\\server\\mysql

第二步:在环境变量path中加入 d:\\server\\mysql\\bin

第三步:进入d:\\server\\mysql\\bin目录,运行winmysqladmin,刚会出现对话框,设置mysql用户密码。

第四步:进入dos,进入mysql/bin下,运行以下命令打开mysql mysqld-nt –standalone,则mysql开启 四、安装MySQL的驱动类jdbc

解开jdbc驱动包,把里面的com文件夹复制到jsp相应的位置,可以是tomcat的根目录common/classes文件夹下,也可以是jsp网站class类WEB-INF/class/下。当加载驱动程序时,以便能找到相关的类,或者把jdbc包的路径加入到classpath变量中。

13

4.4 配置关键性问题的解决

上述配置正确后,只是可以成功连接,但还有一些需要解决的问题才能正常

运行JSP程序。

4.4.1 Servlet和JSP 性能调整

调整方法1:禁止servlet和jsp的自动重载

为了节约开发时间,在开发阶段Servlet/JSP容器提供自动重载功能,方便在修改Servlet/JSP后不用重新启动服务。可是,在生产环境下面,却是占用大量开销,因为进行了没有必要的重新载入的操作,所以带来了很怀的性能影响。同时,在部分类载入,部分为载入的时候也可能带来各种奇怪的冲突。因此在J2EE的生产环境下关闭自动载入功能可以得到更好的性能。 调整方法2:控制HttpSession

在默认情况下,不要在jsp页面中创建HttpSessions对象,jsp页面默认会自动创建HttpSessions,如果jsp页面中不需要HttpSessions,为了节省一些性能,使用下面的页面指令避免自动创建HttpSessions对象: <%@ page session=\ 调整方法3:选择正确的包含机制

jsp

中有两种方法使用包含文件:包含指令

(<%@ include file=\

作 (

Jsp页面的一个强大功能就是在jsp中交互使用JavaBeans组件。通过使用动作标签,JavaBeans可以被直接的嵌入jsp页面中。语法如下:

范围属性指定了bean的作用范围。它的默认值是page。可以根据系统要求

14

选择正确的范围。否则它会影响到应用系统的性能。 4.4.2 Mysql

与JSP网页中文乱码问题

以GBK字符集建库建表:

用EMS来建mysql的数据库及表,建库时,从EMS菜单中选create Database...新建一个数据库,CharacterSet选gbk_bin;后面建表时,也要选择同样的字符集。 连接数据库的URL后加参数:

假设新建的数据库是testdb,那么连接数据库的url应该为: jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=gbk 每个JSP页面都要声明该中文字符集:

在每个JSP页面的最上面都加上一句:

<%@ page language=\,这样才能保证JSP页面中的中文显示正常。

上述都是在实际进行JSP页面配置时遇到的问题,JSP配置的复杂性是由于各个版本开发的不一致造成的,在调试页面的同时也是对自己各方面知识水平的极大挑战。

第5章 系统的详细设计

5.1 数据库的实现

5.1.1 数据库关系模式的设计

? 订单(订单号,药品编号,订货数量)

? 药品信息(药品名称,药品分类,英文名称,生产厂家,批准文号,药品简

介,单价,总数量,剩余数量,登记时间,图片) ? 管理员(用户名,密码)

? 药品分类(分类编号,分类名称)

? 订单详细信息(订单编号,用户编号,提交订单的时间,交货时间,总金额,

备注,用户IP,是否付款,是否发货)

? 用户(用户名,密码,真实姓名,性别,地址,联系电话,邮编,E-mail,

注册时间,注册IP)

15

5.1.2 数据库的具体实现(表结构)

订单信息列表:

表5-1:订单信息列表

Field ID orderId MedID Amount Type int(11) int(11) int(11) int(11) Null NULL NULL NULL NULL Key PRI 0 0 YES Default NULL 0 0 NULL Extra Comment 订单号 药品编号 订货数量 递增 auto_increment 主键,-- -- -- SQL语句:

CREATE TABLE `allorder` (

`ID` int(11) NOT NULL auto_increment, `orderId` varchar(20) NOT NULL default '', `MedID` int(11) NOT NULL default '0', `Amount` int(11) default NULL, PRIMARY KEY (`ID`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

药品信息列表:

表5-2:药品信息列表

Field ID MedName MedClass EnName Company MedNo Context Prince Amount Type int(11) varchar(40) int(11) varchar(25) Null -- -- -- YES Key PRI -- -- -- -- -- -- -- -- -- -- -- Default (NULL) -- 0 (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) -- (NULL) Extra Comment 递增 auto_increment 主键,-- -- -- -- -- -- -- -- -- -- -- 药品名称 药品分类 英文名 生产厂家 批准文号 药品简介 单价 总数量 剩余数量 登记时间 图片 varchar(150) YES varchar(30) text float int(11) YES YES YES YES YES -- Leav_number int(11) RegTime picture datetime varchar(200) YES SQL语句:

16

CREATE TABLE `med` (

`ID` int(11) NOT NULL auto_increment, `MedName` varchar(40) NOT NULL default '', `MedClass` int(11) NOT NULL default '0', `EnName` varchar(25) default NULL, `Company` varchar(150) default NULL, `MedNo` varchar(30) default NULL, `Content` text,

`Prince` float default NULL, `Amount` int(11) default NULL, `Leav_number` int(11) default NULL,

`RegTime` datetime NOT NULL default '0000-00-00 00:00:00', `picture` varchar(200) default NULL, PRIMARY KEY (`ID`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

管理员信息表:

表5-3:管理员信息列表

Field Type Null Key -- -- Default (NULL) (NULL) Extra -- -- Comment 用户名 密码 AdminUser varchar(20) YES AdminPass varchar(50) YES SQL语句:

CREATE TABLE `meddmin` (

`AdminUser` varchar(20) default NULL, `AdminPass` varchar(50) default NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

药品分类表:

表5-4:药品分类表

Field ID Classname Type int(11) Null -- Key PRI -- Default (NULL) (NULL) Extra Comment auto_increment 分类编号 -- 分类名称 varchar(30) -- SQL语句:

CREATE TABLE `medclass` (

`ID` int(11) NOT NULL auto_increment, `ClassName` varchar(30) NOT NULL default '', PRIMARY KEY (`Id`)

17

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

订单详细表:

表5-5:订单详细表

Field Id orderId UserId SubmitTime Type int(11) Null -- Key -- -- -- -- -- -- -- -- -- -- Default (NULL) -- 0 -- (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) Extra -- -- -- -- -- -- -- -- -- -- Comment 主键,递增 订单编号 用户编号 交单时间 交货时间 总金额 备注 用户IP 是否付款 是否发货 varchar(20) -- int(11) datetime -- -- YES YES YES ConsignmentTime datetime TotalPrice content IPAddress IsPayoff IsSales float text varchar(20) YES int(11) int(11) YES YES

SQL语句:

CREATE TABLE `orders` (

`Id` int(11) NOT NULL auto_increment, `orderId` varchar(20) NOT NULL default '', `UserId` int(11) NOT NULL default '0',

`SubmitTime` datetime NOT NULL default '0000-00-00 00:00:00', `ConsignmentTime` datetime default NULL, `TotalPrice` float default NULL, `content` text,

`IPAddress` varchar(20) default NULL, `IsPayoff` int(11) default NULL, `IsSales` int(11) default NULL, PRIMARY KEY (`Id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

用户信息表:

表5-6:用户信息表

Field ID UserName Type int(11) varchar(20) Null -- -- Key PRI -- Default (NULL) -- Extra auto_incre -- Comment 主键,递增 用户名 18

Password Names Sex Address Phone Post Emain RegTime varchar(50) varchar(20) char(2) -- YES YES -- -- -- -- -- -- -- -- -- -- (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) -- -- -- -- -- -- -- -- -- 密码 真实姓名 性别 地址 联系电话 邮编 E-mail 注册时间 注册IP varchar(150) YES varchar(25) varchar(8) varchar(5) datetime YES YES YES YES YES RegIpAddress varchar(20) SQL语句:

CREATE TABLE `med_user` (

`Id` int(11) NOT NULL auto_increment, `UserName` varchar(20) NOT NULL default '', `PassWord` varchar(50) NOT NULL default '', `Names` varchar(20) default NULL, `Sex` char(2) default NULL,

`Address` varchar(150) default NULL, `Phone` varchar(25) default NULL, `Post` varchar(8) default NULL, `Email` varchar(50) default NULL, `RegTime` datetime default NULL, `RegIpAddress` varchar(20) default NULL, PRIMARY KEY (`Id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

5.2 数据库的连接

下面首先介绍数据库连接Bean的编写,即util.DataBase类,这是一个公共类,其它类如果要连接数据库,只要构造这个类的对象就可以了。附主要代码和注释如下: package mms.util; /**注释

*数据库连接专用包

19

*Company: med shop online * @by :zhourong * @version 1.0 */

import java.sql.*; public class DataBase { public Connection conn; public Statement stmt; public ResultSet rs=null; public String sqlStr=\ public DataBase() { this.connect(); }

public boolean connect(){ try{ //注册驱动程序

Class.forName(\//连接字符串,有连接数据库的IP,用户名,密码以及编码格式等 String =gbk\

conn=DriverManager.getConnection(url); stmt = conn.createStatement (); }catch(Exception ee){

System.out.println(\ return false; } return true; }

public static void main(String[] args) { try{

DataBase db = new DataBase(); db.connect(); }catch(Exception e){ e.printStackTrace(); } }

20

url

=\

}

5.3 功能模块的详细设计

5.3.1 组件包结构

本系统基于JavaBeans技术,用JCreator建立工程MMS,系统包图如下:

MMS mms.run login op_med op_medclass op_buy op_user mms.util DataBase dataFormat mms.med allorder med medclass order shopcar user 图5-1:系统包示意图

run包下有五个类:

? login类:管理用户登录。

? op_med类:管理药品,包括药品的查询、修改、删除、添加等。 ? op_medclass类:管理药品分类,包括药品分类的查询、添加和删除。 ? op_buy类:管理订单,包括订单的查询、添加、修改和删除等。 ? op_user类:管理用户,包括用户的查询、添加、删除和修改等。

med包下有六个类:

? allorder类:订单列表类。 ? med类:药品类。 ? medclass类:药品分类类。 ? order类:订单类。 ? shopcar类:购物车类。 ? user类:用户类。

21

util包下有两个类:

? DataBase类:该类主要负责数据库的连接。

? dataFormat类:该类负责数据的格式转换,例如:字符串格式化为HTML代

码输出等。

5.3.2 具体模块的代码和相应界面

a.字符处理Bean的编写:

在程序设计中经常会涉及到有关字符串的处理,把这些处理方法集合到一个

类中从而方便操作,即util.dataFormat.java,相关代码和注释如下: package mms.util; import java.lang.*; import java.util.*;

public class dataFormat { public dataFormat() { } /**注释

* 把字符串转换成适合于网页显示的文本 * @param s * @return */

public static String toHtml(String s) { if (s==null) return s;

s=strReplace(s,\ s=strReplace(s,\ s=strReplace(s,\ s=strReplace(s,\

s=parseReturn(s,\ return s; } /**注释

* 把字符串sBody中的sFrom用sTo替换 * @param sBody * @param sFrom

22

* @param sTo * @return */

public static String strReplace(String sBody, String sFrom, String sTo) { int i,j,k,l;

if (sBody==null || sBody.equals(\ i = 0;

j = sFrom.length(); k = sTo.length();

StringBuffer sss = new StringBuffer(sBody.length()); boolean bFirst=true; l = i;

while (sBody.indexOf(sFrom,i)!=-1) { i = sBody.indexOf(sFrom,i); sss.append(sBody.substring(l,i)); sss.append(sTo); i += j; l = i; }

sss.append(sBody.substring(l)); return sss.toString(); } /**注释

* 把字符串中的\转换成\

* @param String sBody : 要进行替换操作的字符串 * @param String sEndwith : 要替换成为的字符串 */

public static String parseReturn(String sBody, String sEndwith) { StringTokenizer t = new StringTokenizer(sBody, \ StringBuffer sss = new StringBuffer(sBody.length()); boolean bFirst=true;

if (sEndwith.trim().equals(\ while (t.hasMoreTokens()) { String s=t.nextToken(); s=s.trim();

while (s.startsWith(\ \ if (!s.equals(\

23

if (bFirst) { bFirst=false; } else {

sss.append(sEndwith); }

sss.append(s); } }

return sss.toString(); } /**注释

* 将字符串格式化成 HTML 代码输出

* 只转换特殊字符,适合于 HTML 中的表单区域 * @param str 要格式化的字符串 * @return 格式化后的字符串 */

public static String toHtmlInput(String str) { if (str == null) return null; String html = new String(str);

html = strReplace(html, \ html = strReplace(html, \ html = strReplace(html, \ return html; } /**注释

* 将普通字符串格式化成数据库认可的字符串格式 * @param str 要格式化的字符串 * @return 合法的数据库字符串 */

public static String toSql(String str) { String sql = new String(str); return strReplace(sql, \ } }

b.药品Bean的编写

应用面向对象的思想把具有共性的实体抽象成一个类,这个med.med便是

24

这样的类。 package mms.med;

public class med { private long Id;

/ID序列号

//药名 //药品类别 //英文名称 //生产厂家 //批准文号

private String MedName; private int MedClass;

private String classname ; //药品类别名 private String EnName; private String Company; private String MedNo ; private float Prince ; private int Amount ;

private String Content ; //药品介绍

//单价 //总数量

//剩余数量

private int Leav_number ;

private String RegTime ; //登记时间 private String picture ; //药品图片 public med() { Id = 0; MedName = \ MedClass = 0; classname = \ EnName = \ Company = \ MedNo = \ Content = \ Prince = 0; Amount = 0; Leav_number = 0; RegTime = \ }

public void setId(long newId){ this.Id = newId; }

public long getId(){ return Id; }

25

public void setMedName(String newMedName) { this.MedName = newMedName; }

public String getMedName() { return MedName; }

public void setMedClass(int newMedClass) { this.MedClass = newMedClass; }

public int getMedClass() { return MedClass; }

public void setClassname(String cname) { this.classname = cname; }

public String getClassname() { return classname; }

public void setEnName(String newEnName) { this.EnName = newEnName; }

public String getEnName() { return EnName; }

public void setMedNo(String newMedNo) { this.MedNo = newMedNo; }

public String getMedNo() { return MedNo; }

public void setCompany(String newCompany) { this. Company = newCompany; }

public String getCompany () { return Company; }

public void setContent(String newContent) {

26

this.Content= newContent; }

public String getContent() { return Content; }

public void setPrince(float newPrince) { this.Prince = newPrince; }

public float getPrince() { return Prince; }

public void setAmount(int newAmount) { this.Amount = newAmount; }

public long getAmount() { return Amount; }

public void setLeav_number(int newLeav_number) { this.Leav_number = newLeav_number; }

public int getLeav_number() { return Leav_number; }

public void setRegTime(String newRegTime) { this.RegTime = newRegTime; }

public String getRegTime() { return RegTime; }

public void setPicture(String newPicture) { this.picture = newPicture; }

public String getPicture() { return picture; } };

27

c.药品分类Bean的编写:

med.medclass类,对药品分类的抽象,其写法类似于med类,都是加入相应的get、set属性值。 package mms.med; public class medclass { private int Id; public medclass() { Id = 0;

ClassName = \ }

public medclass(int newId, String newname) { Id = newId;

ClassName = newname; }

public int getId() { return Id; }

public void setId (int newId) { this.Id = newId; }

public String getClassName() { return ClassName; }

public void setClassName(String newname) { this.ClassName = newname; } }

d.订单Bean的编写:

med.order这个类是对订单实体的抽象,这包含了订单实体的所有属性以及订单对象的构造方法,其方法与上面的med类似,由于篇幅有限,不再注明代码。

e.订单列表Bean的编写:

med.allorder这个类是对订单列表的抽象,类似medclass,不再注明代码。

28

//ID序列号

private String ClassName; //药品类别

f.购物车Bean的编写:

med.shopcar是对购物车实体的抽象,其写法类似于med类。 g.用户Bean的编写:

med.user是对用户实体的抽象,同样和med类的写法类似。

h.管理用户登录Bean的编写:

这是一个以客户为中心的交易平台,只有成为了系统的合法用户才能使用这个系统,因此需要检验每个用户的合法性,管理用户登录的这个JavaBean:run.login正是要完成这个功能。其主要代码和注释如下: package mms.run; import mms.util.*;

public class login extends DataBase {

private String username; //登录用户名 private String passwd; private long userid=0; super(); username = \ passwd = \ isadmin = false; }

//在此省略相关get和set属性代码 /**注释

* 获得查询用户信息的sql语句 * @return */

public String getSql() { if (isadmin) {

sqlStr = \* from MedAdmin where adminuser = '\

dataFormat.toSql(username) + \and adminpass = '\

dataFormat.toSql(passwd) + \ }else {

sqlStr = \

29

//登录密码 //用户ID号

private boolean isadmin; //是否管理员登录 public login() throws Exception{

username + \ }

return sqlStr; } /**注释 * 执行查询 * @return

* @throws java.lang.Exception */

public boolean excute() throws Exception { boolean flag = false;

DataBase db = new DataBase(); db.connect();

stmt = db.conn.createStatement (); rs = stmt.executeQuery(getSql()); if (rs.next()){ if (!isadmin) {

userid = rs.getLong(\ } flag = true; } rs.close(); return flag; } };

相关界面如下:

30

图5-2:医药管理系统相关界面示意图(1)

i.管理药品Bean的编写:

run.op_med负责药品的管理,包括修改、查询、删除和添加等。 药品管理主界面如下:

31

图5-3:医药管理系统相关界面示意图(2)

/**注释

* 完成药品添加 * @return

* @throws java.lang.Exception */

public boolean insert() throws Exception {

sqlStr = \ \ sqlStr = sqlStr + dataFormat.toSql(ameds.getMedName()) + \ sqlStr = sqlStr + ameds.getMedClass() + \

sqlStr = sqlStr + dataFormat.toSql(ameds.getAuthor()) + \ sqlStr = sqlStr + dataFormat.toSql(ameds.getPublish()) + \ sqlStr = sqlStr + dataFormat.toSql(ameds.getMedNo()) + \ sqlStr = sqlStr + dataFormat.toSql(ameds.getContent()) + \ sqlStr = sqlStr + ameds.getPrince() + \ sqlStr = sqlStr + ameds.getAmount() + \ sqlStr = sqlStr + ameds.getAmount() + \ sqlStr = sqlStr + \

sqlStr = sqlStr + ameds.getPicture()+\ try{

System.out.print(sqlStr);

32

DataBase db = new DataBase(); db.connect();

stmt =db.conn.createStatement (); stmt.execute(sqlStr); return true; }catch (SQLException sqle){

System.out.print(sqle.getMessage()); return false; } }

药品添加界面如下:

图5-4:医药管理系统相关界面示意图(3)

/**注释

* 完成药品修改 * @return

* @throws java.lang.Exception */

public boolean update() throws Exception { sqlStr = \

sqlStr = sqlStr + \

33

sqlStr = sqlStr + \

sqlStr = sqlStr + \ sqlStr = sqlStr + \ sqlStr = sqlStr + \ sqlStr = sqlStr + \ sqlStr = sqlStr + \ sqlStr = sqlStr + \

sqlStr = sqlStr + \ sqlStr = sqlStr + \ sqlStr = sqlStr + \ try{

DataBase db = new DataBase(); db.connect();

stmt =db.conn.createStatement (); stmt.execute(sqlStr); return true; } catch (SQLException e){

System.out.print(e.getMessage()); return false; } }

修改其中一名称为“龙之心屑”的药品,界面如下:

34

图5-5:医药管理系统相关界面示意图(4)

将其药品类型修改为“外用”,则会在药品清单下出现如下界面:

图5-6:医药管理系统相关界面示意图(5)

在药品清单中出现的变化界面如下:

35

图5-7:医药管理系统相关界面示意图(6)

/**注释

* 完成药品删除 * @param aid * @return

* @throws java.lang.Exception */

public boolean delete( int aid ) throws Exception { sqlStr = \ + aid ; try

{ DataBase db = new DataBase(); db.connect();

stmt =db.conn.createStatement (); stmt.execute(sqlStr); return true; }

catch (SQLException e) {

System.out.println(e); return false; } }

若将“龙心之屑”删除,则出现界面如下:

36

本文来源:https://www.bwwdw.com/article/q4gg.html

Top