网上购物商城系统毕业设计_第1页
网上购物商城系统毕业设计_第2页
网上购物商城系统毕业设计_第3页
网上购物商城系统毕业设计_第4页
网上购物商城系统毕业设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计设计题目:网上购物商城系统毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日网上购物商城系统摘要现在网络的发展已呈现商业化、全民化、全球化的趋势。电子商务交易的个性化、自由化可为企业创造无限商机,降低成本,同时可以更好地建立同客户、经销商及合作伙伴的关系,为此,许多公司积极拓展电子商务,为客户服务,进行价值链集成。如今网络已成为企业进行竞争的战略手段。企业经营的多元化拓展,企业规模的进一步扩大,对于企业的管理、业务扩展、企业品牌形象等提供了更高的要求。本系统的设计是采用了Java语言作为后台的编程语言,MyEclipse8.5作为开发工具,MySQL作为后台数据库,以Tomcat6.0为web服务器,实现了网络平台的构建,JSP技术实现了动态网站的制作,以确保系统的安全保密和易于维护。关键词:Java动态网站购物商城OnlineshoppingmallsystemAbstractNowthedevelopmentofthenetworkhasbeencommercialized,universal,andthetrendofglobalization.E-commercetransactionsofpersonalization,liberalizationcancreateunlimitedbusinessopportunitiesforenterprises,reducethecost,atthesacanbebettertoestablishrelationswithcustomers,dealersandpartners,forthimanycompaniesactivelyexpande-commerce,customerservice,valuechainintegration.Nowthenetworkhasbecometheenterprisecompetitionstrategy.Thediversificationofbusinessdevelopment,thefurtherexpansionoftheenterprise,forenterprise'smanagement,theexpansionofbusiness,enterprisebrandimage,etc.Providesahigherrequest.ThedesignofthissystemistousetheprogramminglanguageJavalanguageastbackground,MyEclipse8.5asadevelopmenttool,MySQLdatabaseasthebackground,Tomcat6.0aswebserver,realizetheconstructionofthenetworkplatform,JSPtechnologytorealizethedynamicwebsiteproduction,toensurethesafetyofthesecurityandeaseofmaintenance.Keywords:JavaDynamicwebsiteShoppingmall目录

