电子产品交易系统网站设计_第1页
电子产品交易系统网站设计_第2页
电子产品交易系统网站设计_第3页
电子产品交易系统网站设计_第4页
电子产品交易系统网站设计_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要随着Internet在中国的迅速发展,人们日常生活中越来越多地使用这项新的技术来为自己的工作和学习服务。由于WEB页面能把文本、图像、声音、动画、视频等多种媒体信息集于一体,不但使信息的显示更加生动,而且使信息的浏览更为方便,同时WEB页面能实现网上交易平台、客户信息反馈方便了企业与客户之间信息交流。在网络交易日益频繁的今天,一个优秀的电子交易网站的作用是非常显著的,作为计算机学院的毕业生,我们应紧跟时代的步伐,尝试运用所学知识独立设计一个交易网站是非常有意义的。EC_Port(电子商务网站)电子商务指利用简单、快捷、低成本的电子通讯方式,买卖双方通过网络进行各种商贸活动的一种商业交易模式本次毕业设计的题目就是设计并且实现一个基于web技术的在线电子产品交易系统网站。本系统主要以j2EE作为开发基础,使用了struts+hibernate+mysql等多种协议或技术,以Macromedia公司的Dreamweaver作为开发工具和界面美化工具,在功能方面也基本实现了电子商务网站应有的几个基本功能模块包括:管理员的登录,管理和维护;用户注册、登录、注销,个人信息的查询、修改;商品管理,购物车管理,订单管理,用户反馈,该系统界面简单、操作容易,容易维护。关键词:j2EE,struts,hibernate,mysql,tomcat.

Abstract

WiththeInternetrapingdevelopmentinChina,moreandmorepeopleusethisnewtechnologyfortheirownworkandlearningserviceseveryday.AsWEBpagescantext,images,sound,animation,videoandothermulti-Setinthekindofmediainformationintegration,informationisdisplayednotonlymorevivid,butalsomoreconvenientinformationhere,WEBpagetoachieveonlinetradingplatform,customerfeedbacktofacilitatethebusinessandtheexchangeofinformationbetweencustomers,increasingthenetworktransactionsFrequenttoday,anexcellentsiteforelectronictransactionsandtheroleisverysignificant,astheComputerCollegegraduates,weshouldkeepupwiththepaceofthetimes,tryingtousetheknowledgetodesignaseparatetransactionsiteisverymeaningful.EC_Port(e-commercesites)e-commercereferstotheuseofsimple,fast,low-costelectronicmeansofcommunication,bothbuyersandsellersthroughtheInternetforvariousbusinessactivitiesofabusinesstransactionsofthisgraduationprojectisthesubjectofdesignandrealizationofaweb-basedtechnologyElectronicproductsonlinetradingportal.Thissystemismainlytoj2EEasabasisforthedevelopment,usethestruts+hibernate+mysql,andotheragreementsortechnologytoMacromedia'sDreamweaverasthedevelopmenttoolsandinterfaceslandscapingtools.Alsointhebasicfunctionoftherealizationofelectronicportalshouldhaveafewbasicmodulesinclude:administratorlogin,managementandmaintenance;userstoregister,login,write-offs,personalinformationenquiries,amendmentstotheCommodityManagement,themanagementCart,Ordermanagement,theuserfeedback;interfaceofthesystemsimple,easytouse,easytomaintain.

Keywords:j2EE;struts;hibernate;Dreamweaver;mysql;tomcat;

目录摘要 1Abstract 2目录 31绪论 52开发环境及开发工具的介绍 62.1系统运行环境 62.2Java语言及JavaBeans组件技术概述 62.2.1Java语言概述 62.2.2JavaBeans组件技术概述 62.3JavaScript概述 72.4JSP概述 72.5J2EE概述 82.6关于Struts 102.6.1Struts简介 102.6.2Struts工作原理 102.7mysql 102.7.1mysql的特点 112.8Tomcat安装及配置 123hibernate数据库编程 133.1hibernate简介 133.2使用Hibernate的好处 134电子产品交易系统网站需求分析 154.1系统界面需求 154.2系统模块需求 154.3系统角色及其功能需求分析 155电子产品交易系统网站总体设计 175.1设计思想概述 175.2数据库设计 185.2.1数据库表的E-R图 205.3系统的类设计 265.4系统的用例图 275.5总体功能需求设计 296电子产品交易系统网站的详细设计 306.1系统中我所做的主要模块及具体实现 306.1.1用户管理模块 306.1.2.定单模块 346.1.3.留言板模块 397EC_Port系统的测试 42总结 44致谢 45参考文献 46附录一:英文资料原文 47附录二:英文资料译文 59

