网上图书销售系统的设计与实现

上传人:仙*** 文档编号:45985728 上传时间:2021-12-09 格式:DOC 页数:47 大小:2.01MB
收藏 版权申诉 举报 下载
网上图书销售系统的设计与实现_第1页
第1页 / 共47页
网上图书销售系统的设计与实现_第2页
第2页 / 共47页
网上图书销售系统的设计与实现_第3页
第3页 / 共47页
资源描述:

《网上图书销售系统的设计与实现》由会员分享,可在线阅读,更多相关《网上图书销售系统的设计与实现(47页珍藏版)》请在装配图网上搜索。

1、1 引言 随着 Internet 国际互联网的发展,越来越多的企业开始建造自己的网站。基于 Internet 的信息服务,商务服务已经成为现代企业一项不可缺少的内容。很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。现代企业需要的是一个功能强大的,能提供完善的电子商务服务的动态商务网站。同时人们的生活方式也在随着发生改变,传统的购物方式已不能满足人们的需求。 JSP 是 Sun 公司推出的一种网站开发技术,Sun 公司借助自己在 Java 上的不凡造诣,又把人们引进 JSP 时代,JSP 即 Java Server Page,它可以在 Servlet 和 JavaBean 的支持下

2、,完成功能强大的 Web 应用程序。所以,在我的毕业设计中,我采用了 JSP 作为开发工具,构建了一个能实现基本的电子商务的小型动态商务网站网上图书销售系统。该系统能实现用户的注册、登录功能;能够实现商品的查询,订购等功能。该系统基本上具备一个网上商品销售系统应该具备的常用功能,该设计项目基本上体现了构建一个动态商务网站所需要的技术,可以说,目前的大型商务网站也就是我们这个小型网站在内容上的扩充和完善。2 概述 随着时代的发展,信息技术、Internet/Intranet 技术、数据库技术的不断发展完善,网络进程的加快,传统的购物方式也越来越不能满足人们快节奏的生活需求,使得企业的 IT 部门

3、已经认识到 Internet 的优势,电子商务就是在这样一个背景下产生发展起来的。伴随着电子商务技术的不断成熟,电子商务的功能也越来越强大,注册用户可以在网上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快感。我的毕业设计也就正是一个电子商务系统的开发-网上图书销售系统。3 系统分析3.13.1 可行性分析可行性分析商业企业在运营过程中,经常会受到以下一些条件的限制:产品的宣传受到限制,采购商或顾客只能通过上门咨询、电话沟通等方式进行各种信息的获取,受一定的时间与物理空间的局限并且成本较高。庞大的商业经济周转。复杂的产品周转渠道。从看样品、谈价格到支付货款等一系列的产

4、品周转渠道过于复杂,企业与顾客之间缺乏全面的沟通与快捷运营的平台。商业企业中根据季节的变化,热销商品在销售高峰到来时货源紧张,企业需要实时了解商品的销售情况,保证热销商品的要货满足率。因此,企业需要重新认识市场、消费者以及自身市场定位,正确认识电子商务技术在企业中的重要地位,以少量的时间和资金建立企业信息门户网站并架设一定范围的商务网络,以此来制定长远发展战略,使企业与顾客间的经济活动变得更灵活、更主动。本系统是一个中小型的电子商务系统-网上书店,可以为各类用户提供方便的在线买书环境,符合目前国内流行的电子商务模式。用户可以在系统中实现注册、浏览商品、搜索查询商品、下定单、处理定单等功能;管理

5、员可以通过用户管理、定单管理、商品管理、评论管理等管理功能来对系统进行维护更新。在技术上,目前市场上开发电子商务平台的技术很多,如 ASP,PHP,PB,.NET 等。我采用 SUN 公司的 JSP 技术,它是目前市场上最流行的技术之一,JSP 具有一次编译,处处运行的优点4。由分析可得,不论是商业还是技术上,网上图书销售系统的开发都是可行的。3.23.2 需求分析需求分析通过对电子商务网站及网上书店的考察、分析以及实际的市场调查,要求本系统具有以下功能:统一友好的操作界面,能保证系统的易用性。规范、完善的基础信息设置。图书分类详尽,可按不同类别查看商品信息。按图书大类及图书名称进行模糊查询。

