基于JAVA的购物网站(毕业论文)_第1页
基于JAVA的购物网站(毕业论文)_第2页
基于JAVA的购物网站(毕业论文)_第3页
基于JAVA的购物网站(毕业论文)_第4页
基于JAVA的购物网站(毕业论文)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、1引言门从b2c购物出现在人们的视野中,电了商务就在全世界范围内受到了格外的关 注,并口得到了快速的发展。从现实角度来看,冃前购物网站的普遍用户是购买者难 以自己想要购买的商品英至用户在耗费很人的精力和时间后即使找到了自己想要的 产品,最后却由于其他原因而放弃购买。很多报道指出,推销商们普遍对冃前的网络 行销感到失望,尽管如此,电子商务无疑是目前最好的在线商品展示的媒体和工具。 然而,网上产品展示的目的不仅仅是展示产品,而更重要的是通过让客户更多地了解 产品而提高产品的购买率。因此,购物网站目而所面临的最大挑战z就是网站的设 计,如何使得网页能够有效地展示自c的产品,同时方便用户的使用,使用户

2、以愉悦 的心情选购称心如意的商品。木系统的目的和意义就是应上述挑战而尝试为用户提供一个操作简单方便的网 上交易系统。利用本系统,用户町以自由地浏览商品,注册成为网站会员,选择商品 加入自己的购物车,而后生成订单,实现网上购物。2系统应用的关键技术2. 1 extjs mvc 的介绍extjs 前台我分为了 model, store, view, controller 层 4 层架构,对于 model 层,用于接收后台传入的pojo封装成前台数据model屮,创建一个model需要define 的一个继承于ext. data. model的一个类,其中关键不可少的配置项是fields,例如 fi

3、elds: naine:ict,srotable:true, name:"text", type:"string", srotable:true其中name代表字段名称,type为字段类型,类型只有string、float、int> boolean、 date> auto(默认值,意味着无convert方法)6种对应后台pojo,形成一条数据,而 stroe层则是数据集合,也就是model的集合。开发时我们经常是用代理的方式从后台 获取一条json数据,形成stroe,如proxy: type:ajax,/category/combo cat

4、egory, do",reader: type:json, root: rows,writer: type: json是用ajax的代理方式从后台获取一个数据集,stroe还得指定你使用的model是那 个,model配置项就可以指定你要指定的model类,用字符串的形式写上类名即可配置 好stroe.这时候搭建主面板视图,主面板是一个border布局,上方是login信息以及 系统名称,左边属性图,屮部是数据表格以及一些表单。完成的nivc架构还需要 controller层,这时候我们耍先建立一个app. js,内容如下:ext. onrcady(function() ext. q

5、uicktips. init () ;/开启提示功能ext. loader. sctconfig(/动态加载js文件cnabled : true);ext application(name : "core",/名称appfoldcr :./core",/所在的口录launch:function() ext. create (z,ext container viewport", layout : "fit",border : 0,items : xtypc : z,mainview 1 ayout,z);,controllers : c

6、orc. app controller maincontroller"););我们用一个viewport搭建系统主界面,其中items中放入的mainviewlayout就是系 统主视图的别名,通过这种方式可以直接加载mianviewlayout类到页而,cotrollcrs配置的则是我们的控制器层,控制器层的声明也相当的简单,创建-个继 承与ext. app. controller的类,写一个初始化方法中的this, controller方法中则是 我们控制界而按钮效果的主耍地方。我在搭建这套界而是写了一个公用的加载其他控 制器和页面视图的方法:this addfunitcm二fu

7、nction(funinfo) if (funinfo)var mainview=funlnfo. mainview;var funpanc1=mainvicw. down(funinfo. funvicwxtypc);辻(ifunpanel) self, application. gctcontroller (funinfo. funcontroller) init ();funpancl=ext. create(funinfo. funviewname);mainview, add(funpane1);mainvicw. sctactivetab(funpancl);else mainvi

