JAVA网上手机商店百宝箱的设计与实现(本科毕业论文)

上传人:仙*** 文档编号:33890824 上传时间:2021-10-19 格式:DOC 页数:39 大小:2.45MB
返回 下载 相关 举报
JAVA网上手机商店百宝箱的设计与实现(本科毕业论文)_第1页
第1页 / 共39页
JAVA网上手机商店百宝箱的设计与实现(本科毕业论文)_第2页
第2页 / 共39页
JAVA网上手机商店百宝箱的设计与实现(本科毕业论文)_第3页
第3页 / 共39页
点击查看更多>>
资源描述
装订线长 春 大 学 毕业设计(论文)纸1 引 言1.1 网上手机商店的发展近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。网上手机店是一种具有交互功能的商业信息系统。它向用户提供特价手机和新品上市两类信息资源。所谓特价手机是指那些日期过久的手机或者是活动的手机,会被放入到特价手机行列中;新品上市的信息,即这个星期或者这几天某个手机厂商最新发布的手机信息等。网上手机购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子交易。1.2 网上手机店的现状随着社会的发展,网络的普及,网上购物已成为在线业务的重要载体。网络购物能够绕过中介(如批发商、销售商或经销商)建立与客户的直接关系。还可以为用户提供商品的详细信息,用户可以在线购买商品,确定自己的订单。网上销售为人们提供了更广阔的环境:人们不受时间的限制,不受空间的限制,不受传统购物的诸多限制,可以随时随地在网上交易。更广阔的市场:在网上这个世界将会变得很小,一个商家可以面对全球的消费者,而一个消费者可以在全球的任何一家商家购物。更快速的流通和低廉的价格:电子商务减少了商品流通的中间环节,节省了大量的开支,从而也大大降低了商品流通和交易的成本。更符合时代的要求:如今人们越来越追求时尚、讲究个性,注重购物的环境,网上购物,更能体现个性化的购物过程。1.3 网上手机店系统的构建现在流行的网上购物系统不仅要有漂亮的网页,更要有严谨的规划。每一个细小的环节都很重要。这样才能使得在电子交易时避免不必要错误发生。我将使用HTML、JSP等技术来编辑网页,使用了Struts技术对网页之间的请求进行相应的控制,能够更轻松更方便的管理客户的请求和相应的用户管理。以及及时的将系统信息返回给展示页面。由于传统的管理信息系统的信息获取方法是由专业文字录入人员将信息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。本系统通过运用Hibernate技术把数据库和动态网页连接,使得出错和成本都相应的降低。本文在实际应用开发中解决方案是建立网站, 以及自己的数据库,使得所需商品信息可以及时的保存、更新,以更好的及时了解商品买卖的情况。目前网上手机商场布局比较凌乱,操作和简便性也有一定得局限性。因此有必要重新设计并且组织一个结构清晰,操作简单傻瓜式的一站式手机网上商城。因此经过此次毕业设计简单的将手机网上商城进行了实现。共 39 页 第 39 页2 系统分析2.1可行性分析2.1.1经济可行性本手机网上商店采用了B/S结构,主要看重的是其异地浏览和信息采集的灵活性。无论在任何时间、任何地点、任何系统,只要可以使用浏览器上网,就都可以浏览网站。而且当网站的升级维护时,只需更新服务器端的软件就可以,这减轻了异地用户系统维护与升级的成本。数据库方面选用了MySQL,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。并且MySQL是开源的软件使得程序开发成本得到最大的节省。而且开发工具是开放的,不需要任何费用,节省了开发成本。因此经济可行。2.1.2技术可行性从技术角度考虑,Java网络编程实用性很强,相关书籍资料非常丰富,我们可以在学习中逐渐完善系统的开发。并且,随着现代化的网络技术的发展,众多编程人员在论坛里相互交流经验,无形中形成了跨局域的团队互补团队合作,方便了我们在碰到技术问题时候及时的获得解决办法,提高了工作效率。我们经过比较之后选择了Java和MySQL来开发这个系统,首先Java是目前最优秀的网络软件开发语言,功能强大,简单易学,而MySQL是完全免费的,功能十分强大,针对中小企业能够完全满足要求。综合以上原因,在技术上也是可行的。2.3 需求分析随着计算机以及互联网的普及,各家各户都基本上购置了计算机,网络消费也成为了当今一种流行趋势。因此网上手机商店这个时候的出现是一种必然。2.3.1系统目标本系统以网络浏览器为客户端,通过对相应网站的访问进而访问本系统,实现手机商店的网络化。2.3.2系统具体功能(1)顾客可以方便的注册与登录;(2)顾客可以灵活地检索所需的商品信息及了解特价商品信息;(3)顾客可以方便的查看详细的商品资料;(4)顾客可以方便的管理自己的购物车,包括添加或删除选购商品,修改购买数量及在线下订单等一些操作;(5)顾客可以反馈自己的意见或留言;(6)商品管理员可以方便的管理商品及特价商品信息,包括新增,删除,修改商品及特价商品;(7)订单管理员可以方便的查看订单,发货与缺货处理;(8)会员管理员可以方便的查看顾客反馈的信息以及具体的处理情况;(9)系统管理员可以方便的进行系统用户的管理,包括新增,删除,修改系统用户。4 开发工具简介4.1运行环境要求4.1.1 硬件环境要求(1)中央处理器:P3 以上;(2)内存:512MB;(3)硬盘空间:2G; (4)显示器:分辨率要求1024*768或更高;(5)光盘驱动器、键盘和鼠标;(6)对于网络操作要有与Windows兼容的网络和网络服务器。4.1.2 软件环境要求(1)操作系统: Microsoft Windows98/2000/NT4.0/XP/VISTA;(2)数据库系统:MySQL;(3)Java环境:JVM虚拟机。4.2开发工具 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 2003年,Eclipse 3.0选择OSGi服务平台规范为运行时架构。 2007年6月,稳定版3.3发布。2008年6月发布代号为Ganymede的3.4版。Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开发源码项目,它其实是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse 的应用程序的突出例子是IBM 的WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。4.3 Java及相应技术简介4.3.1 Java简介Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称1。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.7。Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版) 2。4.3.2 JDBC定义 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势5。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。 有了JDBC,向各第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。 Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。 JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。 MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务, Java 和JDBC 可为外部客户提供获取信息更新的更好方法。4.4 MVC简介MVC三层架构也称MVC模式,主要是将程序开发分为MODEL层(数据持久层)、VIEW(界面表示层)、CONTROL层(控制层)这三个层面,并将这三个层面分开来,形成了一个立体的架构6。三个层次之间的主要交互,如图4-1所示。VIEW层CONTROL层MODEL层图4-1 MVC模式三层架构4.4.1 MVC模型介绍 MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层7。(1)视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。 (2)模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据 保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。(3)控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型8。4.4.2 MVC设计模式的实现 (1)视图。是模型的表示,它提供用户交互界面。使用多个包含单显示页面的用户部件,复杂的Web页面可以展示来自多个数据源的内容,并且网页人员,美工能独自参与这些Web页面的开发和维护。(2)控制。为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。应用程序的控制器集中从客户端接收请求,决定执行什么商业逻辑功能,然后将产生下一步用户界面的责任委派给一个适当的视图组件。用控制器提供一个控制和处理请求的集中入口点,它负责接收、截取并处理用户请求;并将请求委托给分发者类,根据当前状态和业务操作的结果决定向客户呈现的视图。(3)模型。MVC系统中的模型从概念上可以分为两类系统的内部状态和改变系统状态的动作。模型是你所有的商业逻辑代码片段所在。业务处理对象封装了具体的处理逻辑,调用业务逻辑模型,并且把响应提交到合适的视图组件以产生响应。业务实体对象可以通过定义属性描述客户端表单数据。通过业务实体对象实现了对视图和模型之间交互的支持。实现时把做什么(业务处理)和如何做(业务实体)分离。这样可以实现业务逻辑的重用8。4.5 MySQL 概述 MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力。MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序MySQL和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。 MySQL 主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。自1996年以来,我们一直都在使用MySQL,其环境有超过 40 个数据库,包含 10,000个表,其中500多个表超过7百万行,这大约有100 个吉字节(GB)的关键应用数据。 MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集13。4.6 B/S模式介绍B/S结构:(Browser/Server,浏览器/服务器模式):是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。B/S结构的使用越来越多,特别是由需求推动了AJAX技术的发展,它的程序也能在客户端电脑上进行部分处理,从而大大的减轻了服务器的负担;并增加了交互性,能进行局部实时刷新。4.6.1 B/S结构的优点B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。4.7 Hibernate技术概述在项目中使用Hibernate框架,非常关键的一点就是要了解Hibernate的核心接口。Hibernate接口位于业务层和持久化层,如图4-2所示。图4-2 Hibernate核心接口的层次架构关系Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。 Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。4.8 Struts技术概述Struts 是一组相互协作的类、servlet 和 JSP 标记组成的一个可重用的 MVC2 设计。这个定义表示Struts是一个框架,而不是一个库,但 Struts框架也包含了丰富的标记库和独立于该框架工作的实用程序类。4.8.1 Struts 概览(1)Client browser(客户浏览器) 来自客户浏览器的每个 HTTP 请求创建一个事件。Web 容器将用一个HTTP响应作出响应。(2)Controller(控制器)控制器接收来自浏览器的请求,并决定将这个请求发往何处。 就 Struts而言,控制器是以servlet 实现的一个命令设计模式。struts-config.xml 文件配置控制器命令。(3)业务逻辑 业务逻辑更新模型的状态,并帮助控制应用程序的流程。就 Struts而言,这是通过作为实际业务逻辑“瘦”包装的Action 类完成的。(4)Model(模型)的状态 模型表示应用程序的状态。业务对象更新应用程序的状态。ActionFormbean在会话级或请求级表示模型的状态,而不是在持久级。JSP 文件使用 JSP 标记读取来自 ActionFormbean的信息。(5)View(视图) 视图就是一个 JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息 只有标记。标记是使Struts 有别于其他框架(如 Velocity)的因素之一。4.8.2 Struts中的Controller(控制器)命令设计模式的实现: Struts 的控制器将事件(事件通常是 HTTP post)映射到类的一个 servlet。ActionServlet (Command)创建并使用 Action 、ActionForm 和ActionForward。 通过struts-config.xml 文件配置该 Command。从而扩展 Action 和ActionForm来解决特定的问题。可以通过扩展 ActionServlet 来添加 Command 功能。在Struts框架中控制器组件由三个部分构成:(1)消息控制模块:用户所有的提交请求都发往消息控制模块,在由消息总线模块根据视图映射模块找到消息处理模块来执行处理逻辑。消息控制模块接收所有用户的请求,并根据请求视图找到处理。Strtus中通过ActionServlet和RequestProcessor类来完成。(2)消息处理模块:该模块执行该消息的逻辑处理,因此通常由用户扩展实现。Struts中通过Action类来实现。(3)视图映射模块:控制器逻辑和视图逻辑之间的结合是通过配置模块和配置文件建立其的链接。Struts中配置模块通过ModuleConfig类来完成,而配置文件由struts-config.xml文件提供。4.8.3 Struts中的View(视图)视图组件通过JSP组件实现的。Struts框架对视图组件进行了扩展和封装。Struts对视图的扩展提供了一组扩展服务器标签用来提供视图显示以及传递数据到处理缓冲,而处理缓冲由ActionForm的扩展类来实现。Struts框架利用ActionForm Bean来实现视图与控制器之间的数据的交互,维持会话级或请求级的模型的状态。服务器标签主要包括:Html视图标签 Logic逻辑流程控制标签 Bean数据缓冲读取标签4.8.4 Struts中的Model(模型)(1)Struts框架中并没有定义特定的模型组件,而是希望由用户自己决定选择合理的模型组件。J2EE中可用的模型组件包括:JavaBean 用户定义组件; EJB 组件,由EJB容器实现组件; JDO未来J2EE数据访问模型;一些扩展框架如Hibernate;(2)模型中状态的级别 会话级或请求级:ActionForm bean来维持 ;持久级:模型组件来维持。5 系统总体设计5.1 系统解决方案本手机网上商店网站采用的是基于网络的Browser/Server(浏览器/服务器)结构的软件实现,系统的实现分为3个层次:模型层(Model)、视图层(View)、控制层(Controller)。5.1.1 模型层模型层(Model)主要负责系统的各种数据,由于本毕业设计管理系统的数据存储量比较大,所以本系统利用MySQL 作为数据库管理系统。5.1.2 视图层视图层(View)主要负责前台的展示和获取前台信息等工作,比如手机的功能展示等等,这里使用了JSP技术结合Ajax技术来实现所有用户要求的。5.1.3 控制层控制层(Controller)的功能是控制器接收用户的请求,然后调用某个模块来处理用户的请求,在控制器的控制下,再将处理的结果交给某个视图进行格式化输出给用户。5.2 系统结构划分系统总体用例图,如图 5-1所示。 图51系统总体用例图5.3 模块划分系统模块划分,如图52所示。百机会-网上手机商店登录注册模块浏览检索模块购物车模块后台登录模块反馈留言模块订单管理模块商品管理模块特价商品管理系统用户管理会员管理模块图52模块分布图6 系统详细设计6.1 数据库的设计6.1.1 系统数据库物理模型图系统数据库物理模型,如图6-1所示。图6-1数据库物理模型图6.1.2 数据库和数据表的设计“网上手机店”数据库,包含会员级别,注册会员,手机类别,手机,购物车选购,购物车,订单,留言,系统用户等几个数据表,其中“会员级别表”是用来存储会员等级,包括ID号,级别名称,优惠百分比;“注册会员表”包括ID号,登录账号,登录密码,真实姓名,联系电话,联系地址,邮政编码,注册日期,最近登录日期,登录次数,电子邮箱;“手机类别表”存储包括ID号,类别名称,类别描述;“手机表”存储包括ID号,商品类别ID,商品名称,商品价格,商品型号,商品特价,商品图片,商品描述,生产厂家,出厂日其,有无特价;“购物车表”包含ID号,会员ID,总金额,购物车状态;“订单表”包含ID号,会员ID,购物车ID,订单编号,订单日期,订单状态;“留言表”包含ID号,会员ID,管理员ID,留言标题,留言内容,留言日期,留言回复,回复日期;“系统用户表”ID号,管理员类型,管理员真实姓名,管理员登录账号,管理员登录密码。6.1.3 各数据表设计与实现(1)会员级别,如表6-1所示。表6-1会员级别表字段名称数据类型描述IDInt(4)ID号LevelNameChar(20)级别名称FavourableInt(4)优惠百分比(2)注册会员表,如表6-2所示。表6-2 注册会员表字段名称数据类型描述IDInt(4)ID号MemberlevelInt(4)会员级别IDLoginNameChar(12)登录账号LoginPwdChar(12)登录密码MemberNameChar(20)真是姓名PhoneChar(15)联系电话AddressNvarchar(100)联系地址ZipChar(10)邮政编码regDateDatetime(0)注册时间LastdateDatetime(0)最近登录时间LogintimesInt(4)登录次数EmailNvarchanr(100)电子邮箱(3)手机类别表,如表6-3所示。表6-3 手机类别表字段名称数据类型描述IDInt(4)手机类别IDCatenameNchar(40)类别名称CatedescText(0)类别描述(4)手机表,如表6-4所示。表6-4 手机表字段名称数据类型描述IDInt(4)ID号CategoryInt(4)手机类别IDMernameNchar(40)手机名称PriceDecimal(8)手机价格SpriceDecimal(8)手机特价MermodelNchar(40)手机型号PictureNvarchar(100)手机图片MerdescText(0)手机描述ManufactureNchar(60)生产厂家LeavefactorydateDatetime(0)出厂日期SpecialInt(4)有无特价 (5)购物车选购表,如表6-5所示。 表6-5 购物车选购表字段名称数据类型描述IDInt(4)ID号CartInt(4)购物车IDMerchandiseInt(4)手机IDNumberInt(4)手机数量PriceDecimal(4)手机价格MoneyDecimal(4)金额(6)购物车表,如表6-6所示。表6-6 购物车表字段名称数据类型描述IDInt(4)ID号MemberInt(4)会员IDMoneyDecimal(9)总金额CartsatusInt(4)购物车状态(7)订单表,如表6-7所示。表6-7 订单表字段名称数据类型描述IDInt(4)ID号MembersInt(4)会员IDCartInt(4)购物车IDOrderNONchar(20)订单编号OrderDateDatetime(0)订单日期OrderStatusInt(4)订单状态 (8) 留言表,如表6-8所示。 表6-8 留言表 字段名称数据类型描述MembersInt(4)会员IDAdminInt(4)管理员IDTitleNchar(4)留言标题ContentText(60)留言内容LeavedateDatetime(0)留言日期Answercontent Text(0)回复内容AnswerDateDatetime(0)回复日期(9)系统用户表,如表6-9所示。 表6-9 系统用户表字段名称数据类型描述IDInt(4)ID号AdminTypeInt(4)管理员类型AdminNameChar(12)管理员真实姓名LoginNmaeChar(12)管理员登录账号LoginPwdChar(12)管理员登录密码6.2 工程设计对于本网上手机商店,所有工程均使用Eclipse创建,调试,开发以及部署执行的,具体步骤如下:(1)建立工程在Eclipse中,File-New-Web Project,命名为PhoneS。(2)添加框架插件选中当前工程,右键MyEclipse-Add Hibernate Capabilitids 和 右键MyEclipse-Add Struts Capabilitids,经过两个步骤,Hibernate和Struts集合开发框架就大体的加入到了工程中。(3)工程结构,如图6-2所示。 图6-2 工程结构图6.3 模块设计6.3.1 顾客登录(1)模块功能 顾客可以通过填写注册信息注册成为会员,会员登录后才能进行购物车的管理以及意见的反馈,未登录的会员或者为注册的顾客只能检索与浏览商品信息。(2)界面效果,如图6-3所示 。图6-3 登录注册模块(3)模块主要代码及详解当会员登录的时候,首先在default.jsp中填写登录表单,填写完毕提交之后,defaul.jsp中登录表单的内容由Struts自动封装到memLoginForm对象中,并送交Validator进行表单有效性验证,如果验证失败则返回default.jsp要求用户重新填写表单直到通过验证,否则就将memLoginForm对象送给LoginAction的login方法进行处理,处理完成后将处理结果反馈给default.jsp并完成登录。 /* 会员登录代码 */public Member memLogin(String loginName, String loginPwd) throws Exception Session session = MySessionFactory.getSession();Transaction tx = null;Member mem = null;tryString hql = select a from Member as a where a.loginName=:loginName and a.loginPwd=:loginPwd;Query query = session.createQuery(hql);query.setString(loginName, loginName);query.setString(loginPwd, loginPwd);query.setMaxResults(1);tx = session.beginTransaction();mem = (Member)query.uniqueResult();mem.setLoginTimes(Integer.valueOf(mem.getLoginTimes().intValue()+1);mem.setLastDate(new Date();session.update(mem);mit();catch(Exception ex)if(tx!=null)tx.rollback();logger.info(在执行MemServiceImpl类中的memLogin方法时出错n);ex.printStackTrace();finallyMySessionFactory.closeSession();return mem;6.3.2 手机检索浏览模块(1)模块功能顾客可以根据不同的手机种类浏览手机的信息,也可以输入关键字进行手机检索。(2)程序效果,如图6-4所示。图6-4 手机检索以及浏览模块(3)模块主要代码及详解用户的请求,例如查看手机。均通过调用MerAction类的相应方法进行处理,MerAction类中的方法在收到请求后,根据具体的请求调用MerService接口中的相应DAO方法完成数据库的访问,并将检索得到的结果返回给MerAction,MerAction则将最终的处理结果保存到request对象中,由相应的JSP页面带回并展示给用户。/*处理分类查询手机请求*/public ActionForward searchMer(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) List merList = null;MerService service = new MerServiceImpl();int pageNo = 1; /页号int pageSize = 15; /每页记录数int totals = 0; /记录总数int totalPages = 0; /总页数if (key!=null)key = new String(key.getBytes(ISO8859-1),gb2312);request.setAttribute(key, key);if(hasWhere)hql = hql + and a.merName like %+key+%;hql1 = hql1 + and a.merName like %+key+%;action = action + key=+key+&;elsehql = hql + where a.merName like %+key+%;hql1 = hql1 + where a.merName like %+key+%;action = action + &key=+key+&;request.setAttribute(action, action);merList = service.browseMer(pageSize,pageNo,hql);totals = service.countRecord(hql1);6.3.3 购物车模块(1)模块功能顾客需要输入注册账号与密码登录后便可以使用购物车以及对其进行相应的管理,如将选中的手机放入购物车,修改选购手机的数量,删除购物车中的手机,在线下订单以及查看订单等。(2) 程序效果,如图6-5所示。图6-5 购物车模块图(3) 模块主要代码及详解用户请求,例如购物车查看。都是通过直接调用了CartAction类的相应方法进行处理,CartAction类中的方法在收到请求后,根据具体的请求调用CartService接口中的相应DAO方法完成数据库的访问,并将检索得到的结果返回给CartAction,CartAction则将最终的结果保存到request对象中,由相应的JSP页面带回并展示给用户。/* 装载指定会员的购物车 */public Cart loadCart(Member member) throws Exception Session session = MySessionFactory.getSession();Transaction tx = null;Cart cart = null;try/取得该会员的使用中购物车String hql =from Cart as a where a.member=:member and a.cartStatus=0;Query query = session.createQuery(hql);query.setEntity(member, member);query.setMaxResults(1);tx = session.beginTransaction();cart = (Cart)query.uniqueResult();mit();catch(Exception ex)if(tx!=null)tx.rollback();logger.info(在执行CartServiceImpl类中的loadCart方法时出n);ex.printStackTrace();finallyMySessionFactory.closeSession();return cart;7.3.4 顾客反馈信息,留言模块(1) 模块功能顾客登录成功后,进入反馈信息填写页面,可以发表自己的意见和留言,经验证有效方可提交。(2) 程序效果,如图6-6所示。(3) 模块主要代码及详解用户留言直接调用MemAction类的相应方法进行处理,MemAction类中的方法在收集到请求后,根据具体的请求调用WordService接口中相应DAO方法完成数据库的访问,并将检索得到的结果返回给MemAction,MemAction则将最终的处理结果保存到request对象中,由相应的JSP页面带回并展示给用户。/* 新增留言 */public boolean addWord(Leaveword word) throws Exception Session session = MySessionFactory.getSession();Transaction tx = null;boolean status = false;trytx = session.beginTransaction();session.save(word);mit();status=true;catch(Exception ex)if(tx!=null)tx.rollback();logger.info(在执行WordServiceImpl类中的addWord方法时出错:n);ex.printStackTrace();finallyMySessionFactory.closeSession();return status;图6-6 顾客反馈,留言模块图6.3.5 后台登录模块 (1) 模块功能系统管理员输入账号后登录后台,登录验证模块根据输入的账号密码识别不同角色的管理员,然后进入不同的后台管理模块,账号密码输入错误给出错误提示并要求重新输入。 (2) 效果,如图6-7所示。图6-7 后台登录模块图(3) 模块主要代码及详解管理员登录时,首先在adminLogin.jsp中填写登录表单,填写表单完毕并提交之后,adminLogin.jsp中等了的内容由Struts自动封装到loginForm对象中,并由loginForm的Validate方法进行表单有效性验证,如果验证失败则返回adminLogin.jsp要求用户重新填写直到通过验证。否则就将loginForm对象送交给AdminLoginAction类的login方法进行处理,AdminLogiAction类的login方法收到登录请求后,马上调用AdminService接口的adminLogin方法访问数据库中的管理员数据完成登录验证,并将登录验证的结果返回给AdminLoginAction。如果登录成功则转向后台集成管理页面adminIndex.jsp完成登录,否则携带相应的错误信息返adminLogin.jsp页面由用户重新登录。/* 系统管理员登录 */public Admin adminLogin(String loginName, String loginPwd) throws Exception Session session = MySessionFactory.getSession();Transaction tx = nul
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


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

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


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