资源描述
合肥财经职业学院毕业论文(实践)报告毕业论文(实践)报告基于 JAVA WEB 的医药管理系统系系 别别 工程学院工程学院 专专 业业 计算机网络技术计算机网络技术 年年 级级 2008 学学 制制 学学 号号 姓姓 名名 二 0 一 0 年 十 月目目 录录摘 要 .- 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 系统结构框图:.- 7 -3.4 开发平台和开发工具 .- 10 -第 4 章 开发平台和工具的简介 .- 10 -4.1 JSP 的简要说明.- 10 -4.2 MYSQL的简要说明 .- 10 -4.3 系统配置过程 .- 11 -4.4 配置关键性问题的解决 .- 12 -4.4.1 Servlet 和 JSP 性能调整.- 12 -第 5 章 系统的详细设计 .- 14 -5.1 数据库的实现 .- 14 -5.1.1 数据库关系模式的设计.- 14 -5.1.2 数据库的具体实现(表结构).- 14 -5.2 数据库的连接 .- 17 -5.3 功能模块的详细设计 .- 18 -5.3.1 组件包结构.- 18 -5.3.2 具体模块的代码和相应界面.- 19 -第 6 章 经验总结 .- 33 -致 谢 .- 34 -参考文献 .- 35 -1摘摘 要要医药管理系统是现代化在线医药管理必不可少的基础设施与技术支撑环境。本系统前台采用 DreamWeaver 开发,后台采用 MySql 作为数据库开发工具,这些技术目前相对比较成熟,方便产品的维护。本系统可以实现用户在线注册、登录、修改个人信息,用户进行药品选购、查看药品详细信息、提交订单信息,管理员对药品、药品分类、用户信息和订单信息进行在线维护和管理。JSP(Java Server Pages)是由 Sun Micrososystems 公司倡导的、许多公司参与的一起建立的一种动态网页技术标准,JSP 技术是在 Servlet 技术基础上发展起来的,它在飞速发展过程中,现在已经成为 Java 服务器编程的重要组成部分。虽然它未成型,但是它必然将和 J2EE 一起发展。 MySql 是一种高效的关系数据库系统,它与 Windows NT/2000 及 Windows 9x 等操作系统紧密集成。这种安排使 MySql 能充分利用操作系统所提供的特性。对于今天复杂的客户/服务器系统来说,MySql 是一个很好的选择。关键字:医药管理系统,Java,MySql2AbstractThe 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 users 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 ,users 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 doest 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 3第第 1 1 章章 开发的目的和意义开发的目的和意义开发软件的一个目的是针对目前普遍的医药管理系统存在的功能不全,操作复杂,系统要求高等一系列问题。该管理系统采用电子商务设计模式,可靠,方便,并且功能齐全。当然对该软件的态度是渴望获得显著的社会效益。开发软件的另一个目的是使其具有强大的实用价值,即它可以满足中小型医药公司的管理需要。随着小型医药企业规模的扩大,手工工作已经不能满足业务上的需求。而该医药管理系统的实施,能集中处理药品的进销存业务,管理好企业的应收应付账目,为企业的调整发展创造一个新的条件。随着我国市场经济的蓬勃发展和人们对医药产品需求的迅速增加,医药行业正处于一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的市场竞争中谋求发展,客观上要求企业必须加强内部管理,提高运营效率。另外,由于医药产品种类繁多、销售模式特殊、业务最大,单凭手工记帐已很难适应工作的需要。医药作为一个关系到人们健康的特殊行业,国家对此又有一些不同于其他行业的管理政策,这些都加大了管理的难度。如何尽快建立和完善现代企业的信息化管理机制问题,已成为医药企业发展的关键所在。而方便、安全、快捷的医药管理软件系统正是在这样的背景下发展起来的。这种管理软件对硬件的要求很低,一般有一个比较简单的服务器与 PC 机组成的网络即可,再加上使用比较廉价、性能不错的软件,这样就可以以较低的成本来实现一个足够使用的功能,而这种模式也正满足了那种中小型医药公司的要求。但是目前对这种管理软件的开发还处于一种比较原始的阶段。开发者往往都是出于资金和时间的顾虑使用比较陈旧的技术,而且各为己见,并且很少涉及网络。可是当今是一个网络化的社会,单机版的管理软件多如牛毛,去开发一个类似的软件无疑是一种在时间上、精神上和资源上的极大浪费。所以为这种有需要的中小型企业开发一种基于网络的医药管理软件是非常有实用价值的。4第第 2 2 章章 需求分析需求分析2.12.1 系统工作流程分析系统工作流程分析传统的医药管理模式是手工记帐的,但由于目前医药产品种类繁多、销售模式特殊、业务量大,单凭手工记帐已经很难适应工作的需要。根据目前医药企业的实际需求,系统应实现的具体功能如下:首先是客户界面,客户可以通过网络进行注册认证,然后可以通过身份登录后进行药品的分类查找和选购,可以查看药品的详细说明,可以查找最新药品,有购物车功能,可以在线下订单,有订单详细信息;为了能够同客户很好地交流,还要有访客留言、系统公告、问卷调查等功能。其次是管理界面,管理员登录后可以对药品信息进行修改、增加和删除操作,可以对药品分类信息进行添加、删除操作,可以对客户信息进行相关维护,还要处理访客留言、订单信息以及系统其它相关操作等等。2.22.2 系统实现目标系统实现目标(1) 系统界面友好,操作简单(2) 可随时掌握药品的进销存信息(3) 灵活准确的收费,提高工作效率(4) 查询灵活方便,数据安全可靠(5) 从用户需求到售后服务,形成一套严密、科学、完善的管理体系(6) 功能全面,实用性强5第第 3 3 章章 总体设计总体设计3.13.1 系统设计的总体思想系统设计的总体思想页面模块化:页面模块化:把页面中一些常用的部分集成为模块,例如页面的头和尾部,这样设计新的页面时如果重复出现的部分只需要拿现成的模块来组装就可以了。数据存取技术:数据存取技术:数据库是管理信息系统的核心内容。目前,Web 与数据库接口技术有很多,其中 JDBC 是 Java 程序连接和存取数据库的应用程序接口,由一组用 Java 语言编写的类与接口组成,是执行 SQL 语句的 Java API。在本管理信息系统中,采用了 JSP/Servlet+JDBC 的技术,即客户端不产生数据库查询命令,客户端上的浏览器通过 URL 和中间层的 Web 服务器建立连接。Web 服务器主要负责接收本地或远程浏览器的 HTTP 数据请求,然后中间层的 Servlet 收到请求后,通过执行程序中的 SQL 语句,利用 JDBC 提供的标准 API 对数据库进行访问和相应的操作处理。Servlet 再将查询的数据传给 JSP,最后生成标准的 JSP 页面将结果返回给提出请求的浏览器。这样,不仅将客户端与数据库服务器端分开,同时提高了数据库的访问效率。3.23.2 系统设计的体系和结构系统设计的体系和结构3.2.13.2.1 系统的设计体系系统的设计体系目前,在大多数 Browser/Server 结构的 Web 应用中,浏览器直接通过HTML 或者 JSP 的形式与用户交互,响应用户的请求。虽然很直观,但是大多数管理信息系统操作的数据量都是惊人的,随着代码的增多会使 JSP 页面臃肿不堪,Web 服务器的负荷过重。因此,在中间层上采用基于模型视图控制器(MVC.Model-View-Controller)的设计模式。Model 层用来实现业务逻辑,6View 层用来显示用户界面,Controller 层主要负责 View 层和 Model 层之间的控制关系。具体实现时,把 Servlet 用作应用程序的控制器,把 JSP 文档作为视图,JavaBeans 被用来表示模型。在这种设计模式下,各层次之间的数据传递如下图: HTTP 请求 获取数据转交 请求 文档输出 更新模型图 3-1: 各层次之间的数据传递示意图3.2.23.2.2 系统的结构架构系统的结构架构管理信息系统(MIS)是一个由人、计算机等组成的能进行信息的收集、传递、存储、加工和使用的系统。随着科技的发展,信息的膨胀,企业信息化成了企业在竞争中处于不败地位的有效手段之一。而 MIS 不仅能够及时全面地提供信息和数据,简化统计工作,对不同的管理层次提出不同的报告之外,还能根据过去的数据预测未来的情况。因此,采用何种方法开发出一种兼顾开发效率和运行效率,同时满足分布式事件处理功能的管理信息系统就显得尤为重要。采用三层架构设计,它的工作原理如图:Controller (Servlet)View(JSP)Model(JavaBeans)DataBase7客户机 浏览器http 服务器应用程序服务器Servlet 容器数据库JDBCservletjsp图 3-2: 采用三层架构设计的工作原理示意图整个管理信息系统采用 Browser/Web/DataBase 的三层体系结构。Web 服务器接受请求,通过应用程序服务器执行一个 Java 服务器端小程序 Servlet 并返回其输出,从而实现与客户机进行信息资源的交互。数据库服务器用来存储管理信息系统中所用到的各种数据,数据由数据库管理程序直接录入。系统的客户端只需要一个浏览器即可。相关人员通过浏览器来查询、增加、修改、删除数据,对信息进行管理。3.33.3 系统的功能和结构框图系统的功能和结构框图 3.3.13.3.1 系统功能模块系统功能模块客户端:客户端:用户注册、登录修改用户个人信息药品选购(可以分类查找药品,或通过关键字查询相关说明)查看药品详细情况(包括药名、英文、生产厂家、批号、单价、图片、详细介绍等)购物车功能查看、修改、提交用户订单信息8新药介绍客户留言(包括添加、修改、删除操作)问卷调查系统公告管理端:管理端:现有药品管理:新增、修改、删除、查看药品分类管理:新增、删除用户信息管理:查看、修改、删除订单管理:查看订单清单,更新订单付款,出货状态,删除订单系统维护:维护客户留言、发系统公告3.3.23.3.2 系统结构框图:系统结构框图:全局结构框图:全局结构框图:9医药管理系统在线购药界面客户端界面购物车界面订单信息管理登录注册界面客户留言界面管理端界面药品管理模块添加药品分类模块订单信息模块登录模块系统维护模块JavaBeans客户管理模块药品管理订单管理用户管理药品分类类药品分类管理类药品类药品管理类订单类订单管理类购物车类购物车管理类用户类用户管理类用户登录类图 3-3: 全局结构示意图客户界面的系统功能模块图:客户界面的系统功能模块图:数据库10客户登录在线购药在线购药查看购物车查看订单信息药品查询购买查看药品详细客户注册登录客户留言修改购买数量删除已购药品提交购物车清空购物车继续购药查看订单详细购买查看药品详细资料购买图 3-4: 客户界面的系统功能模块图示意图管理界面的系统功能模块图:管理界面的系统功能模块图:管理员登录现有药品管理添加新药品添加药品分类订单管理用户管理系统维护查看药品资料现有药品管理删除药品添加新药品添加药品分类删除药品分类查看订单资料删除订单查看用户资料查看用户资料修改用户资料删除用户11图 3-5: 管理界面的系统功能模块图示意图3.43.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 章章 开发平台和工具的简介开发平台和工具的简介4.14.1 JSPJSP 的简要说明的简要说明JSP 即 Java Server Pages,在电子商务开发上,还可以选择 ASP 平台。但比较过两者优劣后才决定选择 JSP。JSP 和 ASP 技术明显的不同点:开发人员在对两者各自软件体系设计的深入了解的方式不同。JSP 技术基于平台和服务器的互相独立,输入支持来自广泛的,专门的,各种工具包,服务器的组件和数据库产品开发商所提供。相比之下,ASP 技术主要依赖微软的技术支持。JSP 技术依附于一次写入,之后,可以运行在任何具有符合 JavaTM 语法结构的环境。取而代之过去依附于单一平台或开发商,JSP 技术能够运行在任何WEB 服务器上并且支持来自多家开发商提供的各种各样工具包。这种基于组件的模式很有效提高应用程序的开发效率,因为这种模式能够使开发人员利用快捷的子组件快速创建模板应用程序,然后再整合一些附加功能以后便可使用。像这样有效的方法在 JSP 中无处不在,并可将其打包成一个Javabean 或一个工业标准化的 Javabean 组件。 终上所述,JSP 继承 JAVA 一贯的跨平台、易维护的特性,是我开发的首选。124.24.2 MySqlMySql 的简要说明的简要说明 选择一个好的数据库是开发一个系统的前提,当然用 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.34.3 系统配置过程系统配置过程 由于 JSP 架构采用不同公司的软件产品,所以配置的复杂性是肯定的。下面列出其配置详细过程:所需软件:所需软件:(1) j2sdk-1_4_2-windows-i586.exe (2) jakarta-tomcat-5.0.28.exe13(3) mysql-4.0.24-win.zip(mysql 有 5.0 的 bate 版,不过对其 NullPointException 出错一直是不能被广泛接受的原因,在本系统下也只能用较为稳定的 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:serverj2sdk。1.配置环境变量:添加 CLASSPATH 变量./;%CLASSPATH%;D:serverj2sdk1.4.0libdt.jar;d:serverj2sdk1.4.0libtools.jar;2.添加 JAVA_HOME 变量,变量值为 d:serverj2sdk1.4.03.在原来的 path 变量中,添加 d:serverj2sdk1.4.0bin,重新启动二、二、Tomcat 的安装的安装jakarta-tomcat-5.0.28.exe 安装文件,设安装目录为 d:servertomcat。下面设置环境变量:同 jdk 的环境变量,添加变量 TOMCAT_HOME,值为 d:servertomcat;增加变量 CATALINA_HOME,值为 d:tomcatserver,在 path 变量中加入d:servertomcatbin。下面启动 tomcat,运行 tomcat 目录下的 bin/startup.bat 文件就出现 tomcat 运行控制台,则 tomcat 安装成功。三、安装三、安装 MySQL第一步:解压 mysql-4.0.24-win.zip,运行 mysql 安装文件,把 mysql 安装到d:servermysql第二步:在环境变量 path 中加入 d:servermysqlbin第三步:进入 d:servermysqlbin 目录,运行 winmysqladmin,刚会出现对话框,设置 mysql 用户密码。第四步:进入 dos,进入 mysql/bin 下,运行以下命令打开 mysqlmysqld-nt standalone,则 mysql 开启四、安装四、安装 MySQL 的驱动类的驱动类 jdbc解开 jdbc 驱动包,把里面的 com 文件夹复制到 jsp 相应的位置,可以是 tomcat的根目录 common/classes 文件夹下,也可以是 jsp 网站 class 类 WEB-INF/class/下。当加载驱动程序时,以便能找到相关的类,或者把 jdbc 包的路径加入到classpath 变量中。144.44.4 配置关键性问题的解决配置关键性问题的解决 上述配置正确后,只是可以成功连接,但还有一些需要解决的问题才能正常运行 JSP 程序。4.4.1 Servlet 和 JSP 性能调整调整方法调整方法 1:禁止:禁止 servlet 和和 jsp 的自动重载的自动重载 为了节约开发时间,在开发阶段 Servlet/JSP 容器提供自动重载功能,方便在修改 Servlet/JSP 后不用重新启动服务。可是,在生产环境下面,却是占用大量开销,因为进行了没有必要的重新载入的操作,所以带来了很怀的性能影响。同时,在部分类载入,部分为载入的时候也可能带来各种奇怪的冲突。因此在J2EE 的生产环境下关闭自动载入功能可以得到更好的性能。调整方法调整方法 2:控制:控制 HttpSession 在默认情况下,不要在 jsp 页面中创建 HttpSessions 对象,jsp 页面默认会自动创建 HttpSessions,如果 jsp 页面中不需要 HttpSessions,为了节省一些性能,使用下面的页面指令避免自动创建 HttpSessions 对象: 调整方法调整方法 3:选择正确的包含机制:选择正确的包含机制 在 jsp 中有两种方法使用包含文件:包含指令() 和包含动作 ()。包含指令在转换的过程中包含文件内容;也就是说,在一个页面转换成一个 servlet 的时候。包含动作在请求处理的阶段包含文件内容;也就是说,在一个用户请求页面的时候。包含指令快于包含动作。因此,除非被包含的内容经常变化,应该使用包含指令提升性能。 调整方法调整方法 4:选择正确的范围在使用:选择正确的范围在使用 useBean 动作动作 Jsp 页面的一个强大功能就是在 jsp 中交互使用 JavaBeans 组件。通过使用动作标签,JavaBeans 可以被直接的嵌入 jsp 页面中。语法如下: 15 范围属性指定了 bean 的作用范围。它的默认值是 page。可以根据系统要求选择正确的范围。否则它会影响到应用系统的性能。 4.4.24.4.2 MysqlMysql 与与 JSPJSP 网页中文乱码问题网页中文乱码问题以以 GBKGBK 字符集建库建表:字符集建库建表:用 EMS 来建 mysql 的数据库及表,建库时,从 EMS 菜单中选 create Database.新建一个数据库,CharacterSet 选 gbk_bin;后面建表时,也要选择同样的字符集。 连接数据库的连接数据库的 URL 后加参数:后加参数:假设新建的数据库是 testdb,那么连接数据库的 url 应该为: jdbc:mysql:/localhost:3306/testdb?useUnicode=true&characterEncoding=gbk 每个每个 JSP 页面都要声明该中文字符集:页面都要声明该中文字符集:在每个 JSP 页面的最上面都加上一句: ,这样才能保证 JSP 页面中的中文显示正常。 上述都是在实际进行 JSP 页面配置时遇到的问题,JSP 配置的复杂性是由于各个版本开发的不一致造成的,在调试页面的同时也是对自己各方面知识水平的极大挑战。第第 5 5 章章 系统的详细设计系统的详细设计5.15.1 数据库的实现数据库的实现5.1.15.1.1 数据库关系模式的设计数据库关系模式的设计订单(订单号,药品编号,订货数量)药品信息(药品名称,药品分类,英文名称,生产厂家,批准文号,药品简介,单价,总数量,剩余数量,登记时间,图片)管理员(用户名,密码)药品分类(分类编号,分类名称)订单详细信息(订单编号,用户编号,提交订单的时间,交货时间,总金16额,备注,用户 IP,是否付款,是否发货)用户(用户名,密码,真实姓名,性别,地址,联系电话,邮编,E-mail,注册时间,注册 IP)5.1.25.1.2 数据库的具体实现(表结构)数据库的具体实现(表结构)订单信息列表:订单信息列表:表 5-1:订单信息列表FieldTypeNullKeyDefaultExtraCommentIDint(11)NULLPRINULLauto_increment主键,递增orderIdint(11)NULL00-订单号MedIDint(11)NULL00-药品编号Amountint(11)NULLYESNULL-订货数量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:药品信息列表FieldTypeNullKeyDefaultExtraCommentIDint(11)-PRI(NULL)auto_increment主键,递增MedNamevarchar(40)-药品名称MedClassint(11)-0-药品分类EnNamevarchar(25)YES-(NULL)-英文名Companyvarchar(150)YES-(NULL)-生产厂家MedNovarchar(30)YES-(NULL)-批准文号17ContexttextYES-(NULL)-药品简介PrincefloatYES-(NULL)-单价Amountint(11)YES-(NULL)-总数量Leav_numberint(11)YES-(NULL)-剩余数量RegTimedatetime-登记时间picturevarchar(200)YES-(NULL)-图片SQL 语句:语句: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:管理员信息列表FieldTypeNullKeyDefaultExtraCommentAdminUservarchar(20)YES-(NULL)-用户名AdminPassvarchar(50)YES-(NULL)-密码SQL 语句:语句:CREATE TABLE meddmin ( AdminUser varchar(20) default NULL, AdminPass varchar(50) default NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;药品分类表:药品分类表:表 5-4:药品分类表18FieldTypeNullKeyDefaultExtraCommentIDint(11)-PRI(NULL)auto_increment分类编号Classnamevarchar(30)-(NULL)-分类名称SQL 语句:语句:CREATE TABLE medclass ( ID int(11) NOT NULL auto_increment, ClassName varchar(30) NOT NULL default , PRIMARY KEY (Id) ENGINE=MyISAM DEFAULT CHARSET=latin1;订单详细表:订单详细表:表 5-5:订单详细表FieldTypeNullKeyDefaultExtraCommentIdint(11)-(NULL)-主键,递增orderIdvarchar(20)-订单编号UserIdint(11)-0-用户编号SubmitTimedatetime-交单时间ConsignmentTimedatetimeYES-(NULL)-交货时间TotalPricefloatYES-(NULL)-总金额contenttextYES-(NULL)-备注IPAddressvarchar(20)YES-(NULL)-用户 IPIsPayoffint(11)YES-(NULL)-是否付款IsSalesint(11)YES-(NULL)-是否发货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,19 IsPayoff int(11) default NULL, IsSales int(11) default NULL, PRIMARY KEY (Id) ENGINE=MyISAM DEFAULT CHARSET=latin1;用户信息表:用户信息表:表 5-6:用户信息表FieldTypeNullKeyDefaultExtraCommentIDint(11)-PRI(NULL)auto_incre主键,递增UserNamevarchar(20)-用户名Passwordvarchar(50)-密码Namesvarchar(20)YES-(NULL)-真实姓名Sexchar(2)YES-(NULL)-性别Addressvarchar(150)YES-(NULL)-地址Phonevarchar(25)YES-(NULL)-联系电话Postvarchar(8)YES-(NULL)-邮编Emainvarchar(5)YES-(NULL)-E-mailRegTimedatetimeYES-(NULL)-注册时间RegIpAddressvarchar(20)YES-(NULL)-注册 IPSQL 语句:语句: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;205.25.2 数据库的连接数据库的连接 下面首先介绍数据库连接 Bean 的编写,即 util.DataBase 类,这是一个公共类,其它类如果要连接数据库,只要构造这个类的对象就可以了。附主要代码和注释如下:package mms.util;/*注释 *数据库连接专用包 *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(org.gjt.mm.mysql.Driver).newInstance();/连接字符串,有连接数据库的 IP,用户名,密码以及编码格式等 String url =jdbc:mysql:/127.0.0.1/MedStore?user=root&useUnicode=true&characterEncoding=gbk; conn=DriverManager.getConnection(url); stmt = conn.createStatement (); catch(Exception ee) System.out.println(connect db error:+ee.getMessage(); return false;21 return true; public static void main(String args) try DataBase db = new DataBase(); db.connect(); catch(Exception e) e.printStackTrace(); 5.35.3 功能模块的详细设计功能模块的详细设计5.3.15.3.1 组件包结构组件包结构 本系统基于 JavaBeans 技术,用 JCreator 建立工程 MMS,系统包图如下:mms.runloginop_medop_medclassop_buyop_userMMSmms.utilDataBasedataFormatmms.medallordermedmedclassordershopcaruser图 5-1:系统包示意图run 包下有五个类:包下有五个类:login 类:管理用户登录。op_med 类:管理药品,包括药品的查询、修改、删除、添加等。22op_medclass 类:管理药品分类,包括药品分类的查询、添加和删除。op_buy 类:管理订单,包括订单的查询、添加、修改和删除等。op_user 类:管理用户,包括用户的查询、添加、删除和修改等。med 包下有六个类:包下有六个类:allorder 类:订单列表类。med 类:药品类。medclass 类:药品分类类。order 类:订单类。shopcar 类:购物车类。user 类:用户类。util 包下有两个类:包下有两个类:DataBase 类:该类主要负责数据库的连接。dataFormat 类:该类负责数据的格式转换,例如:字符串格式化为 HTML代码输出等。5.3.25.3.2 具体模块的代码和相应界面具体模块的代码和相应界面a.a.字符处理字符处理 BeanBean 的编写:的编写: 在程序设计中经常会涉及到有关字符串的处理,把这些处理方法集合到一个类中从而方便操作,即 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;23 s=strReplace(s,&,&); s=strReplace(s,>); s=strReplace(s,"); s=parseReturn(s,n ); return s; /*注释 * 把字符串 sBody 中的 sFrom 用 sTo 替换 * param sBody * param sFrom * param sTo * return */ public static String strReplace(String sBody, String sFrom, String sTo) int i,j,k,l; if (sBody=null | sBody.equals() return ; 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(); /*注释* 把字符串中的rn转换成n * param String sBody : 要进行替换操作的字符串 * param String sEndwith : 要替换成为的字符串24 */ public static String parseReturn(String sBody, String sEndwith) StringTokenizer t = new StringTokenizer(sBody, rn); StringBuffer sss = new StringBuffer(sBody.length(); boolean bFirst=true; if (sEndwith.trim().equals() sEndwith=n; while (t.hasMoreTokens() String s=t.nextToken(); s=s.trim(); while (s.startsWith() s=s.substring(2); if (!s.equals() 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, , >); return html; /*注释 * 将普通字符串格式化成数据库认可的字符串格式25 * param str 要格式化的字符串 * return 合法的数据库字符串 */ public static String toSql(String str) String sql = new String(str); return strReplace(sql, , ); b.药品药品 Bean 的编写的编写 应用面向对象的思想把具有共性的实体抽象成一个类,这个 med.med 便是这样的类。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 String Content ; /药品介绍 private float Prince ; /单价 private int Amount ; /总数量 private int Leav_number ; /剩余数量 private String RegTime ; /登记时间 private String picture ; /药品图片 public med() Id = 0; MedName = ; MedClass = 0; classname = ; EnName = ; Company = ; MedNo = ; Content = ;26 Prince = 0; Amount = 0; Leav_number = 0; RegTime = ; public void setId(long newId) this.Id = newId; public long getId() return Id; 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;27 public String getMedNo() return MedNo; public void setCompany(String newCompany) this. Company = newCompany; public String getCompany () return Company; public void setContent(String newContent) 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; 28 public String getRegTime() return RegTime; public void setPicture(String newPicture) this.picture = newPicture; public String getPicture() return picture; ;c.药品分类药品分类 Bean 的编写:的编写: med.medclass 类,对药品分类的抽象,其写法类似于 med 类,都是加入相应的 get、set 属性值。package mms.med;public class medclass private int Id;/ID 序列号 private String ClassName;/药品类别 public medclass() Id = 0; ClassName = ; public medclass(int newId, String newname) Id
展开阅读全文