8、ew. setactivetab(funpanel); ,传入funinfo是一个js对象,用來加载不同views, models, stores,实现点击左侧树形 图,加载不同的数据表格表单树形等不同的数据展示效果.2.2数据表格的形成extjs屮的数据表格屮的每一条数据对应的都是model,所有记录则是一个数据 集合,所以数据表格中我们肯定要配置的有stroe对象,为了形成数据表格中可以形成 复选框多选的效果我们需要加入的配置项有 selmodel: seltype:"checkboxmodel",multiselect:true,使用的是复选形式的选择模式,数据表格必

9、不可少有colums,也就是列模式,规范我 们接收store数据形成表格的展现形式如:columns:text:"商品名称",datalndex:"name", width: 100,text表示的每列展示的名字,datalndex则是需要展示的字段,一般我们在生成一个数 据表格的吋候我们都会在表格头上加几个按钮,用来管理数据表格的增删改,这个功 能实现只要用tbr里面放儿个按钮,分别给上他们响应的rel属性,方便我们在控制器 中查找,实现控制功能,常见的数据表格还会有分页展示,以及搜索框,bbar: xtype:' pagingtoolbar&

10、#39;,store:'core, product. store. productstorc', dock:' bottom,,displayinfo:trueibbar中放入的就是一个分页的组件,他也需耍一个数据集合stroe, dock表示地定位的 位置,而搜索框我们一般用一个触发器组件来形成,做一个前台的过滤效果即可。如 -,'按名称查询:,xtype: 'triggcrfield,,triggercls: ext. basecssprefix + ' form-search-trigger", listenets: z/chan

11、gez,: function(_this, _ncw, _old, _opt) var _store = _this. ownerct. ownerct. getstore ();store. clearfiltcr(false);_store. filter (/,name, _new) ;,ontriggerclick: function() var store = this. ownerct. owncrct. gctstorc();_store.clearfiiter(false);_store. filter ("name", this. getvalueo);!

12、,这样简单的搜索功能我们就可以实现了。2. 3树的形成定义一个类继承于ext. tree. panel.木系统的主界面的树形使用的是木地树,不 同过后台生成,直接前台固定数据,生成的固定的树结构,树同样需要数据就有store 的配置以及树的items配置主要配置的就是树的各个节点,本系统每一个小菜单就是 一颗树,通过前而定义的加入新的视图和控制器的方法来加载不同的页而都需耍传入 树的节点信息。2.4数据库的连接本系统数据库的连接使用的mybatis框架的数据连接,用配置文件配置数据库连 接属性,木次我没有使用外部属性文件,而是直接使用配置的固定参数,先配置一个 数据源datasource,让他

13、直接指向类 org. springframework jdbc datasource drivermanagerdatasource,西己置参数 drivcrclassnamcflllvalucjcom. mysql jdbc driver, url为jdbc:mysqll. localhost:3306/lzl?characterecoding二utf-8&useunicode二true 在配置数据库访问账号密码,这样我们就和数据库连接上了。2. 5系统的运行环境木系统前端使用mvc模式的extjs4. 1后台使用springmvc, spring, mybatis整合, 使

14、用的服务器是tomcat7. 0,在eclipse编译器下运行即可,操做系统windows 7, 在火狐浏览器下进行测试.2. 6 springmvc工作流程1. 用户向服务器发送请求,请求被spring前端控制servelt dispatcherservlet捕 获;2. dispatcherservlet对请求url进彳亍解析,得到请求资源标识符(uri)。然后 根据该uri,调用handlermapping获得该handler配置的所冇相关的对象(包括 handler对象以及handler对象对应的拦截器),最后以handleriexecutionchain对象 的形式返冋;3. dis

