计算机专业本科毕业论文_第1页
计算机专业本科毕业论文_第2页
计算机专业本科毕业论文_第3页
计算机专业本科毕业论文_第4页
计算机专业本科毕业论文_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

目录摘要 1Abstract 2前言 3第1章 系统分析 4 可行性分析 41.2 需求分析 4第2章 系统设计 52.1系统总体设计 52.2系统设计思想 62.3数据库设计 72.3.1数据需求分析 7 E-R图 7 逻辑结构设计 10 系统运行坏境和开发工具 11运行环境 11开发工具 11 系统开发的主要技术 112.5.1Java简介 11 浏览器/效劳器结构〔B/S〕 122.5.3动态WEB技术JSP 122.5.4Tomcat应用效劳器 13 框架技术 132.5.6数据库的设计与实现 13第3章系统实现 143.1总体设计 143.1.1系统功能模块划分 143.1.2系统结构设计 153.1.3数据库系统 153.2详细设计 163.2.1用户登录模块设计 163.2.2用户注册模块设计 193.2.3在线购书功能模块设计 203.2.4我的购物车功能模块设计 213.2.5订单信息功能模块设计 253.2.6图书分类模块设计 27第4章 测试分析 314.1测试概要 314.2测试条件 314.3测试结果及发现 314.3.1测试步骤 314.3.2模块测试 314.4对系统功能测试 32第5章 系统开发总结 33参考文献 33致谢 34购书网站的设计与实现张文超指导老师:庹清摘要:电子商务已经成为了新经济的代名词。能在internet的全程上实现商品的展示、商品的订购、订单跟踪与管理、贷款的支付的系统称为网上购物系统。网上购物系统是电子商务的一种重要形式。本文介绍了网上购物系统——购书网站,本系统采用B/S架构,MyEclipse开发工具,MySql数据库,tomcat6.0Web容器,应用MVC设计模式开发。以hibernate框架做数据持久化,struts2框架做控制层,jsp做页面层。它是一个基于网络、以书籍为商品的专业性网上购物网站,系统同时具有购置书籍、收藏书籍到购物车以及订单送货上门等多种功能,为书籍的流通提供了一个高效的网络交易平台。文中介绍了本系统开发时所用到的环境、工具及技术和电子商务的开展背景、根本概念等一些根本理论,还讨论了网站的需求分析、网站流程设计、数据库设计和系统结构设计。并对系统各模块功能作了详细说明。该系统详细介绍了前台功能,主要有注册、登陆、分类浏览、购物车、购书、新书热卖榜等。关键词:电子商务,购书网站,数据库设计,jsp,系统功能Thedesignandimplementationofthebook-sellingwebsiteAuthor:ZhangWenChaoGuidingteacher:TuoQingAbstract:E-commercehasbecomesynonymouswiththeneweconomy.IntheInternetcanrealizethewholeshow,commoditygoodsordering,ordertrackingandmanagement,loanpaymentsonlineshoppingsystemcalledsystem.Onlineshoppingsystemisakindofimportantelectroniccommerceform.Thispaperintroducesonlineshoppingsystem-thesystemUSESthebook-sellingwebsite,B/Sarchitecture,MyEclipsedevelopmenttools,MySqldatabase,tomcat6.0Webcontainers,applicationdevelopment.DesignpatternofMVCTohibernateframeworkdodatapersistencestruts2frameworkdocontrollayer,JSPdopagelayer.Itisbasedonanetwork,withprofessionalonlinebooksforgoodsshoppingwebsite,systemandhastobuybooks,collectbookstocartandorderdoor-to-doorforbooksandotherfunctions,thecirculationprovidesanefficientnetworktradingplatform.Thispaperintroducesthissystemdevelopmentenvironment,toolsandusetechnologyandelectroniccommercedevelopmentbackground,basicconceptsandsomeotherbasictheory,alsodiscussedtherequirementanalysis,websiteprocessdesign,databasedesignandsystemstructuredesign.Andthefunctionofeachmoduleinthesystemdescribedindetail.Thissystemisintroducedindetail,themainfunctionofregisteredwiththedesk,landing,classificationbrowse,shoppingcart,books,newsuperheroeslistetc.Keywords:electroniccommerce,acquisitionwebsite,databasedesign,JSP,systemfunction前言随着信息技术在我国企业中的广泛应用,企业的生产经营活动越来越依赖计算机信息系统,很多企业都构建了自己的企业管理系统。但是由于科技的开展,社会文明的进步,人们已不在满足于现在的经营、生活方式。Internet的出现使更多的商业机构可以在线销售货物和提供效劳,比较容易的地为客户和企业用户提供这些功能。电子商务是通过互联网实现企业、商户及消费者的网上购物、网上交易及在线电子支付的一种不同于传统商业运营的新型商业运营模式,电子商务是随着INTERNET开展而开展起来的,主要以EDI〔电子数据交换〕和INTERNET来实现的,电子商务有广义和狭义之分,狭义的电子商务是主要利用WEB在网上进行交易,称作电子易〔E-COMMERCE〕广义的电子商务包括基于WEB的全部商业活动,称作电子商业〔E-BUSINESS〕。我们这次课题研究的对象——购书网站,把握住时代的脉搏,顺应社会开展的需要,向广阔客户提供了一个到网上书店购置图书全过程中所需的全部效劳。网上书店有着其他形式的书店所不能比较的优势:它不需要店铺和庞大的销售网络,通过在网上直接订购、支付、结算,减少了中间的环节和开支。不受时空的限制,一天24小时的营业时间。全世界范围内都可以销售等。由此可见,购书网站有着广阔的开展前景,将会受到广阔消费者和商家的喜爱。本文涉及的Java技术主要有B/S结构体系、mysql数据库以及struts、hibernate框架技术。所使用的效劳器是Tomcat。随着java的流行,其在web上的应用也越来越广,tomcat作为一个开源的servlet容器,应用前景越来越广,tomcat是jakarta工程中的一个重要的子工程,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品(MostInnovativeJavaProduct),同时它又是sun公司官方推荐的servlet和jsp容器(具体可以见://java.sun/products/jsp/tomcat/),因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新标准都可以在tomcat的新版本中得到实现。系统分析可行性分析商业企业在运营过程中,经常会受到以下一些条件的限制:产品的宣传受到限制,采购商或顾客只能通过上门咨询、沟通等方式进行各种信息的获取,受一定的时间与物理空间的局限并且本钱较高。庞大的商业经济周转。复杂的产品周转渠道。从看样品、谈价格到支付货款等一系列的产品周转渠道过于复杂,企业与顾客之间缺乏全面的沟通与快捷运营的平台。〔4〕商业企业中根据季节的变化,热销商品在销售顶峰到来时货源紧张,企业需要实时了解商品的销售情况,保证热销商品的要货满足率。因此,企业需要重新认识市场、消费者以及自身市场定位,正确认识电子商务技术在企业中的重要地位,以少量的时间和资金建立企业信息门户网站并架设一定范围的商务网络,以此来制定长远开展战略,使企业与顾客间的经济活动变得更灵活、更主动。本系统是一个中小型的电子商务系统购书网站,可以为各类用户提供方便的在线买书环境,符合目前国内流行的电子商务模式。用户可以在系统中实现注册、浏览商品、下定单、处理订单等功能。在技术上,目前市场上开发电子商务平台的技术很多,如ASP,PHP,PB,.NET等。我采用SUN公司的JSP技术,它是目前市场上最流行的技术之一,JSP具有一次编译,处处运行的优点[4]。由分析可得,不管是商业还是技术上,购书网站的开发都是可行的。需求分析通过对电子商务网站及购书网站的考察、分析以及实际的市场调查,要求本系统具有以下功能:统一友好的操作界面,能保证系统的易用性。标准、完善的根底信息设置。图书分类详尽,可按不同类别查看商品信息。实现网上购书。〔5〕新书热卖榜图书展示。针对购书网站系统的需求分析,得出如下需求信息。订单分为单张详细订单和总订单。一个用户可以购置多本图书。一个用户对应一张订单。一个列表对应多张订单。针对本系统功能分析,总结出如下的需求信息。用户,包括数据项:用户ID、用户名、密码。图书,包括数据项:图书编号、图书名、价格、图书介绍。订单列表,包括数据项:订单编号、图书编号、购书数量。订单,包括数据项:订单编号、用户编号、下单时间。系统设计2.1系统总体设计购书网站的总体功能设计如下所示:管理购物车管理购物车用户登录查看最近新书用户登录查看最近新书系统首页管理订单系统首页管理订单新用户注册新用户注册查看热卖图书榜查看热卖图书榜查看所有图书类型查看所有图书类型在线购书在线购书图2.1总体设计功能图2.2系统设计思想系统采用MVC[5]模式开发,分为三层,分别为视图层、控制层和模型层,总体结构如下图。视图层视图层控制层控制层模型层模型层数据库数据库(1)视图层视图是用户看到并与之交互的界面,当用户向效劳器发出请求时,由控制层ActionServlet来接受此请求,然后调用JavaBean做具体的数据存取逻辑运算等处理,然后把结果返回给JSP,JSP把得到的结果通过浏览器返回给用户。(2)控制层控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。它用struts2的核心控制器ActionServlet实现。(3)模型层通常模型层用来处理系统数据和业务规那么。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用来操作数据库,处理乱码,分页后台处理等。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。2.3数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。2数据需求分析针对购书网站系统的需求分析,得出如下需求信息。订单分为单张详细订单和总订单。一个用户可以购置多本图书。一个用户对应一张订单。一个列表对应多张订单。针对本系统功能分析,总结出如下的需求信息。用户,包括数据项:用户ID、用户名、密码。图书,包括数据项:图书编号、图书名、价格、图书介绍。订单列表,包括数据项:订单编号、图书编号、购书数量。(4)订单,包括数据项:订单编号、用户编号、下单时间。用户用户E-R图用户用户从本系统中规划出的实体有:用户信息实体、管理员信息实体、图书实体、图书分类实体、订单实体、订单列表实体。实体之间关系的E-R图如下图。用户用户购书订单列表订单图书图书分类11NN11图实体之间的E-R图管理员实体的E-R图,如图2.4所示。图书分类实体的E-R图,如图2.5所示。用户信息实体的E-R图,如图2.6所示。图书实体的E-R图,如图2.7所示。订单实体的E-R图,如图2.8示。订单列表实体的E-R图,如图2.9所示。管理员管理员用户名密码图书分类分类名称分类编号图2.4管理员实体的E-R图图2.5图书分类实体E-R图用户用户用户名密码地址真名性别Email注册时间注册IP图2.6用户实体E-R图图书图书图书编号图书名称分类编号封面作者出版社内容介绍总数量剩余数量价格图2.7图书实体E-R图订单订单订单编号用户编号购置时间总价格内容IP地址是否发货是否付款图2.8订单实体E-R图订单列表订单列表购书数量图书编号用户号订单号图2.9订单列表实体的E-R图逻辑结构设计1.用户信息表〔storeuser表〕字段名称含义数据类型是否主键其它约束id用户编号int是自动增1username登录用户名varchar〔50〕否password登录密码varchar〔50〕否name用户真实姓名varchar〔20〕否tel用户联系varchar〔20〕否address发货地址varchar〔100〕否email用户电子邮箱varchar〔50〕否pwd_info密保信息varchar〔100〕否2.订单表〔orders〕字段名称含义数据类型是否主键其它约束Id订单编号int是自动增1receive_user收货人姓名varchar〔50〕否creat_user订单创立人姓名varchar〔20〕否create_time订单创立时间datetime否delivery送货方式varchar〔20〕否payment付款方式varchar〔20〕否tel联系varchar〔20〕否addressvarchar〔100〕否status订单状态varchar〔50〕否3.图书信息表〔book〕字段名称含义数据类型是否主键其它约束id图书编号int是自动增1typeid图书联系编号int否name图书名称varchar〔50〕否price图书市场价格varchar〔12〕否saleprice图书销售价格varchar〔12〕否bookinfo图书简介varchar〔5000〕否author图书作者varchar〔50〕否image图书封面图片路径varchar〔100〕否num图书库存数量int否publish图书出版社varchar〔50〕否storetime图书入库时间datetime否buynum图书累计购置数量int否4.订单明细表〔orderdetail〕字段名称含义数据类型是否主键其它约束orderid订单编号int是bookid购置图书编号int是book_count购置图书数量int否price购置图书价格int否5.图书类型表〔booktype〕字段名称含义数据类型是否主键其它约束id图书类型编号int是自动增1typename图书类型名称int否系统运行坏境和开发工具运行环境整个系统构建在Microsoft公司的系统平台与环境下。操作系统是Windowsxpprofessional。开发工具采用JDK作为JVM和MyEcliopse来开发。数据库mysql5.1。W系统开发的主要技术Java简介Java,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器〔支持Javaapplet〕显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速开展,常用的浏览器现在均支持Javaapplet。Java平台由Java虚拟机〔JavaVirtualMachine〕和Java应用编程接口〔ApplicationProgrammingInterface、简称API〕构成。Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为根本局部和扩展局部。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版开展到1.2版。目前常用的Java平台基于Java1.5,最近版本为Java1.7。电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有根本的要求:平安、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。Java以其强平安性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比较的优势,成为实现电子商务系统的首选语言。浏览器/效劳器结构〔B/S〕B/S结构〔Browser/Server,浏览器/效劳器模式〕,是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心局部集中到效劳器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器〔Browser〕,如NetscapeNavigator或InternetExplorer,效劳器安装Oracle、Sybase、Informix或SQLServer等数据库。浏览器通过WebServer同数据库进行数据交互。2动态WEB技术JSPJSP〔JavaServerPages〕是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术根底上开展起来的,它正在飞速开展中,现已成为Java效劳器编程的重要组成局部。它虽然还未成型,但是它必将和J2EE(Java2EnterpriseEdition)一起开展[6]。JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Javaclass、Servlet、Applets和WebServer,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起。Tomcat应用效劳器Tomcat是JavaServlet2.2和JavaServerPages1.1技术的标准实现,是基于Apache许可证下开发的自由软件。框架技术1.Struts框架:struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。struts提供的类使得开发工作更加简单,这些类包括:a.控制程序流程的类b.实现和执行程序事务逻辑的类c.自定义的标记库使得创立和验证HTML表单更加容易2.Hibernate框架:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。数据库的设计与实现数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。依据购书网站的处理需求,采用SQLServer2000数据库,数据库名为WebShop。对就数据表的设计及功能如下图书根本信息表book:存放网上书店所销售图书的根本信息。图书分类根本信息表booktype:存放网上书店所提供图书分类的信息。客户根本信息表storeuser:存放书店客户的根本信息。订单信息表orders:存放与客户相关的订单的根本信息。订单条目详细信息表orderdetail:存放订单中详细条目的根本信息。第3章系统实现3.1总体设计系统功能模块划分用户登录用户登录在线购书在线购书用户注册登陆观察图书详细购置观察订单信息查看购物车在线购书用户注册登陆观察图书详细购置观察订单信息查看购物车在线购书购置观察图书详细资料购置查看订单详细继续购书清空购物车提交购物车删除已经选购的图书修改购置数量购置观察图书详细资料购置查看订单详细继续购书清空购物车提交购物车删除已经选购的图书修改购置数量图3.1客户端系统系统结构设计根据面向对象和三层结构设计的思想,可得出如图3.2所示的系统结构设计图。购书网站购书网站客户端界面管理端界面JavaBean数据库在购书界面图书管理模块订单管理图书管理用户管理购物车界面定单信息管理登陆/注册添加图书模块添加图书分类模块订单信息模块客户管理模块登陆模块图书分类类图书类图书分类管理类图书管理类订单类订单管理类购物车类购物车管理类用户类用户管理类用户登录类图3.2系统结构图数据库系统数据库3层结构:用户视图层:这一层面向各个具体用户。从满足用户需求出发而设计的各种各样的文件结构,在系统中称为子模型。子模型用图、表来表示,给人以直观清晰、一目了然之感。用户看到的是一些视图,它只提供用户所需的信息,以免用户访问到其它无关的信息。例如,在银行中的顾客看到的是数据库顾客帐户的信息,他们不能访问银行雇员的工资信息。然而计算机是不会认识这些图表的。为了让计算机认识它,DBMS设置了一种数据定义语言(DLL)。用DLL精确定义数据模型的程序称为模式。除非整体改动,否那么数据库模式一般是部经常变化的。用户视图的这种语言形式定义称为子模式。由图可见,对于同一数据库,系统提供许多的用户视图。也就是说,一个数据库可以有多个不同的子模式。逻辑层:这一层面向全局,它综合各用户的信息需求,设计了一个全局性的、完整的而又无冗余的系统框架,称为逻辑模型。逻辑层的简单数据结构的操作要与复杂的物理层结构相联系,但用户不用担忧这些,因为逻辑层是由数据库管理员来使用的。逻辑模型的语言形式定义为逻辑模型。用户的信息来自逻辑层,而逻辑层又从物理层获的信息。物理层:这一层完全面向物理存储。物理层详细的描述了复杂的底层数据结构。在完成存放根本文件的前提下,考虑物理存储的最正确组织形式,我们把不考虑用户需求而仅仅着眼于物理存储的模型称为物理模型。用DDL定义的语言形式称为物理模式。物理模式是逻辑模式的具体实现。数据库系统具有几个模式。在最底层是物理模式,中间层是逻辑模式,在最高层是子模式。总而言之,数据库系统支持一个物理模式,一个逻辑模式和几个子模式。在某一层上修改一个模式而不影响其它层的模式定义的能力称为数据独立性。有两种独立性。●物理独立性:是指当数据的物理存储设备、物理存储结构和存取方法发生变化时,数据的逻辑结构和定义可以不变,应用程序也可以不变的能力。逻辑独立性:是一种应用程序可以不管逻辑模式定义的改变而正确执行的能力。从另一方面说,用户要求的改变,应对用户的子模式的影响最小。逻辑独立性比物理独立性更加难以实现。因为应用程序更大程度上依赖于它们所访问的数据的逻辑结构。数据独立性概念与现代编程语言中抽象数据类型概念的许多方面相似。两者都对用户隐藏了底层信息,而用户关系的只是普通结构。3.2详细设计用户登录模块设计为了检测用户是否是书店的合法用户,需要用户输入用户名和密码来核对用户的合法性,用户登陆模块就是完成这一功能。源代码如下:packageorg.whatisjava.dangdang.service;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.Transaction;importorg.whatisjava.dangdang.domain.User;importorg.whatisjava.dangdang.util.EmailUtils;importorg.whatisjava.dangdang.util.HibernateUtils;importorg.whatisjava.dangdang.util.MD5Utils;importorg.whatisjava.dangdang.util.VerifyCodeUtils;publicclassAuthorizeServiceImplimplementsAuthorizeService{ /** * *@paramuser */ publicvoidaddUser(Useruser){ Sessionsession=HibernateUtils.getSession(); Transactiontx=session.beginTransaction(); user.setPassword(MD5Utils.md5(user.getPassword())); user.setVerify(false); user.setUserIntegral(0); session.save(user); Stringcontent=VerifyCodeUtils.generateCode(user.getId()); EmailUtils.sendEmail(user.getEmail(),content); user.setVerifyCode(VerifyCodeUtils.getCode(content)); txmit(); session.close(); } /** * *@paraminput *@return */ publicbooleanverifyUser(Stringinput){ booleanok=false; Sessionsession=HibernateUtils.getSession(); Transactiontx=session.beginTransaction(); Stringcode=VerifyCodeUtils.getCode(input); Integerid=VerifyCodeUtils.getId(input); if(code==null||id==null) returnfalse; Useruser=(User)session.get(User.class,id); if(user!=null&&user.getVerifyCode().equals(code)){ user.setVerify(true); ok=true; } txmit(); session.close(); returnok; } /** * *@return */ publicUservalidateUser(Stringname,Stringpassword){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("fromUseruserwhereuser.email=?anduser.password=?"); query.setParameter(0,name); query.setParameter(1,MD5Utils.md5(password)); List<User>userList=query.list(); session.close(); if(userList.size()==0){ returnnull; } returnuserList.get(0); } /** * *@paramemail *@return */ publicbooleanvalidateEmail(Stringemail){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("selectcount(*)fromUseruserwhereuser.email=?"); query.setParameter(0,email); List<Number>list=query.list(); session.close(); if(list.size()==1&&list.get(0).intValue()==0){ returntrue; }else{ returnfalse; } }}图3.4登录界面用户注册模块设计如果是新用户,那么需要注册才可以进入系统,在登录页面有个创立新用户,点击进入注册页面,首先填写用户信息,邮箱名、用户名、密码、以及验证码,这里用js做的验证,当填写完一项信息,移开光标那么进行验证,如不合法,那么弹出红色字体提出非法信息,只有填写的信息全合法,注册按钮才成灰色状态〔不可点击状态〕变为能点击状态;点击注册后,进入邮箱验证,此时用户虽然注册但并未真正注册完成,用户的邮箱验证状态为非,系统将发送验证码到用户邮箱,这里由于环境问题,采用模拟实现,采用Java工具包中的UUID进行随机生成,然后在控制台进行打印,输入验证码后点击完成那么跳转到注册成功页面完成注册;根据分析做出用户注册模块流程图,如下图。图注册模块流程图3.2.3在线购书功能模块设计在该模块用户可以看见现有的图书,用户可以查找图书〔只可分类查询〕,用户可以购置图书〔把书放进购物车〕,也可以查看图书的详细资料,还可以转到其他模块,如查看购物车,查看订单信息等。该功能模块局部源代码如下:packageorg.whatisjava.dangdang.action.main;importorg.whatisjava.dangdang.action.BaseAction;importorg.whatisjava.dangdang.domain.Category;importorg.whatisjava.dangdang.service.CatalogService;importorg.whatisjava.dangdang.service.ServiceFactory;publicclassCategoryActionextendsBaseAction{ privateCategorycat; privateCatalogServicecs=ServiceFactory.getCatalogService(); publicCategorygetCat(){ returncat; } publicvoidsetCat(Categorycat){ this.cat=cat; } publicStringexecute(){ cat=cs.getCategoryById(CatalogService.BOOK_CAT,true); return"success"; }}3.2.4我的购物车功能模块设计在〞我的购物车〞这个模块里,用户可以修改购置数量,可以修改已经选购的图书,可以提交购物车〔在提交时可以简单附言说明〕,可以清空购物车,还可以继续购书,或者查询图书,或者转到其他功能模块。买书的第一步便是用户登录,现在验用户的合法性的: functionchecklogin(){ if(document.payout.userid.value=="") { alert("你还没有登录,请登录后再提交购物清单。"); returnfalse; }证明是合法用户后,就必须给这个用户一个购物车,用户每次选中一本书,点击“放入购物车〞,就必须添加一个订购单。这就相当于把用户要买的书放入购物车里,其主要代码如下:packageorg.whatisjava.dangdang.service;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importorg.whatisjava.dangdang.domain.CartItem;importorg.whatisjava.dangdang.domain.Product;importorg.whatisjava.dangdang.domain.User;publicclassCartServiceImplimplementsCartService,java.io.Serializable{ privateCatalogServicecs=ServiceFactory.getCatalogService(); privateMap<Integer,CartItem>carts=newHashMap<Integer,CartItem>(); privateUseruser; /** * *@paramuser */ publicCartServiceImpl(Useruser){ this.user=user; this.carts=newHashMap<Integer,CartItem>(); } /** * *@paramproduct *@return */ publicbooleanaddItem(IntegerproductId){ if(!carts.containsKey(productId)){ CartItemitem=newCartItem(); Productproduct=cs.getProductById(productId); item.setProduct(product); item.setNumber(1); item.setStatus(true); carts.put(product.getId(),item); returntrue; } returnfalse; } /** * *@paramproductId *@paramnum *@return */ publicbooleanupdateNumber(IntegerproductId,intnum){ if(carts.containsKey(productId)){ CartItemitem=carts.get(productId); item.setNumber(num); returntrue; } returnfalse; } /** * *@paramproductId *@return */ publicbooleandrop(IntegerproductId){ if(carts.containsKey(productId)){ CartItemitem=carts.get(productId); item.setStatus(false); returntrue; } returnfalse; } /** * *@paramproductId *@return */ publicbooleanrecovery(IntegerproductId){ if(carts.containsKey(productId)){ CartItemitem=carts.get(productId); item.setStatus(true); returntrue; } returnfalse; } publicvoidclear(){ carts.clear(); } /** * *@return */ publicbooleanisEmpty(){ returncarts.isEmpty(); } /** * *@return */ publicList<CartItem>getCartItems(){ ArrayList<CartItem>list=newArrayList<CartItem>(); Iterator<Integer>it=carts.keySet().iterator(); while(it.hasNext()){ CartItemitem=carts.get(it.next()); list.add(item); } returnlist; } publicdoublegetTotalPrice(){ doubletotalPrice=0; Iterator<Integer>it=carts.keySet().iterator(); while(it.hasNext()){ CartItemitem=carts.get(it.next()); if(item.isStatus()){ totalPrice+=item.getProduct().getFixedPrice() *item.getNumber(); } } returntotalPrice; } publicdoublegetDangPrice(){ doubletotalPrice=0; Iterator<Integer>it=carts.keySet().iterator(); while(it.hasNext()){ CartItemitem=carts.get(it.next()); if(item.isStatus()){ totalPrice+=item.getProduct().getDangPrice() *item.getNumber(); } } returntotalPrice; } publicUsergetUser(){ returnuser; }}3.2.5订单信息功能模块设计在该功能模块用户可以看见自己已经提交的所有订单,可以查看订单的详细情况。并设计以弹出窗口的形式显示订单信息,在弹出的窗口中可以付款。实现代码如下:packageorg.whatisjava.dangdang.service;importjava.util.Date;importjava.util.List;importorg.hibernate.Session;importorg.hibernate.Transaction;importorg.whatisjava.dangdang.domain.Address;importorg.whatisjava.dangdang.domain.CartItem;importorg.whatisjava.dangdang.domain.Item;importorg.whatisjava.dangdang.domain.Order;importorg.whatisjava.dangdang.util.HibernateUtils;publicclassOrderServiceImplimplementsOrderService{ publicvoidcreateOrder(CartServicecs,Addressaddress){ Sessionsession=HibernateUtils.getSession(); Transactiontx=session.beginTransaction(); address.setUserId(cs.getUser().getId()); session.saveOrUpdate(address); Orderorder=newOrder(); order.setUserId(cs.getUser().getId()); order.setReceiveAddress(address); doubletotalPrice=0.0; List<CartItem>cartItemList=cs.getCartItems(); for(CartItemct:cartItemList){ Itemitem=ct.toItem(); order.addItem(item); totalPrice+=item.getAmount(); } order.setStatus(0); order.setOrderTime(newDate().getTime()); order.setTotalPrice(totalPrice); order.setOrderDesc(""); session.save(order); txmit(); session.close(); } publicvoiddeleteOrder(Integerid){ //TODOAuto-generatedmethodstub } publicList<Order>findOrderByUserId(IntegeruserId){ //TODOAuto-generatedmethodstub returnnull; } publicOrdergetOrderById(Integerid){ //TODOAuto-generatedmethodstub returnnull; }}图3.6订单信息详情图书分类模块设计这是购书网站的一个重要的功能,可以为用户快捷的找到需要的图书,找出自己喜欢的分类,而且分类的好坏影响购置者点击率。该功能模块局部源代码如下:packageorg.whatisjava.dangdang.service;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.whatisjava.dangdang.domain.Category;importorg.whatisjava.dangdang.domain.Product;importorg.whatisjava.dangdang.util.HibernateUtils;publicclassCatalogServiceImplimplementsCatalogService{ /** * */ publicCategorygetCategoryById(Integerid,booleanwithSub){ Sessionsession=HibernateUtils.getSession(); Categorycat=null; if(withSub){ Queryquery=session .createQuery("selectdistinctcfromCategorycjoinfetchc.subCatsc1joinfetchc1.subCatswherec.id=?"); query.setParameter(0,1); List<Category>list=query.list(); if(list.size()>0){ cat=list.get(0); } }else{ cat=(Category)session.get(Category.class,id); } session.close(); returncat; } /** * */ publicList<Product>findProductByCategoryId(IntegercatId){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("fromProductpjoinfetchp.categoryscatwherecat.id=?"); query.setParameter(0,catId); List<Product>list=query.list(); session.close(); returnlist; } /** * *@paramid *@return */ publicProductgetProductById(Integerid){ Productproduct=null; Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("selectnewProduct(p.id,ductName,p.fixedPrice,p.dangPrice)fromProductpwherep.id=?"); query.setParameter(0,id); Listlist=query.list(); if(list.size()>0) product=(Product)list.get(0); session.close(); returnproduct; } /** * */ publicList<Category>findCategoryByParentId(IntegercatId){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("fromCategorycatwherecat.parentId=?"); query.setParameter(0,catId); List<Category>list=query.list(); session.close(); returnlist; } /** * */ publicList<Product>findProductByCategoryId(IntegercatId,intpage, introwsPerPage){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("fromProductpjoinfetchp.categoryscatwherecat.id=?"); query.setParameter(0,catId); query.setMaxResults(rowsPerPage); query.setFirstResult((1)*rowsPerPage); List<Product>list=query.list(); session.close(); returnlist; } /** * */ publicintgetProductTotalPageByCategoryId(

温馨提示

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

评论

0/150

提交评论