• 1.35 MB
  • 2022-04-22 11:24:37 发布

毕业设计电子商务购物平台.doc

  • 36页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'毕业设计电子商务购物平台目录第1章前言1第2章可行性研究2§2.1经济上可行性2§2.2技术上可行性2§2.3操作上可行性2第3章相关知识和开发工具简介3§3.1MyEclipse简介3§3.2ApacheTomcat服务器4§3.3JSP技术概述4§3.4Struts技术概述5§3.5Hibernate技术概述6§3.6Spring技术概述7§3.6SqlServer简介8§3.7MVC的架构思想8第4章需求分析10§4.1运行环境需求10§4.2MVC开发模式定位10§4.3系统用例图11第5章概要设计13§5.1系统流程图13§5.2功能模块分析14第6章详细设计18§6.1前台模块设计18§6.2后台模块设计21§6.3数据库设计27结论31致谢32参考文献33I I 第1章前言电子商务(electroniccommerce)通常是指是在全球各地广泛的商业贸易活动中,在因特网开放的网络环境下,基于浏览器/服务器应用方式,买卖双方不谋面地进行各种商贸活动,实现消费者的网上购物、商户之间的网上交易和在线电子支付以及各种商务活动、交易活动、金融活动和相关的综合服务活动的一种新型的商业运营模式。目前电子商务的分类有:B2B、B2C、C2C、B2M、M2C(即BMC)、B2A(即B2G)、C2A(即C2G)、SNS-EC(社交电子商务)10类电子商务模式等等。随着科技的快速发展,人民生活水平的逐渐提高,人们生活理念和消费理念有了很大改变,通过互联网,商家和客户之间可以直接进行交流。电子商务将传统的商务流程电子化、数字化,一方面以电子流代替了实物流,可以大量减少人力、物力,降低了成本;另一方面突破了时间和空间的限制,使得交易活动可以在任何时间、任何地点进行,从而大大提高了效率。通过互联网,商家之间可以直接交流、谈判、签合同,消费者也可以把自己的反馈建议反映到企业或商家的网站,而企业或者商家则要根据消费者的反馈及时调查产品种类及服务品质,做到良性互动。电子商务所具有的开放性和全球性的特点,为企业创造了更多的贸易机会。由于电子商务涉及的范围比较广泛,最终我将毕业设计选题定为在线电脑购物商城系统。该系统是一个基于B2C(BusinesstoCustomer)模式的电子商务系统,提供有关电脑方面产品的专业服务。通过这个系统,给销费者提供了一个更加专业高效的服务,为用户节省了大量的时间;同时通过智能化的管理,使得商场的工作效率得到很大的提商,也加强了管理层对商场的管理。第33页共34页 第2章可行性研究§2.1经济上可行性现在,计算机的价格已经十分低廉,性能却有了长足的进步。本系统的开发,为传统的电脑购物商城提供了一个新的销售模式,为商城的工作效率带来了一个质的飞跃,主要表现有以下几个方面:第一,本系统的运行可以代替更多传统的人工劳动,节省了大量人力资源以及为此付出的成本;第二,本系统使得商城的管理变得更加的智能化,提高了工作效率;第三,本系统使得更多的人可以不用出门就可以买到心仪的产品,提高了商城的流量,同时也提高了商城的交易量,大幅提高商城的营业额。所以,本系统所获得的收益将远远大于它的投入,在经济上是可行的。§2.2技术上可行性本系统的开发使用SqlServer2005数据库,它是一个全面的数据库平台,提供了企业级的数据管理以及更安全可靠的存储功能。使用Java编程语言,Java作为一种高级的纯面向对象编程语言,提供了完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供了保障,为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。§2.3操作上可行性本系统为智能化的电子商物系统,只需顾客和管理人员有一些简单的电脑操作基础即可,而现电脑已经普及,因此,它在操作上是可行的。第33页共34页 第3章相关知识和开发工具简介本章主要对系统实现所需要的基本开发工具以及所使用的技术做了一些简要的介绍,这些开发工具和技术包括:MyEclipse、Tomcat、Jsp、SSH(Struts-Spring-Hibernate)、MVC等。§3.1MyEclipse简介MyEclipse是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持了十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。在结构上,MyEclipse的特征可以被分为7类:1.JavaEE模型2.WEB开发工具3.EJB开发工具4.应用程序服务器的连接器5.JavaEE项目部署服务6.数据库服务7.MyEclipse整合帮助对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。第33页共34页 简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。§3.2ApacheTomcat服务器Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。这里的诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。§3.3JSP技术概述JSP(JavaServerPages)是由Sun第33页共34页 Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与JavaServlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。§3.4Struts技术概述Struts最早是作为ApacheJakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE第33页共34页 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。§3.5Hibernate技术概述Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。第33页共34页 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语句两种表达方式。§3.6Spring技术概述Spring是一个开源框架,它由RodJohnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型第33页共34页 (prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。§3.6SqlServer简介SQLServer是一个关系数据库管理系统。它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。Sybase则较专注于SQLServer在UNIX操作系统上的应用。SQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。SQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。SQLServer2005数据引擎是本企业数据管理解决方案的核心。此外SQLServer2005结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的BI解决方案,帮助您的团队通过记分卡、Dashboard、Webservices和移动设备将数据应用推向业务的各个领域。§3.7MVC的架构思想MVC(ModelViewControl)模型-视图-控制器。MVC与模板概念的理解:第33页共34页 MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。模型-视图-控制器(MVC)是XeroxPARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。MVC如何工作:MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。视图:视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括MacromediaFlash和XHTML,XML/XSL,WML等一些标识语言和Webservices.如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。模型:模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用EJBs和ColdFusionComponents这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。控制器:控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。第33页共34页 第4章需求分析§4.1运行环境需求硬件需求:PIII/256M/10G及以上配置,要求为在线电脑购物系统分配足够内存空间。操作系统需求:Windows2000及以上操作系统(推荐),也可以使用SunSolaris等Linux操作系统数据库软件需求:SQLServer2005简体中文版(推荐)中间软件需求:Tomcat6.0+JDK1.6+IE8.0开发工具需求:MyEclipse8.0+Dreamweaver§4.2MVC开发模式定位本系统采用B/S设计模式,利用Java语言开发Web应用程序,提供JSP+Struts+Hibernate+Spring框架对系统的程序代码结构进行分层。分层的策略如图4.1:service表示层StrutsStrutsAction,ActionForm,Jsp,Struts-config.xml,etc.DAO业务层HibernatesessionManagement持久层HibernateDataSource/ConnectionPoolTransactionsBusinessServiceClassesQueryLanguageSupportandotherHibernateServices图4.1JSP--Struts—Hibernate架构系统流程图第33页共34页 §4.3系统用例图1、前台图4.2系统前台用例图通过前台,用户可以查看商城商品,在注册登录后,用户可以进行购买商品、收藏商品,以及查看购买记录等操作。用例图说明:⑴查看商品:商城商品,及一些促销打折信息;⑵登录:通过账号密码登录系统,以获得更多操作权限;⑶注册:如需购买商品或得到其它服务,需先进行注册;⑷购买商品:登录系统后可进行购买商品操作;⑸查看购买记录:查看自己的历史购买记录;⑹商品收藏:收藏自己喜欢的商品。第33页共34页 2、后台图4.2系统后台用例图通过后台,管理员可以进行商品管理、订单管理、角色管理、新闻管理,以及商品的销售统计。用例图说明:⑴登录:管理员登录后台系统,以便进行相应权限操作;⑵商品管理:对商品进行管理;⑶订单管理:对客户订单进行管理;⑷角色管理:对用户或管理员角色进行管理;⑸新闻管理:对商城新闻进行管理;⑹统计:对相应月份或季度销售额进行统计。第33页共34页 第5章概要设计经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候。概要设计的基本目的就是回答“从总体上说,系统应该如何实现?”这个问题。本章主要包括系统模块划分、功能模块分析等,为软件的详细设计提供基础。该系统划分为前台管理以及后台管理两大模块。前台包括注册会员、商品查询、精品推荐、品牌专区、打折商品、购物车以及会员中心等功能模块;后台主要包括商品管理、订单管理、角色管理、站内新闻以及销售统计这几大模块。§5.1系统流程图该系统划分为前台管理以及后台管理两大模块。1、前台图5.1系统前台流程图第33页共34页 1、后台图5.2系统后台流程图§5.2功能模块分析1、前台功能详细描述注册会员游客注册,才可以购买商品查询商品可以根据相关的商品信息来查询商品(如:商品名称,商品价格,商品类型等)精品推荐查看到后台管理员所推荐的商品品牌专区查看国内外品牌打折商品促销的商品我的购物车可以了解商品的基本信息,可以根据商品的信息来购买商品,删除已购买的商品,收藏喜欢的商品。商品订购可预订商品购买记录查看会员历史购买的所有记录会员基本信息查看和修改会员的基本信息第33页共34页 ⑴注册会员名称注册会员标识5.2.1.1接 口说 明输入用户基本信息填写(用户名,用户密码等…)输出用户注册会员的响应注册成功,注册失败(用户名存在等)…功 能说 明帮助游客注册会员,才可以购买商品.⑵查询商品名称查询商品标识5.2.1.2接 口说 明输入用户需要查询的商品输出用户所查询的商品信息列表功 能说 明可以根据相关的商品信息来查询商品(如:商品名称,商品价格,商品类型等)⑶精品推荐名称精品推荐标识5.2.1.3接 口说 明输入无输出管理员推荐的商品功 能说 明查看到后台管理员所推荐的商品⑷品牌专区名称品牌专区标识5.2.1.4接 口说 明输入无输出本站所售品牌商品功 能说 明查看国内外品牌⑸打折商品名称打折商品标识5.2.1.5接 口说 明输入无输出会员的打折价功 能说 明会员可以享受商品打折价⑹会员基本信息名称会员信息标识5.2.1.6接 口说 明输入无输出会员的基本信息功 能说 明查看和修改会员的基本信息第33页共34页 ⑴我的购物车名称我的购物车标识5.2.1.7接 口说 明输入需购买的商品名称、数量输出购买商品的详单和总价功 能说 明可以了解商品的基本信息,可以根据商品的信息来购买商品,删除已购买的商品,收藏喜欢的商品。⑵商品订购名称商品订购标识5.2.1.8接 口说 明输入需购买的商品名称、数量输出购买商品的详单和总价功 能说 明可以了解商品的基本信息,可以根据商品的信息来购买商品,删除已购买的商品,收藏喜欢的商品。⑶购买记录名称购买记录标识5.2.1.9接 口说 明输入无输出浏览历史购买记录功 能说 明查看会员历史购买的所有记录1、后台功能详细描述商品管理对商品进行修改,推出精品,打折商品等。订单管理订购所需商品,按日期查询订单并删除过期订单,修改订单,角色管理管理会员,以及公司访问人员的管理权限管理不同管理人员登陆,具有不同权限站内新闻相关热门商品和最新商品,以及将要开展的活动。销售统计查看本月销售记录,修改相关数据。并统计销售记录,生成图形⑴商品管理名称商品管理标识5.2.2.1接 口说 明输入管理员查询、添加、修改、删除商品信息输出商品信息列表功 能说 明对商品进行修改,推出精品,打折商品等。第33页共34页 ⑴订单管理名称订单管理标识5.2.2.2接 口说 明输入管理员查询、添加、修改、删除订单输出订单列表功 能说 明会员订购所需商品,删除过期订单,修改订单⑵角色管理名称角色管理标识5.2.2.3接 口说 明输入管理员修改、禁用会员输出会员信息列表功 能说 明管理会员,以及公司访问人员的管理⑶权限管理名称权限管理标识5.2.2.4接 口说 明输入管理员的权限信息输出管理员权限列表功 能说 明管理会员,以及公司访问人员的管理⑷站内新闻名称站内新闻标识5.2.2.5接 口说 明输入管理员修改、禁用会员输出会员信息列表功 能说 明管理会员,以及公司访问人员的管理⑸销售统计名称本月小结标识5.2.2.6接 口说 明输入月份输出本月所有商品销售统计功 能说 明查看本月销售记录,修改相关数据。第33页共34页 第6章详细设计概要设计阶段以比较抽象概括的方式提出了解决问题的办法。详细设计是软件开发时期的第三个阶段,也是软件设计的第二步。其任务就是把解法具体化,也就是回答下面这个关键的问题:“应该怎样具体地实现这个系统呢?”,通过详细设计应该得出对目标系统的精确描述,给出各个模块的详细过程性描述。从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。本章主要包括各功能模块说明和其代码实现,以及数据库的详细设计。§6.1前台模块设计1、登录模块图6.1用户登录⑴用户输入正确的用户名、密码和验证码后,登录系统,并可进行商品购买等操作。第33页共34页 ⑵关键代码如下:publicStringlogin(){Stringrand=(String)ActionContext.getContext().getSession().get("rand");//获得session中的验证码Stringusername=user.getUsername();Stringpassword=user.getPassword();if(rand.equals(verifycode)){if(userBiz.login(username,password)){return"loginSuccess";}else{flag=2;return"loginFailure";}}else{flag=1;return"loginFailure";}}2、购物车模块图6.2购物车图6.3订单图6.4购物成功第33页共34页 ⑴用户将所需要购买的物品放入购物车中,在登录过后,便可对放入购车中的物品进行付款,并生成订单。⑵关键代码:publicStringputProductIntoCar(){shoppingCar=(ShoppingCar)session.getAttribute("shoppingCar");if(shoppingCar==null){//检查购物车是否为空,若为空则创建一个购物车对象shoppingCar=newShoppingCar();session.setAttribute("shoppingCar",shoppingCar);}if(pro!=null){//检查添加的产品是否为空,若不为空则添加到购物车中去Productp=newProduct();Stringsn=pro.getProductSn();if(sn==null){p.setId(0);}else{p=productServer.findBySn(sn);}if(p.getId()!=0){shoppingCar.addItem(productServer.findBySn(pro.getProductSn()));if(sum==null){sum=newSum();session.setAttribute("sum",sum);}sum.setTotal(shoppingCar.getTotalItemsCost());sum.setSize(shoppingCar.getSize());sum.setNumber(shoppingCar.getNumber());}user=(User)ActionContext.getContext().getSession().get("user");}return"putIntoCar";}3、收藏夹模块图6.5收藏夹⑴会员将所喜欢的物品放入收藏夹中,以便将来查看。第33页共34页 ⑴关键代码:publicStringputProductIntoCollection(){Productp=productServer.findBySn(pro.getProductSn());user=(User)ActionContext.getContext().getSession().get("user");if(user==null){return"goHomePage";}user=userBiz.findByName("""+user.getUsername()+""");Collectioncollection=newCollection();collection.setProduct(p);collection.setUser(user);collectionBiz.save(collection);return"putIntoCollection";}§6.2后台模块设计1、登录模块图6.6后台登录模块⑴不同权限管理员登录后,可进行不同操作。⑵关键代码:publicStringlogin(){rand=(String)session.getAttribute("rand");if(rand.equals(checkcode)){if(adminBiz.login(admin)){session.setAttribute("admin",admin);it=1;//登陆成功return"index";}else{第33页共34页 it=2;//用户或密码不正确returnLOGIN;}}else{it=3;//验证码不正确returnLOGIN;}}1、商品管理模块图6.7商品管理模块⑴管理员对商品以及品牌进行管理,同时发布精品和打折商品消息。⑵关键代码:publicStringaddPro()throwsFileNotFoundException,Exception{Stringpath=savePath+"/"+getUploadFileName();FileOutputStreamfos=newFileOutputStream(getSavePath()+"\"+getUploadFileName());FileInputStreamfis=newFileInputStream(getUpload());byte[]buffer=newbyte[4096];intlen=0;while((len=fis.read(buffer))>0){fos.write(buffer,0,len);}Brandbrand=bbrandBiz.findByName(brandName1);Typetype=btypeBiz.findByName(typeName1);product.setBrand(brand);product.setType(type);product.setProductOrPrice(product.getProductCurPrice());product.setProductImage(path);product.setProductCreateTime(newDate());product.setProductSaleState(0);product.setProductState(0);bproductBiz.add(product);return"addPros";}第33页共34页 1、订单管理模块图6.8订单管理模块⑴管理员对会员订单进行管理,更改订单货物的发送状态。⑵关键代码:publicStringuserOrder(){intpagesize=3;//每页显示的记录数PageModelpm=newPageModel();pm.setPageSize(pagesize);if(curPageNumber==0)curPageNumber=1;pm.setCurPageNumber(curPageNumber);Stringhql="selectefromExportewhere1=1";Stringhql_count="selectcount(e)fromExportewhere1=1";if(condition!=null&&condition.equals("DivCon1")){if(State==1){hql+="ande.sended=0";hql_count+="ande.sended=0";}elseif(State==2){hql+="ande.sended=1";hql_count+="ande.sended=1";}}if(condition!=null&&condition.equals("DivCon2")){hql+="ande.orderSnlike"%"+detailCon+"%"";hql_count+="ande.orderSnlike"%"+detailCon+"%"";}if(condition!=null&&condition.equals("DivCon3")){hql+="ande.user.usernamelike"%"+detailCon+"%"";hql_count+="ande.user.usernamelike"%"+detailCon+"%"";}pm=bexportBiz.findAll(pm.getFirstData(),pm.getPageSize(),hql,hql_count);pm.setCurPageNumber(curPageNumber);Listlist=newArrayList();for(inti=1;i<=pm.getTotalPages();i++){list.add(i);}ActionContext.getContext().put("pm",pm);ActionContext.getContext().put("condition",condition);ActionContext.getContext().put("State",State);ActionContext.getContext().put("detailCon",detailCon);ActionContext.getContext().put("list",list);return"userOrder";}第33页共34页 1、角色管理模块图6.9角色管理模块⑴角色管理员对会员账号以及其他管理员进行管理。⑵关键代码:publicStringuserManage(){intpagesize=3;//每页显示的记录数PageModelpm=newPageModel();pm.setPageSize(pagesize);if(curPageNumber==0){curPageNumber=1;}pm.setCurPageNumber(curPageNumber);Stringhql="selectufromUseruwhere1=1";Stringhql_count="selectcount(u)fromUseruwhere1=1";if(condition!=null&&condition.equals("DivCon1")){if(State==1){hql+="andu.frozenState=0";hql_count+="andu.frozenState=0";}elseif(State==2){hql+="andu.userState=1andu.frozenState=0";hql_count+="andu.userState=1andu.frozenState=0";}elseif(State==3){hql+="andu.userState=0andu.frozenState=0";hql_count+="andu.userState=0andu.frozenState=0";}elseif(State==4){hql+="andu.frozenState=1";hql_count+="andu.frozenState=1";}}if(condition!=null&&condition.equals("DivCon2")){hql+="andu.usernamelike"%"+detailCon+"%"";hql_count+="andu.usernamelike"%"+detailCon+"%"";}if(condition!=null&&condition.equals("DivCon3")){hql+="andu.realnamelike"%"+detailCon+"%"";hql_count+="andu.realnamelike"%"+detailCon+"%"";}pm=buserBiz.findAll(pm.getFirstData(),pm.getPageSize(),hql,hql_count);pm.setCurPageNumber(curPageNumber);Listlist=newArrayList();for(inti=1;i<=pm.getTotalPages();i++){list.add(i);}ActionContext.getContext().put("pm",pm);ActionContext.getContext().put("condition",condition);ActionContext.getContext().put("State",State);ActionContext.getContext().put("detailCon",detailCon);ActionContext.getContext().put("list",list);return"userManage";}第33页共34页 1、新闻管理模块图6.10新闻管理模块⑴管理员对新闻进行添加和删除操作。⑵关键代码:publicStringlookNews(){authors=newsBiz.findAll();intpagesize=3;//每页显示的记录数PageModelpm=newPageModel();pm.setPageSize(pagesize);if(curPageNumber==0)curPageNumber=1;pm.setCurPageNumber(curPageNumber);Stringhql="selectnfromNewsnwhere1=1";Stringhql_count="selectcount(n)fromNewsnwhere1=1";//条件查询if(condition!=null&&condition.equals("DivCon1")){//根据编辑作者查询if(!State.equals("noauthor")){hql+="andn.authorlike"%"+State+"%"";hql_count+="andn.authorlike"%"+State+"%"";}}if(condition!=null&&condition.equals("DivCon2")){//根据新闻标题查询hql+="andn.titlelike"%"+detailCon+"%"";hql_count+="andn.titlelike"%"+detailCon+"%"";}pm=newsBiz.findAll(pm.getFirstData(),pm.getPageSize(),hql,hql_count);pm.setCurPageNumber(curPageNumber);Listlist=newArrayList();for(inti=1;i<=pm.getTotalPages();i++){list.add(i);}ActionContext.getContext().put("pm",pm);ActionContext.getContext().put("condition",condition);ActionContext.getContext().put("State",State);ActionContext.getContext().put("detailCon",detailCon);ActionContext.getContext().put("list",list);return"lookNews";}第33页共34页 1、销售统计模块图6.11销售统计模块⑴管理员对每个季度和年份的商品销售状况进行统计。⑵关键代码:publicStringproductsale(){intpagesize=3;//每页显示的记录数PageModelpm=newPageModel();pm.setPageSize(pagesize);if(curPageNumber==0){curPageNumber=1;}pm.setCurPageNumber(curPageNumber);Stringhql="selectefromExportewhere1=1";Stringhql_count="selectcount(e)fromExportewhere1=1";if(condition!=null&&condition.equals("DivCon1")){hql+="ande.product.productNamelike"%"+detailCon+"%"";hql_count+="ande.product.productNamelike"%"+detailCon+"%"";}if(condition!=null&&condition.equals("DivCon2")){hql+="ande.product.type.typeNamelike"%"+detailCon+"%"";hql_count+="ande.product.type.typeNamelike"%"+detailCon+"%"";}if(condition!=null&&condition.equals("DivCon3")){hql+="ande.product.brand.brandNamelike"%"+detailCon+"%"";hql_count+="ande.product.brand.brandNamelike"%"+detailCon+"%"";}pm=bexportBiz.findAll(pm.getFirstData(),pm.getPageSize(),hql,hql_count);pm.setCurPageNumber(curPageNumber);Listlist=newArrayList();for(inti=1;i<=pm.getTotalPages();i++){list.add(i);}ActionContext.getContext().put("pm",pm);ActionContext.getContext().put("condition",condition);ActionContext.getContext().put("detailCon",detailCon);ActionContext.getContext().put("list",list);return"productsale";}第33页共34页 §6.3数据库设计1、数据库E-R图E-R图(实体-关系图)提供了表示实体、属性和联系的方法。⑴实体型:用矩形表示,矩形框内写明实体名。⑵属性:用椭圆表示,并用无向边与其相应实体联系起来。⑶联系:用菱形表示,菱形框内写明联系名,并用无向边与其有关实体连接。本系统数据库E-R实体分析图如图6.1所示:图6.12E-R图数据库关系模型:⑴会员(会员号,姓名,年龄,性别,联系电话,家庭住址)。⑵管理员(管理员号,姓名,性别,年龄)。⑶商品(商品编号,商品名称,商品价格,出场时间,品牌名称,管理员号)。⑷新闻(新闻编号,新闻标题,作者,管理员号)。⑸管理(会员号,管理员号)。⑹购买(会员号,商品编号)。⑺浏览(会员号,新闻编号)。(注:带“____”为主码,带“”为外码)第33页共34页 2、数据库关系图图6.2数据库关系图图6.13数据库关系图1、数据库表设计⑴T_ProductState(商品状态表)字段类型大小约束条件说明idintprimarykey商品状态IDstateNamevarchar25notnull状态(1、原价2、精品3、打折)⑵T_Brand(商品品牌表)字段类型大小约束条件说明Idintprimarykey商品品牌IDbrandNamevarchar30notnull品牌名称brandStateintnotnull品牌状态brandDescriptionvarchar270品牌描述brandAddressvarchar280品牌所在地第33页共34页 ⑴T_Type(商品类型表)字段类型大小约束条件说明idintprimarykey商品类型IDtypeNamevarchar30notnull类型名称⑵T_Admin(管理员表)字段类型大小约束条件说明idintprimarykey管理员IDadminNamevarchar25notnull管理员帐号passwordvarchar25notnull管理员密码levelintnotnull管理员类型(1、系统2、普通)frozenStateintnotnull账号状态(1、冻结-1、未冻结)adminStateintnotnull管理员状态(0、在线1、离线)realNamevarchar50notnull真实姓名lastLoginTimedateTime最后一次登录时间⑶T_Exprot(会员订单表)字段类型大小约束条件说明idintprimarykey订单IDuserIdintForeignkey会员ID(T_User)orderSnvarchar30notnull订单号purchaseTimedateTimenotnull创建时间productIdintForeignkey商品ID(T_Product)productCountintnotnull商品数量sendedintnotnull是否发送⑷T_User(会员表)字段类型大小约束条件说明idintprimarykey会员IDusernamevarchar30notnull会员账号passwordvarchar30notnull会员密码realnamevarchar30notnull真实姓名sexvarchar12会员性别ageint会员年龄idCardvarchar32notnull身份证号emailvarchar50邮箱phonevarchar27电话号码addressvarchar220地址registerTimedatetimenotnull注册时间lastLoginTimedatetime最后一次登录时间frozenStateintnotnull账号状态(1、冻结0、未冻结)userStateintnotnull用户状态(0、在线1、离线)第33页共34页 ⑴T_Product(商品表)字段类型大小约束条件说明idintprimarykey商品IDproductSnvarchar27notnull商品编号productNamevarchar50notnull商品名称productOrPricedoublenotnull商品原价productCurPricedoublenotnull商品当前价格productImagevarchar45商品图片descriptionvarchar200商品描述stockint商品库存productCreateTimedatetime商品上市时间productSaleStateintnotnull商品是否上架(1、上架0、下架)productstateIdintForeignkey商品状态ID(T_ProductState)brandIdintForeignkey品牌ID(T_Brand)typeIdintForeignkey类型ID(T_Type)productStateintNotnull商品状态(1、原价2、精品3、打折)⑵T_Import(入库订单表)字段类型大小约束条件说明idintprimarykey订单IDorderSnvarchar50notnull订单序列号productIdint50Foreignkey商品ID(T_Product)countintnotnull入库数量totalintnotnull总量managerIdintForeignkey管理员ID(T_Admin)inputTimedateTimenotnull入库时间⑶T_News(新闻表)字段类型大小约束条件说明idintprimarykey新闻IDtitlevarchar200notnull新闻标题contentvarchar1000notnull新闻内容createTimedateTimenotnull创建时间authorvarchar50notnull作者⑷T_Collection(收藏夹表)字段类型大小约束条件说明idintprimarykey收藏IDuserIdintForeignkey会员ID(T_User)productIdintForeignkey商品ID(T_Product)第33页共34页 结论本系统的开发历时一个多月,基本上完成了所有的功能。系统的开发是一个发现问题、找到问题、解决问题的一个过程,通过这个项目使得我独自解决问题的能力有了很大的提升,丰富了我的开发经验。开发过程中有碰到过很多种问题,每次碰到问题时,都会花费我很多的时间去解决它。这些问题虽然影响了完成项目的进度,但在每次解决问题后都会使我的信心倍增。有些问题在遇到过一两次后,对我来说基本上就不能算是问题了,看到程序报的异常,我就能基本上很快的确定哪里出现了问题,并去解决它。系统的功能虽然已经基本上完成,但却还是有很多的不足之处。由于该系统没有去做过一些实际考查,而是凭着自己的经验来做的,因此有些地方可能考虑得不够完善,与实际应用有些脱节。另外由于自己的开发经验不足,所以系统不免有一些漏洞。在今后的开发中我会尽量的刻服这些问题,以使自己所开发的项目做得更好。第33页共34页 致谢本次毕业设计是一个电子商务类网站系统,因此不免会涉及到很多关于电子商务方面的知识,而我也是首次接触这方面的东西,所以很多地方考虑得都不够专业和全面。很感谢****老师在电子商务网站设计方面给我提供的帮助,在确定了选题过后,*老师一直都在提供一些关于电子商务网站设计的资料给我,使我对网站的设计有了一个比较明确的方向和规划;另外也很感谢*老师能在百忙之中抽出时间来检查我的毕业论文,并给我的论文设计提出了很宝贵的建议,使得我的论文能够更加的完善。在这次毕业设计的过程中,用到很多以前所学到的知识,正是因为有以前的学习,才有了今天的成果。在感谢我的指导老师的同时,我也衷心地感谢所有教过我关心我的老师和领导以及同学和朋友对我的支持和帮助。第33页共34页 参考文献[1]赵海廷.Java语言程序设计.武汉:武汉大学出版社,2005。[2]耿祥义、张跃平.JSP实用教程.北京:清华大学出版社,2007。[3]张海藩.软件工程导论.北京:清华大学出版社,2008。[4]蔡敏、徐慧慧、黄炳强.UML基础与Rose建模教程.北京:人民邮电出版社,2006。[5]陈松.J2EE电子商务系统开发从入门到精通:基于Struts和Hibernate技术实现.北京:清华大学出版社,2007。[6]孙卫琴、李洪成.Tomcat与JavaWeb开发技术详解.北京:电子工业出版社,2004。[7]王珊、萨师煊.数据库系统概论.北京:高等教育出版社,2006。[8]杨学瑜、王志军、刘同利.JSP入门与提高.北京:清华大学出版社,2001。[9]BruceEckel.JAVA编程思想第四版.北京:清华大学出版社,2006。[10]李丹.SQLServer2005数据库管理与开发实用教程.北京:机械工业出版社,2010。[11]李刚.Struts2权威指南:基于WebWork核心的MVC开发.北京:电子工业出版社,2007。[12]程杰.大话设计模式.北京:清华大学出版社,2007。[13]昊斯特曼.Java核心技术.北京:机械工业出版社,2008。[14]何秀芳.DreamweaverCS3从入门到精通.北京:人民邮电出版社,2007。[15]V.K工作室.HTML+CSS入门讲座[M].北京:科学出版社,2001。第33页共34页 第33页共34页'