6、实现网上购书。新书及特价图书展示。4 概要设计4.14.1 系统设计目标系统设计目标对于典型的数据库管理系统,尤其是对像电子商务这样的数据流量特别大的网络管理系统,必须要满足使用方便、操作灵活等设计要求。本系统在设计时应该满足以下几个目标:采用人机对话的操作方式,界面设计美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。全面展示书店内所有的图书,并可展示最新图书及特价图书。为顾客提供一个方便、快捷的图书信息查询功能。采用模糊查询查询数据。实现网上购物。商品销售排行,以方便顾客了解本商城内的热销商品及帮助企业领导者做出相应的决策。查看商城内的公告信息。用户随时都可以查看自己的订单。对用

7、户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。系统最大限度地实现了易维护性和易操作性。系统运行稳定、安全可靠。4.24.2 系统设计思想系统设计思想本系统采用三层架构设计4,它的工作原理如图 4.1 所示。图 4.1 三层结构原理图采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。4.34.3 系统功能模块划分系统功能模块划分根据需求分析及三层架构设计的思想,设计出客户系统功能如图 4.2图

8、 4.2 客户端系统后台管理的系统功能图如图 4.3管理员登陆用户管理现有图书管理添加新图书添加图书分类订单管理用户管理查看图书资料修改图书资料删除图书添加新图书添加图书分类删除图书分类查看订单详细资料删除订单查看用户资料删除用户查看用户详细资料修改用户资料图 4.3 后台管理系统功能图4.4 系统结构设计系统结构设计用户登录在线购书查看购物车在线购书察看订单信息察看图书详细购买图书查询察看图书详细资料购买查看订单详细继续购书清空购物车提交购物车删除已经选购的图书修改购买数量购买用户注册登陆根据面向对象和三层结构设计的思想,可得出如图 4.4 所示的系统结构设计图。在线书店客户端界面管理端界面

9、JavaBean数据库在购书界面图书管理模块订单管理图书管理用户管理购物车界面定单信息管理登陆/注册添加图书模块添加图书分类模块订单信息模块客户管理模块登陆模块图书分类类图书类图书分类管理类图书管理类订单类订单管理类购物车类购物车管理类用户类用户管理类用户登录类 图 4.4 系统结构图4.54.5 系统功能简介系统功能简介4.5.14.5.1 系统基本功能系统基本功能1)图书信息查询该模块实现图书信息的分类显示,提供最新商品的推荐显示以及销售显示,便于引导购物取向。此外,还提供依据图书名称或是编号等包含关键字实现快速搜索的功能并显示图书的有关详细信息。2)购物车管理用于对每一个进入系统的用户所

10、对应的购物车进行管理。将用户所选购的图书信息,包括价格、数量等信息记录到对应的购物车上,便于到收银台进行结帐处理。同时在此模块中,用户还可以方便的实现修改购物图书、清空购物车等操作。3)会员信息管理实现系统相关用户信息的注册及身份验证,同时也提供对应的用户资料的更新。该系统可以收集用户相关的联系方式、通讯地址等信息,可以更好的拓展销售规模。4)订单处理根据购物车中的信息,以及用户所选择的送货方式和付款方式,和用户对应的个人信息生成订单,便于后续工作的处理。在该模块中,用户可以随时查阅自己的订单,并对其进行取消等处理操作。4.64.6 数据库设计数据库设计数据库在一个信息管理系统中占有非常重要的

11、地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致10。4.6.14.6.1 数据库需求分析数据库需求分析针对网上图书销售系统的需求分析,得出如下需求信息。订单分为单张详细订单和总订单。一个用户可以购买多本图书。一个用户对应一张订单。一个列表对应多张订单。针对本系统功能分析,总结出如下的需求信息。用户,包括数据项:用户 ID、用户名、密码。图书,包括数据项:图书编号、图书名、价格、图书介绍。订单列表,包括数据项:订单编号、图书编号、购书数量。订单,包括数据项:订单编号、用户编号、下单时间。4.6.24.6.