15、patcherservlet 根据获得的 handler*,选择一个合适的 handleradaptei*。(附 注:如果成功获得handleradaptei*后,此时将开始执行拦截器的prehandler(.)方法)4. 提取request中的模型数据,填充handler入参,开始执彳亍handler( controller)o 在填充haikilei的入参过程中,根据你的配置,spring将帮你做一些额外的工作:httpmessageconveter:将请求消息(如json xml等数据)转换成一个对象, 将对象转换为指定的响应信息数据转换:对请求消息进行数据转换。如string转换成in

16、teger> double等数据根式化:对请求消息进行数据格式化。如将字符串转换成格式化数字或格 式化h期等数据验证:验证数据的有效性(长度、格式等),验证结杲存储到bindingresult 或error屮5. handler 执行完成后,向 dispatcherservlet 返回一个 modelandview 对象;6. 根据返回的modelandview,选择一个适合的viewresolver (必须是已经注 册到 spring 容器屮的 viewresolver)返回给 dispatcherservlet ;7. viewresolver结合model和view,来汩染视图8.

17、 将渲染结果返回给客户端。2. 7 spring依赖注入,控制反转ioc,即控制反转。他使程序组件或类z间尽量形成一种松耦合结构,开发者在使 用类的实例之前,需要先创建对彖的实例。但是ioc将创建实例的任务交给ioc容器, 这样开发应用代码吋只需要直接使用类的实例,这就是ioc。通常用一个好莱坞原则 (请不要打电话给我,我会打电话给你。)來比喻这种控制反转的关系。依赖注入有 3种类型注入,spring支持2利setter注入和构造器注入,在项目中我使用的是注解 方式的注入,在配置文件屮配置了 com.lzl包下的类自动注入到容器屮,在我们需要 用到这些类的时候,我们只需声明该类,然后使用一个a

18、utowired注入想要使用的 类,其中控制器我们使用的controller注解标识为控制器,业务逻辑层我们使用的 service注解。这样spring容器就能管理好我们的类。2.8 spring aop3系统需求分析和总体设计3. 1系统功能需求在木系统中用户管理、购物车管理、订单管理、产品展示,商品管理,广告管理六个 模块。(1)(2)(3)(4)(5)分为前台展示项口和后台管理项口。购物车管理:实现添加商品、取消一个商品、数量修改、清空购物车功能。订单管理前台展示用户管理商晶管理实现提交订单、删除订单、查询订单、订单审核功能。实现产品列表、产品明细功能。实现用户注册、用户信息修改、用户删

19、除、用户查询功能。实现对商晶的添加,对商晶信息的修改,对商晶的删除。以及按类别查询商詁,按名称查询商詁功能。(6)广告管理:对主页面广告部分的管理,实现广告的动态化,页面广告信息的更wr o3.2系统角色及其功能分析3. 2.1系统中有3个角色:(1) 注册用户(2) 管理员(3) 游客3. 2.2系统角色的功能(1) 普通用户网诂的普通浏览者(即游客),可以浏览商品和添加本地购物车。(2) 注册用户普通浏览者只要注册为网站用户后,登录成功后有以下功能:登录,登出,向购物车中添加商品,杳看个人信息,生成并提交订单。添加或修 改个人明细资料。(3) 管理员登录成功后,进入后台项目,对前台展示的动

20、态管理,以及用户商品等管理,对订 单的审核。3. 3总体设计思想概述木系统是基于b/s架构下的多层结构应用系统。b/s (browser/server)结构即浏 览器和服务器结构。它是随着internet技术的兴起,对c/s结构的一种变化或者改 进的结构。在这种结构下,用户工作界面是通过www浏览器来实现,极少部分事务逻 辑在前端(browser)实现,但是主要事务逻辑在服务器端(server)实现,形成所 谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的 成本和工作量,降低了用户的总休成本(tco) <>在软件体系架构设计屮,分层式结构是最常见,也是

