网上购物系统网上商城管理系统论文_第1页
网上购物系统网上商城管理系统论文_第2页
网上购物系统网上商城管理系统论文_第3页
网上购物系统网上商城管理系统论文_第4页
网上购物系统网上商城管理系统论文_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

XXXXXX大学本科生毕业论文(设计)题目网上商城管理系统学院计算机学院专业班级级软件工程一班学生姓名XXXXXXXXXXXXXXXXX指导教师XXXXXXXXX撰写日期二XX年五月四日目录1引言111系统开发的背景和现状1111电子商务网站开发背景1112电子商务网站的现状112系统开发的目的和意义2121系统开发的目的2122系统开发的意义22系统运行环境和开发平台321系统运行环境3211系统软件环境3212系统硬件环境322系统开发平台4221开发语言环境4222开发所需工具简介4223开发所用到的技术简介4224开发所需插件63系统可行性研究和需求分析731系统可行性分析7311市场可行性分析7312技术可行性分析7313时间可行性分析7314成本收益的可行性分析7315系统后续开发和维护的可行性732系统需求分析8321系统架构设计8322用户和管理员的功能需求9323性能需求104系统概要设计1141系统总体功能流程图1142系统数据库设计1343系统页面和模块设计145总体设计与实现1551数据库设计与实现15511数据库表设计15512数据库的约束与关系1652系统主要功能的设计与实现16521数据库连接池类与数据库工厂类简介16522用户注册登录模块的实现方式20523管理员登录和其功能范围的实现24524商品购买及购物车的实现29525订单和订单管理的实现方式316系统测试3661系统测试概述3662系统黑盒测试3663系统白盒测试377结语3971本系统的优点3972本系统的不足之处及发展意见3973在系统设计与实现过程中的收获40参考文献41致谢42附录43网上商城管理系统XX信息与管理科学学院软件工程专业摘要21世纪是电子商务蓬勃发展的世纪。社会经济的发展使得人们的生活水平有了很大提高。计算机科学的发展和互联网的普及,电子商务在经济发展中的作用也越来越明显,因此很受大家的欢迎。本系统是以JAVA语言为基础,用JSPSERVLET技术来实现的一个在线购物及后台管理系统。它实现了一个在线购物网站所需的基本功能,包括商品展示,商品检索,商品评论,购物车,商品添加,订单管理等功能。它提供了友好的交互页面和丰富的功能,通过页面展示丰富多样的产品,让顾客流连忘返。本系统是一个B2C模式的在线购物平台。B2C模式是电子商务领域发展较为成熟的平台之一,典型代表为卓越、京东。本系统采用B2C模式,通过强大的后台管理功能和后续研发优势,本系统必将更加完善,更加满足电子商务发展要求。关键字电子商务、JSPSERVLET、B2CECOMMERCE收藏表USER_ID关联用户表USER_ID订单详细表O_ID关联订单表O_ID商品表G_ID关联品牌表G_ID品牌表T1_ID关联商品种类表T1_ID回复留言表M_ID关联管理员表M_ID以上外间关系中各字段名称注释如下USER_ID表示用户ID,O_ID表示订单ID,G_ID表示商品ID,T1_ID表示商品种类ID,M_ID表示管理员ID。其他字段详细描述请参照附录中数据库表与字段注释。52系统主要功能的设计与实现521数据库连接池类与数据库工厂类简介5211DBCONNECTIONPOOL类详解DBCONNECTIONPOOL类是本项目中的数据库连接池类,是按照线程创建和调度的思路创建一个数据库连接池,通过泛型队列VECTOR来创建一个固定连接数的连接池,系统发送出连接数据库的请求时,通过调用该类中的GETCONNECTION方法来释放一个连接,同时在队列中减去1,从而实现了对连接数的控制,并且极大的提高了数据库的访问效率。DBFACTORY类是本项目中的数据库工厂类。它实现了DBCONNECTIONPOOL中的GETCONNECTION方法,当外部类调用时将它封装了一些对数据库进行SQL操作的方法,供外部类来实现对数据库的访问。例如外部类要执行数据库查询,它只需通过调用EXECUTEQUERYSQL方法,传进SQL语句作为参数即可返回RESULTSET结果集,然后在结果集中检索即可。同理,外部类执行数据库插入和删除操作,它只需要调用EXECUTEOPERATESQL方法,传进SQL语句作为参数即可返回RESULTSET结果集,查询完毕后要释放资源时,通过调用DBCONNECTIONPOOL的RELEASE方法来释放资源。DBCONNECTIONPOOL类和DBFACTORY类工作方式如图52所示图52USERIMPL与GOODSIMPL操纵数据库类图DBCONNECTIONPOOL类的具体实现方式(核心代码)/返回当前连接池的一个对象PUBLICSTATICDBCONNECTIONPOOLGETINSTANCEIFNULLINSTANCEINSTANCENEWDBCONNECTIONPOOLRETURNINSTANCE通过GETINSTANCE方法获取一个DBCONNECTIONPOOL类实例/获取连接池中的一个连接PUBLICSYNCHRONIZEDCONNECTIONGETCONNECTIONIFPOOLSIZE0CONNPOOLGET0/获取连接POOLREMOVECONN/将连接从连接池中移除RETURNCONN通过GETCONNECTION方法返回一个数据库连接/释放连接PUBLICSYNCHRONIZEDVOIDRELEASECONNECTIONCONNPOOLADDCONN通过RELEASE方法释放数据库连接以下简要介绍JAVA与数据库建立连接的实现方式/初始化连接池、读取配置文件(存放着数据库连接信息)PRIVATEVOIDINITPOOLNEWVECTORPOOLSIZE/初始化连接池/在连接池中添加连接PRIVATEVOIDADDCONNECTIONCONNECTIONCONNNULLCLASSFORNAMEDRIVERFORINTI0IPOOLSIZE、READCONFIG、ADDCONNECTION这三个方法,通过这三个方法,可以满足数据库连接池创建的基本条件。在该系统中只是实现了数据库连接池的基本功能,线程池还要具备线程休眠和用户连接过载时自动添加额定数量的连接的技术,来控制连接安全。通过自动添加固定的连接数,可以实现连接池的自动控制,从而避免了连接过载导致系统崩溃的情况发生。连接池的基本工作原理如图53所示图53连接池的基本工作原理数据库连接池这种设计模式属于应用共享资源的开发中非常著名的一种设计模式资源池RESOURCEPOOL。该模式正式为了解决资源的频繁分配、释放所造成的一系列问题而设计的。这种模式通过设定连接池的最大连接数来防止系统无控制的与数据库系统的连接,减小了数据库系统因过载而崩溃的可能,大大提高了对系统与数据库连接控制的灵活性。数据库连接池在高效性和稳定性上也具有极大的优势。例在ECLIPSE中新建两个类DBTESTJAVA和DBPOOLTESTJAVA在DBTEST中,利用FOR循环控制类与数据库建立1000次连接,同样,在DBPOOLTEST中通过FOR循环,利用线程池与数据库建立1000次连接。图54是类运行结果的截图图54两种连接方式的比较从图54可以很明显地看出,当并发连接数为1000时,用传统方式连接的DBTEST类已经崩溃,抛出“连接异常,端口被占用”的异常,而利用数据库连接池的DBPOOLTEST类建立1000次连接仅耗时422毫秒。下面进行一次连接数为百万次的测试。把连接数改成1000000次,由于第一个类在1000次连接已经崩溃,因此此次只测试DBPOOLTEST类图55DBPOOLTEST进行一百万次连接通过图55可以看到利用线程池进行一百万次连接仅耗时484毫秒,由此很明显就可以看出数据库连接池的高效率和稳定性。5212DBFACTORY类的实现方式和功能DBFACTORY类是数据库连接的工厂类,它封装了一系列执行数据库操作的方法,如图56所示图56其他类对DBFACTORY的调用DBFACTORY类通过DBCONNECTIONPOOL类释放的连接来与数据库取得连接。该类对外只提供一些接口,供其他类来调用,通过调用工厂方法使得数据库的连接变得规则有序并且效率极高,极大的方便了数据库操作代码的编写。DBFACTORY类独立使用时一般效率不高,与数据库连接池联合使用时才有着强大的威力,这样做大大的简化了数据库操作。522用户注册登录模块的实现方式任何的购物网站,用户都是最主要的对象,用户模块的实现关系到系统的易用性和被接受程度,本购物网站管理系统也不例外。在本系统中用户主要分为了游客和商城注册会员两种。这两种角色分别对应着不同的功能和访问范围。下面分类介绍一下本系统所面对的主要对象的功能范围和用户注册登录模块的实现方式。5221会员与游客的功能范围在该系统中,用户分为游客和商城注册会员两种游客可以在商城内留言商品,查询商品信息,查看商品评价,可以比较同类不同品牌商品之间差别,但游客不能下订单,不能将商品添加到购物车,游客也不能对商品下订单。会员该购物网站会员可以自由购买商品,查看商品信息,查看其他用户的评论,并且可以发表评论。图57为用POWERDESIGNER设计的展示游客和商城会员功能的用例图游客商城会员下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下2下下下下下下下下下下下下下下下下下下下下下下下下下下下下图57游客与会员功能用例图通过图57可以很清楚的看到游客和会员所分别具有的功能模块。可以看到,只有商城的注册会员才拥有下订单、使用购物车和购买商品的权限。在后两部分中将会具体说明用户注册模块和用户登录模块的实现方式。除此之外,商城的注册会员还可以根据购买商品获得的积分,获得一定的等级,可以以一定打折扣购买商品,如图58所示。图58会员等级图示会员的等级划分方法如表所示表51商城会员积分折扣映射表用户等级积分设定折扣率新手010初级500095中级150009高级5000085终极1000008如表51所示,商品的折扣情况实际在后台控制,这一模块在523管理员功能实现中将讲到。5222用户注册模块的实现用户注册模块,核心部分就是注册验证和服务器端验证。用户注册模块在浏览器端的验证主要是通过JAVASCRIPT脚本,在JS脚本中添加验证函数,然后在INPUT输入框中ONBLUR属性中添加CHECKUSERNAME函数,当用户输入完用户名后会激发CHECKUSERNAME函数来检验用户名是否合法,该校验核心部分代码如下FUNCTIONCHECKUSERNAMEVARUSERNAMEDOCUMENTGETELEMENTBYID“U_NAME“VALUEIFUSERNAMELENGTH16VARSPDOCUMENTGETELEMENTBYID“SP“SPINNERHTML“用户名长度不合要求“RETURNFALSE为了安全起见,一般要在服务器端在进行一次校验,如果需要还会进行框架校验,在服务器端的校验一般是通过导入XWORKJAR包,然后在通过继承于ACTIONSUPPORT类,重写其中的VALIDATE方法来校验,校验部分核心代码如下PUBLICVOIDVALIDATEIFUSERNAMENULL|“EQUALSUSERNAMETHISADDFIELDERROR“USERNAME“,“姓名不能为空“IFUSERNAMELENGTH16|USERNAMELENGTH100THISADDFIELDERROR“AGE“,“年龄必须在1到100之间“密码和其他部分校验的校验结果如图59所示图59浏览器端用户信息校验通过两次校验,数据库接受的将会是符合数据库设计的准确信息,避免了抛出一堆异常代码给用户浏览器端的情况的出现。5223用户登录模块的实现用户注册完成后即可返回首页面通过点击登录按钮进行登录。登录模块采用了隐藏DIV,点击登录后,将会激发DISPLAYLOGINBOARD函数,该函数将控制显示一个登录窗,实现了悬浮的效果。登录窗实际上是一个FORM表单,在登录窗中输入用户名和密码后,点击登录按钮,系统将会根据FORM中的ACTION,在WEBXML配置文件中去寻找USERCONTROLDO对应的JAVA校验类,用户输入的用户名和密码将通过POST方法传入到DOPOST方法中,在该方法中通过连接数据库进行校验,并且返回登录信息。如图510所示图510登录后用户名显示在首页面底部同时也将出现悬浮提示框欢迎用户XX登录物美校园。如图511所示图511悬浮框提示用户注册与登录模块主要实现了两个功能实现了用户注册校验和数据库存储用户信息。实现了用户登录时的信息查询和校验。因此,这一环节的复杂度基本体现在双层校验上,在这里说明一种校验方式汉字校验。汉字校验的原理是UTF8编码中某几个区间内编码为汉字,基本上覆盖了常用到的可以遇到的2万多个汉字,汉字在UTF8中的区间为“U4E00“到“U9FA5“和“UF900“到“UFA2D“,汉字校验流程如图512所示数据输入U4E00U9FA5UF900UFA2DRETURNTRUERETURNFALSE是否是否图512汉字校验状态图通过以上代码可以看到,校验函数传进的参数为用户输入的字符串,通过将字符串解析为字符数组,从而完成了字符校验,在实际应用中,通过类方法调用此函数,即可完成校验。523管理员登录和其功能范围的实现管理员是网站后台的主角,任何网站都需要管理员默默无闻的维护着整个网站的正常运行。B2C购物网站,商品的添加修改删除,订单的管理,用户信息的管理,广告系统的管理,留言管理等都需要管理员来管理。管理员是整个后台的核心部分。5231管理员登录模块的实现在较有规模的管理系统中,为了安全起见,一般不在前台页面中显示出后台的管理登陆入口,后台管理模块应该是完全独立于前台页面之外的一个模块。在该系统中为了便于调试,在前台页面底部留下了登录入口。管理员通过点击“后台管理”即可连接到后台登录的JSP页面,该页面为系统中的ADMIN/LOGINJSP。管理员登录页面效果如图513所示图513管理员登录页面管理员用户名和密码输入完毕后,点击登录按钮,TOMCAT服务器将会根据FORM表单中声明的ACTION地址在WEBXML中寻找对应的,随后又会寻找中对应的处理类地址。在最终的SERVLET处理类CONTROLJAVA在该SERVLET类中,可以看到,通过将传进的USERNAME和PASSWORD加入到一个MANAGERMODEL对象中,然后将该对象传到MANAGERDAO类中的LOGIN方法体中,顺利的完成了校验。该系统的管理员校验方法属于常规的校验方法。由于管理员的权限很大,所以管理员账号的安全问题也是非常重要。关键数据保存时,最好不要以明文的方式保存。各数据库厂商也提供了一系列的方法来用于数据加密。以MYSQL为例,MYSQL内建函数中提供了ENCRYPTSTR,SALT,ENCODESTR,PASS_STR,MD5STRING,SHA1STRING,SHASTRING,AES_ENCRYPTSTRING,KEY_STRING这几种加密方式,供用户使用。5232管理员功能范围的实现方式一般来讲,在一个大的管理系统中,管理员角色并非唯一,不同的管理员对应不同的职位或部门,有用特定模块的管理权限。还应有一个超级管理员,该角色具有添加修改删除其他模块管理员的权限。在该系统中管理员功能模块如图514所示图514管理员功能模块用例图管理员登录后,在主界面上将提示出登录的管理员的有关信息,包括管理员名称,管理员注册时间,管理员上次登录时间,管理员账户有效登录时间等相关信息,管理员登录的首页面如图515所示图515管理员登录首页面管理员功能商城介绍信息的更改商品管理包括(商品添加,商品信息更新,商品下架,商品分类管理)客户管理包括(查看用户信息,用户级别管理,用户删除)订单管理包括(查看订单,搜索订单,订单状态更新,订单取消,订单数据分析)留言管理包括(查看留言,留言回复,留言评论管理)广告管理包括(友情链接添加,广告信息发布,广告信息删除,广告排序和时限管理)支付方式管理包括(在线支付设置,支付宝设置,银行账号设置,货到付款设置)管理员的功能的实现通过ADMIN文件夹的多个JSP页面来实现,每个页面都对应一个具体的管理员功能,以商品管理为例,在该系统中,商品管理由GOODSADDJSP,GOODSUPDATEJSP,SHOWGOODSJSP,SHOWSEARCHGOODSJSP这几个页面来完成。分别对应商品的添加、修改、展示、商品检索功能。其它各部分的实现方式相同。图516添加商品界面管理系统中,管理员的功能范围和权限控制非常重要,特别是功能范围,实际可能遇到的所有查询功能都要在系统的开发过程中有所体现。5333管理员管理在后台设置了管理员选项,在这里可以添加、修改和删除管理员信息。图517是管理员添加的页面图517管理员添加由于在该系统的设计中,没有采用超级管理员来管理普通管理员,因此,任何管理员都是超级管理员。管理员还可以通过修改管理员信息页面来修改密码。5334管理员留言回复功能的实现当用户在前台页面上留言后,管理员在后台就可以看到。管理员若需要回复留言时,点回复按钮,即可显现出一个TEXTAREA文本输入框,在其中输入回复内容即可。这一功能是通过JS来实现的,核心代码如下CLICK实质上,留言的回复是通过JAVASCRIPT脚本中建立函数。用户登录后,如果进入个人信息页面查看个人留言和管理员回复,页面上将会根据留言发布的条数在中来显示。实质上是通过数据库语言中的LIMIT语言来实现的,通过LIMIT可以查询到留言表中的特定几行的内容并返回,系统通过COUNT函数查询留言次数,再在页面中动态建立行数,再通过EL表达式在中写入留言内容来实现的。这一功能非常实用。效果如图518所示图518留言效果图示524商品购买及购物车的实现5241商品购买的实现方式打开FRAMEJSP进入商城首页面后。用户可以以游客身份在商城中浏览商品,查看已注册用户对商品的评论和商品的详细信息,如果用户要在商城中购买商品,就必须以商城会员身份登录。如果游客点击了“我要订购”按钮,系统将提示未登录用户不能购买商品,未注册用户请到注册页面注册。首页面如图519所示图519商城首页面商品展示在商城首页面中点击某件商品图标,将会连接到商品详细信息展示页面,例如点击商品首页面的商品联想Y460电脑。浏览器将重定向到商品详细描述界面,通过页面的产品介绍,用户可以了解到商品的具体信息。图520是商品详细信息展示图520商品详细信息展示如图所示,商品展示的所有信息存储在GOODS_TB表中。在商品简介页面要说明商品编号,商品名称,商品价格,商品库存,商品评论等信息,便于会员购买时查看咨询。此外商品介绍页面中还要有好评率、上下架时间和收藏选项,以便于会员推广和记录这件商品。5242购物车的实现如果用户选择好了某件商品,要购买时,可以通过点击商品简介下方的“我要订购”按钮,这样商品将被添加到购物车中,购物车的实现机制是将商品ID保存在SESSION中,由于用户登录时,系统会自动创建一个SESSION对象来存储用户名,因此可以通过SESSION将商品ID和用户ID一起添加到一个ARRAYLIST链表中,用户继续购物时,SESSION没有失效,因此可以继续添加商品。如果用户选择付款,那么可以通过点击结账按钮到收银台界面,收银台将根据SESSION中存储的商品ID从数据库查询商品价格,这样就实现了结账功能。此外,用户还可以通过购物车中的删除按钮来灵活控制购物车,实现机制是调用JSP内置对象SESSION的REMOVEATTRIBUTE“G_ID“方法来清除SESSION中对应的商品信息,由于SESSION具有用户发出请求时创建,关闭浏览器时SESSION失效的特性,所以,如果用户没有结账时关闭购物车,SESSION将在浏览器关闭时清空,用户登录信息将也被同时清空。整个过程的实质是所有的信息都存储在COOKIE文件夹的INDEXDAT文件中,而COOKIE是SESSION的一个子集,通过这种机制就实现了购物车和用户信息的保存,不过SESSION并非完美,用户信息在电脑上的存储并非绝对安全,因此使用SESSION对象时最好要用强制销毁SESSION的INVALIDATE来控制SESSION的存在时间。图521是购物车的实现情景图521购物车的应用场景在购物车页面中,用户可以随意的选择删除以选择商品,或者修改购买的商品数量。525订单和订单管理的实现方式在日常的购物网站中,交易量非常的大,每笔交易如果没有完整的记录来保存交易信息,那么出错后造成的损失将非常大,而且处理起来会相当的麻烦,引入订单可以大大简化这一过程,通过在订单表关联外键到商品表和用户表,可以很完整的保存下来用户购买商品时的商品编号、商品价格、商品产地、购买时间、用户名称、收件人名称、收件人地址、付款时间还有发货状态等信息,非常便于查询和作为凭证。订单所面对的对象分为商城会员和管理员两种,这两种角色所分别具有的功能在5252详解。以下两节将通过本网上商城系统的运行实况,详细介绍该系统订单的产生方式和管理方式。5251订单的产生方式订单是网络交易的最重要凭证,订单的唯一性非常重要,每笔生意都要唯一的对应一个订单。因此订单可以作为订单表的主键和标志位,在网上商城系统中,一般都用订单提交时间的时间戳来确定订单编号,在交易量非常大的时候为了避免重复,有时候还需要在时间戳后加上一小串随机码来确保避免重复。在本网上商城系统中,订单编号的产生也是通过获取订单提交时间的时间戳来获得的。核心部分代码如下。DATETODAYNEWDATESIMPLEDATEFORMATSSNEWSIMPLEDATEFORMAT“YYMMDDHHMMSS“STRINGO_CODESSFORMATTODAY/得到订单编号。通过以上代码可以看到,先实例化一个日期类型对象,获取当前日期,然后通过将日期格式化,再通过TOSTRING方法得到一个STRING类型的字符串,这个字符串就具有了唯一性,可以作为订单编号。订单编号获取后,再获得从前台页面POST到SERVLET中DOPOST方法的其他参数。在COMFITE_COMMERCEMODEL包中,创建了一个ORDERMODEL的类文件,在其中创建了ORDER模型,并使之与数据库的ORDER对应,通过将前台页面得到的参数复制给一个ORDER对象,创建好ORDER对象后,通过调用ORDER的工厂方法类将其存储到数据库中,储存过程在521的DBFACTORY中有详细介绍。由于订单表与商品表和用户表都有外键关系,并且这三张表存储的数据都非常大,在连接查询的时候,如果频繁的做笛卡尔乘积,得到的结果将会非常庞大,严重降低整个系统的整体性能,因此在一般情况下都要做多表处理,在本系统中采用了ORDER_TB表和ORDER_DETAIL_TB两个表来存储订单信息。在这里ORDER_DETAIL_TB的构造采用了关联O_ID和G_ID两张表,用商品表和订单表的主键组合作为订单详细表的联合主键,在该表中只存储关联的商品信息,而在另一张表中存储订单信息和用户信息及关联的商品编号,这样做可以平衡负载,减小存储压力,提升系统的整体性能。5252订单的页面显示方式订单作为商城交易的最重要凭证,所以关于订单的功能实现一定要丰富多样,订单面对的对象为商城会员和管理员,对于不同的对象,订单的表现方式要严格控制,防止订单信息被非法修改的情况出现。除此之外,订单的实时状态也是非常重要的一个环节。在本系统中也不例外。设计良好的订单能够在有限的页面空间内体现出一个交易的详尽的信息,并且订单内容的重要部分要醒目,便于用户查看。在该系统中按照商城会员和管理员两种身份来设计订单。商城会员和商城管理员关于订单模块的功能划分会员下订单订单信息查询订单实时状态查询未发货订单删除订单跟踪管理员订单查询订单状态查看和更新过期订单处理有效订单处理(注管理员没有更改订单信息的权限)图522订单模块用例图从上可以看出,会员登录后,可以查询订单的为订单信息查询页面,该页面显示的是会员最近所有交易的记录,用户可以通过按时间搜索和按订单标号搜索的方式查询某次交易的信息。会员可以通过订单信息查询页面。在该页面上显示出用户最近所有的交易信息列表,列表上会列举出订单编号,订单时间,商品名称,商品价格,商品数量等信息,但如果用户要获得详细信息,就必须通过订单号查询,如上图所示,当点击某订单号后,JSP服务器会自动重定向至MEMBERDETAILORDERJSP页面,在该页面中,将以如下图的方式详细的列举出订单的所有信息,如收件人、联系方式、收件人地址以及订单信息等。图523订单表ER图关于订单详细页面显示的所有信息,在后台都会以表格的形式进行显示,通过在前台利用EL表达式,服务器端传进的参数通过SERVLET的DOPOST方法返回到后台页面中,如图524所示图524订单详细查询界面5253订单的后台管理管理员也可以通过网站后台管理系统来管理订单。管理员登录后在左侧下拉菜单中可以看到有一栏“订单管理”,“订单管理”有“查看所有订单”和“查询订单所有信息”两个子菜单。在查看所有订单中,在表格最右侧列,管理员可以通过勾选CHECKBOX来批量处理订单状态,可以再次转换某订单的发货状态,如图525所示图525订单状态修改从上图可以看到,这一个页面中并没有显示出每个订单的所有信息,而是显示出了最主要的部分信息。由于订单表中所有的字段太多,因此在这里全部显示不仅让人头晕眼花还会降低执行效率,因此在这里强调了搜索功能,可以按条件过滤出符合要求的订单,如按状态搜索、按编号搜索、按下单人搜索、按电话搜索、按收件人搜索等。而讲订单的所有信息放在另一个页面中显示,这一点与会员看到的订单详细界面类似,如图525所示。至此订单的所有实现方式介绍完毕。6系统测试61系统测试概述软件测试使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。测试按阶段一般分为需求阶段测试、单元和集成测试、系统测试、压力测试和性能测试。62系统黑盒测试黑盒测试是指把被测软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子,只关心软件的输入数据和输出结果。等价类测试是黑盒测试中非常具有代表性的一种测试方式,它是指把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数贴近边界值的数据作为测试用例。在本系统中,在用户登录模块的测试用到了等价类测试。图61等价类测试效果在该系统中用户注册时受以下几个条件限制4USERNAMELENGTH16用户名不能是已存在的用户名用户名不能全是数字两次输入的密码必须一致6PASSWORDLENGTH12,因此可以设计如下表格,通过输入表格中的不同组合来检测该模块功能是否正确。表61等价类测试案例测试变量名称输入数据输出数据AAA长度错误KAKA已存在的用户名AAAAAAAAAAAAAAAAA长度错误AAAAAA正确用户名111111不能全为数字AAA密码长度错误AAAAAAAAAAAAAAAAA密码长度错误AAAAAAAAAAAA正确密码AAAAAABBBBBB两次密码不一致以上测试,通过分析边界值,划分不同的值域,分别取值,进而可以看到注册部分通过了黑盒测试。63系统白盒测试白盒测试是指把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。在这里以购物车的实现为例。图62白盒测试实例购物车模块要求系统能正确读取商品的单价P,并且可以从页面显示的用户订购商品数量N获取总价格T,如果用户删除商品,也要能返回正确结果。P1P2PRICEDISPLAY1TOTALPRICEDELP1ADDP2DISPLAY2TOTALPRICEG_IDSYNY12345图63购物车模块数据流程图通过输入两种商品的G_ID,可以得到商品单价。进而可以得到第一个商品总价DISPLAY1,如果用户删除了商品P1,显示出第二个商品总价DISPLAY2。如果用户是增加了商品P2,也可以得到正确的商品价格DISPLAY2。以下表格描述整个测试过程。表62白盒测试案例输入数据输出数据编号P1P2DELP1ADDP2DISPLAY1DISPLAY2覆盖路径校验结果112YY5NULL1F212YN3NULL12F312NY612351235F412NN312451245T通过以上结果可以看出,购物车部分通过了校验,如果显示的结果与正确数据不符,那么就判断出是哪个循环出现了错误。在系统的设计中,出现的错误远比上面介绍的多得多,系统调试成功,可能运行并非代表着系统就已经完美,相反,只有通过软件测试和试运行才能发现系统中存在的问题,通过不断的修改更新,才能保证系统的顺利运行。7结语经过近3个月的努力,网上购物管理系统终于设计完成了。在这个项目的开发过程中,遇到了很多很多的问题,包括许多会用却不懂的问题,通过查阅资料,请教老师,其中的不少问题都得以解决,但是还是有一些问题存在。在以后,我会继续努力。71本系统的优点本系统是网上商城测试项目,也是本人的毕业设计,有一定的实际意义,本系统实现了商品的购买和订单的处理等功能,基本具备商务系统所需要的功能,基本满足用户的需要,而且该系统所面对的用户范围较广,对于用户来说,并不需要掌握专业的计算机知识便可以使用,便于推广和使用,有利于BUG的发现和后续的开发维护。72本系统的不足之处及发展意见该系统从4月中上旬完成到现在,一直处于调试和调整阶段,发现了很多很多意想不到的问题,在这个阶段的收获也是最大。目前系统存在的问题主要体现在以下几方面空指针异常(JAVALANGNULLPOINTEREXCEPTION)这个错误是随机出现,并没有发现程序实际的出错之处,而且加的判断标志位有时正常有时失效。初步判断是SQL语句导致的问题。在整个数据库的设计过程中,GOODS表和USER表都填充了一定量的数据,而在系统的开发代码中大量嵌入了SELECTFROMTABLE语句,导致了笛卡尔乘积非常庞大,并且在一次页面中可能牵涉到数次的SELECTFROMTABLE查询。这可能是空指针异常的最主要原因。MICROSOFTODBCSQLSERVERDRIVER无效的描述符索引刚出现这个错误时,都很头疼,SQL语句完全正确,在MYSQL数据库中的测试也正确,就是在系统中抱这个错误,经过查阅资料最终发现是SQLSERVER2005服务器自身的原因。通过SELECT语句在SQLSERVER表中查询信息时,必须要按照表中字段排列的顺序查找,否则就会报错,即使是通过SELECT语句来查询,从返回的结果集中取数据时也要按照字段排列来取。这个问题最终被解决,但由于系统中SQL语句很多,可能还存在有没有发现的此类错误。启动缓慢这个跟空指针异常应该是同样的原因,但由于SELECTFROMTABLE语句非常多,修改起来工作量非常大,而且稍不细心就会出错,因此在后续的调试中修改的类文件并不是很多。支付管理模块没有实现。尚有一些模块存在问题,没有调整好,主要是收藏模块的空指针异常。73在系统设计与实现过程中的收获首先,在开发本系统的过程中,要查询翻阅大量的参考文献以及网上搜索资料,培养了我调查研究、查阅中外文献资料,运用国家标准、行业规范、手册、图册等资料的能力。其次,在开发本系统应中,用到了我以前所学的很多知识。通过对本系统的开发,提高了我综合运用所学理论知识和技能,分析解决实际问题的能力。最主要的是提高了我的自学能力。通过这次毕业设计,把所学的理论知识与实际应用联系了起来,为我今后走向社会打下了坚实的基础。总之,这次毕业设计使我受益匪浅。参考文献1孙卫琴JAVA面向对象编程M北京电子工业出版社,20102阎宏JAVA与模式M北

温馨提示

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

评论

0/150

提交评论