12、2 数据库概念结构设计数据库概念结构设计从本系统中规划出的实体有:用户信息实体、管理员信息实体、图书实体、图书分类实体、订单实体、订单列表实体。实体之间关系的 E-R 图如图 4.5 所示。管理员用户购书订单列表订单图书图书分类11NN11 图 4.5 实体之间的 E-R 图 管理员实体的 E-R 图,如图 4.6 所示。 图书分类实体的 E-R 图,如图 4.7 所示。用户信息实体的 E-R 图,如图 4.8 所示。图书实体的 E-R 图,如图 4.9 所示。订单实体的 E-R 图,如图 4.10 所示。订单列表实体的 E-R 图,如图 4.11 所示。管理员用户名密码图书分类分类名称分类编

13、号 图 4.6 管理员实体的 E-R 图 图 4.7 图书分类实体 E-R 图 MN用 户用户名密码地址真名性别电话邮编Email注册时间注册 IP图 4.8 用户实体 E-R 图 图 书 图书编号图书名称分类编号封面作者出版社内容介绍总数量剩余数量价格 图 4.9 图书实体 E-R 图 订单订单编号用户编号购买时间总价格内容IP 地址是否发货是否付款图 4.10 订单实体 E-R 图订单列表购书数量图书编号用户号订单号图 4.11 订单列表实体的 E-R 图4.74.7 数据库逻辑结构设计数据库逻辑结构设计本系统数据库采用 SQL Server 2000 数据库,系统数据库名称为 books

14、hop,下面分别给出数据表概要说明、数据表关系概要说明及主要数据表的结构。1、 数据表概要说明数据表树型结构图如图 4.12 所示,该数据表树型结构图包含系统所有的数据表 图 4.12 数据表树型结构图 2、各个表的的结构如下表表 4.1 为图书信息列表,记录书店现有的图书信息。表 4.1Book 表列名数据类型长度允许空注释IDInt 4图书编号BookNamevarchar40否图书名称BookClassInt4否图书分类AuthorVarchar25是作者PublishVarchar150是出版社BookNoVarchar30是书号 Contenttext300是内容Pricefloat

15、8是价格Amountint4是总数量Leav_numberint4是剩余数量RegTimedatatime8是注册时间Picturevarchar60是封面表 4.2 为书店管理员信息表,记录管理员的帐号和密码。 表 4.2 BookAdmin 表列名数据类型长度允许空注释AdminuserVarchar20否管理员AdminPassVarchar20否管理员密码表 4.3 为用户信息表,记录用户的基本信息。表 4.3 用户表列名数据类型长度允许空注释IDInt 2否用户编号UserNameVarchar50否用户名passWordVarchar50否密码NamesVarchar50否真名Se

16、xVarchar50是性别AddressVarchar50是地址PhoneVarchar50是电话PostVarchar50是邮编EmailVarchar50是电子邮件RegTimeDatatime50是注册时间RegIPAddressvarchar50是注册 IP 地址表 4.4 为订单总表,记录某个用户的订单总信息。 表 4.4 订单总表列名数据类型长度允许空注释IDInt4 否总订单编号OrderIDInt4否订单号BookNoInt4否书号 Amountint4是数量表 4.5 为订单表,记录但张订单的具体信息。表 4.5 订单表列名数据类型长度允许空注释IDInt4否订单 IDOrd

17、erIDVarchar50否总订单UserIdVarchar50否用户 IDSubmitTimeDatatime8是提交时间ConsignmentTimeDatatime8是购买时间TotalPriceFloat16是总价格contentText300是描述IpaddressVarchar50是Ip 地址IspayoffVarchar50是是否付款IsAddressvarchar20是是否发货表 4.6 为图书分类表,记录书店现有图书的分类。表 4.6 Bookclass 表列名数据类型长度允许空注释IDVarchar30否分类编号ClassNamevarchar30否分类名5 详细设计5.1

18、5.1 开发技术简介开发技术简介5.1.15.1.1 JSPJSP 简介简介JSP(Java Server Pages)是由 Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP 技术在 Servlet 技术基础上发展起来的,它正在飞速发展中,现已成为Java 服务器编程的重要组成部分。它虽然还未成型,但是它必将和 J2EE(Java 2 Enterprise Edition)一起发展6。JSP 是结合 markup(HTML 和 XML)和 Java 代码来处理一种动态页面。每一页第一次被调用时,通过JSP 引擎自动被编译成 Servlet,然后被执