21、最重要的一种结构。推荐的 分层式结构一般分为三层,从下至上分别为:数据访问(dao)层、业务逻辑层、表 示层总的来说,采用分层结构的设计思想,可以让每个层由一组相关的类或组件构成, 共同完成特定的功能。层与层之间存在口上而下的依赖关系,上层组件会依赖下层组 件的api,而下层组件则不依赖于上层组件。例如:表述层依赖于业务逻辑层,而业 务逻辑层依赖于数据库层。并且每个层对对上层公开api,但具体的实现细节对外透 明。当某一层发生变化,只要api不变,不会影响其他层的实现。在本系统中,使用开源的mysql数据库,持久层用到spring所集成的mybatis 技术,业务逻辑层用普通javabean实

22、现,表述层运用基于springmvc的mvc设计模 式(springmvc用來做c层,spring实现v层与c层的解耦以及c层与m层的解耦)。3. 4数据库设计(3d(zd)、管理员管理灯单场号<8>-”一 一 一、(7*4*.xoit)亦塢号)图3-1数据库e-r3. 4. 2数据库表设计下面列出了设计过程中所用到的数据库表及其结构:表3t lzl_quser前台用户表列名类型长度允许空值描述idint11不允许主键usernamevarchar255不允许用户名passwordvarchar255不允许密码emailvarchar255允许邮箱地址qqvarchar255允许q

23、q号码phonevarchar255允许电话号码sexvarchar255允许性别xlvarchar255允许学历ahvarchar255允许爱好 jjvarchar255允许简介表3-2 lzl_uscr管理用户表列名类型长度允许空值描述idvarchar11不允许主键usernamevarchar255不允许用户名passwordvarchar255不允许密码sexint11允许性别phonevarchar155允许电话号码qqvarchar255允许qqad drvarchar255允许地址emailvarchar255允许邮箱地址表 3-3 lzl_product 商品表列名类型长度允

24、许空值描述idirrt11不允许主键namevarchar255允许商品名descvarchar255允许描述norma pricedouble11允许社会价格member pricedouble11允许本丿占价格pdatetimestamp0允许上货口期category idirrt11允许所属类型photovarchar255不允许图片地址表3-4 lzl_cartltcm购物车表列名类型长度允许空值描述idirrt11不允许主键product idint11不允许商品idproduct namevarchar255允许商品名称countint11允许商品数量pricedouble11允许

25、商品单价quscr idint11不允许用户idstateint11允许当前状态imagepathvarchar255允许商品图片3. 5系统的类设计3. 5. 1 dao类设计通过这个mybatis获取对应的dao,然后使用dao进行数据库操作,每个deio对应 一个mapper配置文件,进行sql的配置,在本系统中,dao的一"般使用都使用了 bascprovicc类,根据约定实体用param( “entity”)标识,分页参数用 param( “pagenum”)和param( upagesizen )标识,这样就能友好的被读取,按照约 定还冇实体中的其他对象属性要用0bjec

26、tal t注解标志,集合用arrayal t标志,这 样的标识都可以方便我们更好的识别其属性到底是个什么类型,其次做条件杳询时, 是用entity标识的实体中有不为空的属性且不为空字符串时就会被and连接,保存 也是实体中不为空的属性都会进行保存,主键必须为空,数据库进行主键的自动壇长3.5.2 jacksonutil 类设计本类中实现了一个maptojson方法,参数为一个object的对象。返冋值为一 个string类型的json对象,本类可以将对象或者集合传化为js07格式的字符串, 用的是jackson jar包。3. 5. 3 objectalt注解类设计用©target

27、(elementtype. field)标识表示可以使用在属性上,在使用 ©retention(retentionpolicy. runtime)在运行吋检测,最后方法屮声明一个 string value0,木类用來标识实体类中的对象属性。36系统的用例图图3-2总体用例分析1图3-3总体用例分析2如图3-3,用户管理、购物车管理、订单管理、产品展示,广告管理,商品管理6个模 块构成了本b2c购物网站系统。user是指系统用户,包括注册用户和匿名用户两种, 匿名用户只可以浏览商品,匿名用户通过用户管理模块注册后就可以使用购物车和下 订单。如图3-4,用户管理模块主要包括:用户登陆、用