1绪论由于网上交易的自由,快捷,使得它成为网络用户最常使用的、最热门的网络服务之一。本系统的目的就是为用户提供一个简易的网上交易系统。利用本系统,用户可以自由地浏览商品,注册成为网站会员,选择商品生成订单,实现网上购物,本系统遵循软件j2EE标准,并按照软件规定地流程进行项目地开发。课题特点及意义:1.特点:本系统是运用JSP+JavaBeans+struts+tomcat技术开发的,通过hibernate数据库访问技术与后台mysql数据库相连,实现信息的动态录入、动态查询以及动态统计。2.意义:①开发Web站点,是一项复杂、繁重的工作,需要多方面的知识。此次通过设计网上交易系统,使我接触到许多基于java语言的WEB网络开发方面的知识,包括HTML语言,CSS级联样式表,客户端开发语言JavaScript,MVC分层体系结构,支持MVC架构的struts框架,开源服务器Tomcat,mysql数据库,服务器端开发语言JSP等,这些语言(或技术)扩展了我的知识面,也使我在制作的过程中对它们的特点,应用方向等有了基本的了解,并在实际的应用中大致明白如何将它们融合运用,以开发出界面美观,功能强大的Web站点来。②另外,通过设计该系统,让我了解了开发一个简单的应用系统的基本流程,以及设计思想对系统的重要性。由于时间短促,加之本人水平有限,如有错误敬请批评指正。2开发环境及开发工具的介绍2.1系统运行环境1.硬件环境处理器:IntelPentium166MX或更高内存:32MB或更大容量硬盘空间:1GB显卡:SVGA显示适配器2.软件环境操作系统:Windows2000及以上操作系统(推荐),也可以使用SunSolaris等Linux操作系统Web服务器:Tomcat4.1.2或以上版本数据库:MySQL数据库(推荐),也可以使Oracle8i/Oracle9i数据库客户端:IE5.0或以上版本开发语言:JSP、Java2.2Java语言及JavaBeans组件技术概述2.2.1Java语言概述 Java是由JamesGosling,PatrickNaughton,ChrisWorth,EdFrank和MikeSheridan于1991年在SunMicrosystems公司设计出来的。Java和C++有着紧密的联系,而C++则是从C语言派生而来的,所以Java语言继承了这两种语言的大部分特性。Java的语法是从C继承的,Java许多面向对象的特性则受到C++的影响。Internet使Java成为网络上最流行的编程语言。2.2.2JavaBeans组件技术概述JavaBeans描述了Java的软件组件模型,这个模型被设计成使第三方厂家可以生成和销售能够集成到其他开发厂家或者其他开发人员开发的软件产品的Java组件。应用程序开发者可以从开发厂家购买现成的JavaBeans组件,拖放到集成开发环境的工具箱中,再将其应用于应用软件的开发,对于JavaBeans组件的属性、行为可以进行必要的修改、测试和修订而不必重新编写和编译程序。在JavaBeans模型中,JavaBeans组件可以被修改或者与其他JavaBeans组件组合以生成新的JavaBeans组件或完整的Java应用程序。Java应用程序在运行时,最终用户也可以通过JavaBeans组件设计者或应用程序开发者所建立的属性存取方法(setXXX方法和getXXX方法)修改JavaBeans组件的属性。JavaBeans组件模型使得软件可以设计成便于修改和便于升级。每个JavaBeans组件都包含了一组属性、操作和事件处理器。将若干个JavaBeans组件组合起来就可以生成设计者、开发者所需要的特定运行行为,JavaBeans组件存放于容器或工具库中,供开发者开发应用程序。JavaBeans就是一个可以复用软件模型。JavaBeans在某个容器中运行,提供具体的操作性能。JavaBeans是建立应用程序的建筑模块。大多数常用的JavaBeans通常是中小型控制程序,但我们也可以编写包装整个应用程序运行逻辑的JavaBeans组件,并将其嵌入到复合文档中,以便实现更为复杂的功能。一般来说JavaBeans可以表示为简单的GUI组件,可以是按钮组件、游标、菜单等等。这些简单的JavaBeans组件提供了告诉用户什么是JavaBeans的直观方法,但我们也可以编写一些不可见的JavaBeans,用于接受事件和在幕后工作,例如访问数据库,执行查询操作的JavaBeans,它们在运行时刻不需要任何可视的界面。在JSP程序中所用的JavaBeans一般以不可见的组件为主。可见的JavaBeans一般用于编写Applet程序或者Java应用程序。2.3JavaScript概述JavaScript是一种基于对象(Object)和事件驱动(EventDriven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择,具有以下几个基本特点:①是一种脚本编写语言②基于对象的语言③简单性④安全性2.4JSP概述JSP是由Sun微系统公司(SunMicrosystems)倡导、许多公司参与一起建立的一种动态网页技术标准,其在动态网页的建设中有其强大而特别的功能。目前在国外的众多网站特别是涉及电子商务的网站中,已经大量使用了JSP技术。JSP(JavaServerPages,服务器端动态网页)既然名为“服务器端”动态网页,可想而知,JSP必定是在“服务器”建立的动态网页。更明确地说,JSP是能在WebServer端整合Java语言至HTML网页的环境中,利用HTML网页内含的Java程序代码取代原有的CGI的程序,以便执行原有CGI的功能。JSP的运作模式图2.1JSP的运作模式由于JSP放置在Web服务器上,它在解析使用者由表单(Form)传送过来的字段数据后,接着通过适当的逻辑生成标准HTML文件,然后传给客户端,使用者看到的是一般符合HTML格式的文件内容。JSP在设计时,充分考虑到应用平台的无关性,因此JSP完全与平台无关,无论使用者使用的是哪一种平台下的浏览器,皆能欣赏由JSP产生的网页内容。JSP的优点JSP与ASP、PHP相比有下列优点:①将内容的生成和显示进行分离:②强调可重用的组件:③采用标识简化页面开发:JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java2EE(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。④健壮性与安全性:⑤良好的移植性作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,可以使用自己所选择的服务器和工具,而且更改工具或服务器并不影响当前的应用。2.5J2EE概述(Java2PlatformEnterpriseEdition)是使用Java技术开发企业级应用的一种事实上的工业标准(Sun公司出于其自身利益的考虑,至今没有将Java及其相关技术纳入标准化组织的体系),它是Java技术不断适应和促进企业级应用过程中的产物。目前,Java平台有三个版本:适用于小型设备和智能卡的J2ME(Java2PlatformMicroEdition)、适用于桌面系统的J2SE(Java2PlatformStandardEdition)和适用于企业级应用的J2EE(Java2PlatformEnterpriseEdition)。Sun推出J2EE的目的是为了克服传统Client/Server模式的弊病,迎合Browser/Server架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。各个平台开发商按照J2EE规范分别开发了不同的J2EE应用服务器,J2EE应用服务器是J2EE企业级应用的部署平台。由于它们都遵循了J2EE规范,因此,使用J2EE技术开发的企业级应用可以部署在各种J2EE应用服务器上。为了推广并规范化使用J2EE架构企业级应用的体系架构,Sun同时给出了一个建议性的J2EE应用设计模型:J2EEBlueprints。J2EEBlueprints提供了实施J2EE企业级应用的体系架构、设计模式和相关的代码,通过应用J2EEBlueprints所描述的体系模型,能够部分简化架构企业级应用这项复杂的工作。J2EEBlueprints是开发人员设计和优化J2EE组件的基本原则,同时为围绕开发工作进行职能分工给出了指导性策略,以帮助应用开发设计人员合理地分配技术资源。 J2EE的优势主要有以下几点:1.高效的开发:J2EE允许公司把一些通用的、很繁琐的服务端任务交给中间件供应商去完成这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。高级中间件供应商提供以下这些复杂的中间件服务:状态管理服务--让开发人员写更少的代码,不用关心如何管理状态,这样能够更快地完成程序开发。2.持续性服务:让开发人员不用对数据访问逻辑进行编码就能编写应用程序,能生成更轻巧,与数据库无关的应用程序,这种应用程序更易于开发与维护。分布式共享数据对象CACHE服务,让开发人员编制高性能的系统,极大提高整体部署的伸缩性。3.支持异构环境:J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。这在典型的异构企业计算环境中是十分关键的。J2EE标准也允许客户订购与J2EE兼容的第三方的现成的组件,把他们部署到异构环境中,节省了由自己制订整个方案所需的费用。4.可伸缩性:企业必须要选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满足那些在他们系统上进行商业运作的大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上。例如可被部署到高端UNIX与大型机系统,这种系统单机可支持64至256个处理器。(这是NT服务器所望尘莫及的)J2EE领域的供应商提供了更为广泛的负载平衡策略。能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。5.稳定的可用性:一个服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要。这是实时性很强商业系统理想的选择。2.6关于Struts2.6.1Struts简介Struts已逐步越来越多运用于商业软件,是一种非常优秀的J2EEMVC实现方式。Struts用JavaServlet/JavaServerPages技术,开发Web应用程序的开放源码的framework。Struts有如下的主要功能:1.包含一个controllerservlet,能将用户的请求发送到相应的Action对象。2.JSP自由tag库,并且在controllerservlet中提供关联支持,帮助开发员创建交互式表单应用。3.提供了一系列实用对象:XML处理、通过JavareflectionAPIs自动处理JavaBeans属性、国际化的提示和消息。Struts项目的目标是为创建Javaweb应用提供一个开放源代framework。Strutsframework的内核是基于例如JavaServlets,JavaBeans,ResourceBundles,和XML,以及各种JakartaCommons包的标准技术的灵活的控制层。Struts提供了它自身的控制器组件,并整合了其他技术,以提供模型和视图。Struts已逐步越来越多运用于商业软件,是一种非常优秀的J2EEMVC实现方式。2.6.2Struts工作原理MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化,MVC可以让个逻辑很清晰,这种思想和思维和人的思维很接近,很容易被理解。MVC的工作原理如下图所示:Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作原理,如下图所示:2.7mysql数据库(Database)是一系列信息资源的集合。在一个数据库中,与一个项目有关的所有信息都可以叫做一条记录(Record)。每一条记录都是由一系列的字段(Field)组成的。一系列记录的集合就构成了数据表格(Table)。对于一个简单的“平面文件”的数据库来说,它仅包含了一个数据表格,而对一个“关系型”数据库来说,它却包含两个或两个以上的数据表格,表格的各字段之间存在这一种或多种关系(有时可以把这种关系叫做“链接”)。2.7.1mysql的特点MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。

由于MySQL是开放源代码的,因此任何人都可以在GeneralPublicLicense的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。2.4.2mysql的安装和配置(部分截图)安装时一般采用默认路径:为了支持中文,在下面的列表框中学者jb2312(切记)2.8Tomcat安装及配置直接运行下载的apache-tomcat-5.5.17.exe文件,按照一般的Windows程序安装步骤即可安装好Tomcat,安装时它会自动寻找JDK的位置。安装过程中需要选择一个文件夹作为Tomcat的安装目录。我选择安装的位置是C:\Tomcat5.5。安装完成以后,添加一个Tomcat的环境变量,添加方法和JDK的环境变量的添加方法相同,设置变量名为TOMCAT_HOME,变量值为C:\Tomcat5.5。设置完毕后就可以运行Tomcat服务器了。Tomcat成功启动后,在浏览器中输入http;//localhost;8080/,如果出现欢迎界面,则说明Tomcat安装成功。欢迎界面如图2所示。图2Tomcat欢迎界面

3hibernate数据库编程3.1hibernate简介在B/S项目的开发中,和数据库的交互式不可避免的,J2EE的规范中提供了JDBC的接口来操作数据库,对于JDBC,开发人员可以获取数据库连接,然后向数据库发送SQL语句,并返回数据库操作的结果集,然后封装成对象返回给上层的应用程序。这就造成开发人员不但要求能够编写程序,熟悉业务逻辑,还要求开发人员同时能够担任DBA,对开发人员的要求很高;同时,当引入新的项目时,很多地方必须废弃,因为我们的代码中不光是业务逻辑,其中也嵌入了许多和底层有关的一些SQL代码;另外这些嵌入在代码中的SQL语句也影响了我们程序的可测试性,我们在对代码进行调试的时候,既要测试代码,同时我们还要测试SQL语句。为了解决这些问题,一种ORM系统诞生了。ORM是ObjectRelationalMapping的简写,顾名思义,就是把面向对象的模型映射到关系模型,我们在编程的时候可以直接使用对象,而ORM可以将我们的对象和数据库中的数据联系起来,从而能将实体的变动联系到数据库的变动。Hibernate就是ORM系统中的一种,也是非常成功的一种,能实现ORM这个功能的框架有很多,Hibernate可以说是这些框架中最流行、最受开发者关注的,甚至连JBoss公司也把它吸收进来,利用它在自己的项目中实现ORM功能。3.2使用Hibernate的好处1、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和AppServer,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP(Bean-Managed

Persistence)里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。2、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和ApplicationServer没有任何关系,也不存在兼容性问题。3、Hibernate不能用来直接和EntityBean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是EntityBean的替代者出现的。4、由于是对JDBC的轻易级封闭,内存消耗少,最快的运行效率。5、开发效率高,Eclipse、JBuilder等主流JAVA集成开发环境对Hibernate有很好的支持,在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人。6、分布式,安全检查,集群,负载均衡的支持。3.3Hibernate的工作原理Hibernate的工作就是为Object和Ralational之间提供一个映射,其工作流程如下面的图所示。1.

启动Hibernate,如果在系统中添加Hibernate的支持,此处加载由系统自动完成。2.

读取hibernate.cfg.xml或者perties文件的配置信息,并将其加载为实例。3.

构建SessionFactory实例(包含二级缓存)。4.

从SessionFactory中取得Session对象,从而可以调用其方法,对数据库进行操作,实现ORM的功能。Hibernate可以通过一个XML的mapping文件把一个POJO(Plainoldjavaobject)和数据库中的表对应起来,在这个XML文件(一般命名为*.hbm.xml)中,我们可以配置好Object和数据库中标的映射关系,然后把这个mapping加入到hibernate.cfg.xml中,这样Hibernate在启动时就可以加载这些mapping,并可以根据配置文件对对象实现自动的加载,并且可以对这些Object实习自动的维护。Hibernate还提供查询语句(HQL)供应用程序使用,Hibernate对数据访问实现封装,还可以对查询语句的发送实现管理,达到优化的目的,能够有效减少数据库的访问频率。4电子产品交易系统网站需求分析4.1系统界面需求系统的初始界面网站首页,列出当前商品列表,用户可以浏览和检索商品但不能做其他操作,当用户注册后从新登陆后就可以进行购物,用户登录流程如图4.1所示: 图4.14.2系统模块需求本系统实现了一个在线电子产品交易所具有的基本功能,包括用户注册、用户登录、查找商品、提交订单购买商品,个人资料修改、提交留言,管理员的登录,管理员管理操作等……。划分模块如下:用户模块购物车模块订单模块管理员模块用户反馈商品管理4.3系统角色及其功能需求分析1.EC_Port系统应具有4个角色:(1).注册用户(2).超级管理员(3)普通管理员(4).普通的网站浏览者(即游客)2.系统角色的功能分析1、普通管理员应该具有的功能(1).产品管理包括网数据库中增加商品,修改商品的价格,数量,状态等属性….(2).对用户的管理包括添加新用户、修改用户密码、删除用户. (3)对用户订单的管理,进行发货,确认订单有效性……(4)对用户留言的管理………。2、超级管理员应具有的功能超级管理员可以管理普通管理员,其权限最高,除了具有普通管理员的用户管理,订单管理以外还有管理普通管理员的权限。 3、普通用户网站的普通浏览者(即游客)只能浏览商品。4、注册应具有的功能普通浏览者只要注册为网站用户后,获得自己的帐号,设置自己的密码就具有以下功能:登录,登出,向购物车中添加商品,生成并提交订单。添加或修改个人明细资料。

5电子产品交易系统网站总体设计5.1设计思想概述本电子产品交易系统是基于B/s架构下的多层结构应用系统。它是对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层(3-tier)结构。一个三层架构的应用程序由三部分组成,这三部分各自分布在网络中的不同地方。这三个部分分别是:工作站或表示层接口、事务逻辑、数据库以及与其相关的程序设计。在一个典型的三层架构应用程序中,应用程序的用户工作站包括提供图形用户界面(GUI)的程序设计和具体的应用程序入口表格或交互式窗口。事务逻辑处在局域网(LAN)服务器或其他共享主机上,它作为响应工作站所发出客户请求的服务器,而相对于处于大型机的第三层它是作为客户端,并且决定需要什么数据以及数据存储在哪里。第三层包括数据库以及处理读写以及访问数据库的程序。然而应用程序的设计可能比这个架构要复杂,对于大型程序来说,这个三层模式是一种比较简便的考虑方法。这种应用程序的设计使用客户/服务器模式,各层可以同时开发,并且可以由不同的成员组用不同的语言来开发。因为各个层次的开发不会影响其他层次,所以这种模型对于进一步开发软件是很方便的。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。如图5.1图5.1 在数据库层,该系统使用开源的mysql数据库,持久层用到Hibernate技术,业务逻辑层用普通javabean实现,表述层运用基于struts的MVC设计模式。5.2数据库设计下面列出了设计过程中所用到的数据库表及其结构:e_order表用来保存客户的订单信息,表如图5.2.1:e_order列名类型长度描述orderidint11订单IDtotalpriceNUMBER16总价钱orderstateNUMBER1订单状态payinfoDATE付款方式CreatetimeDATE创建日期useridVARCHAR220用户IDUser_item_idNUMBER8用户明细ID 图5.2.1e_order_item表用来保存客户订单中的订单项信息,表图5.2.2:e_order_item列名类型长度描述order_item_idNUMBER16订单条目IDProductidNUMBER16商品对象IDOrderidVARCHAR220订单对象IDqualityNUMBER8数量numNUMBER8商品数量 图5.2.23.e_user表用来保存用户个人信息,表图5.2.3:e_user列名类型长度描述user_idint11用户IDusernamevarchar30用户namepasswordvarchar15用户密码 图5.2.3e_user_item表用来保存用户个人明细,表图5.2.4:e_user_item列名类型长度描述User_item_idint11用户IDItem_namevarchar30用户nameItem_addressvarchar15用户密码Item_postcodevarchar20邮编Item_officephvarchar50办公室电话Item_mobilephvarchar20手机Item_emailvarchar20电邮useridInt12用户Id 图5.2.4e_product表用来保存商品,表图5.2.5:e_product列名类型长度描述productidint11产品modlevarchar30产品型号namevarchar15品牌名companyvarchar20出品公司weightdouble50产品重量pricedouble20价格statevarchar20产品状态createtimedate出厂日期CatalogidInt10产品类型descriptionvarchar1000产品描述 图5.2.5e_catalog表用来保存商品类型,表图5.2.6:e_catalog列名类型长度描述catalogidint11类型IDcaatlognamevarchar30类型名descriptionvarchar100描述 图5.2.6e_module表用来保存权限信息,表图5.2.7:e_module列名类型长度描述Module_idint11权限IDModule_namevarchar30权限名 图5.2.7e_admin表用来保存管理员,表图5.2.8:e_admin列名类型长度描述Admin_idint11类型IDAdmin_namevarchar30类型名passwordvarchar100描述TelVarchar20电话emailvarchar20电邮 图5.2.8e_admin_rights表用来保存管理员权限,表图5.2.9:e_admin列名类型长度描述admin_idint11管理员IDMod_idint30权限ID 图5.2.9 5.2.1数据库表的E-R图e_user表保存了用户的基本信息:姓名(name)和密码(password),其子表由e_user_item(用户明细),它保存了用户的其他信息如地址等联系方式。user和user_item的关系是一对多,一个用户可以有多个明细,将用户的电话地址等信息放在明细表中。其建表语句如下:CREATETABLE`e_user`(`userid`int(11)NOTNULLauto_increment,`username`varchar(30)NOTNULL,`password`varchar(15)defaultNULL,PRIMARYKEY(`userid`))DEFAULTCHARACTERSETutf8;下面是用户明细表的E-R图,对应建表语句如下:CREATETABLE`e_user_item`(`user_item_id`int(11)NOTNULLauto_increment,`item_name`varchar(30)defaultNULL,`item_address`varchar(100)defaultNULL,`item_postcode`varchar(10)defaultNULL,`item_officephone`varchar(50)defaultNULL,`item_mobilephone`varchar(20)defaultNULL,`item_email`varchar(50)defaultNULL,`userid`int(12)NOTNULL,PRIMARYKEY(`user_item_id`),KEY`userid`(`userid`))DEFAULTCHARACTERSETutf8;商品是由类型的,如数码产品由电脑,手机,mp3等,其作为product类的父表,故设计e_catalog如下:CREATETABLE`e_catalog`(`catalogid`int(11)NOTNULLauto_increment,`catalogname`varchar(100)NOTNULL,`description`varchar(100)defaultNULL,PRIMARYKEY(`catalogid`))DEFAULTCHARACTERSETutf8;e_admin表用来保存管理员,管理员信息主要有:姓名(adminname),密码(password),电话(tel),邮箱(email):管理员的权限是通过一个中间表e_adm_rights实现的,Admin的见表语句如下:createtablee_admin(admin_idintegerauto_increment, admin_namevarchar(32), passwordvarchar(32),telvarchar(32),emailvarchar(32),primarykey(admin_id))DEFAULTCHARACTERSETutf8;权限表,用来保存权限,它不直接和管理员联系,而是通过中间表e_adm_rights,这样最大限度地做到解耦合。其建表语句如下:createtablee_module(module_idintegerauto_increment,module_namevarchar(32),primarykey(module_id))DEFAULTCHARACTERSETutf8;;中间表e_admin_rights表用来保存管理员的权限,建表语句:createtablee_adm_rights(adm_idintegerreferencese_admin(admin_id),mod_idintegerreferencese_module(module_id),primarykey(adm_id,mod_id));e_order表用来保存用户的订单,主要属性有orderid(订单ID),orderstate(订单状态),payinfo(付款方式),User_item_id(订单所对应的用户明细的ID,userid订单所对应的用户的ID。Order表的见表语句如下:CREATETABLE`e_order`(`orderid`int(11)NOTNULLauto_increment,`totalprice`doubledefault'0',`orderstate`int(11)default'0',`payinfo`int(11)defaultNULL,`createtime`datedefaultNULL,`userid`int(11)NOTNULL,`user_item_id`int(11)NOTNULL,PRIMARYKEY(`orderid`),KEY`user_item_id`(`user_item_id`),KEY`userid`(`userid`))DEFAULTCHARACTERSETutf8;(以上代码创建表r_order,该表主要用来保存一个订单,并且引用用户表主键,用户名细表主键为外键,与user和user_item表为一对多的关系) 在实际运用中一个order对应多个order_items,设计order_item如下:其建表语句如下:CREATETABLE`e_order_item`(`order_item_id`int(11)NOTNULLauto_increment,`productid`int(11)NOTNULL,`orderid`int(11)NOTNULL,`quality`int(11)NOTNULL,PRIMARYKEY(`order_item_id`),KEY`productid`(`productid`),KEY`orderid`(`orderid`))DEFAULTCHARACTERSETutf8;产品表保存了产品的详细信息,设计如下:以下是其建表语句: CREATETABLE`e_product`(`productid`int(10)NOTNULLauto_increment,`module`varchar(50)NOTNULL,`name`varchar(100)defaultNULL,`company`varchar(50)defaultNULL,`price`doubledefaultNULL,`weight`int(4)defaultNULL,`catalogid`int(10)NOTNULL,`description`varchar(1500)defaultNULL,`imagepath`varchar(100)defaultNULL,`createtime`datedefaultNULL,`state`int(2)default'0',PRIMARYKEY(`productid`),KEY`catalogid`(`catalogid`))DEFAULTCHARACTERSETutf8;最后介绍一下message表,它保存了用户的留言信息。见表语句如下:createtablee_message(messageIdintegerauto_increment,useridint(11);tilevarchar(32),content varchar(32),createDatedatedefaultNULL,;primarykey(messageId));

5.3系统的类设计这是类的关系图从类关系图上可以看到:一个用户可以有多个明细(主要保存了用户收货地址,用户电话,用户邮箱等)在生成订单时,选择其中一条用户明细保存到订单中去,订单有多个订单项组成,订单订单项与产品关联,订单项保存了产品ID,订购数量,该订单条目总价格。用户可以对应多个留言类。产品和产品类型类关联,一个产品只能有一种类型,类型类是产品类的父类。在这个类关系图中,管理员类没有列出来,管理员类和权限类通过中间类(即管理员权限类)衔接在一起。管理员可以管理用户,产品,留言,和普通管理员。上图是数据库表中各个表之间的关系图,从这些表之间的对应关系可以看出其所代表的类之间的关系。5.4系统的用例图 通过这张用户的用例图(图5.4.1),我们可以看到用户所能做的业务,用户可以登录和退出系统,用户还可以注册为网站的会员成为注册用户,用户登陆以后可以修改个人信息,可以增加用户明细。关于产品操作方面,用户无论注册与否都可以浏览和检索产品,若用户登陆以后就可以将产品放入购入购物车中,进而生成订单。用户可以管理自己的购物车,可以在购物车中增加或删除商品,还可以修改放入购物车中的商品的数量等,当用户决定购买后,购物车中的商品被提交到订单项中,用户在确认订单之前还可以修改订单条目,比如返回购物车修改订购产品数量,增删所修改产品等,还可以选择或添加收货地址,可以选择付款方式,当用户确认无误后,这些信息将被提交到数据库中,订单即被生成。用户还可以在网站上留言。 图5.4.1这张是管理员的用例图(图5.4.2),通过这张图我们可以看到,管理员登陆系统后可以进行管理员管理,用户管理,产品管理,订单管理,留言管理等,这都是对超级管理员而言,管理员是有权限之分的,超级管理员可以添加普通管理员,可以修改普通管理员信息,比如修改普通管理员的权限密码等,特定全线的管理员只能至星期对应权限的操作,比如一个知具有用户管理权限的管理员就不能操作产品管理。对于一个超级管理员,他具有最大权限,在管理员管理中,它可以对普通管理员进行增删改查,在用户管理中,它可以修改用户的个人资料,可以将某个用户删除等,当然也可以查看用户列表,在订单管理中,管理员可以查看订单列表,处理用户提交的订单。留言管理模块,管理员可以讲用户的留言删除。图总体功能需求设计

6电子产品交易系统网站的详细设计6.1系统中我所做的主要模块及具体实现6.1.1用户管理模块用户管理模块主要包括用户注册,登录,退出3个部分.(1)用户注册当用户第一次登录时首先要注册,成为会员后,才可以购买物品.用户可以通过单击首页的注册按键来打开注册页面进行会员注册操作,用户注册页面的运行结果如下图所示. 用户注册页面图如果用户的注册信息不符合要求,系统会提示用户,部分结果如下图: 图校验用户注册信息是是否正确的javaScript部分代码如下:<script>if(form1.username.value==""){ alert(“请输入用户名"); form1.username.focus(); returnfalse; } if(form1.pasa.value==""){ alert("请输入确认密码"); form1.pasa.focus(); returnfalse; } if(form1.password.value!=form1.pasa.value){ alert("你输入的两次密码不一致"); returnfalse; } if(form1.email.value==""){ alert("请输入你的Email址"); form1.email.focus(); returnfalse; returnfalse; } }--></script>当用户确认所提按信息无误后,单击“注册“按钮,系统会执行以下流程: 1,request请求将页面上的信息传递到控制层的struts中的Action类中,执行以下代码/* *注册一个新用户 */ publicActionForwardregister(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ …… Useruser=newUser(); user.setUsername(request.getParameter("userName")); user.setPassword(request.getParameter("password")); user.setCreatetime(newDate(System.currentTimeMillis())); user.setState(1); user.setRole(1); user.setAddress(request.getParameter("address")); user.setPostcode(request.getParameter("postcode")); user.setOfficephone(request.getParameter("officephone")); user.setMobilephone(request.getParameter("mobilephone")); user.setEmail(request.getParameter("email")); if(userService.getUserByName(username)!=null){ Stringmessage="用户名已存在!请<aonclick='javascript:history.go(-1)'style='color:red;'>返回</a>"; request.setAttribute("message",message); returnmapping.findForward("error"); } userService.register(user); returnmapping.findForward("registersuccess");}在UserService中调用dao中的addUser方法,代码如下:publicvoidaddUser(Useruser)throwsStoreException{ try{ session=HibernateSessionFactory.getSession(); tx=session.beginTransaction(); session.save(user); mit(); } } (2)用户登录用户登录窗口设置在首页上,主要用来接收用户输入的用户名和密码,并更新用户在网站中的状态信息.会员登录窗口的运行结果如下图所示。会员登录窗口图网站首页在用户第一次访问时会判断用户是否登录,未登录则显示用户登录窗口,提示用户登录或注册.对于已经登录的用户,在用户登录窗口将显示用户的相关信息.首页主要是根据保存用户名信息的Session参数来判断用户是否已经登录的,关键代码如下:<% Stringname=(String)session.getAttribute("name"); }%>在会员登录窗口中单击登录按纽后,系统将对用户名和密码进行验证,判断用户是否是已注册用户,如果已注册,则更新用户在网站中的状态,如果没有注册,则拒绝用户的登录操作,登录数据验证的程序代码如下:/* *用户登录方法 */ publicActionForwardlogin(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ Stringusername=request.getParameter("userid"); Stringpassword=request.getParameter("password"); if(userService.isLoginCorrect(username,password)){ Useruser=userService.getUserByName(username); /* *只有在用户登录的时候才创建一个session,并且把用户的信息存放到session中; *同时sessionListener也会把car同时也放到session中,这样能保证为每一个来 *网站需要购物的用户分配一个session,一个购物车,并且也可以利用session来跟踪用户. */ HttpSessionsession=((HttpServletRequest)request).getSession(true); session.setAttribute("user",user); returnmapping.findForward("loginsuccess"); }else{ Stringmessage="用户名或者密码错误!"; request.setAttribute("message",message); returnmapping.findForward("loginfailed"); } }publicUsergetUserByName(Stringname)throwsStoreException{ Sessionsession=null; try{ session=HibernateSessionFactory.getSession(); Useruser=(User)session.createQuery( "fromUseruwhereu.username='"+name+"'") .uniqueResult(); returnuser; } }(3)用户退出 当用户决定退出网站时,只要点击当前页面上的“退出”按钮,就会回到首页,结果如下图: 图实现代码如下:/* *用户退出系统并做一些清理工作; */ publicActionForwardlogout(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ HttpSessionsession=request.getSession(); session.removeAttribute("user"); session.removeAttribute("cart"); returnmapping.findForward("logout"); }6.1.2.定单模块生成订单是网上购物商城的最终目的,前面的所有的功能的实现都是为最后生成一个用户满意的订单做基础,在此要生成一个可以供用户随时查询订单号,还要保存用户订单中所购买的商品信息。当用户确认对购物车不再改变后,就可以到收银台结帐并生成订单。结帐的流程是:从购物车中读取商品名称,商品数量,商品价格信息,生成唯一的一个订单号,同时也把用户注册的基本信息读取出来,形成一个完整的订单写入数据库中。创建一个订单 客户选好了所有的商品时,并确认要买时,会向服务器发送一个“生成定单”的请求,运行结果如下图: 图此时用户可以添加收货人的地址,点击图的“添加收货人地址“,会弹出一个页面,在此写上收货人地址,如下图:部分代码如下:/* *为用户添加一个新地址 */ publicActionForwardsaveUserItem(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ HttpSessionsession=request.getSession(); Useruser=(User)session.getAttribute("user"); UserItemuseritem=newUserItem(); useritem.setUser(user); useritem.setItem_name(request.getParameter("username")); useritem.setItem_address(request.getParameter("address")); useritem.setItem_postcode(request.getParameter("postcode")); useritem.setItem_officephone(request.getParameter("officephone")); useritem.setItem_mobilephone(request.getParameter("mobilephone")); useritem.setItem_email(request.getParameter("email")); userService.addUserItem(useritem); request.getSession().setAttribute("useritems",userService.getUserItem(user)); returnmapping.findForward("confirm"); }/**将新增加UserItem保存数据库中,其中保存了用户的信息:id*/ publicvoidaddUserItem(UserItemuseritem)throwsStoreException{ .. try{ session=HibernateSessionFactory.getSession(); tx=session.beginTransaction(); session.save(useritem); mit(); }.. }用户确认无误后点击图的“提交订单“,会出现下图: 图 部分实现代码: /* *向服务器提交定单,生成一个用户定单保存到数据库中; * *需要:用户信息,用户的详细信息,付款方式,定单项,商品; */ publicActionForwardaddOrder(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ intPayinfo=Integer.parseInt(request.getParameter("payway")); intuseritemid=Integer.parseInt(request.getParameter("useritemid")); HttpSessionsession=request.getSession(); Cartcart=(Cart)session.getAttribute("cart"); Useruser=(User)session.getAttribute("user"); Orderorder=newOrder(); order.setCreatetime(newjava.sql.Date(System.currentTimeMillis())); order.setOrderstate(0); order.setPayinfo(Payinfo); /* *order不但和用户user有关系,也和useritem有关系, *因为某个用户也可以给别人定书; */ order.setUser(user); order.setUserItem(userService.getUserItemById(useritemid)); /* *遍历session中car里面的商品,并且为每一类商品都生成一个定单项,存放在orderitem中; *定单和定单项是一对多的关系; *从Car中获得用户所选择的商品,并生成相应的订单项。 */ Map<Integer,CartProduct>products=cart.getProducts(); Set<Integer>keys=products.keySet(); Iterator<Integer>it=keys.iterator(); //记录一个定单的总和 doublesum=0; while(it.hasNext()){ Integerkey=it.next(); CartProductcartproduct=products.get(key); Productproduct=cartproduct.getProduct(); System.out.println(product); intnum=cartproduct.getNum(); sum=sum+(num*product.getPrice()); /* *<1>.把从cart中存放的商品取出来放到OrderItem对象中, *每一个商品product对应一个OrderItem对象; *<2>.然后把创建的OrderItem对象标示为其本身属性哪个定单的OrderItem对象; *<3>.最后将刚创建的OrderItem对象保存到指定的Order中,并且Order对象保存到数据库中; *更具从Car中取出的每个商品都生成一个对应的订单项。 */ OrderItemorderItem=newOrderItem(); orderItem.setProduct(product); //orderItem.setPrice(product.getPrice()); orderItem.setQuality(num); //建立双向关系 orderItem.setOrder(order); order.addOrderItem(orderItem); } order.setTotalprice(sum); orderService.saveOrder(order); request.setAttribute("order",order); returnmapping.findForward("success"); } /* *确定定单 */ publicActionForwardconfirmOrder(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ HttpSessionsession=request.getSession(); Useruser=(User)session.getAttribute("user"); request.setAttribute("useritems",userService.getUserItem(user)); returnmapping.findForward("confirm"); }/* *向数据库中保存一个指定的order对象; */ publicvoidsaveOrder(Orderorder)throwsStoreException{ try{ session=HibernateSessionFactory.getSession(); tx=session.beg

温馨提示

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

评论

0/150

提交评论