19、行,以后每次调用时,执行编译过的 Servlet。JSP 提供了多种方式访问 Java class、Servlet、Applets 和 Web Server,因此,Web 应用的功能可以分成多个明确定义公用接口的组件,通过 JSP 将它们结合在一起9。5.1.25.1.2 JSPJSP 的运行原理的运行原理在 JSP 第一次获得来自于客户端浏览器的请求时,JSP 文件将被 JSP 引擎(JSP engine)转换成一个 Servlet,即将”.jsp”文件编译成 Java Class 文件。当 Servlet 引擎接收到请求后,如果设置了使用最新的 JSP,它就会去找 JSP 文件,检查该文件

20、在上次编译后是否改动过。如果改动过,就会重新编译生成新的 Servlet,最终将请求转交给编译好的 Servlet 引擎执行1。如图 5.1图 5.1 JSP 运行原理图在编译时如果发现 JSP 文件有任何语法错误,转换过程将中断,并向客户端发出出错信息;如果编译成功,则所转换产生的 Servlet 代码被编译,然后该 Servlet 被 JSP 引擎加载到内存中。此时JSP 引擎还请求了 jspInit()方法的执行,并对此 Servlet 初始化。JspInit()方法在 Servlet 的生Client客户端请求(Request)Web Server响应(Response)Servere

21、xtension服务器扩展ServletengineJSPengineServlet 引擎JSP 引擎ClassloaderJavacomplierJSPparser类载入器Java 编译器JSP 语法分析器命周期中只被请求一次,然后将被调用来处理客户端的请求和回复操作。对于所有随后对该 JSP 文件的请求,服务器将检查该 JSP 文件自最后一次被存取后是否经过修改。如果没有修改,则将请求交还给还在内存中的 Servlet 的 jspService()方法,执行回复操作。由于 Servlet 始终驻于内存,所以响应是非常快的。Jsp 页面在第一次访问时由于要转化和编译,运行速度较慢,但是当第二

22、次访问该页时,由于文件已经被编译成字节码文件了,所以速度非常得快。5.1.35.1.3 JSPJSP 页面的组成页面的组成 JSP 页面看上去像标准的 HTML 和 XML 页面,并附带有 JSP 引擎能够处理和解析执行的代码与组件。通常,JSP 代码和组件用于创建在最终页面上显示的文本。通常来说,JSP 页面包括模板元素,指令元素,动作元素,Scritptlets,声明,表达式和 JSP 内建对象。1)模板元素:模板元素是指 JSP 的静态 HTML 或者 XML4 。 2)指令元素:使用指令元素来设置全局变量,声明类、要实现的方法和输出内容的内型,它们并不向客户端产生任何输出,所有指令在文

23、件范围内有效,JSP 指令的一般语法形式为:。3)动作元素(标识):动作元素用于执行某些动作。在 JSP 规范中有 2 种类型的动作指令的标识。第一种是标准动作,它定义的是无论在什么版本的 JSP 引擎或 Web 服务器下总是可用的动作。第二种是自定义动作,它通过使用 taglib 指令来实现。例如JSP:useBean;JSP:setProperty;JSP:getProperty 就是标准动作。4)声明:用于声明合法的变量和方法。与任何语言相同,JSP 语言使用变量来保存数据。这些变量用 declaration 元素声明,声明的语法为。当页面被初始化的时候,JSP 页面中的所有声明都被初始

24、化。除了简单的变量,方法也能被声明。声明不对当前的输出流产生任何影响。5)表达式:通过计算表达式所得到的结果来表示某个值。表达式的形式为:。表达式求值的结果被强制转换为一个字符串,并插入到当前的输出流中。6)程序段:JSP 可以在页面中包含的一段程序,称之为程序段。程序段是一个代码片断,在请求的处理过程中被执行。程序段可以和页面中的静态元件组合起来创建动态生成的页面。程序段在“”中定义,在这对标识中的所有东西都会被当成 JSP 程序执行。5.1.45.1.4 JavaBeanJavaBean 技术介绍技术介绍JavaBean 技术是一种基于 Java 的组件技术,JavaBean 组件可以用来

25、执行复杂的计算任务,或负责与数据库的交互以及数据的提取,以及封装事务逻辑等,可以很好的实现业务逻辑和前台程序的分离使得系统具有更好的健壮性和灵活性,同时也是解决代码重用问题的一种策略。以前的组件无法实现真正的代码重用,其主要原因就是它们对于处理平台的依赖和对开发语言的依赖过重。由于 Java 语言在这些方面所具有的特点和优势,使得基于它的软件 JavaBean 组件技术倍受人们的关注。它的任务就是:一次编写,可以在任何地方执行,可以在任何地方重用。JavaBean 组件可以在任何地方冲用包括了可以在应用程序、其他组件、文档、Web 站点和应用程序构造器工具等多种方案中再利用。为了创建和使用 J