第1章引言1.1选题背景随着计算机网络的日益普及,电子商务已然已经成为了一种潮流,网上购物也是人人皆知的一种购物方式。再加上人们生活节奏的加快,大家的大部分时间都在繁忙的工作中度过。大部分上班族都没有去商场购物,为了给广大上班族提供一个方便快捷的购物平台,因此我设计了网上购物系统。网上购物有很多优点,首先,不管是企业还是用户都节约了时间和成本,另外也方便进行跨区域性的交易。再加上自己身为当代大学生,深知校园生活中网上购物的普遍以及快捷,另外,网上商城是一个虚拟的购物平台,不用租赁房屋,不用缴纳水电费,可以降低商品附加的价格,节约成本花销,同时达到降低商品价格薄利多销的目的。因此,我选择了网上购物商城这个课题作为自己的毕设。1.2选题意义身为学生,和我们息息相关的永远是书籍。现在的学生买书的话去大的书店买书会觉得价钱比较昂贵,而小的地摊书店又会觉得不是正版而不愿接受。因此,我设计这个网上书城,既能让在校学生坐在宿舍里就能随心所欲的选到自己想要的图书,又能保证质量优质价格低廉。必然会受广大在校学生的欢迎。当然,该系统对社会人群同样也是适用的。另外,与传统的商场购物平台相比,此系统成本比较低,不需要租赁商场的房屋,不用缴纳水电费等一系列的费用,只需要在网上注册一个地址,然后把实物图片上传到购物商城就可以了,这样就减少了很多不必要的费用,进而减少了商品的价格,达到低成本的效果。而且在购物商城上的商品有详细地描述和实物图片,商品功能描述和视觉方面能够让客户一目了然,系统简单整洁,很快得就能让用户上手,在最短的时间内完成选、购、定的流程。同时也节约了购物者大量的时间,不用跑到特定的商场去选购商品,浪费大量的时间,在商城购物只需要输入要找的商品关键词,就可以很快的找到自己想要的商品,达到了足不出户商品直接到手的效果。第2章系统需求分析2.1目标1.应具有简单便捷的操作界面,能够让客户以最快的时间熟悉该系统,并进行操作。2.系统应具有良好的可扩展性,在后期的维护和系统功能扩充上能够很方便的操作。3.系统应具有良好的安全性,通过对用户密码的加密以及用户权限的控制,能够最大化的保证每一个用户的利益不受侵害。4.系统的前台与后台之间应具有良好紧密的联系,后台管理员能够通过对订单以及用户等级的一些处理在第一时间让客户得知自己的购物信息。2.2性能及运行需求当当网购物网站系统要求有一个良好稳定的运行环境,能够让用户安全、方便、快捷的进行操作,并且有清晰美观的操作界面,能够让用户在看到界面的第一时间有一个美好的购物心情。用户的每一步操作都要有一定的提示信息,能够让用户快速的对一些错误信息的填写进行修改。另外,系统要求有较高的可维护性,能够让管理人员轻松的进行维护。运行环境:该系统的开发和实现都在Windows7环境下进行,该操作系统下要装有MySql数据库、MyEclipse8.5开发工具、Tomcat6.0服务器。主机要求酷睿双核或更高的配置。MyEclipse8.5:MyEclipse8.5是以Eclipse为基础的功能强大的java软件开发工具,较之Eclipse,它的优点在于:兼容性良好、快捷键更多更提升编程效率、内置的Tomcat服务器和web浏览器可以让开发人员在测试时更加方便。MySQL数据库:MySQL是一个小型关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库,广泛地应用在Internet上的中小型网站中。Tomcat服务器:Tomcat服务器是一个免费的开放源代码的Web应用服务器,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。2.3功能需求该系统功能大概分为前台用户管理、图书浏览、购物车、订单以及后台管理人员的相关操作前台用户的操作:主要就是用户的注册和登录,新用户可以等过注册邮箱来申请会员,注册成功者可以通过注册账号进行登录。图书浏览的操作:用户登录后进入系统主界面,可以根据不同的条件对相关图书进行查询,如:上架时间、热销榜、图书分类、书名等。购物车的操作:用户选择好自己想要的图书后可以添加到购物车,并在购物车中对商品进行一系列的修改,如:更改数量、删除不想购买商品、恢复已删除商品等。4.前台订单的操作:用户确认好购物车中想购买的商品后可以填写订单,然后确认无误后提交订单,等待管理员进行处理。并可以查询以往订单情况的介绍。5.后台管理员的操作:后台管理员可以对图书(包括图书的种类)进行增删改查得操作,同时,对已注册用户同样可以进行相同的操作,并根据用户购买量对用户的等级进行修改。此外,管理员最重要的职责是可以修改订单状态,把是否已发货的信息反馈给前台用户。第3章技术简介3.1JSPJSP页面由HTML代码和嵌入其中的Java代码所组成。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠等特点。JSP的技术的优势:一次编写,到处运行。在这点上Java比PHP更出色,除了系统之外,代码不用做任何更改。系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。可维护性。由于JSP技术是一种开放的、跨平台的结构,因此Web服务器、平台及其他组件能很容易升级或切换,且不会影响JSP基本的应用程序。3.2JavaScriptJavaScript是由Netscape公司开发的一种脚本语言,在HTML基础上,使用JavaScript可以开发交互式Web网页。JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。运行用JavaScript编写的程序需要能支持JavaScript语言的浏览器。JavaScript短小精悍,又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。3.3MVC设计思想具体实现MVC设计模式分为三个层次:M(业务逻辑层)、V(视图层)、C(控制层)。每一层之间都有紧密的联系,通过不同的工具实现。例如:该系统由dao实现业务逻辑层,完成与数据库之间的数据交换,由struts2实现控制层,对相关业务进行处理,由JSP(JavaServerPage)实现视图层,将界面效果反馈给客户。3.4JSP是如何与struts2配合运行的首先,JSP页面是基于HTML静态页面并加入一些java代码来实现界面显示效果的Web页面。而struts2是基于Servlet的一个实现业务处理的开源框架。两者配合实现功能时,首先由JSP通过form表单采用post方式向一个action发送请求,然后在该action中通过get和set方法获取发送请求的JSP中得数据,再调用业务逻辑层中与数据库连接的方法,最后返回一个结果。再去struts配置文件中找到相对应的action配置,根据结果返回到另一个JSP页面,由该JSP页面将界面效果显示给用户。第4章系统设计4.1概要设计4.1.1系统数据流程设计系统概要设计的目的是确定系统该如何用最高的效率完成所要完成的任务,即确定组成系统的每个程序的结构。先从数据流图开始,设计几套完成系统功能的合理方案,并从其中选取一个最佳的方案执行之。然后再进行软件结构的设计,确定该软件由哪些模块组成以及这些模块之间是如何进行动态调用的。本系统的设计由我个人独立完成,即用户登录、注册、商品浏览、购物车、订单,以及后台管理维护模块的设计。首先由系统管理员登录系统,对图书进行初始化的处理,确认该上架进行出售的图书以及库存不足需要下架的图书同时对图书分类进行整理,及时更新分类的种类。此外,管理员还要对系统用户以及订单进行处理,根据用户的消费情况及时更新用户的等级以及订单的状态,让前台用户能够在最短的时间内看到自己的订单状态。其次,用户可以通过注册账号登录系统主页,对图书进行浏览、挑选以及购买。用户购买完图书后可以对购物车进行查看,并对商品进行结算,然后生成订单,填写订单的详细信息后进行确认。系统数据流程图:在线购物在线购物P用户管理员用户管理员F1F2F3F4F5F6F7F8F9F10F11F12F1F13多个用户和管理员对应一个系统。 前台购物前台购物P1商品信息表D3类别信息表D4用户信息表D0送货地址表D1订单信息表D2F1F2F3F4F5F6F7一级细化图用户浏览商品,购买之后系统把用户填写的地址,订单等详细信息提交到数据库中对应的数据表中。后台管理P2后台管理P2订单信息表D2用户信息表D0商品信息表D3类别信息表D4F8F9F10F11F12F13商品信息表D3类别信息表D4后台管理员对订单信息表,用户表,商品表,类别表等进行管理用户注册用户注册P1.1F1用户信息表D0用户按照系统要求填写自己的信息,系统把这些信息提交到数据库中对应的数据表中。浏览商品浏览商品P1.2商品信息表D3商品信息表D4F5系统把数据库中商品信息表的内容展示出来供用户浏览。生成订单生成订单P1.4F7F2F3F4订单信息表D2送货地址表D1二级细化图系统把用户购买的商品生成订单,用户填写详细信息。综合信息综合信息录入P2.1F8F9商品信息表D3类别信息表D4管理员把需要上传的商品信息按类别分别放到不同的数据表中,供用户在前台浏览。综合信息综合信息查询P2.2商品信息表D3类别信息表D4用户信息表订单信息表D0D2F10F11F12F13二级细化图不同数据表中的信息供管理员查看修改等综合管理。 综合信息综合信息修改P2.2商品信息表D3类别信息表D4用户信息表订单信息表D0D2商品信息表D3类别信息表D4用户信息表D0订单信息表D2二级细化图各种数据表经过综合信息修改后变成新的数据表。4.1.2数据字典用户信息数据字典用户信息数据字典名字:用户信息别名:user描述:系统用户的信息定义:用户=用户id+用户email+用户nickname+用户password+用户等级+用户是否已通过邮箱验证+用户邮箱验证码+用户最后登录时间+用户最后登录IP存储用户注册时填写的信息,用于用户登录,防止非法用户的操作,同时用于管理员管理用户。商品信息数据字典名字:商品信息别名:product描述:商品的相关信息定义:商品信息=商品id+商品名称+商品描述+商品上架时间+商品市场价格+商品当当价格+商品关键字+商品是否已下架+商品图片位置:存于数据库,在图书的购买、浏览以及后台图书管理的时候应用商品信息表,用于购买图书,用户浏览图书,后台管理员管理图书。图书信息数据字典名字:图书信息别名:book描述:图书的相关信息定义:图书信息=图书id+图书author+图书出版社+图书出版时间+图书总字数+图书印刷版次+图书总页数+图书印刷时间+图书印刷号+图书isbn号+图书作者总结+图书评价位置:存于数据库,图书浏览和后台添加图书的时候应用图书的相信信息,可以使用户对于感兴趣的图书有一个详细的了解,同时也让管理员对要添加的书籍进行详细信息管理。管理员数据信息字典名字:管理员信息名字:管理员信息别名:admin描述:管理员的相关信息定义:管理员信息=管理员id+管理员username+管理员password+管理员级别管理员列表,用于管理管理员,可以设置管理员权限级别,使其对用户订单和商品列表有对应的操作权限。订单地址信息数据字典名字:订单地址信息名字:订单地址信息别名:address描述:订单地址的相关信息定义:订单地址信息=地址id+用户id+收件人姓名+详细地址+邮编+座机+手机订单地址信息表,用于记录用户下订单时填写的详细信息。商品条目对象信息数据字典名字:商品条目对象信息名字:商品条目对象信息别名:item描述:商品条目对象的相关信息定义:商品条目对象信息=商品条目ID+订单ID+商品ID+商品name+当当网价格+商品数量+商品总价格位置:存于数据库,在购买图书添加到购物车时应用商品条目对象信息表,用于用户查看购物车中的详细信息,使用户在下订单前清楚自己要买的商品及价格。订单详细信息数据字典名字:订单信息名字:订单信息别名:order描述:订单的相关信息定义:订单信息=订单号+用户id+订单状态+订单时间+订单描述+总价+收货人姓名+详细地址+邮编+座机+手机订单地址信息表,用于记录用户下订单时填写的详细信息,以便于管理员对订单的操作,把商品邮寄到目的地。订单信息数据字典名字:订单信息名字:订单信息别名:category_product描述:订单详细相关信息定义:订单详细信息=id+商品id+购物车id位置:存于数据库,在查看订单详细信息的时候应用订单信息表,用于用户付完款后查看订单的详细信息。图书类型信息数据字典名字:图书类型信息名字:图书类型信息别名:category描述:图书类型相关信息定义:图书类型信息=id+图书类型+图书名字位置:存于数据库,在分类浏览图书的时候应用图书类型信息表,用于用户在分类浏览时对图书进行分类。4.1.3系统结构设计网上购物网上购物商城系统用户注册登录生成订单商品浏览商品购买商品管理订单管理用户管理分类管理热销榜编剧推荐新书榜新书热卖图书录入图书查询图书删除/修改订单查询订单汇总添加分类查询分类系统结构图4.1.4表结构设计和E-R图设计的表为:用户表(d_user,管理员表)(d_admin),商品表(d_product,图)书表(d_book),图书类别表(d_category,类别关系表)(d_category_product,订单)条目表(d_item,订单表()d_order),订单地址表(d_receive_address)。管理员表(d_admin)列名数据类型长度是否可为空说明idint12N管理员idnamevarchar50N管理员姓名passwordvarchar50N管理员密码admin_gradeint12N管理员级别用户表(d_user)列名列名数据类型长度是否可为空说明IdInt12N用户IdEmailVarchar50N用户邮箱NicknameVarchar50Y用户昵称PasswordVarchar50N用户密码User_integralInt12N用户等级Is_email_verifyChar3Y用户是否通过邮箱验证Email_verify_codeVarchar50Y邮箱验证码Last_login_timeBigint20Y最后登录时间Last_login_ipVarchar15Y最后登录ip用户邮箱用户邮箱邮箱是否验证用户等级最后登录IP密码最后登录时间昵称邮箱验证码商品表(d_product)列名列名数据类型长度是否可为空说明IdInt12N商品IdProduct_nameVarchar100N商品名称DescriptionVarchar300Y商品描述Add_timeDateY上架时间Fixed_priceDoubleN市场价格Dang_priceDoubleN当当价格KeywordsVarchar200Y关键字Has_deletedInt1N是否已下架Product_picVarchar200Y商品图片产品产品书名关键字市场价是否已下架当当价图片描述上架时间图书表(d_book)列名列名数据类型长度是否可为空说明IdInt12N图书IdAuthorVarchar200N图书作者PublishingPublishingVarchar200N出版社Publish_timeDateN出版时间Word_numberVarchar15Y总字数Which_edtionVarchar15Y版次Total_pageVarchar15Y总页数Print_timeDateY印刷时间Print_numberVarchar15Y印刷次数IsbnVarchar25YIsbn号Author_summaryTextN作者点评catalogueTextN图书评价图书作者图书作者出版社出版时间总字数版本号印刷号总页数印刷时间Isbn号作者总结评价图书类别表(d_category)列名列名数据类型长度是否可为空说明IdInt12N类别idTurnTurnInt10N一级标题En_nameVarchar200N英文名NameVarchar200N中文名descriptionVarchar200Y描述Parent_idInt10Y附属id目录英文目录英文名描述子标题中文名附属标识一级标题类型关系表(d_category_product)列名列名数据类型长度是否可为空说明IdInt12NIdProduct_idInt10N商品idCat_idInt10N父id订单条目标(d_tiem)列名列名数据类型长度是否可为空说明IdInt12NIdProduct_idInt10N商品idProduct_nameVarchar100N商品名Dang_priceDoubleN当当价格Product_numInt10N商品数量AmountDoubleN总价格StateVarchar20Y状态标识条目订单条目订单号总价商品数量商品标识单价商品名称订单表(d_order)列名列名数据类型长度是否可为空说明IdInt10NIdItem_idInt10N订单条目idUser_idInt10N用户idStatusInt10N订单状态Order_timeDateN订单时间Order_descOrder_descVarchar100Y订单描述Total_priceDoubleN总价Receive_nameVarchar100Y收件人姓名Full_addressVarchar200Y详细地址Postal_codeVarchar8Y邮编mobileVarchar20Y手机PhoneVarchar20Y座机StateVarchar20Y状态标识订单用户订单用户ID订单状态订单时间订单描述总价收货人姓名地址邮编手机座机地址表(d_receive_address)列名列名数据类型长度是否可为空说明IdInt12NIdUser_idInt11N用户idReceive_nameVarchar20N收件人姓名Full_addressVarchar200N详细地址Postal_codeVarchar8N邮编MobileVarchar15Y手机phoneVarchar20Y座机地址用户地址用户ID手机座机收货人姓名邮编详细地址4.2详细设计4.2.1系统概述系统的详细设计主要的任务就是设计出系统每一个功能步骤的具体流程和算法的实现,方便开发者和使用者能够更加清晰的对系统进行操作。同样,也是为了使系统后期的测试和维护变的更加轻松。我设计的这个当当网上书城系统包括用户模块、图书浏览模块、购物车模块、订单模块以及后台管理模块,每个模块都有自己相应的实现流程,同样的,每一个模块之间又有密不可分的联系。1.用户模块:该模块主要是实现用户的注册和登录功能。新的用户可以通过注册新的账号来登录到系统主页,而后进行购买,下订单等一系列的操作。开始是否会员开始是否会员登录结束注册是否2.商品浏览模块:用户登录系统主页后可以对商品进行浏览,从而决定是否购买商品。浏览图书可以根据多种不同的方式进行浏览,包括:按类别浏览、按编剧推荐浏览、按新书上架浏览、按热卖榜浏览、按书名浏览等等。开始用户登录开始用户登录结束是否成功图书浏览3.购物车模块:用户登录主页后在浏览的过程中可以对喜欢的图书进行购买,这时用户所买图书会全都添加到购物车,当用户选购完图书后可以去查看自己的购物车,用户在购物车界面可以对购买图书的数量进行修改,同时也可以删除不打算再购买的图书以及恢复已经删除的图书。4.订单模块:用户购买完图书后可以对所购商品进行结算,结算后进入订单明细界面,用户可以通过该界面再一次确认自己是否要完成此次购买,确认无误后进入填写订单地址及信息的界面,确认后成功生成订单。开始浏览商品开始浏览商品选购商品是否登录结算填写收货信息结束Y登录/注册N5.后台管理模块:管理员通过账号登录后台,可以对用户、订单、图书类别以及图书分别进行管理。及时的更新数据,并把数据反馈给前台的用户。开始管理员登录开始管理员登录成功图书分类管理图书管理结束Y订单管理N用户管理功能选择功能选择添加分类查看/删除分类功能选择查看订单订单汇总功能选择查找用户功能选择添加图书查看/删除图书搜索图书操作完成4.2.2系统流程图开始浏览网页选择要购开始浏览网页选择要购买的图书是否登录是否注册是否是登录放入购物车注册否继续购买确认购物填写收货地址生成订单结束第5章系统实现5.1数据库连接的实现该系统数据库采用MySQL数据库,代码如下:<propertyname="dialect">org.hibernate.dialect.MySQLDialect</property><propertyname="connection.url">jdbc:mysql://localhost:3306/dangdang?useUnicode=true&characterEncoding=utf8</property><propertyname="connection.username">root</property><propertyname="connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="file">dangdang</property><propertyname="connection.password">root</property>5.2系统各个模块功能及实现效果图5.2.1用户模块及效果图用户模块主要包括用户注册和登录两个功能,通过form表单提交数据到相应的action,然后再在action中进行相应的处理1.用户注册实现的主要代码:PreparedStatementpst=getConnection().prepareStatement( "insert into d_user (email,nickname,password,"+"user_integral,is_email_verify,email_verify_code,+"last_login_time,last_login_ip)values(?,?,?,?,?,?,?,?)")2.用户登录实现的主要代码:检查用户账号密码:publicUsercheckUser(Useruser)throwsException{Useruser2=null;user2=(User)getSession().createQuery("fromUserwhereemail=?").setString(0,user.getEmail()).uniqueResult();if(user2==null){returnnull;}else{if(user2.getPassword().equals(MD5Util.digest(user.getPassword()))){returnuser2;}else{returnnull;}}}Hibernate框架实现实体类对应表的映射关系代码:<hibernate-mapping><classname="org.tarena.dang.pojo.User"table="d_user"catalog="dangdang"><idname="id"type="integer"><columnname="id"/><generatorclass="identity"></generator></id><propertyname="email"type="string"><column name="email" length="50" not-null="true"unique="true"/></property><propertyname="nickname"type="string"><columnname="nickname"length="50"/></property><propertyname="password"type="string"><columnname="password"length="50"not-null="true"/></property><propertyname="userIntegral"type="integer"><columnname="user_integral"not-null="true"/></property><propertyname="isEmailVerify"type="string"><columnname="is_email_verify"length="3"/></property><propertyname="emailVerifyCode"type="string"><columnname="email_verify_code"length="50"/></property><propertyname="lastLoginTime"type="long"><columnname="last_login_time"/></property><propertyname="lastLoginIp"type="string"><columnname="last_login_ip"length="15"/></property><listname="address"lazy="false"cascade="all"inverse="true"><!--指定关联的外键字段--><keycolumn="user_id"></key><!--指定list存储元素的索引字段和起始值--><list-indexcolumn="id"base="1"></list-index><!--指明加载关系和对方类型--><one-to-manyclass="org.tarena.dang.pojo.Receive_Address"/></list>/<class>/<hibernate-mapping>效果图如下5.2.2图书浏览模块及效果图该模块主要是从数据库中把所有的图书分类以及图书信息都查出来然后按照不同的分类显示在界面上让用户进行浏览。主要代码实现:CategoryDAOdao=newCategoryDaoImpl();BookDaodao1=newBookDaoImpl();try{pCategory=dao.finCategoryById(pid);cats=dao.findByParentId(pid);Map<Integer,Integer>countMap=dao.findCountMap();countPnum(pid,cats,countMap);pros=dao1.findByCatId(cid,page,size,type);maxPage=(dao1.findCount(cid)%size==0?dao1.findCount(cid)/size:dao1.findCount(cid)/size);return"success";}catch(Exceptione){e.printStackTrace();return"error";}实现效果图:5.2.3购物车模块及效果图该模块主要功能是实现用户对图书的购买功能,在购物车界面,用户还可以对商品的数量进行修改,并且删除不再想购买的图书。主要代码实现:CartItemDaocart=CartItemDaoImpl.getInstance(session);ProductDaodao=newProductDaoImpl();try{Productp=dao.findById(id);CartItemci=newCartItem();ci.setPro(p);ci.setQty(1);if(cart.add(ci))ok=true;elseok=false;return"add";}catch(Exceptione){e.printStackTrace();return"error";}实现效果图:5.2.4订单模块及效果图该模块主要实现用户订单的一些操作,首先,用户对购物车结算后进入到订单详细列表的界面,在该界面用户可以再一次确认是否要购买当前图书,确认后,用户进入填写收货地址的界面,完成后生成订单。主要实现代码:publicList<Receive_Address>findAllreceiveAddress(Map<String,Object>session)throwsException{List<Receive_Address>address=newArrayList<Receive_Address>();Useruser=newUser();user=(User)session.get("user");System.out.println("session是++++++"+user.getId());user=(User)getSession().get(User.class,user.getId());address=(List<Receive_Address>)getSession().createQuery("fromReceive_AddresswhereuserId=?").setInteger(0,user.getId()).list();System.out.println(address);returnaddress;}Hibernate框架实现实体类与表的映射关系代码:<hibernate-mapping><classname="org.tarena.dang.pojo.Order"table="d_order"catalog="dangdang"><idname="id"type="integer"><columnname="id"/><generatorclass="identity"></generator></id><propertyname="userId"type="integer"><columnname="user_id"not-null="true"/></property><propertyname="status"type="integer"><columnname="status"not-null="true"/></property><propertyname="orderTime"type="long"><columnname="order_time"not-null="true"/></property><propertyname="orderDesc"type="string"><columnname="order_desc"length="100"/></property><propertyname="totalPrice"type="double"><columnname="total_price"precision="22"scale="0"not-null="true"/></property><propertyname="receiveName"type="string"><columnname="receive_name"length="100"/></property><propertyname="fullAddress"type="string"><columnname="full_address"length="200"/></property><propertyname="postalCode"type="string"><columnname="postal_code"length="8"/></property><propertyname="mobile"type="string">主要实现代码:publicAdmincheckAdmin(Stringname,Stringpassword)throwsException{Stringhql="fromAdminwherename=?";System.out.println(name);System.out.println(password);Adminadmin=(Admin)getSession().createQuery(hql).setString(0,name).uniqueResult();if(admin==null){returnnull;}else{if(password.equals(admin.getPassword())){System.out.println("登陆成功!!");returnadmin;}else{returnnull;}}}publicvoideditAdminById(intid,Stringpassword,intgrade)throwsException{Adminadmin=(Admin)getSession().get(Admin.class,id);admin.setPassword(password);admin.setGrade(grade);getSession().saveOrUpdate(admin);}publicvoiddeleteUserById(intid)throwsException{Useruser=(User)getSession().get(Uclasser.,id);getSession().delete(user);}Hibernate实现实体类与表映射关系代码:5.3特色功能5.3.1注册邮箱验证publicclassValidEmailCodeAction{privateStringemailVerifyCode;privatebooleancodeResult;publicStringexecute()throwsException{System.out.println("ValidEmailCodeActionbegin1");UserDAOdao=newHiberUserDAO();Useruser=dao.findByEmailVerifyCode(emailVerifyCode);System.out.println("ValidEmailCodeActionbegin2user="+user);if(user!=null){codeResult=true;}else{codeResult=false;}returnAction.SUCCESS;}publicbooleanisCodeResult(){returncodeResult;}publicvoidsetCodeResult(booleancodeResult){this.codeResult=codeResult;}publicStringgetEmailVerifyCode(){returnemailVerifyCode;}publicvoidsetEmailVerifyCode(StringemailVerifyCode){this.emailVerifyCode=emailVerifyCode;}}5.3.2分页显示功能publicStringexecute()throwsException{CategoryDAOcatDao=newHiberCategoryDAO();Categorycat=catDao.findById(pid);subCats=cat.getSublist();for(CategorycsubCats: ){totalPnum+=c.getPnum();}ProductDAOproDao=newHiberProductDAO();pros=proDao.findProductByCatId(cid,page,pageSize);System.out.println("pros:"+pros.size());intpagePlus=0;if(proDao.findProductByCatIdcid(,0,totalPnum).size()%pageSize!=0){pagePlus=1;}totalPage=proDao.findProductByCatIdcid(, 0,totalPnum).size()/pageSize+pagePlus;return"success";}Jsp页面中的代码:<divid="divTopPageNavi"class="list_r_title_text3"><!--分页导航开始--><s:iftest="page>1"><divclass='list_r_title_text3a'><aname=link_page_nexthref="booklist.action?pid=${pid}&cid=${cid}&page=${1}"><imgsrc='../images/page_up.gif'/></a></div></s:if><s:else><divclass='list_r_title_text3a'><imgsrc='../images/page_up_gray.gif'/></div></s:else><divclass='list_r_title_text3b'>第${page}页/共${totalPage}页</div><s:iftest="page<totalPage"><divclass='list_r_title_text3a'><aname=link_page_nexthref="booklist.action?pid=${pid}&cid=${cid}&page=${page+1}"><imgsrc='../images/page_down.gif'/></a></div></s:if><s:else><divclass='list_r_title_text3a'><imgsrc='../images/page_down_gray.gif'/></div></s:else><!--分页导航结束--></div>5.4项目开发中出现的问题与解决办法本次毕业设计可以说是大学三年来第一次自己独立的完成一个项目,因此,期间遇到的问题自然很多,这其中有自己想通的也有网上搜的也有同学帮忙解决的也有看书解决的。总之,整个毕业设计做完,对自己的技术有了一个质的提高,也使自己看到了许多技术上的缺陷,下面我举几个自己在项目中遇到的问题来说明一下:1.经常出现的一个就是编码问题,虽然每次在建Jsp页面时都会记得把编码改成UTF-8的,但是还是有很多时候出现乱码的情况,每次出现这个错误的时候我都会在出现乱码的那个页面上右键选择属性,看看它的字符编码是否正确,这种解决方法屡试不爽。2.在做后台管理的时候,由于后台主页面是由多个分页面嵌套在里面生成的,因此在action的跳转时总会出现路径不对的问题,每次出现这种错误,我也是自己慢慢的尝试,修改action的路径,有的时候实在不行就把相对路径改为绝对的。3.在后台图书录入功能的实现时,上传图片一直上传不成功,后来经过上网查询以及向同学请教,发现struts.xml配置文件中少写了一个配置,这一点也使我至今记忆尤深。4.在做前台的订单详细的功能时,一开始订单详细里面的商品id和真实的商品id总是对不上,导致查看出来的订单详细根本不是理想中想查得那个,后来经过自己捉摸终于找到了原因,把订单详细的数据库表稍微进行了一下表结构的修改。5.在做注册功能的格式验证时,js中的方法总是在页面中显示不出效果来,后来通过在js方法中加入alert不断的进行测试,终于一步一步的把所有的错误都改正了过来。第6章系统测试6.1测试原则及方法介绍在程序的开发过程中应该尽量避免做完一个整体的模块再进行测试,而是每做完一个小的功能就进行反复的测试,保证该功能准确无误。在测试的过程中不要太过局限性,要把所有可能出错的情况都考虑周全,确认功能的稳定性。在设计测试用例时,应该由输入数据和对应的预期输出效果两本分组成,二者缺一不可。在设计测试用例时,应该考虑周全合理的输入数据和不合理的输出效果。应该妥善的保存测试计划,并严格的执行该计划,不能随意的进行测试。在程序测试时,程序员应该尽量的让他人对自己的程序进行测试,而不是一直由自己对自己的程序进行测试,借此来提高测试的全面性。两种常用的测试方法:白盒测试此方法是按照程序内部的逻辑进行测试,他允许测试人员利用程序内部的逻辑结构及相关信息。检查程序中的每一个状态是否与预期的结果一致。因此,白盒测试又叫结构测试或者逻辑驱动测试黑盒测试这种测试方法把测试对象看成一个不能打开的黑色的大盒子,测试时完全不用考虑程序的内部逻辑结构。它只检查程序是否按照预期的效果正常执行,输入的数据和预期的输出结果是否考虑的周全,不仅要考虑所有合理的输入,对那些不合理的输入也要进行测试。因此,黑盒测试又叫功能测试或者数据驱动测试。在该系统的测试中,主要还是使用黑盒测试的方法。6.2测试环境硬件:CPU:i3-2350CPU@2.3GHz 内存:2G硬盘:500G软件:windows7操作系统MyEclipse8.5MySQL数据库6.3测试对象6.3.1管理员模块管理员登录时,输入正确的用户名和密码及错误的用户名和密码,看是否正确。登录成功后看各项功能是否能够正常运行。6.3.2用户模块用户登录时,输入正确的邮箱和密码及错误的邮箱和密码,看是否正确。登录成功后看各项功能是否能够正常运行。6.3.3订单模块输入订单地址的时候输入正确的信息和错误的信息,看是否正确。订单成功后看之后的各项功能是否能够正常运行。6.4测试用例及结果6.4.1管理员模块1.管理员登录时,输入正确的用户名和密码及错误的用户名密码,看是否正确正确的用户名和密码:输入:用户名:zhao密码:123456预期输出:跳转到后台登录主界面。错误的用户名和密码:输入:用户名:aaaa密码:123123与其输出:跳转到当前登录界面。以上测试用例经测试后是正确的。2.管理员登录后,是否可以进行用户管理经测试,与预期结果一致。6.4.2用户模块1.用户登录时,输入正确的邮箱和密码以及错误的邮箱和密码,看是否正确。1)正确的邮箱和密码:输入:用户名:zhao@密码:123123预期输出:跳转到当当网上书城主页2)错误的邮箱和密码:输入:用户名:qwe@密码:111111预期输出:跳转到当前用户登录界面以上测试用例经过测试是正确的2.用户登录成功后,是否可以进行图书浏览1)是否可以进行图书浏览22)是否可以进行图书购买3)是否可以进行结果处理以上测试用例结果经过验证后与预期结果一样6.4.3订单模块.1输入订单地址的时候输入正确的信息和错误的信息,看是否正确。1)正确的信息输入:收件人姓名:赵新渠,收件人详细地址:三河邮政编码:065200,电话:3162208手机期结果:跳转到订单成功界面2)错误的信息输入:收件人姓名:asd,收件人详细地址:tainjin邮政编码:3000384,电话:812手机:1382191784预期输出:在当前页面输出错误信息的提示,无法完成页面的跳转2.是否可以继续挑选商品以上测试用例结果经过验证后与预期结果一样结论该毕业设计与当今流行的一些网上书城系统相似,前台用户通过注册成为新的会员后登陆到主页面进行图书的浏览,选中自己喜欢的图书后进行购买,添加到购物车,结算后生成订单,而后台管理员可以同时对图书类别、图书信息、订单以及用户进行管理。把信息及时反馈给前台的用户。该系统具有美观、大方、易操作等诸多优点,可以让用户以最轻松最快捷的方式购买到自己喜欢的图书。通过这次毕业设计,对很多东西有了新的认识和新的见解,认识问题的和思考解决办法有了本质上的进步,特别是对一个系统开发的模式有了更深的认识,对专业技能的运用更熟练。当然,该系统同样也存在诸多问题,比如:数据库表的设计不够优化,操作起来不是最方便的;电子商务类型的网站必备的功能配送方式、支付宝由于第三方接口的原因也没有实现,发送邮件由于没有联网也没有写实现代码。在当今信息时代,计算机技术与网络技术越来越广地成熟的应用于各个领域,同时也影响了电子商务领域的重大变革,使线下购物模式演变到线上交易,我相信购物商城将会更多更好的应用在电子商务领域,以后的购物网站将会更加完善。致谢购物商城系统给我获得了实践中再学习的机会。通过独立完成购物商城系统后,了解了其实自己还有很多很多的东西还不知道,还需要再学习。以为三年的学习时间很长,可以学到很多知识,其实老师所教的知识还远远不够,但老师给了我们学习新知识新技术的方法,让我们能自己学习,自己去摸索,这一点是最重要的。所以感谢每一位任课的老师,是他们对我们高度负责的态度,含辛茹苦的教导才使得我们学到了将会受益终生的知识教诲。最后,感谢曾给过我帮助的同窗三年的同学和在毕业设计过程中给我帮助的同学和朋友,愿他们心想事成。参考文献[1]、陈臣,王斌等,研磨Struts2,清华大学出版社,2011[2]、张桂珠刘丽陈爱国Java面向对象程序设计(第二版)北京邮电大学出版社[3]、毕广吉Java程序设计实例教程[M]北京:冶金工业出版社,2007年[4]、王保罗Java面向对象程序设计[M]北京:清华大学出版社,2003年[5]、高林,周海燕网上书店系统与案例分析[M]北京:人民邮电出版社,2004年[6]、刘滕红,孙细明信息系统分析与设计[M]北京:科学出版社,2003年[7]、林邦杰,彻底研究Java北京:电子工业出版社,2002年[8]、王育坚,VisualC++面向对象变成教程,清华大学出版社,2003[9]、孙鑫,《Struts2深入详解》,电子工业出版社,2001[10]、夏昕,曹晓钢等,《深入浅出Hibernate》,电子工业出版社,2005[11]、鲍尔,《Hibernate实战(第2版)》,人民邮电出版社,2008[12]、计文柯,《Spring技术内幕》,机械工业出版社,2012[13]、GaryMak,《Spring攻略》,人民邮电出版社,2009[14]、李兴华,《Java开发实战经典》,清华大学出版社,2009

毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日指导教师评阅书建议成绩:建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)指导教师:(签名)单位:(盖章)年月日

评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□

温馨提示

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

评论

0/150

提交评论