28、户注册、用户信息修改、用户 删除、用户信息杳询五个功能组成。如图3-5,购物车管理模块主要包括:添加商品、取消一个商品、数量修改、清空购物车四个功能组成。如图36,订单管理模块主要包扌舌:订单提交、删除订单、订单明细三个功能组成。4. 系统结构设计图41系统前台功能设计商品管理亠其它订单处理亠订珈认处理 亠订爪发货处理亠wi运ici处wij亠仃单发箕»|4后台nw删除公告发布公告工添加一 级分类 丄商品分类列表i"h添加一级分类 丄商品信息修改在看会员列表ihlftlacglib片imilftllidllal一 购买lldlml 本信血一廿用 jf公吿栏tttamf r 咖

29、 pa.lwlje 车| 怜弄伦ifflimi怜 ®*le(llffii irhlmir 1*14g必11心戏刑込炙过-agalffilhrow &图4-3系统总体功能设计员rn 一理管操作日志留言、评论回复查看交易信息订单处理管理商品管理用户个别功能设计图4-45系统的详细设计5.1 baseprovice 类这个类重耍是复用型的后台动态sql语句的生成,在dao层使用selectkey注解 指定 type 为 baseprovice. class, method 为指定的方法,511 isstring方法该方法返回值为一个 string ,参数为 field field,

30、 map<string, object> map, st ring sql 三个, 通过 field gettype () tost ring() cont ainsc's tring"),半 0 断出这个属性为string属性,然后在判断这个属性不为空的字符,这时候我就进行了 模糊查询and连接方式的拼接,用传入的sql参数的concat方法拼接“and” +stringuti 1. stringtocoulm(field. getname(),在拼接 1 ike concat(, ttentity,加上field的getname方法拼接属性名称上去,strin

31、gutil. stringtocoulm方法是将属性格式化为字段的方法,如mcbmcrpricc就 会格式化成mebmer price,最后返回sql即可。5. 1. 2 isobject 方法该方法返回值为一个 string ,参数为 field field, map<string, object> map, string sql 三个,通过 field 的 getannotation(objectal t. class)方法不为空 的话我们就通过field, get (map. get ( 'entity'),得到一个object的对象,通过object对象的g

32、etclss (). getdeclaredfields (),得到属性的数组,循环遍历属性数 组,循环屮先设置私有属性可访问,然后通过ficldslj get (obj),得到这个属性, 判断这个属性如果是id的话在进行拼接sql=sql. concat (,zaxdz,+stringutil. stringtocoulm(fields 1 j. getname()+z/ 二# entity. z,+field. getname()+" "+fieldsl j getname()+");就可以将外键属 性的id进行拼接进入,最后返冋sql即可。5. 1. 3查找

33、单个对象首先我们在baseprovice类下建立一个名为findone返回值为string值参数为一个 map的方法,其次通过map. get ("entity")getclasso得到一个map中param( "entity )注解标识为实体的class对象,然后我们声明一个string类型的 字符串,初始化为” select * from ”,通过conceit方法用刚刚得到的class对象的 getsimplenamco方法得到类名,约定好lzl_+类名就为数据库表名,这时候就得到了 select * from表名,最后我们在通过concat方法拼接wher

34、e id=# entity, id,返 冋字符串sql。5. 1. 4通过条件查找对象集合先声明一个名为findlist返回值为string参数为map<string, object>map的方法, 通过map. get ( "entity” )得到param( "entity” )注解标识为实体的class对象, 声明一个string类型的字符串,初始化为select * from,通过concat方法拼接 z/lzl_z,+clazz. getsimplename()+z,where 1二1,得到的 sql 为 select * from 表名 where

35、1=1,这时候我们调用class对象的getdeclaredfields ()方法得到属性的数 组fields,对属性数组进行遍历,在循环开头我们需要设置可以访问私有属性,这 句代码就是设置访问私有属性,fieldsi setaccessinble(true),然后进行判断这 个属性在实体中是否为空fieldsi. get (map. get ("entity") !=null,不为空的时 候我们对属性的类型进行判断,这时候我们就要用得isstring, islnteger , isobject 方法,最后返冋sql。5. 1. 5通过条件查找对象集合带分页这个方法中我们只

36、需要调用上放的findlist方法,最后我们将sqlconcat 方法拼接 limit itpagenum, ttpagesize,最后返回 sql。5.1.6带条件的查询数据总数这个方法我们也是先调用findlist方法得到所有的记录,然后通过sql的 replace方法将*替换为count (*),返回sql即可。5. 1.7增加一条记录的方法声明一个名为save返回值为string参数为map的方法,首先我们通过 map. get ( <entity, ). getclassc )得到对象的 class 对象,声明二个 string 字符串,一个为sql初始化为insert int

37、o, sqll初始化为values (;给sql字符串拼接上表 名,通is sql. concat (/zlzl_z/+clazz. getsimplename()+/z ( “),用 class 对象的 getdeclaredfieldso得到所有的属性,遍历属性数组,设置可以访问私有属性,通 过 fieldsi getannotation(objectalt. class) !=null 时,对 sql 进行 sql二sql. concat(stringuti1. stringtocoulm(fieldsi. getname()+"_id ,;对 sqll 进行 sqll=sql

38、l. concat (” #entity. "+fieldsi getname()+z/. id, “);然后 continue 出去,在判断 if (fieldsi. getannotation(arrayalt. class) !=null),在 continue出去,在判断该属性是否是id属性,是的话sql 二 sq 1. conca t (st ringuti 1. st ring to coulm (fields i . getname ()+/z, “); sql l=sql 1. concat c # entity. "+fields i getname ()

39、+,");最后将 sql 的最后 一个',替换为sql. substring(o, sql. lastlndexof (",") concat (") “);sql 1 的最后一个 s '替换为')'sqll二sqll. substring© sqll. lastlndexof (”,“). concat (“)“);最后返回 sql. concat (sqll)就得到了增加 语句5. 1. 8根据id修改的方法5. 1. 9根据对象修改的方法声明一个名为update返回值为string参数为map的方法,声明2

40、个字符串分 别为 sql 和 where 初始化为"update” 和"where id=#entity, id ” ,通过 map. get (entity). getclass ()得到class对象声明为clazz,给sql拼接表名并加 上set字符串,通clazz. getdeclarefields ()得到所有的属性,设置可以访问私 有属性,判断是否为id属性是的话不拼接,在判断是否是对象,通过 ficldsi. getannotation(objectalt. class) !=null 判断是对象,是对象的话 给 sql 拼接 sql=sq 1. conca

41、t (st ringuti 1. st ring to coulm (fields i getn ame ()+_id =#entity. "+fieldsi getname() +. id);在 continue jli去,在通过 fieldsi. get ( map. get ("entity") !=null判断当前属性值不为空,在拼接以下语 句 sql=sq 1. concat (stringuti 1. str in gtocoulm (fields i getname ()+,= # entity. z/+ficldsi. getname()+&quo

42、t;, “);最后去除掉字符串的最后一个字符 sql=sq 1. substting(0, sql. 1 ength()l);返回 sql. concat (where) u卩 口j5.1.9根据id删除的方法声明一个名为remove返冋值为string参数为map ,先声明一个sql的字符串, 初始化为 delete from,通过 map. get ("entity"). getclass ()得到 class 对象, 然后拼接 lzl_z,+clazz. getsimplename() where id=#id,最后返回 sql 即可5. 2主要模块的设计说明与界面5

43、. 2.1用户管理模块用户管理模块主耍包括用户注册,登录,退出、删除、修改图51未记住密码以及未自动登录状态图5-2记住密码状态區爱常访可羽封百度百央*孤官方站点e報于上曙戸月网址爰砒膚曲别>i i图53自动登录的状态c q st二圍 rawru . 車上 ««« «imd <»*»«我佳炒货o o * >q 邓4.,«»= o 时砂ffjwkwwht:p卫b6 科mqqdneimt12>x>12m56:tua1421241hel 1 idwiij 2 teq231w3z0c

44、w79h】2ss7wiwirttol123124142121312312312 2412h2141首页用户基本信旦图54用户管理贝面用户名:性别:qq:1w:图55用户增加1月户名:性别:qq:mt:玄码:电话:芒箱地址:图56用户增加2新育用户 屆修改月户3删除月户0用户名称用户密码鬧0电话qqemaio1admin 123123456女13237009879119412857011194128701.江西昨2h123123456女123124142121312312312241214214114212412403fchulin123456789女13242412421421412cfvbf

45、dbbdf图5-7用户增加3有页用户基本信皀0保存空返回用户舍:qq:imt:图58用户信息修改图5-9搜索过滤5. 2. 2前台系统展示模块欢迎光窃本店登录注册查看购柄车i迭购中心i标空云i扌艮价单”雍达商城改複手机手机塚件«北京市区,現在下单(截至次日00:30已出库),閒入z (9 心)送达免 询火如“行中!百页优惡舌动留盲板冃"购游物车中有0件商品,总计金额¥0.00元。当前位s5甘页 用户中心商品分类手机类型cima手机 空11手机 3埒机 双欖和手vi配件充电署耳机电迪读卡器和内存卡充值卡小灵通/固话充值卡移动手机充值卡麻通手机充值卡:瞬裔品gw手机双

46、欖手机充值卡小灵加固话充值卡移动手机充值卡新闻快讯三星sgxv308说明书下戟 手机游浅下戴 促銷诺基亚谖诺sh5320促请 轴识苔及谱基亚阳81手机广告处富 飞利浦9呛肖800万像宗埋虽傷机s v销售排行榜“ 丄、诺星亚廉装58.|9| a 不店sift: ¥68元诺戛亚诺戛亚15120 .0 加诺基亚116 0 ft!入喊物车订里査询in图5-10游客用户展示页面欢«p光衙本店注册童看迪物车丨迭购中心i标签云i根价单曰3北京市区,現左下单鐵至次日00:30已出库),明天丄毎(9 14点)送达免运裁火冬艸"!您的购物车中有0件商品,总计金额¥0.00元

47、。我的购物车当前位置:曽页用户中心用户登陆免费注册如栗您不是会员,请注册友精覆示:不注册为会员也可在本庄宓买商品但注册之后您可以:1. 保存您的个人卿2. 收藏您关注的商品3-享妥合员积分制除4订i月本店商品信息会员注册图5-11登录页面欢皿光临本店lirhulin退出燮录查看购物车i选购中心i标签云丨报价单”雍达商城百页优悪舌动密言板収模手机gsh手机手机®件育 您的馳车中有0件商品,总计全额¥0 00元。昆烟牺»北京市区,现在下单(«至次曰00 30已出库)明天上牛(9t4点)送达免运jwdk谴行中?当前位養:首页用户中心图5-12登录成功后当前位蚩:首页 > 购物济程商品列表移品名祢本店价购买数里小计20.040.0诺基亚诺耳16.0232.0诺蔑亚1511280. 0l 2 j2560.0购物金额小计¥ 2632.0元清空购物些绘续购物结算中心图5-13购物车5. 3系统的测试测试是软件开发的重要组成部分,每一个开发人员都应该养成良好的生活习惯的 测试,通过不断地测试和维护,完成提高系统它是。显着性检验如下:(1)测试并不仅仅是为了找到错误,通过分析发生的错误发生的原因和趋,可以帮助 项目经理找到当前软件开发过程中的缺陷,以便及吋改进;(2)分析可以帮助

温馨提示

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

评论

0/150

提交评论