26、ava 软件组件,JavaBean 被实现为一种独立于平台和结构的应用程序接口,它的实现可以忽略内部的结构及细节问题,只需要定义其外部的特征及对外功能就行。其中,属性、方法和事件三种接口可以独立对外进行开发。JavaBean 的实质就是一个.class 文件,也可以成为类文件。JavaBean 以 binary 格式保存,可以保护 Java 源代码不容易被他人抄袭7。5.1.55.1.5 JSPJSP 的运行环境的运行环境要运行 Jsp(注意,不是浏览 Jsp 页面) ,需要有支持 Jsp 的服务器。这里分 2 种情况:一种是自身就支持 Jsp 的服务器,如 Jrun,Weblogic,JSW

27、DK 等;而另一种则是在不支持 Jsp 的服务器上安装 Jsp 引擎的插件,如在 IIS,Apache 等服务器上安装 WebSphere,tomcat,Resin 等插件。其中主流服务器是 Weblogic 和 tomcat.Weblogic 是一款功能强大的服务器软件,配置比较简单,而且 Jsp 的扩展功能较多,附带了数据库的 JDBC 驱动程序。 ,支持 JHTML(一种与 Jsp 十分相似的技术),是目前市场占有率最高的服务器。不过,Weblogic 的运行情况不太稳定,使用它调试 Jsp 文件,出现语法错误或者数据库连接错误时,Weblogic 就有可能崩溃。Tomcat 服务器是

28、Apache Group Jakarta 小组开发的一个免费服务器软件,适合于嵌入 Apache 中使用,而且,它的源代码可以免费获得,你可以自由地对它进行扩充。访问的地址 http:/jakarta. apache.org/tomacat/index.html, Tomcat 服务器的兼容性很好,如 WebLogic服务器采用其为 Web 服务器引擎,Jbuilder 将其作为标准的测试服务器,Sun 公司也将其作为 JSP技术应用的示例服务器。不足之处是它的配置比较麻烦,对系统硬件要求较高,而且有一些安全性的问题没有解决。但是 Tomcat 服务器有众多大软件公司的支持,而且服务器的性能稳

29、定,其发展前景很好9。5.25.2 系统主要文件系统主要文件该购书系统主要有 2 类文件,一类是 Bean 文件,我把它们统一放在了 bookshop 文件夹里,保存在 jakarta-tomcat-5.0.27commonclassesbookshop 下, (这是 tomcat 要求的默认存放 Bean的路径),在 bookshop 文件夹下又有 3 个包:book,run,util,对 Bean 文件的一个分类;另一类是jsp 文件,保存在 jakarta-tomcat-5.0.27webappsROOT。 (这是 tomcat 的默认工作环境)Book 包中的 Bean 文件:Allo

30、rder.java,Book.java,Bookclass.java,Order.java,Shopcar.java,User.javaUtil 包中的 Bean 文件:ChStr.java,DataBase.java,DataFormat.javaRun 包中的 Bean 文件 Login.java,Op_book.java,Op_bookclass.java,Op_buy.java,Op_user.javaJsp 文件分为前台文件和后台文件,因文件太多,在此就不列举。5.35.3 详细设计及说明详细设计及说明5.3.15.3.1 数据库连接数据库连接 BeanBean 的编写的编写22数据

31、库操作的 JavaBean 是一个公共类,放在 bookshop 下的 util 包中,通常包括连接数据库的方法 getConnection、执行查询语句的方法 executeQuery、执行更新操作的方法 executeUpdate、关闭数据库连接的方法 close。其实现代码如下:package bookshop.util; /将该类保存到 package bookshop.util 包中/* * 数据库连接专用包 * Copyright: wxy Copyright (c) 2007 * Company:Ling Du book shop online */import java.sql

