基于社区的商品代理服务平台系统设计1_第1页
基于社区的商品代理服务平台系统设计1_第2页
基于社区的商品代理服务平台系统设计1_第3页
基于社区的商品代理服务平台系统设计1_第4页
基于社区的商品代理服务平台系统设计1_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

安徽工业大学毕业设计论文任务书课题名称基于社区的商品代理服务平台系统设计学院计算机学院专业班级计算机科学与技术044班姓名学号毕业设计(论文)的工作内容起止时间2008年4月1日至2008年6月1日共8周指导教师签字系主任签字院长签字填写说明“任务书“封面请用鼠标点中各栏目横线后将信息填入,字体设定为楷体GB2312、四号字;在填写毕业设计(论文)内容时字体设定为楷体GB2312、小四号字。摘要本次毕业设计是设计并且实现一个基于B/S架构的购物系统。它是基于社区的商品代理服务平台,也可以把它看成一个购物网站,但由于业务逻辑的不同,它有三个用户社区用户顾客、物业代理商或商店、厂商生产厂商或代理商。从功能上可以分为六个模块用户管理模块、订单管理模块、邮件管理模块、厂商及商品管理模块、任务管理模块、管理员管理模块。在开发过程中,使用了JAVASCRIPT、JSP、STRUTS、HIBERNATE等技术,数据库采用MYSQL数据库,网站界面开发工具使用DREAMWEAVER,WEB服务器采用APACHETOMCAT50,开发平台使用ECLIPSE。目前已经实现了,用户注册,用户登录,用户信息修改。用户可以购物,通过电子邮件向物业咨询,查看定单信息。物业可以查看定单,通过电子邮件和用户交流,修改定单状态,向厂商订货。厂商可以注册商品,修改商品信息,查看物业的定货等。管理员管理可以增、删、改、查管理员,查看用户信息,管理用户等功能关键词JSP;STRUTS;HIBERNATE;MYSQL;社区购物网站;ABSTRACTTHISTIMEGRADUATIONDESIGNISDESIGNANDREALIZATION1ACCORDINGTOB/SSTRUCTUREOFSHOPPINGSYSTEMITISACCORDINGTOTHEMERCHANDISEOFCOMMUNITYTOACTFORSERVICETERRACE,CANALSOSEEITASASHOPPINGWEBSITE,BUTBECAUSEOFBUSINESSLOGICOFDISSIMILARITY,ITHAVETHREECUSTOMERCOMMUNITYCUSTOMERCUSTOMER,THINGINDUSTRYBUSINESSAGENTORSTORE,MANUFACTURERPRODUCEMANUFACTURERORBUSINESSAGENTCANISDIVIDEDINTOSIXMOLDPIECEFROMTHEFUNCTIONCUSTOMERTHEMANAGEMENTMOLDPIECE,THEORDERMANAGEMENTMOLDPIECE,MAILMANAGEMENTMOLDPIECE,MANUFACTURERANDMERCHANDISEMANAGEMENTMOLDPIECE,MISSIONMANAGEMENTMOLDPIECE,MANAGINGPERSONMANAGEMENTMOLDPIECEINTHEDEVELOPMENTPROCESS,USAGEJAVASCRIPT,JSP,STRUTS,HIBERNATEETCTECHNIQUE,DATABASEADOPTIONMYSQLDATABASE,WEBSITEINTERFACEDEVELOPMENTTOOLUSAGEDREAMWEAVER,WEBSERVERADOPTIONAPACHETOMCAT50,DEVELOPMENTTERRACEUSAGEECLIPSECURRENTLYALREADYREALIZATION,THECUSTOMERREGISTER,CUSTOMERREGISTER,CUSTOMERINFORMATIONMODIFICATIONTHECUSTOMERCANPASSANEMAILACONSULTATIONTOWARDTHETHINGINDUSTRYWITHTHESHOPPINGANDLOOKINTOANORDERFORMINFORMATIONTHETHINGINDUSTRYCANLOOKINTOORDERFORM,PASSEMAILANDCUSTOMEREXCHANGES,MODIFICATIONORDERFORMAPPEARANCE,ORDERTOWARDTHEMANUFACTURERTHEMANUFACTURERCANREGISTERAMERCHANDISE,MODIFICATIONMERCHANDISEINFORMATION,LOOKINTOANORDERGOODSOFTHINGINDUSTRYETCTHEMANAGEMENTOFMANAGINGPERSONCANINCREASE,DELETE,CHANGE,CHECKAMANAGINGPERSON,LOOKINTOCUSTOMERSINFORMATION,MANAGEMENTCUSTOMERETCFUNCTIONKEYWORDJSPSTRUTSHIBERNATEMYSQLCOMMUNITYSHOPPINGWEBSITE目录1绪论12毕业设计选用的技术和工具221为什么使用JAVA语言2211JAVA语言的特点2212选用JAVA的原因221ECLIPSE概述222TOMCAT介绍223MYSQL介绍223SERVLET技术3231SERVLET概述3232SERVLET的优势324JSP技术4241JSP的概述4242JSP的特点和优点425STRUTS技术5251MVC设计模式526HIBERNATE技术8261HIBERNATE的产生背景8262HIBERNATE简介8263HIBERNATE原理93需求分析和概要设计1031系统用例说明1032系统设计中的层次划分11321视图层11322业务层14323持久化层1533商品注册分析1734厂商管理分析1835邮件管理分析1836静态模型194数据库设计2141ER图21411邮件表21412商品类型表21413商品表22414厂商表2242数据库表说明22421邮件表22422商品表23423商品类型表23424厂商表2343数据库表SQL语句245详细设计2751系统模块划分2752邮件管理模块27521发送邮件28522查看邮件列表29523删除邮件29524查看邮件内容31525回复邮件3153厂商及商品管理模块34531注册新商品34532查看注册商品列表36533修改商品信息36534删除商品386、测试4161整合测试4162功能测试4163商品注册测试用例41结论44致谢45参考文献46附录一系统部分代码47附录二英文翻译541绪论中国互联网网络信息中心的数据显示,到2007年年底,中国网民人数已经达到21亿。中国2008年的网民人数继续增长,网民人数现在已经超越美国,成为全球网络用户最多的国家。随着网民的增加,网购用户也迅速增加。上网购物已成为主流消费人群的消费习惯之一。以2003年作为网络购物成长期的起点,中国大陆累计购物用户规模首次突破1000万,达到1520万人,经过前期的高速增长后,购物用户增长逐步放缓,累计到2006年12月底,中国网络购物市场总体用户数达到4310万人,较上年增长326,预计到2010年用户规模将突破1亿。市场交易规模2007年我国网购总交易量达594亿元,和2006年312亿的总成交额相比,增长了904。随着网上购物的发展,商品流通基础设施和配套行业的重点将会发生偏转。各类送货系统、快递运输公司、支付公司、安全、广告、商务软件、信息服务等新型物流和中介机构发展呈加速态势,并且有很大的发展空间。不难看出,由于电子商务的出现和发展,商品流通领域将面临全方位的深刻变革。网上购物以其特有的优势,必将成为将来趋势。首先,它降低了商家成本,商家不用租昂贵的店面,不用招大量的营业员。其次,他大大扩大了商家的销售范围,有互联网的地方,都是销售范围。对顾客来说,不用出家门就可购物,更为其带来了更大的方便。网上购物以其低廉的价格,方便快捷的方式,短短几年已经风魔全球。因为它突破了时间和地域的限制,顾客可以24小时上网购物,你不尽可以购买本地的商品,还可以购买异地,甚至国外的商品。但如果你想开一家网上商店,必须具备相应的技术知识,以便管理商品。这对一般人来说,并不简单。网上购物的发展,同样带来一些信誉问题,如产品质量,款到货不到的现象。而我们的基于社区的商品代理服务平台,商店的管理者和商品的销售者是不同的,并且用户和物业是固定的。这一定程度上保证了商店的信誉,维护了顾客的利益。带着这种思想我们开始了毕业设计。2毕业设计选用的技术和工具21为什么使用JAVA语言211JAVA语言的特点1、纯面向对象2、跨平台“WRITEONCE,RUNANYWHERE”一次编译到处运行。JAVA编译后生成的是CLASS文件,它是运行在JAVA虚拟机上的。3、简单JAVA语法去掉了指针,运算符重载,多重继承等;有垃圾回收器程序员只负责对象的创建,垃圾回收器负责对象销毁和资源释放,一般只会在内存空间不够的情况下进行资源回收212选用JAVA的原因JAVA除了上述特点,另外它还提供了大量的开发工具包,加快了项目的开发进度,与JAVA相关的技术也都已很成熟,而且有大量的开源框架供开发者免费使用。本次毕业设计就是基于互联网的,是面向互联网用户的购物网站。JAVA与互联网技术有了很好的融合,J2EE就是JAVA的一个重要发展方向,非常适合开发企业应用网站。所以选用了JAVA作为这次毕业设计的基础语言。我们选用的其它技术也都是与JAVA相关,或者是用JAVA编写的,包含在J2EE这个大范围内的。22开发环境及开发工具的介绍21ECLIPSE概述ECPIPSE是JAVA的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。它是开源免费的,可以在网上下载。如果要用到WEB开发,还要安装MYECLIPSE插件。ECPIPSE本身也是用JAVA开发的,与JAVA有很好的融合性,本次项目使用的就是JAVA语言,再加上此平台是免费的,所以使用它作为开发平台。22TOMCAT介绍TOMCAT是一个免费的开源的SERLVET容器,它是APACHE基金会的JAKARTA项目中的一个核心项目,由APACHE,SUN和其它一些公司及个人共同开发而成。由于有了SUN的参与和支持,最新的SERVLET和JSP规范总能在TOMCAT中得到体现。因此,它现在使用比较广泛的一种WEB服务器同样它也是免费,与JAVA有很好的融合性,这也是我们使用它的原因。23MYSQL介绍MYSQL是最受欢迎的开源SQL数据库管理系统,它由MYSQLAB开发、发布和支持。MYSQLAB是一家基于MYSQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MYSQL是MYSQLAB的注册商标。MYSQL也是开源的,这意味着任何人都可以使用和修改该软件,任何人都可以从INTERNET上下载和使用MYSQL而不需要支付任何费用。如果你愿意,你可以研究其源代码,并根据你的需要修改它。另外,它占用内存较小,如果是ORACLE一般的电脑很难畅通的运行。MYSQL非常适合单机开发。ECLIPSEMYSQLTOMCAT是当前J2EE开发的流行组合。23SERVLET技术231SERVLET概述SERVLET技术是SUN公司提供的一种实现动态网页的解决方案,它是基于JAVA编程语言的WEB服务器端编程技术,主要用于在WEB服务器端动态生成对客户端的响应。SERVLET技术也是JSP技术(另外一种动态网页开发技术)的基础。一个SERVLET程序就是一个实现了特殊接口的JAVA类,用于被支持SERVLET的WEB服务器调用和运行,即只能运行于具有SERVLET引擎的WEB服务器端。一个SERVLET程序负责处理它所对应的一个或一组URL地址的访问请求,接收访问请求信息和产生响应内容。232SERVLET的优势SERVLET是JAVA技术对CGI编程的回答。SERVLET程序在服务器端运行,动态地生成WEB页面。与传统的CGI和许多其他类似CGI的技术相比,JAVASERVLET具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资高效在SERVLET中,每个请求由一个轻量级的JAVA线程处理(而不是重量级的操作系统进程)。在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于SERVLET,处理请求的是N个线程,只需要一份SERVLET类代码。在性能优化方面,SERVLET也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。方便SERVLET提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理COOKIE、跟踪会话状态等。功能强大在SERVLET中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,SERVLET能够直接和WEB服务器交互,而普通的CGI程序不能。SERVLET还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。可移植性好SERVLET用JAVA编写,SERVLETAPI具有完善的标准。因此,为IPLANETENTERPRISESERVER写的SERVLET无需任何实质上的改动即可移植到APACHE、MICROSOFTIIS或者WEBSTAR。几乎所有的主流服务器都直接或通过插件支持SERVLET。节省投资不仅有许多廉价甚至免费的WEB服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持SERVLET的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。这些就是选择它的原因。24JSP技术241JSP的概述JAVASERVERPAGES(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,许多由CGI程序生成的页面大部分仍旧是静态HTML,动态内容只在页面中有限的几个部分出现。但是包括SERVLET在内的大多数CGI技术及其变种,总是通过程序生成整个页面。JSP使得我们可以分别创建这两个部分。从本质上说,JSP也是一种SERVLET技术WEB服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的JAVA程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与JAVASERVLET一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。242JSP的特点和优点为了快速方便地进行动态网站的开发,JSP在以下几个方面做了改进,使其成为快速建立跨平台的动态网站的首选方案。1将内容的生成和显示进行分离用JSP技术,WEB页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,并使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求变化的,例如请求账户信息或者特定的一瓶酒的价格等)。生成内容的逻辑被封装在标识和JAVABEANS组件中,并且捆绑在脚本中,所有的脚本在服务器端运行。由于核心逻辑被封装在标识和JAVABEANS中,所以WEB管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和脚本,生成所请求的内容(例如,通过访问JAVABEANS组件,使用JDBC技术访问数据库或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这既有助于作者保护自己的代码,又能保证任何基于HTML的WEB浏览器的完全可用性。2可重用组件绝大多数JSP页面依赖于可重用的、跨平台的组件(JAVABEANS或者ENTERPRISEJAVABEANS组件)来执行应用程序所要求的复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者和客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。3采用标识WEB页面开发人员不会都是熟悉脚本语言的编程人员。JSP技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JAVABEANS组件,设置或者检索组件属性,下载APPLET,以及执行用其他方法更难于编码和耗时的功能。4适应平台几乎所有平台都支持JAVA,JSPJAVABEANS几乎可以在所有平台下通行无阻。从一个平台移植到另外一个平台,JSP和JAVABEANS甚至不用重新编译,因为JAVA字节码都是标准的与平台无关的。综合以上原因,再加上JSP能够动态显示网页,而这就是这次设计需要的功能。25STRUTS技术251MVC设计模式分布式企业应用软件结构复杂、涉及多种技术,对设计开发人员提出了很高的要求。在此情况下,运用设计模式可复用的设计方案进行软件的设计开发十分必要。MVC模式已被证明是一种成功的软件设计模式,STRUTS就是基于MVC模式的一种框架。所谓“MVC模式”是三个单词的首字母缩写,它们是MODEL(模型)、VIEW(视图)和CONTROLLER(控制)。这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。1)最上面的一层,是直接面向最终用户的“视图层”。它是提供给用户的操作界面,是程序的外壳。2)最底下的一层,是核心的“数据层”,也就是程序需要操作的数据或信息。3)中间的一层,就是“控制层”,它负责根据用户从“视图层”输入的指令,选取“数据层”中的数据,然后对其进行相应的操作,产生最终结果。这三层是紧密联系在一起的,又是互相独立的,每一层内部的变化不影响其他层,并且设计了接口,供其上面一层调用。这样一来,程序编写就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。这也是实现了程序对高内聚,低偶合的要求。MVC其结构如图1所示图1MVC模式框架模型表示业务逻辑和业务规则等,在MVC的三个部件中拥有最多的处理任务。它可以用JAVABEAN和EJB等组件技术来处理数据库的访问。模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。视图是在屏幕上显示的。模型进行操作之后,其结果就是通过视图来显示的。在视图中其实没有真正的处理发生,只是作为一种输出数据并允许用户操作的方式。控制器用于管理用户与视图发生的交互。一旦用户想对模型进行处理时,它不能直接去执行模型,而是通过控制器来间接地实现。控制器能从视图中取值,然后将相应的值传给模型进行处理。控制器接受用户的输入并调用模型和视图去完成用户的需求。由上述可知,MVC模式的处理过程是首先由控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图返回数据,并通过表达层呈现给用户。252STRUTS简介STRUTS是APACHE组织的一个开放源码项目。STRUTS是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是SERVLET,JSP和CUSTOMTAGLIBRARY。其基本构成如图2所示。图2STRUTS框架图由图2可以看出,在STRUTS框架中CONTROLLER功能由ACTIONSERVLET和ACTIONMAPPING对象构成,核心是一个SERVLET类型的对象ACTIONSERVLET,它用来接受客户端的请求。ACTIONSERVLET包括一组基于配置的ACTIONMAPPING对象,每个ACTIONMAPPING对象实现了一个请求到一个具体的MODEL部分中ACTION处理器对象之间的映射。MODEL部分由ACTION和ACTIONFORM对象构成。所有的ACTION处理器对象都是开发者从STRUTS的ACTION类派生的子类。ACTION处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的VIEW组件以产生响应。STRUTS提供的ACTIONFORM组件对象可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和STRUTS提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,ACTION处理器对象可以直接对它进行读写,而不再需要和REQUEST、RESPONSE对象进行数据交互。通过ACTIONFORM组件对象实现了对VIEW和MODEL之间交互的支持。VIEW部分是通过JSP技术实现的。STRUTS提供了自定义的标记库,通过这些自定义标记可以非常好地和系统的MODEL部分交互,通过使用这些自定义标记创建的JSP表单,可以实现和MODEL部分中的ACTIONFORM的映射,完成对用户数据的封装。STRUTS的工作流程和MVC设计模式差不多,首先,视图层接受用户请求,可以把请求封装在FORM表单里,通过查找STRUTSCFGXML配置文件(既控制器),转发到相应的ACTION里(既模型层),在ACTION里调用相应的业务方法,经过处理以后,返回响应结果。控制器获得响应结果,根据配置文件,返回到响应界面(视图层)给用户看。中间还可以加表单验证。这就是STRUTS工作的基本流程。26HIBERNATE技术261HIBERNATE的产生背景大多数应用程序都需要处理数据。JAVA应用程序运行时,往往把数据封装为相互连接的对象网络,但是当程序结束时,这些对象就会消失在一团逻辑中,所以需要有一些保存它们的方法。有时候,甚至在编写应用程序之前,数据就已经存在了,所以需要有读入它们和将其表示为对象的方法。手动编写代码来执行这些任务不仅单调乏味、易于出错,而且会占用整个应用程序的很大一部分开发工作量。优秀的面向对象开发人员厌倦了这种重复性的劳动,他们开始采用通常的“积极”偷懒做法,即,创建工具,使整个过程自动化。对于关系数据库来说,这种努力的最大成果就是对象/关系映射ORM工具。这类工具有很多,从昂贵的商业产品到内置于J2EE中的EJB标准。然而,在很多情况下,这些工具具有自身的复杂性,使得开发人员必须学习使用它们的详细规则,并修改组成应用程序的类以满足映射系统的需要。由于这些工具为应付更加严格和复杂的企业需求而不断发展,于是在比较简单和常见的场景中,使用它们所面临的复杂性反而盖过了所能获得的好处。这引起了一场革命,促进了轻量级解决方案的出现,而HIBERNATE就是这样的一个例子。262HIBERNATE简介HIBERNATE是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使JAVA程序员可以随心所欲的使用对象编程思维来操纵数据库。它的工作原理是通过文件把值对象和数据库表之间建立起一个映射关系,这样,我们只需要通过操作这些值对象和HIBERNATE提供的一些基本类,就可以达到使用数据库的目的。例如,使用HIBERNATE的查询,可以直接返回包含某个值对象的列表(LIST),而不必向传统的JDBC访问方式一样把结果集的数据逐个装载到一个值对象中,为我们的编码工作节省了大量的劳动。HIBERNATE提供的HQL是一种类SQL语言,它和EJBQL一样都是提供对象化的数据库查询方式,但HQL在功能和使用方式上都非常接近于标准的SQL。HIBERNATE不仅提供了从JAVA类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库,HIBERNATE可以大大减少操作数据库的工作量。另外HIBERNATE可以利用代理模式来简化载入类的过程,这将大大减少利用HIBERNATEQL从数据库提取数据的代码的编写量,从而节约开发时间和开发成本HIBERNATE可以和多种WEB服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。263HIBERNATE原理HIBERNATE技术本质上是一个提供数据库服务的中间件。它的架构如图3所示图3HIBERNATE架构图图3显示了HIBERNATE的工作原理,它是利用数据库以及其他一些配置文件如HIBERNATEPROPERTIES,XMLMAPPING等来为应用程序提供数据持久化服务的。HIBERNATE具有很大的灵活性,但同时它的体系结构比较复杂,提供了好几种不同的运行方式。在轻型体系中,应用程序提供JDBC连接,并且自行管理事务,这种方式使用了HIBERNATE的一个最小子集;在全面解决体系中,对于应用程序来说,所有底层的JDBC/JTAAPI都被抽象了,HIBERNATE会帮你实现所有的细节。3需求分析和概要设计31系统用例说明图4系统用例图从上图可以看出,网站有未注册用户、物业代表、用户代表、厂商代表,还有管理员。对于未注册用户,他可以了解网站的公开信息,如商品信息、商品价格信息、厂商信息等,但如果他想购物,就要登录或注册了。当一个用户要注册一个购物者时,他要选泽一个物业,作为买商品的代理人。这是不同与一般购物商店的地方,这样设计的最根本的目的是保证购物者的利益。通过这种长期的代理人关系,以保证购物双方的利益。一旦建立了这种关系,物业为保持一个长期的客户,必然努力保证自己的信誉,购物者也可以凭借自己的信誉获得购物的优惠。这也是本网站的建设的核心思想。厂商在网站上直接向消费者提供商品信息,以保证统一商品价格,维护厂商的利益,拉近了和顾客的距离。当顾客注册为一个普通用户后,他便可以购物了,同时可以向自己的物业发送邮件,咨询商品信息,对于顾客买不熟悉的商品有很大的帮助。当然了他还可以查看自己的定单,了解自己的购物情况。当顾客注册为一个物业后,他便可以进入邮件管理系统,查看用户留言,查看顾客定单,并生成任务向厂商订货。对于厂商来说,他可以注册商品,修改商品信息,并且可以查看物业定货。对于网站管理员来说,他可以管理各种用户信息,评定各用户的信用等级,对于一些不合格的厂商和物业有删除功能。网站的基本流程图如图5所示物业用户未登陆用户社区用户邮件列表商品列表定单列表注册、登陆注册、登陆注册、登陆查看查看查看生成采购任务生成确认供货任务生成确认注册商品厂商用户图5系统流程图32系统设计中的层次划分本系统从层次上可以划分为三个层次视图层,业务层和持久化层。321视图层所谓视图层,就是和用户交互的那部分,他直接和用户打交到,用户有他的使用习惯和风格,我们不能因为为了满足用户习惯,而去改变业务逻辑。这就要求我们在程序设计时,尽量把视图层和业务逻辑层分割开来,使得页面的改变,不影响业务逻辑。因此,在视图层中,我们用了STRUTS框架。为什么要用他那因为他很好的利用了MVC的设计模式(详见上面的技术介绍),很好的满足了我们的需求。我们利用JSP做为给用户的显示业面,当用户发送请求后,STRUTS会去读取配制文件,配置文件就是STRUTS的控制器,根据配置文件转发到相应的ACTION,通过ACTION调用相应的业务逻辑。当其中的一个层次改变时,其它的层次不用改变,大大提高了代码的可重用性和可维护性。这也是我们使用STRUTS框架的原因。下图为STRUTSCONFIGXML控制器的部分代码/商品信息的FORM表单/邮件信息的FORM表单/全局转发/以下是ACTION影射列表/STRUTS通过PATH找到相应的ACTION,ACTION里调用业务方法,PARAMETER的值是ACTION里/的方法名。/此ACTION获得收件箱邮件的/此ACTION获得发件箱邮件的/当执行完ACTION后,会通过此路径转发到相应的页面或ACTION/此ACTION用于厂商注册商品并且STRUTS还给我们提供了FORM表单和验证功能,当用户向服务器发送信息时。FORM表单会自动把信息封装,并且可以根据需求验证。这样,如果用户输入的信息错误,控制器就能直接转回给用户,不用进入以后的模型层和业务逻辑,这就大大提高了效率。减少了程序异常的可能性。在模型层,他是直接和业务逻辑交互的,STRUTS通过ACTION调用业务逻辑方法,当业务逻辑改变时,他不会影响视图层和控制器层。大大降低了,程序间的偶合性。322业务层业务层是程序的核心部分,一个好的业务分析抽象,即可减少代码量,也可提高效率。业务层是对业务分析得出的结果,他是实现系统功能的部分,同时又是和视图层、持久化层交互的部分。他根据业务需要,查询数据库,或者向数据库存入数据。同时又要对这些数据,进行操作,以向视图层发送,满足用户需要。在这个系统中,我们使用了工厂设计模式,既把业务封装成一个接口供视图层使用,也是为了减少层次之间的联系,提高代码的可重用性和可维护性。下图是工厂模式的部分代码/从此工厂可以获得收件箱和发件箱PACKAGEEDUAHUTCSCMSSSERVICEPUBLICCLASSBOXFACTORY/创建收件箱PRIVATESTATICFINALRECEIVERBOXRBOXNEWRECEIVERBOX/创建发件箱PRIVATESTATICFINALSENDBOXSBOXNEWSENDBOX/通过此方法返回一个收件箱PUBLICSTATICRECEIVERBOXGETRBOXRETURNRBOX/通过此方法返回一个发件箱PUBLICSTATICSENDBOXGETSBOXRETURNSBOX323持久化层持久化层是和数据库直接打交到的,他对数据的持久化和页面的动态显示有重要意义。一提到数据库,我们就会想到SQL语句。对,SQL语句的编写过,是容易出错,但又要大量重复劳动的工作。因此,我们在持久化层,使用HIBERNATE框架,它很好的封装了SQL语句,把它转化为了,具有面向对象特点的HQL语句。使我们不在操作那些无意义的字段,我们可以根据面向对象的特点,来操作数据库。使用HIBERNATE,你不需要实现任何不可思议的接口以便能够持续存在。惟一需要做的就是创建一份XML“映射文档”,告诉HIBERNATE您希望能够保存在数据库中的类,以及它们如何关联到该数据库中的表和列,然后就可以要求它以对象的形式获取数据,或者把对象保存为数据。运行时,HIBERNATE读取映射文档,然后动态构建JAVA类,以便管理数据库与JAVA之间的转换。在HIBERNATE中有一个简单而直观的API,用于对数据库所表示的对象执行查询。要修改这些对象,(一般情况下)只需在程序中与它们进行交互,然后告诉HIBERNATE保存修改即可。类似地,创建新对象也很简单;只需以常规方式创建它们,然后告诉HIBERNATE有关它们的信息,这样就能在数据库中保存它们。下面是商品表的影射文件代码/GOODS为类名,TB_GOODS是与GOODS相对应的表名/主键/CLASS后对应的是主键产生方式,此句为自动生成/NAME后为类的属性,COLUMN后为表中对应的字段,UNIQUE是判断表中的字段是否唯一另外,HIBERNATE还给我们提供了连接数据库的配置文件HIBERNATECFGXML,下面是我在系统中使用的配置文件TRUETRUE/数据库对应的方言ORGHIBERNATEDIALECTMYSQLDIALECT/连接数据库对应的驱动COMMYSQLJDBCDRIVER/连接数据库的URL,后面是数据库名JDBCMYSQL/LOCALHOST3306/CMSS/登录名ROOT/登录密码1234CREATE/声明影射文件33商品注册分析厂商要注册商品的目的是在网站上销售商品,因此,对商品要有详细的描述,如商品名,价格,对商品功能的描述。要有图片,以便用户更直观的流览商品。可能一段时间商品要打折,或者其他信息,对商品要有备注等描述属性。另外,商品有很多类,因此要对商品进行归类。为了使将来能够增加,修改商品类型。因此,我们新建了一个类,商品类型类。每个商品类型,都有一个商品类型字段。为了方便直接在商品类里获得商品类型名,因此,在商品类里,它的商品类型字段是字符串。用户在注册商品时,显示商品类型下拉列表,供用户选择。商品和商品类型的类图如图7所示图734厂商管理分析厂商在网站上注册商品是为了销售,为了保证厂商的信誉,厂商要公开自己的信息,以便用户或网站管理者查证。这样对于信誉好的厂商来说,这样可以扩大知名度,促进本公司其它商品的销售。对于用户来说,通过对公司信息的了解,也能更放心的选择自己的商品。对于管理者来说,他要尽力确保在网站上注册商品的公司都是有信誉的,以确保购物者的利益,同时也是扩大网站访问量的一种方式。对于厂商用户,他除了要有用户名密码外(这些是保密的),还要有自己公司的真实姓名,以便用户查找,要有准确的地址,以确保其真实性。当物业要购买商品时,要能够找到你的联系方式。当商品有问题时,要确保别人能够投诉。因此,厂商的类图如图8所示图835邮件管理分析由于本网站不同于一般的购物网站,一般的购物网站,就象商店一样,你想买东西了,可以去这家商店,也可以去那家。而我们的这个购物网站,用户只能向你的物业买东西,他是一种代理人的关系,物业就是你的购物代理人。由于你们是一种长期的代理关系,物业为了保持这个长期的客源,一定会保证信誉,间接上也保护了购物者的利益。代理人不光提供商品,同时也向他的用户提供免费的咨询服务,也可以说是对顾客保持这种长期关系的一种回报。这对顾客买一些自己不了解的商品,有很大的吸引力,由于他们是一种长期的代理人关系,这就大大降低了,物业欺骗顾客的现象。而我们的邮件服务,就是为了满足他们这种交流需求的。我们的邮件是与用户和物业帮定的,但是不对厂商开放。因为他与顾客直接交流的可能性极小。当顾客成为注册用户后,他就可以进入他的邮件系统。我们的邮件是内部邮件,他是物业和用户交流用的,而一个用户只能有一个物业。因此,为了方便用户,用户发的邮件,不用输入收件人,邮件会自动发给他的物业,同时将信存入发件箱。而对于物业来说,他要选定用户,然后可以向用户发邮件。为了降低项目投入成本,我们用数据库代替邮件服务起器,把邮件信息存入数据库。对于一封邮件他对于收件人和发件人都是可见的。我们可以把他存入一条记录。存入一条记录又有一个新问题,当发件人删除邮件时,而发件人没有删除,怎么办我们的解决方案是,增加两个字段,以判断,此封邮件对于发件人和收件人分别处于什么状态。他是发件类型和收件类型,发件类型有已发送和已删除状态。收件类型有已读、未读和已删除状态。它的类图如图9所示图936静态模型图10静态模型图4数据库设计41ER图411邮件表IDEMAILTIMESENDTYPETITLEINFORMATIONSENDMANRECEIVEMANRECEIVETYPE412商品类型表GOODSTYPETITLETITLE413商品表IDGOODSGOODSTYPEDESCRIPTIONITEMPRICEVERSIONNAMEFACTORYNAMENOTEIMAGE414厂商表USERIDUSERIDFACTORYRELATIONSADDRESSUSERTYPEFACTORYNAMELOGINNAMELOGINPWDPEOPLELEVELREACTIONTYPE42数据库表说明421邮件表NAMECODEDATATYPELENGTHPRIMARYFOREIGNKEY邮件编号IDINTX发件人SENDMANINTX收件人RECEIVEMANINTX标题TITLEVARCHAR100100内容INFORMATIONVARCHAR10241024发件类型SENDTYPEINT收件类型RECEIVETYPEINT发件时间TIMETIMESTAMP422商品表NAMECODEDATATYPELENGTHPRIMARYFOREIGNKEY商品编号IDINTX商品名NAMEVARCHAR255255X生产厂商名FACTORYNAMEVARCHAR255255X单价ITEMPRICEVARCHAR100100型号VERSIONVARCHAR255255描述DESCRIPTIONTEXT备注NOTETEXT商品类型GOODSTYPEVCHAR255255图片IMAGEVARCHAR255255423商品类型表NAMECODEDATATYPELENGTHPRIMARYFOREIGNKEY商品类型编号IDINTX商品类型GOOTYPEVARCHAR255255424厂商表NAMECODEDATATYPELENGTHPRIMARYFOREIGNKEY厂商编号USERIDINTX用户名LOGINNAMEVARCHAR255255密码LOGINPWDVARCHAR255255用户类型USERTYPEINT厂商名FACTORYNAMEVARCHAR255255地址ADDRESSVARCHAR255255联系人PEOPLEVARCHAR255255联系方式RELATIONSVCHAR255255投诉方式REACTIONTYPEVARCHAR255255等级LEVELINT43数据库表SQL语句/厂商信息表TB_FACTORY(创建厂商表,USERID为主键,唯一键为LOGINNAME,FACTORYNAME。)CREATETABLECMSSTB_FACTORYUSERIDINT11NOTNULLAUTO_INCREMENT,LOGINNAMEVARCHAR255DEFAULTNULL,LOGINPWDVARCHAR255DEFAULTNULL,USERTYPEINT11DEFAULTNULL,FACTORYNAMEVARCHAR255DEFAULTNULL,ADDRESSVARCHAR255DEFAULTNULL,PEOPLEVARCHAR255DEFAULTNULL,RELATIONSVARCHAR255DEFAULTNULL,REACTIONTYPEVARCHAR255DEFAULTNULL,LEVELINT11DEFAULTNULL,PRIMARYKEYUSERID,UNIQUEKEYLOGINNAMELOGINNAME,UNIQUEKEYFACTORYNAMEFACTORYNAMEENGINEINNODBDEFAULTCHARSETGB2312/商品表TB_GOODS(创建商品表,ID为主键,唯一键为NAME,外键为GOODSTYPE,它引用TB_GOODSTYPE表的GOOTYPE键)CREATETABLECMSSTB_GOODSIDBIGINT20NOTNULLAUTO_INCREMENT,NAMEVARCHAR255DEFAULTNULL,FACTORYNAMEVARCHAR255DEFAULTNULL,ITEMPRICEDOUBLEDEFAULTNULL,VERSIONVARCHAR255DEFAULTNULL,DESCRIPTIONTEXT,NOTETEXT,GOODSTYPEVARCHAR255DEFAULTNULL,IMAGEVARCHAR255DEFAULTNULL,PRIMARYKEYID,UNIQUEKEYNAMENAMEENGINEINNODBDEFAULTCHARSETGB2312/商品类型表TB_GOODSTYPE(创建商品类型表,ID为主键,唯一键为GOOTYPE)CREATETABLECMSSTB_GOODSTYPEIDINT11NOTNULLAUTO_INCREMENT,GOOTYPEVARCHAR255DEFAULTNULL,PRIMARYKEYID,UNIQUEKEYGOOTYPEGOOTYPEENGINEINNODBDEFAULTCHARSETGB2312/邮件列表(创建邮件表,ID为主键,外键为SENDMAN和RECEIVEMAN,SENDMAN引用TB_USER表的ID键,RECEIVEMAN引用TB_ZONE表的ID键)CREATETABLET_EMAILIDINT20AUTO_INCREMENT,SENDMANINT20,RECEIVEMANINT20,TITLEVARCHAR100,INFORMATIONVARCHAR1024,SENDTYPEINT2DEFAULT1,RECEIVETYPEINT2DEFAULT1,TIMETIMESTAMPDEFAULTCURRENT_TIMESTAMP,CONSTRAINTT_EMAIL_PK_IDPRIMARYKEYIDENGINEINNODBDEFAULTCHARSETGB23125详细设计51系统模块划分由以上业务需求的分析可知,本系统可以划分为六个模块,他们是1用户管理模块2订单管理模块3邮件管理模块4厂商及商品管理模块5任务管理模块6管理员管理模块由于是三个人合作这个项目,分工是免不了的。根据小组安排,本人负责完成邮件管理模块和厂商及商品管理模块。对他们的分析如下52邮件管理模块图11当用户或物业登陆以后,他们就可以进入邮件管理模块。厂商是无权进入的。邮件是内部邮件,而且,用户只能向他的物业发送,以便咨询商品信息。而物业只能向他的用户发送。当然了,可以选择向不同的用户发送。521发送邮件当用户或物业点击发送邮件后,便可编写邮件。如果是用户,他不用输入收件人。因为他的收件人只有一个,那就是物业。如果是物业,他要给哪个用户发送。或者给多个用户发送。发送邮件的基本流程如下、获取用户标识用户身份判断不合法,抛出异常收件人判断获取收件人名称发送邮件获取邮件内容获取邮件标题不合法,抛出异常基本流程1、获取用户标识2、获取收件人名称3、获取邮件标题4、获取邮件内容5、发送邮件扩展流程3用户身份非法,并提示用户类型错误5数据库异常提示数据库异常,并拒绝相关操作522查看邮件列表邮件列表有两个,一个是收件箱,一个是发件箱。在收件箱,可以看到那些邮件,哪些未读。在这里,用户和物业的功能差不多。当用户点击收件箱或发件箱时,会触发程序查询数据库。获得属于本用户的邮件,然后就可在页面上显示出来。查看邮件列表的基本流程如下获取用户标识用户身份判断不合法,抛出异常获取收件人为用户的所有邮件获取用户发出的所有邮件基本流程1、获取用户标识2、获取收件人为用户的所有邮件3、获取用户发出的所有邮件扩展流程1用户身份非法,并提示用户无此权限523删除邮件选择已读邮件,删除即可。在这里,是把邮件存在数据库里的,只有收件人和发件人都删除后,才真正把邮件从数据库删除。当收件人删除,而发件人没删除时,邮件对收件人不可见,而对发件人是可见的。当收件人和发件人都删除同一封邮件后,此封邮件才在数据库中删除获取用户标识用户身份判断不合法,抛出异常邮件标识判断获取邮件标识删除指定邮件不合法,抛出异常邮件状态判断修改邮件状态删除邮件基本流程基本流程1、获取用户标识2、获取邮件标识3、删除邮件扩展流程2邮件标识判断,如果邮件不存在,抛出异常2邮件状态判断,将邮件设为删除状态524查看邮件内容选择想要查看的邮件标题,即可查看邮件内容了。当邮件是未读状态时,查看邮件以后,邮件状态改为已读状态。查看邮件内容的基本流程图如下获取用户标识用户身份判断不合法,抛出异常邮件标识判断获取邮件标识显示指定邮件不合法,抛出异常邮件状态判断修改邮件状态基本流程1、获取用户标识2、获取邮件标识3、显示邮件信息扩展流程2邮件标识判断,如果邮件不存在,抛出异常2邮件状态判断,将邮件设为删除状态525回复邮件对收到的邮件,进行回复。和写一封邮件类似。

温馨提示

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

评论

0/150

提交评论