![网上商城购物系统毕业论文(设计)论文正文_第1页](http://file4.renrendoc.com/view/2bb55d8ac5fb297aee113580ffcdbae6/2bb55d8ac5fb297aee113580ffcdbae61.gif)
![网上商城购物系统毕业论文(设计)论文正文_第2页](http://file4.renrendoc.com/view/2bb55d8ac5fb297aee113580ffcdbae6/2bb55d8ac5fb297aee113580ffcdbae62.gif)
![网上商城购物系统毕业论文(设计)论文正文_第3页](http://file4.renrendoc.com/view/2bb55d8ac5fb297aee113580ffcdbae6/2bb55d8ac5fb297aee113580ffcdbae63.gif)
![网上商城购物系统毕业论文(设计)论文正文_第4页](http://file4.renrendoc.com/view/2bb55d8ac5fb297aee113580ffcdbae6/2bb55d8ac5fb297aee113580ffcdbae64.gif)
![网上商城购物系统毕业论文(设计)论文正文_第5页](http://file4.renrendoc.com/view/2bb55d8ac5fb297aee113580ffcdbae6/2bb55d8ac5fb297aee113580ffcdbae65.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录TOC\o”1-3”\h\z\uHYPERLINK\l”_Toc325965338"摘要 IIIHYPERLINK\l”_Toc325965339”Abstract IVHYPERLINK\l”_Toc325965340"第一章绪论 1HYPERLINK\l”_Toc325965341”1.1课题背景 11。3系统开发环境 2_Toc325965345”1。5相关技术简介 3HYPERLINK\l”_Toc325965346”1.5.1JSP开发技术简介 3HYPERLINK\l”_Toc325965347”1。5.2SQLServer2005数据库简介 3第二章可行性研究 5HYPERLINK\l”_Toc325965349"2。1技术可行性 52。2经济可行性 5HYPERLINK\l”_Toc325965351"2。3法律可行性 62。4运行可行性 6HYPERLINK\l”_Toc325965353”第三章需求分析 7HYPERLINK\l”_Toc325965354"3。1前台业务流程分析 7HYPERLINK\l”_Toc325965355"3。2后台业务流程分析 73.3数据流程分析 8HYPERLINK\l”_Toc325965357"第四章系统总体设计 10HYPERLINK\l”_Toc325965358”4。1系统结构分析 104。2功能模块设计 114.2.2后台模块的功能模块设计 12HYPERLINK\l”_Toc325965362”4。3数据库设计 13HYPERLINK\l”_Toc325965363”4。3.1E—R图 14HYPERLINK\l”_Toc325965364”4。3.2基本表设计 18HYPERLINK\l”_Toc325965365"第五章系统详细设计 225。2系统前台各主要模块的功能设计 235。2.1用户登陆模块的实现 23HYPERLINK\l”_Toc325965369”5.2。2新会员注册模块的实现 245。2。3购物车模块的实现 26_Toc325965372"5。3后台管理模块的实现 30HYPERLINK\l”_Toc325965373"第六章系统测试及性能分析 34HYPERLINK\l”_Toc325965374"6。1测试的基本概念 346。3系统测试 35HYPERLINK\l”_Toc325965377”6.4系统的性能分析 37HYPERLINK\l”_Toc325965378"6。5系统中所存在的问题及解决方案 38_Toc325965380”6。5.2开发功能模块所遇到的难点 39HYPERLINK\l”_Toc325965381”6.5。3系统中存在的问题及拟定的解决方法 39HYPERLINK\l”_Toc325965382”总结 41HYPERLINK\l”_Toc325965383”参考文献 42HYPERLINK\l”_Toc325965384”致谢 43\t"_blank”程序所需的可靠性和伸缩性。其中,用以提高可靠性的特性包括日志传送、在线备份和故障切换群集。在伸缩性方面的改进包括对多达32颗CPU和64GBRAM的支持.通过自动优化和改进后的管理特性——诸如数据文件尺寸的自动管理、基于向导的数据库拷贝、自动内存管理和简化的故障切换群集安装与管理,在线商务应用程序能够被迅速部署并有效管理。
第二章可行性研究可行性分析是在全面调查基础上,针对新系统的开发是否具备必要性的可能性,对新系统的开发从技术、经济、运行的方面进行分析和研究,以避免投资失误,保证新系统开发成功,可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决.这部分将从以下几个方面进行研究:技术可行性、经济可行性、法律可行性和运行可行性.2。1技术可行性技术可行性是对现有技术进行评价,分析系统是否可以用现有技术来实施以及技术发展对系统建设有什么影响。新系统可以用现有的技术来实现,针对目前的开发工具而言,新系统比较适合采用流行的WEB开发工具J2EE.这种开发工具非常适合于B/S结构的应用系统,提供了强大的软件生成器.与其他开发工具相比,J2EE能够支持跨平台客户端应用程序开发的工具,除WINDOWS外,它还支持MACINTOSH和UNIX平台,可提供优秀的报表生成方法和完整的在线帮助以及丰富的INTERNET访问功能和组件特征.J2EE安全可靠,对于开发人员而言开发方便,对于使用人员而言界面友好,开发出来的软件简单易用,掌握方便。开发出的软件易学易用,即便原来没有什么计算机操作基础也会很容易学会使用.2.2经济可行性系统的经济可行性指的是对组织的经济状况和投资能力进行分析,对系统建设、运行和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计.但该平台设计只是作为本人的毕业设计,又因为本人的设计能力有限,其功能还不能完善,所以没有什么经济效益可谈.2。3法律可行性该电子商务系统是本人自主开发的网上购物系统,还是个比较粗糙、功能还不完善的系统,开发这个系统不同于开发普通的系统软件,即该系统不同于原来已有的现代化的系统,不存在侵权等问题,本系统开发不会侵犯他人、集体或国家利益,不违反国家法律,因此具有法律可行性.2。4运行可行性操作可行性是指系统对组织机构的影响,现有人员和机构、设施、环境等对系统的适应性以及进行人员培训的补充计划可行性。该系统需要搭建JVM即JAVA虚拟机和Tomcat环境,在此环境下系统,并且在正确连接数据库后可以正常运行.而且从新系统使用难易程度上来看,新系统使用起来并不复杂,界面设计亲切,容易上手,使用起来还是比较方便的。
第三章需求分析软件需求分析工作是软件生存周期中重要的一步.只有通过需求分析才能把软件功能和性能的总体概念描述为具体上的软件需求规格说明,从而奠定软件开发的基础.软件需求分析工作也是一个不断认识和逐步细化的过程。该过程将软件调研阶段的需求资料进行分析和设计,使软件范围逐步细化到详细定义的程度,并分析出各种不同的软件元素,然后为这些元素找到可行的解决办法。本章将从不同角度的需求分析问题,讲述软件需求类型,分析过程,并部分给出了数据字典和数据流图。3.1前台业务流程分析前台业务主要面向客户。用户可以浏览网站主页、商品的介绍和一些新闻信息。前台业务流程如图3。1所示。商品信息浏览商品信息浏览浏览商品清单订购订单用户购物车浏览商品清单订购订单用户购物车查看订单查看订单修改资料修改资料修改资料修改资料图3。1前台业务流程3。2后台业务流程分析在网站设计中,管理员完成对网站的维护与管理的工作.使用数据库中权限的功能对管理员设置权限,管理员可以对管理及商品分类的信息进行新增,修改、删除,也可以对订单信息进行查看、撤销、编辑状态等处理,同时管理员也可以对用户信息进行管理。后台业务流程如图3。2所示。管理员管理员维护网站取出订单维护网站取出订单受理订单受理订单网站信息网站信息订单提交订单提交网站信息网站信息图3。2后台业务流程3。3数据流程分析在分析了系统的业务流程之后,就要分析系统的数据流,为后面设计网站的数据库做好准备.这里主要利用数据流程图来说明数据流程。数据流程图是一个图示工具,容易理解,容易在开发和用户之间进行交流,以及在开发组织内部交流。因此数据流图作为一种模型工具已经广泛使用在软件工程的事件中。根据前台业务流程,可以将用户的活动分为两类.用户浏览所使用到的数据归纳为站内信息,如商品信息等。而用户提交的订单则作为网站的订单数据。相应的,根据后台业务流程,管理员对网站内容的添加、更新和删除等所操作的数据定义为商城信息.网站数据流的总体图如图3。3所示。商城信息0网站系统商城信息0网站系统管理员站内信息用户站内信息用户订单数据用户订单数据用户图3。3网站数据流的总体图进一步分析网站的数据流程,得到网站数据流程的零级图,如图3。4所示.图3.4网站数据流的零级图第四章系统总体设计 本阶段设计的基本目标是解决系统如何实现问题,也叫做概要设计,本阶段主要任务是划分出系统的物理元素及设计软件的结构,完成软件定义时期的任务之后就应该对系统进行总体设计,即根据系统分析产生的分析结果来确定这个系统由哪些系统和模块组成,这些系统和模块又如何有机的结合在一起,每个模块的功能如何实现。系统设计的目标是使系统实现拥有所要求的功能,同时,力争达到高效率、高可靠性、可修改性,并且容易掌握和使用。总体设计过程通常有两个主要阶段组成:系统设计和结构设计,其中系统设计确定系统的具体实现方案,结构设计确定软件结构.结构化设计技术的核心是模块分解设计,模块上系统结构图的主要元素.其设计思想是,采用自顶向下、逐层分解的方法,先给出总的模块功能,再逐层分解,使其分为多个大小适当,功能明确,具有一定独立性且容易实现的模块,从而把一个复杂的系统设计转变成为多个简单模块的设计.4.1系统结构分析根据业务流程,需要将网站划分为前台、后台和数据库。前台中,客户在登录网站主页后即可链接查看网站等信息,还可以做订购商品等活动。为了方便客户搜索感兴趣的商品信息,将商品搜索嵌入到主页面中。数据库将要作为网站后台重要的组成部分,管理员的主要操作几乎围绕数据库,最后将更新的数据显示给前台.前台是一个比较大的功能群,它所包含的信息不仅数量多,而且种类不同.将它设计成比较优化的结构形式能组织好网站的信息内容并将其归类,方便用户获得所需要的信息.其中每一部分都以尽量少内容显示,以免浏览者看的眼花缭乱而失去耐心。除了这些作用外,设计好前台的结构形式,也是为后面程序的编写做出了框架.在为系统划分功能模块,并以模块为单位来实现设计时也是以这个结构为基础的。系统的后台要对整个网站的信息和数据进行维护。网站前台所显示的信息在后台都应该有对应的维护。这样,除了设计后台的各个管理界面外,为了方便管理员的工作,可以将各个管理的界面结合到一个页面中.因此,各个管理的界面会作为主管理的分支。在设计好网站前台和后台的结构后,就将数据库加入到结构中。后台将更新的数据写入到数据库中,前台再将数据库中的信息取出来并显示。4.2功能模块设计层次模块结构是将系统划分为若干子系统,子系统下在划分为若干的模块。而模块是指具备输入输出、逻辑功能、运行程序和内部数据四种属性的一组程序。在结构化设计中,模块一般都是按功能划分的,通常称为功能模块。合理的功能模块的划分能够极大限度地减少重复劳动、提高开发工作的效率并增大系统的可维护性.以前面的系统分析为基础,将系统分为两大模块,即前台模块和后台模块。网上购物系统的功能结构如图4。1所示。网上购物平台网上购物平台index.jsp。商品修改用户管理管理者进入新闻管理用户注册商品管理商品添加会员管理新闻修改新闻添加商品名称用户修改会员删除商品搜索网站布局图4.1网上购物系统的功能结构4.2.1前台模块的功能模块设计前台模块主要为登陆网站的用户提供商品和服务的信息,填写并提交订单的服务.这样,将前台模块再细分为用户管理模块、商品查询模块、购物车模块、修改个人资料模块。顾名思义,这些模块的名称基本概况了它们的功能。下面详细说明一下这些功能模块的设计:(1)用户管理模块:为了方便于网站的管理,必须由一套完整的用户管理体系.该网站用户管理模块主要实现用户的注册、登陆、修改密码等功能。(2)购物车模块:在超市购物,可以根据自己的需要将很多商品挑选至购物车或购物篮中,然后到收银台结账。而在网上虚拟的商城中,当然没有办法使用真正的购物工具,因此,通常都会采用一种被称为“购物车"的技术来模拟现实生活。在网上商城中,所选商品须通过购物车进行暂存,然后生成订单.这种技术使用起来十分方便,不但可以随时添加、查看、修改、清空购物车中的内容,还可以随时去收银台结账。(3)商品搜索模块:用户根据商品的名称可以搜索到所需要的商品信息。(4)个人资料管理模块:用户资料修改是为更改个人信息所提供的窗口,为了保护用户信息不受非法侵入,用户只有登录后才有权限修改自己的个人资料.这样,子模块各自的内容基本设计好。下面可以设计如何将这些模块组织在一起,构成一个结构比较合理的前台了.除了在主页中建立面向其他模块的链接外,也要在其他模块中建立返回主页面的链接。另外各个模块间也应该互相链接起来。4。2。2后台模块的功能模块设计后台管理模块的功能是对站内的资源进行管理和维护.以后台的业务流程分析和前台各个模块的设计为基础,根据用户的需求分析来确定后台管理模块应具有的功能.后台管理模块的各个子功能模块如下:(1)管理员身份验证模块:为合法用户提供一个后台入口。该模块的功能是对管理员身份进行验证.用户输入登陆ID和密码的有效性,如果通过验证则跳转后台主页,否则提示错误。(2)商品管理模块:向商品表插入前台首页展示的商品信息,也就是添加商品信息的功能。(3)处理订单模块:网站管理者对用户订单的执行和编辑状态。(4)用户信息管理模块:查询所有注册用户,对一些非法或失信用户进行删除操作。(5)新闻管理模块:新闻管理即对网站信息的管理,新闻管理是一个商务网站中不可缺少的组成部分,它可以增进用户与网站之间的交流。4。3数据库设计数据库是数据库应用程序的重要组成部分。一个设计结构合理的数据库对于应用程序的开发效率和程序的性能都是非常重要的。数据库的设计过程大致如下:(1)根据用户需求,确定数据库要保存的信息。对用户需求进行分析时数据库设计的第一个阶段。对用户需求进行分析是数据库设计的第一个阶段.(2)设计数据库的概念模型。概念模型是按用户的观点来对数据建模,使用与进行信息世界建模的工具。它对整个数据库的设计具有深刻的影响。(3)逻辑结构设计。逻辑结构是把概念结构转化为与所采用的数据库管理系统所支持系统的数据模型相符合的过程。(4)数据库的实施与维护。在设计好前台与后天的功能模块后,就开始进行数据库的设计了。根据网站系统的分析,数据库是整个网站的核心。从前台显示的信息到后台操作的对象,都是围绕数据库展开的.4.3。1E—R图E—R图是一种概念模型.概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是显示世界到信息世界的第一层抽象,使数据库设计人员进行设计的有利工具,也是数据库设计人员和用户之间进行交流的语言,因此概念模型一方面应该具有较强的语义表达能力,能够方便直接的表达受众的各种语义知识,另一方面它还应该简单、清晰并且易于用户理解。以下是各个数据表的实体图。(1)商品信息表hw的实体图商品编号商品名称图片路径商品类别编商品编号商品名称图片路径商品类别编号商品描述商品数量会员价格正常价格是否推荐发布时间是否特价商品信息会员信息表member的实体图会员信息会员信息会员密码会员电话会员编号会员帐号注册时间会员地址图4.3用户信息表tb_User的实体图订单表saleorder的实体图订单信息订单信息订单编号购物时间箱是否已经处理称用户编号用户地址图4。4订单表saleorder的实体图
管理员表admin的实体图管理员信息管理员信息编号管理员名称称箱密码用户地址图4。5管理员admin的实体图(5)新闻列表news的实体图新闻编号新闻标题新闻类别编号新闻内容新闻列表图4。新闻编号新闻标题新闻类别编号新闻内容新闻列表(6)新闻类别列表news_category的实体图类别名称类别名称类别编号类别描述商品信息父节点id类别排序等级图4。7新闻类别列表news_category的实体图(7)订单产品表saleproduct的实体图订单产品信息订单产品信息编号产品编号箱产品数量所属订单编号产品价格图4.8订单产品表的实体图(8)总体E-R图
生成生成订单修改会员信息111nn1会员购买商品图4。9总体E—R图4。3。2基本表设计表的设计是这次设计的一个核心内容.根据前面对网站前台与后台功能模块的分析和对数据库中实体关系的设计,可以看到网站中所用到的数据信息基本包括:会员信息表、订单表、商品信息表、新闻列表、新闻类别列表、管理员表和订单产品表.下面是为数据库设计的表:表4.1商品信息表hw字段字段名类型宽度小数位索引可否为空Id商品编号Int是否Pname商品名称Varchar255否Descr商品描述Varchar255是Normalprice正常价格Money是Memberprice会员价格Money是Count商品数量Long是Categoryid商品类别编号Int是Spcialprice是否是特价产品Int是Commend是否是推荐产品Int是Img图片路径Text是Pdate发布日期Date是对于商品信息表,因为经验不足,我将其关键字段id商品编号采用的是数据库中的自动编号,虽然也确定了商品信息的唯一性,但不具备直观的特点,在实际应用中最好是将其设置一个命名规则,管理人员在添加商品的时候能够自动产生一个有一定规则和一定意义的命名规则,方便管理人员对其进行管理和维护,例如对于手机类商品可将其编号设置为mobile+型号+添加日期,这样更容易对商品进行管理。Img字段代表图片,但在这里存放的只是它的路径所以应该使用文本类型。表4.2会员信息表member字段字段名类型宽度小数位索引可否为空id会员编号自动编号是是Username会员帐号Varchar50否Password会员密码Varchar50否Addr会员地址Varchar255是Rdate会员添加日期文本型50是Phone会员电话Varchar40是对于会员信息表需要注意的是用户密码,由于数据库本身不提供特殊字段的加密,用户注册以后注册密码是以明码形式存放在数据库中,这对系统来说是极不安全的,因此需要我们用一些特殊工具来对其进行加密.表4。3订单表saleorder字段字段名类型宽度小数位索引可否为空id订单编号Int否odate购物时间Date是Status是否已经处理Int是Userid用户编号Int182是Addr用户地址Varchar255是订单表则是系统中与其他几个表关系最多的一个表了,它包含了商品表,会员表中的几个重要字段,是我们进行最后购物统计的主要依据.表4。4管理员表admin字段字段名类型宽度小数位索引可否为空id编号自动编号是Admin_name管理员名称nVarchar50是Password密码Nvchar50否Level级别Int是该表和会员表一样存在字段的命名规则的要求,出于安全考虑对于管理员帐号发放应该谨慎,管理人员数量一定要控制,越少越安全,在实际应用中,我们还要对整个数据库进行加密,以防止系统重要数据泄漏。表4.5新闻列表news字段字段名类型宽度小数位索引可否为空id新闻编号自动编号否title新闻标题Varchar50是content新闻内容Text是Categoryid新闻类别编号Date是存储网站新闻级别信息,和新闻表关联和产品类别结构相同。表4。6新闻类别列表news_category字段字段名类型宽度小数位索引可否为空id类别编号自动编号是cname类别名称Varchar50是Cdescr类别描述text否Pid父节点idInt是Grade等级Int是Cno类别排序Int是存储网站新闻信息,与其他表没有关联。表4。7订单产品表saleproduct字段字段名类型宽度小数位索引可否为空id编号自动编号是Productid产品编号Int是Uniprice产品价格Money否Pcount产品数量Int是Orderid所属订单编号Int是
第五章系统详细设计详细设计的根本目标是确定应该具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。在项目开发时,使用一种稳定成熟的框架是项目成功的重要因素。MVC的基本思想就是逻辑与显示的分离,Model是应用程序的主体部分,它表示业务数据或者业务逻辑,View是应用程序中与用户界面相关的部分,也就是用户看到并与之交互的界面,Controller根据用户的输入,控制用户界面数据的显示和更新Model对象的状态,MVC不仅实现了功能模块和显示模块的分离,同时也提供了应用系统的可维护性、可扩展性、可移植性和组件的可重用性。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。5.1系统主界面设计本网站的主界面整体结构还算简洁、清晰,上面部分为商品搜索条,,左面部分为商品类别框,右面部分为资讯区,中间部分为商品展示区。本网上购物系统主界面如图5。1所示。图5。1系统登陆界面5。2系统前台各主要模块的功能设计5。2.1用户登陆模块的实现用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行定购时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的购物,如果输入的密码不正确,则不能进行定购.如果用户以浏览者的身份进入网站,则只能进行一般的商品浏览和搜索,而不能进行选购,在点击添加购物车后,系统会判断该用户是否是登陆用户,如果不是则弹出提示页面,提示用户必须先登陆才能定购商品,如果是第一次登陆,必须先注册.登陆的具体实现要通过一个全程变量,即Session变量来实现用户登录的界面UserLogin。jsp,从shopuser表查得用户提交的帐户名和密码正确后,用一个全局变量,即Session变量保存这一消息(该变量名称为Session(“user”))。具体的判断过程为:若session中user为空即session.getAttribute(”user”)==null,表明没有经过登陆与否的验证,则立即跳转到UserLogin.jsp,请用户登录;并将用户登陆的帐号和密码通过通过UserService的check方法,先判断是否存在这个用户如果不存在这个用户则抛出自己定义的一个异常UserNotFoundException,如果存在这个用户再和输入的密码做对比,如果密码不正确则抛出自己定义的PasswordWrongException异常。对应Action中分别截获这两种不同的异常来判断对应的错误信息.具体代码实现如下:Stringusername=request。getParameter(”username");Stringpassword=request。getParameter(”password”);try{ Useru=User.check(username,password); session。setAttribute("user”,u);}catch(UserNotFoundExceptione){ out。println(e。getMessage()); return;}catch(PasswordNotCorrectExceptione){ out.println(e.getMessage()); return;}5。2。2新会员注册模块的实现如果用户还不是会员则提示用户进行注册,用户提交信息之后,系统开始判断用户的注册信息是否有效,首先是用户名是否为空,(该处存在用户名命名规则的问题,后面问题中会详细解决)用户输入的两次密码是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入会员表即member并提示用户注册成功,用户登陆后,就可以进行有效的购物了。注册页面的效果图如下:图5。2注册页面界面系统对用户的注册信息的验证实现如下:用户输入的各项信息分别对应字段username,password,phone,addr,再添加用户之前要有一个前台校验:functioncheck{varusername=document.register。username.value;varpassword=document。register。password。value;varpassword2=document.register.password2。value;varaddr=document.register.addr.value;if(username。length==0){alert(“用户名不能为空”);ruturnfalse;}elseif(username。length<6){ Document。register。username.value=’'; alert(“用户名长度不能小于6位”); returnfalse;}elseif(password。length<6){ alert(“用户名长度不能小于6位"); returnfalse;}elseif(password!=password2){ alert(“两次输入的密码不一样,请返回重新输入!”); ruturnfalse;}elseif(addr.length==0){ alert(“地址不能为空”); returnfalse;}returntrue;}5.2。3购物车模块的实现当用户登陆成功以后,如果找到了希望定购的物品,在点击物品下方的定购以后,系统会弹出一个新的页面,显示该物品已经添加进购物车,然后用户需要选择定购的数量.页面效果如下:图5。3购物车界面在点击确认以后,该物品信息被后台添加到购物车中,如果用户需要继续购物,可以继续选择,不断添加,买的物品列表,及合计价格.购物车类:publicclassCart{ List〈CartItem〉items=newArrayList〈CartItem>(); publicList<CartItem>getItems(){ returnitems; } publicvoidsetItems(List〈CartItem〉items){ this。items=items; } publicvoidadd(CartItemci){ for(Iterator〈CartItem〉iter=items.iterator();iter。hasNext();){ CartItemitem=iter。next(); if(item。getProduct()。getId()==ci。getProduct()。getId()){ item。setCount(item。getCount()+1); return; } } items。add(ci); } publicdoublegetTotalMemberPrice(){ doubled=0。0; for(Iterator〈CartItem>it=items。iterator();it。hasNext();){ CartItemcurrent=it。next(); d+=current.getProduct()。getMemberPrice()*current。getCount(); } returnd; } publicvoiddeleteItemById(intproductId){ for(Iterator〈CartItem〉iter=items.iterator();iter.hasNext();){ CartItemitem=iter.next(); if(item.getProduct()。getId()==productId){ iter.remove(); } } }}CartItem是购物车里的每一个购物项。里面含有商品的信息及其数量。购物车类的add方法是添加一类商品的信息,getTotalMemberPrice()方法算取所有商品的总价格.deleteItemById()从购物车中删除某一类商品。当用户选购完所有的商品时,可以点击下单就会显示所订购的物品的详细信息如图:图5.4收银台结帐界面用户再一次确认后,系统会显示购物成功并返回给用户一个定购单号。该页面也就是将用户提交的订单信息返回,并产生了一个唯一订单号,以方便用户查询.订货的具体实现需要填入两张表:一张是订单表saleorder另一张是订单货物表saleitem表。其中订单货物加入的时用到批处理加入:具体实现如下:publicintadd(SalesOrderso){ returndao。add(so); } publicintuserBuy(Cartc,Useru){ returnu.buy(c); } publicintgetOrders(List〈SalesOrder〉list,intpageNo,intpageSize){ returndao。getOrders(list,pageNo,pageSize); } publicSalesOrderloadById(intid){ returndao。loadById(id); } publicList〈SalesItem〉getSalesItems(SalesOrderorder){ returndao。getSalesItems(order。getId()); } publicvoidupdateStatus(SalesOrderorder){ dao.updateStatus(order); }}5。2。4商品搜索模块的实现网上购物作为一个在网上展示自己商品的销售系统,如何能让用户以最快的速度找到自己希望买到的物品,也是需要非常重视的一个问题,此时搜索引擎也就必不可少了.本购物系统也做了一个小模块,以供用户进行一些模糊查找,用户不必输入全部名称,只需输入一些关键词,系统就可以将符合该查询条件的所有商品信息以网页形式返回给用户.该搜索功能中实现的关键代码为:publicintfind(List<Product〉products,intpageNo,intpageSize,Stringkeyword){ StringqueryStr=”wherelike'%"+keyword+”%’orp。descrlike'%"+keyword+”%'"; returndao.find(products,pageNo,pageSize,queryStr); }5。3后台管理模块的实现网上购物系统除了能够让用户实现前台的浏览和购物等操作之外,还必须能够使管理人员能够对系统的各种信息进行维护,比如商品的增加、删除、修改,会员的审查,网站新闻的更新等等.管理功能是网上购物系统相当重要的一部分功能。管理员可以通过主页面的“管理进入”进入系统后台进行维护,点击之后,首要的就是进行身份验证,输入正确的帐号,密码之后,方能进入。由于涉及到交易,出于安全性考虑,管理员帐号应尽量少分配,密码也要尽量复杂,经常更换.进入之后系统管理的主页面采用了框架结构,左边是一个树型菜单,右边显示具体信息。管理的主要功能有商品信息的更新,会员信息维护,产品种类,新闻模块,订单管理设置等五大模块,商品信息管理,主要就是添加新的商品,删除和修改已经添加的商品.如下图所示:图5.7商品管理界面这一部分的实现也没有新的方法,只是从添加商品的页面获取数据然后实例化一个product对象,利用其成员函数进行初始化,最后写入数据库中。Stringaction=request。getParameter(”action");if(action!=null&&action.trim().equals(”add”)){ Stringname=request.getParameter(”name"); doublenormalPrice=Double.parseDouble(request。getParameter("normalPrice”)); doublememberPrice=Double。parseDouble(request.getParameter("memberPrice")); Stringdescr=request。getParameter("descr"); Productp=newProduct(); p。setName(name); p。setNormalPrice(normalPrice); p。setMemberPrice(memberPrice); p.setDescr(descr); p。setCategoryId(categoryId); p。setPdate(newDate()); ProductMgr.getInstance()。add(p);修改则使用update语句。会员信息管理,则主要是对一些恶意注册用户进行删除,该功能设计存在一定问题,具体在后面会有一定说明。图5。8会员信息管理界面网站信息管理,进行网上新闻的发布,修改删除,以及系统公告等信息的设置,这些功能虽然无关紧要,但在实际中却能方便用户,提高网站效益.图5。9新闻信息管理界面在完成系统的更新之后,作为管理人员,应该及时注销自己的帐户,树型菜单的上方提供了注销登陆的选项,点击之后,注销用户,并返回到前台页面,防止他人恶意修改网站信息,造成不必要的损失。以上两个部分都是比较简单的功能实现,具体实现过程与前几个类似。
第六章系统测试及性能分析经过需求分析、设计和编码等阶段的开发后,得到了源程序,开始进入到软件测试阶段.然而,在测试之前的各阶段中都可能在软件产品中遗留下许多错误和缺陷,如果不及时找出这些错误和缺陷,并将其改正,这个软件产品就不能正常使用,甚至会导致巨大的损失。目前,程序的正确性证明尚未得到根本的解决,因此软件测试仍是发现软件中错误和缺陷的主要手段。6.1测试的基本概念(1)测试的目的软件测试的目的是尽可能多地发现软件产品(主要是指程序)中的错误和缺陷.明确测试的目的是一件非常重要的事,因为在现实世界中对测试工作存在着许多模糊或者错误的看法,这些看法严重影响着测试工作的顺利进行。有人认为测试是为了证明程序是正确的,也就是说程序不再有错误,事实证明这是不现实的。因为要通过测试来发现程序中的所有错误就要穷举所有可能的输入数据,检查它们是否产生正确的结果.例如,一个需要3个16位字长的整型输入数据的程序,输入数据的所有组合情况大约有3×1014种,若每组数据的测试时间为1ms,那么即使一年365天,每天24小时地测试,也大约需要1万年的时间。(2)测试用例要进行测试,除了要有测试数据(或称输入数据)外,还应同时给出该组测试数据应该得到怎样的输出结果,我们称它为预期结果.在测试时将实际的输出结果与预期结果比较,若不同则表示发现了错误。因此测试用例是由测试数据和预期结果构成的。为了发现程序中的错误,应竭力设计能暴露错误的测试.一个好的测试用例是极有可能发现迄今为止尚未发现的错误的测试用例。一次成功的测试是发现了至今为止尚未发现的错误的测试。(3)白盒测试和黑盒测试测试的关键是测试用例,其方法可分成两类:白盒测试和黑盒测试。白盒测试是把程序看成装在一只透明的白盒子里,测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作.黑盒测试是把程序看成一只黑盒子,测试者完全不了解(或不考虑)程序的结构和处理过程。它根据规格说明书规定的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。6。2测试步骤软件测试的主要步骤有单元测试、集成测试和确认测试。(1)单元测试(UnitTesting)单元测试也称模块测试。通常单元测试可放在编码阶段,程序员在编写好一个模块后,总会对自己编写的模块进行测试,检查它是否实现了详细设计说明书中规定的模块功能和算法。单元测试主要发现编码和详细设计中产生的错误,通常采用白盒测试。(2)集成测试(IntegrationTesting)集成测试也称组装测试,它是对由各模块组装而成的程序进行测试,主要检查模块间的接口和通信。集成测试主要发现设计阶段产生的错误,通常采用黑盒测试。(3)确认测试(ValidationTesting)确认测试的任务是检查软件的功能、性能及其他特征与用户的需求一致,它是以需求规格说明书(即需求规约)作为依据的测试.确认测试通常采用黑盒测试。确认测试产生测试程序是否满足需求规格说明书所列的各项要求,然后要进行软件配置复查,特别是文档是否齐全,各方面的质量是否符合要求等.6。3系统测试软件测试方法从测试人员角度看,可分为人工测试和机器测试。人工测试又称为代码复审.主要有三种方法:个人复查、走查、会审。机器测试分为黑盒测试(又称功能测试)和白盒测试(又称结构测试)两种。下面对本网上购物系统进行测试,以检查系统能否正确完成各种操作,是否能够实现预期具有的功能。(1)系统后台登陆模块此模块是进入本系统操作的一个入口,用于维护系统的安全.只有将正确的用户名和密码输入系统,才能继续进行操作现在输入用户名和错误的密码,测试是否能够登录。测试结果是系统提示“用户名与密码不相符!",如图6—1所示。图6.1提示用户名或密码错误消息窗口(2)用户购物模块用户浏览商品,点击购买商品按钮,系统检查该用户是否已登陆,如果没登陆给出提示信息,用户进入购物车页面后,可修改商品数量,对于非数字的将不能输入,在用户下单界面,对各个表单进行了验证,不符合要求的将给予提示信息,如图6。3所示。图6。2用户购物测试(3)购物车模块经过上面部分的分析,我们可以得知,购物车模块是我们需要特别注意的地方,因为它涉及到了我们数据库中的大部分数据,并且是进行网上交易的最关键部分,绝对不能出现任何的差错,下面我们就针对这一模块进行用例测试:我们以用户12的身份登入系统,用户名是:12,密码是:12然后点击定购商品:诺基亚6100,单价为1222元弹出购物车清单:选择商品数量3,确认。如图6.3所示。图6.3物车模块测试出现清单:显示商品名称诺基亚6100,数量3,合计3666元。与我们估算的数据相符。在测试过程中,我经过模块测试和组装测试,排除了系统的大部分错误。当然排除所有错误是不太可能的,我想应该还有些不易检测到的错误还没有被发现,需要在使用的过程中进一步的完善,数据库的加密是一个重要的概念,在实际的应用过程中是一个尚待解决的问题,应该做好数据库的完善工作,特别是备份和安全工作;另一方面本系统没有制作相关的打印,由于时间仓促难免有错误和不完善的地方,希望老师能够帮我指点和纠正。6.4系统的性能分析网上购物系统的性质决定了它的服务端工作负荷比较大,这就要求服务端的硬件配置要尽可能的高,主要是内存,而且操作系统也要尽可能的稳定。基于java的系统一般来说网络安全性比较好,但并不能说就一定安全,尤其在windows操作系统下,由于windows的漏洞比较多,系统装配在windows下并不是最佳的选择,如果有条件,建议可将系统装配在unix操作系统下,提高系统的抗侵入能力.系统的核心数据库,随着数据的不断增多,必然会产生冗余,导致系统运行效率降低,建议管理员定期备份和清理冗余数据,以保证系统的正常高效运行。6。5系统中所存在的问题及解决方案6。5.1系统的整体设计和规划中的问题由于是基于B/S的系统,网页在其中就承担着非常大的工作,包括向服务端后台写入和修改数据,以及服务端响应客户端的请求,向客户端页面返回数据,这些工作不可能只由几个网页来完成,但网页数量一多又必然结构混乱,造成开发过程难以控制。为解决这个问题,我采用了现代软件开发过程的模块化思想,先将系统功能进行分解,大致可分为两部分,即前台和后台,前台又包括主页面及产品信息展示页面、搜索功能页面、新闻页面、购物车及订单页面等几个大的部分,后台包括会员信息管理、商品信息管理、新闻信息管理、等几个部分,各个部分又由许多小的页面组成,这样一来虽然网页数量没有减少,但结构清晰了很多,在开发过程中可以逐步,逐个模块的实现,提高了开发效率。该系统的可维护性和可扩展性不够好.虽然系统基于MVC模式来分析设计。但是Service(业务逻辑类),DAO(持久化类)没有基于接口编程,这样如果以后如果有业务逻辑有什么需求变化需要深入代码内部直接修改,而且修改的复杂度加重了,也增加了许多重复性的劳动。改系统控制器是主要是基于Servlet这样每一个请求都要写一个Servlet带来了很多重复性劳动,而且也不利于以后代码的维护。建议用Struts统一对所有请求,和响应进行统一管理.改系统的健壮性和安全性做的不够好,想多个人对同一种物品进行操作时没有做数据同步操作.尤其是再对数据库操作时建议用线程同步机制.对于有恶意行为的用户记录其ip地址然后禁止改用户的所有权限.6.5.2开发功能模块所遇到的难点因为是第一次做这么完整的系统,所以碰到的问题也很多,除了一些基本的语法之外,感觉还是一些考虑问题的思维方式不太得当,比如我的这个网上购物系统,我感觉难度比较大的还是购物车这个模块比较的难设计,因为过程比较复杂,他的一些逻辑处理就比较的难以用代码实现。当用户完成选购,点击去收银台结算时,系统开始判断商品库中的这些商品数量是否大于用户所选数量,如果大于提示用户选择一个小于该物品数量的数量,否则直接加入该购物车中这样就基本上实现了购物车的功能.6。5。3系统中存在的问题及拟定的解决方法(1)第一个问题是用户在注册过程中,一些关键字段的命名规则存在着比较大的缺陷,比如用户名的选择上,一般的习惯是规定只能从a~z和数字0~9的随机组合,不能有特殊字符,而且只能以字母开头,不能以数字开头,用户名的长度也有限制,我在系统中只考虑了为空的情况,这是不够的,我们可以在jsp页面添加一段javascript验证代码,主要是使用正则表达式对用户名进行限制,具体的代码如下:if(form.username.value.length〈5||form。username.value.length〉20){alert("\您的用户名长度应该在5-20个字符之间!");长度判断if(fIsNumber(form。username。value.charAt(0),"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”)!=1){alert(”\您的用户名只能以字母开头!");开头判断if(fIsNumber(form.username.value,特殊字符判断”1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_”)!=1){alert("\您的用户名应该是数字、字母、下划线,不允许出现汉字等其他字符!”);(2)第二个问题就是用户登陆以后,如果需要修改资料,系统会先将数据库中该用户的所有信息以列表形式显示出来,问题就是此时出现的用户密码信息是以明码形式出现的,这对用户来说就存在这很大的风险,容易被他人看到,最好是以一些特殊符号来代替从而防止信息泄漏,在参考了其他网站的登陆模块之后,我对代码进行了简单修改,即可实现,问题是由密码的输入框属性引起的,原始的代码为:<inputtype=”text"name=”user_pass”size=”36”class=inputvalue=”〈%=rs。getString(”user_pass”)%〉"〉此时密码输入框的属性为text也就是文本框,它会直接将数据以明码形式原封不动的输出,我们只需将其改为password属性即可,它以默认的黑色圆点代替真实数据,这样一个简单的修改,就保证了该部分的安全性.(3)第三个问题是管理人员对用户的管理部分,一个是用户信息,尤其是密码的加密,处于对系统安全性的考虑,数据库中的用户密码应该对于所有人都是加密状态,包括管理人员,但因本人水平有限对这个方面也不是很了解,所以准备采用现有的加密软件对相关数据进行加密,如或“备注”,因此对于需要加密的关键字段,我们必须事先将其设置为文本类型。如果需要我们可以也可将整个数据库进行加密,增加系统的安全性.还有一个漏洞就是对会员的管理功能做的不够,没有考虑到用户密码丢失的问题,解决方法有两个,一个就是采取通常的做法,让用户在注册过程中,设置一些问题,通过回答问题的方式来取回密码,还有一个方法就是让管理员通过后台,初始化用户的密码,然后用户登陆对密码进行修改,这两个方法都可以达到目的,具体的实现过程不再一一说明。对于网上购物系统来说安全性无疑是最重要的,层层验证虽然保证了系统的安全性,但对于用户来说又是极不人性化的,如何在最简单的验证流程下,保证用户数据的安全,是在做网上购物系统中需要考虑的一个问题。
总结我的毕业设计论文具体论述了网上购物系统的主要功能及体系结构,重点讨论了系统数据准备、数据库的逻辑结构分析、各模块系统流程各功能模块的关联和响应,JSP与后台数据库链接等关键技术。这些技术的实现,满足了系统的需要,优化了系统的性能。目前基于该模型的系统处于实验室阶段,还存在许多问题与不足,如安全性能还不完善,缺少必要的数据加密系统等,,这些功能与技术还需要加以提高和实现。
网上购物系统无论是在开发过程中,还是建成后的日常维护过程中,都需要进行严格的检测,以保证购物系统的服务质量.随着网上购物系统技术的日趋成熟、网上购物的优势日趋明显,会有更多的人参与到网上购物的浪潮中来,人类最终将迎接电子商务时代的来临。
参考文献[1]张思亮,王晓峰,靳瑞勇。网上购物系统的研发[J]。商场现代化。2008(13):67-67。
[2]李顺云,郭劲夫,杨月辉.网上购物系统的建设[J]。商场现代化.2008(12):145—146.
[3]陈巧蓉,陈刚,熊恩成。网上购物系统htm1版开发研究[J]。西南民族大学学报:自然科学版。2007,33(4):961—963。
[4]袁爱香.基于MDA的网上购物系统代码自动生成开发研究[J]。北京联合大学学报:自然科学版.2008,22(1):41—45。
[5]李贤华.基于JSP技术的大型网上购物系统的设计与实现[J].计算机与现代化。2008(8):82—84,89。
[6]何静,谭新民。基于J2EE的网上购物系统的设计[J]。山西电子技术.2008(1):66—68。
[7]张健。XML技术在网上购物系统中的应用与安全分析[J]。科技创新导报。2008(14):2-3。[8]武延军,黄飞跃。精通JSP编程技术[M]。北京:人民邮电出版社,2001。8[9]柏亚军。JSP编程基础及应用实例集锦[M]。北京:人民邮电出版社,2001。7[10]清宏计算机工作室.JSP编程技巧[M]。北京:机械工业出版社,2000。1[11]周影。网络编程语言JSP实例教程[M]。北京:电子工业出版社,2003.6[12]陈海山.深入JavaServlet网络编程[M]。北京:清华大学出版社,2002.2
致谢在这次毕业设计中,指导老师刘老师从课题的研究动态、当今优秀的开发工具以及课题的功能需求到具体的实现上,都给予了我很大的帮助.同时,我还从刘老师身上学到了很多东西,刘老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅,这对于我以后的学习和工作都将是一种先导作用.在这课题设计、论文完成之际,我衷心的向刘老师表示感谢。其次,我要特别感谢我的父母,感谢我的家人,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新版通 用规范对设计影响交流分享
- 2025年抚顺师范高等专科学校高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 山西省孝义市高三上学期入学摸底考试语文试题(含答案)
- 沪教版(上海)七年级地理第一学期中国区域篇(上)1.2《台湾省》听课评课记录
- 中班幼儿系列活动策划方案五篇
- 2025年科学仪器行业技术革新与发展前景
- 钢材购销合同范文年
- 代偿协议与担保合同
- 跨境贸易线上支付服务合同
- 投资公司借款的合同样本
- 医保政策与健康管理培训计划
- 无人化农场项目可行性研究报告
- 2024届上海市金山区高三下学期二模英语试题(原卷版)
- 学生春节安全教育
- 2024-2025年校长在教研组长和备课组长会议上讲话
- 宏观利率篇:债券市场研究分析框架
- 桥梁顶升移位改造技术规范
- 六年级语文(上册)选择题集锦
- 《游戏界面设计专题实践》课件-知识点5:图标绘制准备与绘制步骤
- MOOC 材料科学基础-西安交通大学 中国大学慕课答案
- 复产复工试题含答案
评论
0/150
提交评论