32、.*; /导入提供基本的数据库编程服务的包public class DataBase public Connection conn; /定义一个 Connection 对象 public Statement stmt; /定义一个 Statement 对象 public ResultSet rs=null; /定义一个 ResultSet 对象 public String sqlStr=; /定义一个字符串,用来保存 SQL 语句 public DataBase() this.connect(); public boolean connect()/download by http:/ tryC

33、lass.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver).newInstance();/加载 SQL Server 2000 数据库驱动String url =jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=bookshop;/保存连接数据库的 URL 地址的变量conn=DriverManager.getConnection(url,”sa”,” ”);/建立数据库连接Statement stmt= conn.createStatement (); catch(Except

34、ion ee) System.out.println(connect db error:+ee.getMessage();/检测数据库连接是否成功 return false; return true; public static void main(String args) try DataBase db = new DataBase(); db.connect(); catch(Exception e) e.printStackTrace(); 5.3.25.3.2 字符处理字符处理 BeanBean 的编写的编写在 JSP 开发中经常会涉及有关字符串的处理,例如:把字符串转换成适合于网页显

35、示的文本、八字符串转换成适合 SQL 语句的字符串等等,所以把这些字符串处理方法集中到一个类中。这也是一个公共类3。关键代码如下:package bookshop.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=strRepla

36、ce(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 | sBo

37、dy.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

38、(l); return sss.toString(); /* * 把字符串中的rn转换成n * param String sBody : 要进行替换操作的字符串 * param String sEndwith : 要替换成为的字符串 */ public static String parseReturn(String sBody, String sEndwith) StringTokenizer t = new StringTokenizer(sBody, rn); StringBuffer sss = new StringBuffer(sBody.length(); boolean bFir

39、st=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

40、 中的表单区域 * 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; /* * 将普通字符串格式化成数据库认可的字符串格式 * * param str 要格式化的字符串 * return 合法的数据

41、库字符串 */ public static String toSql(String str) String sql = new String(str); return strReplace(sql, , ); 5.3.35.3.3 实现用户实体的实现用户实体的 BeanBean1)用户实体 Bean,这个类是对用户实体的抽象,它包含了用户实体的所有属性及用户对象初始化构造方法。它们都是和数据库里的 shop_user 表相对应的,在这个 Bean 里封装的方法也主要是对这个表进行操作.这些属性都被定义为类的私有成员,外界不可访问8private Long id;private String u

42、serName;private String userPassword; private String Names; private String Sex; private String Address; private String Phone; private String Post; private String Email; private String RegTime; private String RegIpAddress;2)构造函数里对以上私有成员进行初始化: Public user() Id=0; UserName=” ”; Password=” ”; Names=” ”;

43、Sex=” ”; Address=” ”; Phone=” ”; Post=” ”; Email=” ”; RegTime=” ”; RegIpAddress=” ”;.其中的 seter 和 geter 方法用来设置和获取以上各属性的值。在 jsp 页面中通过 引入。5.3.45.3.4 实现图书实体的实现图书实体的 BeanBean应用面向对象的思想把具有共性的实体抽象成一个类。这个图书 Bean 就是对图书实体的抽象,他包含了图书实体的所有属性及图书对象的初始化构造方法,里面的属性和表 Book 表对应8。部分代码如下:package bookshop.book;/* * 图书类 */p

44、ublic class book private long Id;/ID序列号 private String BookName;/书名 private int BookClass;/图书类别 private String classname ; /图书类别名 private String Author;/作者 private String Publish;/出版社 private String BookNo ;/书号 private String Content ;/内容介绍 private float Prince ;/书价 private int Amount ;/总数量 private

45、int Leav_number ;/剩余数量 private String RegTime ;/登记时间 private String picture ;/图书样图文件的名称 /* * 图书的初始化 */ public book() Id = 0; BookName = ; BookClass = 0; classname = ; Author = ; Publish = ; BookNo = ; Content = ; Prince = 0; Amount = 0; Leav_number = 0; RegTime = ; public void setId(long newId) this

46、.Id = newId; public long getId() 其中的 seter 和 geter 方法用来设置和获取以上各属性的值。在 jsp 页面中通过 引入。5.3.55.3.5 实现图书分类实体实现图书分类实体 BeanBean这个类是对图书分类实体的抽象,他包含了图书分类实体的所有属性及图书分类对象的初始化构造方法,它的属性和表Bookclass对应,部分代码如下:package bookshop.book;/* * 图书分类类 */public class bookclass private int Id;/ID序列号 private String ClassName;/图书类别

47、 public bookclass() Id = 0; ClassName = ; public bookclass(int newId, String newname) Id = newId; ClassName = newname; 5.3.65.3.6 实现订单实体实现订单实体 BeanBean这个类是对订单实体的抽象,它包含了订单实体的所有属性及订单对象的初始化构造方法。客户每次购买一种商品都会产生一次订购单,它包括订单号,所购买的书号,所购买这种书的数量等,这些构成了这个类的私有属性,这些属性和表Order对应。核心代码如下:package bookshop.book;/* * 订单

48、类 */public class order private long Id;/ID序列号 private String orderId; /订单编号 private long UserId;/用户序列号 private String SubmitTime;/提交订单时间 private String ConsignmentTime; /交货时间 private float TotalPrice;/总金额 private String content; /用户备注 private String IPAddress;/下单时IP private boolean IsPayoff;/用户是否已付款

49、 private boolean IsSales;/是否已发货 public order() /在构造方法里初始化变量 Id = 0; orderId = ; UserId = 0; SubmitTime = ; ConsignmentTime = ; TotalPrice = 0; content = ; IPAddress = ; IsPayoff = false; IsSales = false; public long getId() return Id; 其中的 seter 和 geter 方法用来设置和获取以上各属性的值。在 jsp 页面中通过 引入。5.3.75.3.7 实现订单

50、列表的实现订单列表的 BeanBean 这个类是对订单列表实体的抽象,它包含了订单实体的所有属性及订单列表对象的初始化构造方法,它的属性和表 Allorders 对应,部分代码如下:package bookshop.book;/* * Title: */public class allorder private long Id;/ID序列号 private long orderId;/订单号表序列号 private long BookNo;/图书表序列号 private int Amount;/订货数量 public allorder() Id = 0; orderId = 0; BookNo

51、 = 0; Amount = 0; public long getId() return Id; 其中的 seter 和 geter 方法用来设置和获取以上各属性的值。在 jsp 页面中通过 引入。5.3.85.3.8 实现购物车实体的实现购物车实体的 BeanBean在现实生活中,人们去超市买东西,都是把商品放在一个购物篮里,等到把所有要买的东西选购完毕后,一起拿到收银台前付钱。我在程序里定义的购物车实体就是模拟这个功能.作为购物车,购物时间,所购书的总价格都是必不可少的,这个类是对购物车实体的抽象,它包含了购物车的所有属性及购物车对象的初始化构造方法。部分代码如下:package book

52、shop.book;/* * Title: */public class shopcar private long bookId;/图书ID编号 private int quanlity;/选购数量 public shopcar() bookId = 0; quanlity = 0; public long getBookId() return bookId; 5.3.95.3.9 管理用户登录管理用户登录 BeanBean 的编写的编写这是一个以客户为中心的交易平台,只有成为了系统的合法用户才有使用本系统的权利,因此需要检测每个用户的合法性,管理用户登录这个 Bean:Login.java

53、就是要完成这一功能。图 5.2 为Login 类的类图其中只是关键的几个方法。 LoginExecute():booleangetIsadmin():booleangetSql():StringLogin():voidIsadmin:booleanPasswd:StringuserId:longuserName:String图 5.2从图 4-1 中可以看出 Login 具有的属性和方法,其中 login() :void 构造函数,getismin 为取得属性 isadmin 的值的方法,即判断登陆用户是否是管理员。其它的是设置和获取属性的方法。其中有两个重要的方法介绍如下:1) getSql

54、()方法根据用户的不同获得不同的查询 SQL 语句。判断登陆用户是否是管理员,如果是则从管理员信息表中查询数据,否则则从普通用户表中查询数据。实现代码如下: /* * 获得查询用户信息的 sql 语句 * return */ public String getSql() if (isadmin) sqlStr = select * from BookAdmin where adminuser = + dataFormat.toSql(username) + and adminpass = + dataFormat.toSql(passwd) + ; else sqlStr = select *

55、 from shop_user where username = + username + and password = + passwd + ; return sqlStr; 2)Execute()方法 /* * 执行查询 * return * throws java.lang.Exception */ public boolean excute() throws Exception boolean flag = false; DataBase db = new DataBase(); db.connect(); /获取一个数据库连接 Statement stmt = db.conn.cre

56、ateStatement (); rs = stmt.executeQuery(getSql(); /rs 里返回查询结果集 if (rs.next() if (!isadmin) userid = rs.getLong(id); flag = true; rs.close(); return flag;从以上代码中可以看出,构造数据库连接 DataBase 类的对象,调用其 connect()方法获得连接,调用 getsql()方法获得 SQL 语句,然后从数据库中查得用户所需信息。5.3.105.3.10 管理图书管理图书 BeanBean 的编写的编写该类负责图书的管理,包括图书的修改、

57、查询、删除、和添加等,图 5.3 为该类的类图5,其中省去了部分方法,这里只介绍几个重要的方法。图 5.3Op_booksqlStr:Stringabooks:booksqlflag:booleanBooklist:VectorPage:intPagecount:intPagesize:intRecordcount:longRequest:HttpservletRequestBook_search():booleanDelete():booleanGetonebook():booleanGetsql():StringGetsqlflag():booleanInsert():booleanOp_

58、book():voidTo_string():StringUpdate():boolean管理图书 op_book 类的类图1)getRequest()方法 该方法负责从页面接收到的表单资料分解,并设置图书实体的相应属性,它的返回值为 Boolean类型,true 表示成功,反之表示失败。部分代码如下:public boolean getRequest(javax.servlet.http.HttpServletRequest newrequest) boolean flag = false; try request = newrequest; String ID = request.getP

59、arameter(id); long bookid = 0; try bookid = Long.parseLong(ID); catch (Exception e) abooks.setId(bookid); String bookname = request.getParameter(bookname); if (bookname=null | bookname.equals() bookname = ; sqlflag = false; abooks.setBookName(to_String(bookname); String author = request.getParameter

60、(author); if (author=null | author.equals() author = ; sqlflag = false; abooks.setAuthor(to_String(author); String publish = request.getParameter(publish); if (publish=null) publish = ; abooks.setPublish(to_String(publish); String bookclass = request.getParameter(bookclass); int bc = Integer.parseIn

61、t(bookclass); abooks.setBookClass(bc); String bookno = request.getParameter(bookno); if (bookno = null) bookno = ; abooks.setBookNo(to_String(bookno); String picture = request.getParameter(picture); if (picture = null) picture = images/01.gif; abooks.setPicture(to_String(picture); float price; try p

62、rice =new Float(request.getParameter(price).floatValue(); catch (Exception e) price = 0; sqlflag = false; abooks.setPrince(price); int amount; try amount = new Integer(request.getParameter(amount).intValue(); catch (Exception e) sqlflag = false; amount = 0; abooks.setAmount(amount); String content =

63、 request.getParameter(content); if (content = null) content = ; abooks.setContent(to_String(content); if (sqlflag) flag = true; return flag; catch (Exception e) return flag; 2)book_search()方法该方法负责图书查询,包括图书的分类,分页、关键字查询。首先通过 getRequest()方法获得页面表单参数值,根据参数值判断是何种查询,然后根据相应的 SQL 的语句从数据库里查询相应的值。这里需要用到分页技术。部分

64、代码如下:/* * 完成图书查询,包括分类,分页查询 * param res * return * throws java.lang.Exception */public boolean book_search(HttpServletRequest res) throws Exception DataBase db = new DataBase(); db.connect(); Statement stmt = db.conn.createStatement (); request = res; String PAGE = request.getParameter(page); /页码 Str

65、ing classid = request.getParameter(classid);/分类ID号 String keyword = request.getParameter(keyword);/查询关键词 if (classid=null) classid=; if (keyword=null) keyword = ; keyword = to_String(keyword).toUpperCase(); try page = Integer.parseInt(PAGE); catch (NumberFormatException e) page = 1; /取出记录数 if (!clas

66、sid.equals() & keyword.equals() ) sqlStr = select count(*) from book where bookclass=+classid + ; else if (!keyword.equals() if (classid.equals() sqlStr = select count(*) from book where upper(bookname) like % + keyword+ % or upper(content) like % + keyword + %; else sqlStr = select count(*) from book where bookclass= + classid + and (upper(bookname) like % +keyword+ % or + upper(content) like % + keyword + %); else sqlStr = select count(*) from book; int rscount = pageSize; try ResultSet rs1 =

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!