iPhone手机销售系统的设计与实现_第1页
iPhone手机销售系统的设计与实现_第2页
iPhone手机销售系统的设计与实现_第3页
iPhone手机销售系统的设计与实现_第4页
iPhone手机销售系统的设计与实现_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

iPhone手机销售系统的设计与实现摘要本次毕业设计的题目是iPhone手机销售系统的设计与实现。本论文就毕业设计的内容,系统地阐述了整个iPhone手机销售系统的功能及实现。在指导老师的带领下设计并实现了从手机管理,手机分类和查询,到购物车实现,用户订单处理,再到管理员系统。基本上实现了购物网的功能流程,能够实现用户与商家在网上进行手机交易。本系统界面简单直观,易于操作和使用,交互性强,完全基于Internet网络。关键词:手机销售管理系统;Internet;系统实现On-lineiPhonemarketingsystem'sdesignwithrealizesAbstractThisgraduationprojecttopicison-linecosmeticsmarketingsystem'sdesignwithrealizes.Thepresentpaperongraduationproject'scontent,elaboratedsystematicallytheentireon-linecosmeticssalesmanagementsystem'sfunctionandrealizes.Ininstructedunderteacher'sleadershiptodesignandtorealizefromthemerchandisecontrol,theclassificationofgoodsandtheinquiry,realizedtotheshoppingcart,userorderformprocessing,arrivedatthemanagersystemagain.Basicallyhasrealizedtheshoppingnetwork'sfunctionflow,canrealizetheuserandthebusinesson-linecarriesonthecommodityexchange.Thissystemcontactsurfacesimpledirect-viewing,simplifyoperationanduse,interactiveisstrong,completelybasedonInternetnetwork.Keywords:iPhonesalesmanagementsystem;Internet;Thesystemrealizes目录第1章引言 41.1选题背景 41.2可行性分析 41.2.1技术可行性 41.2.2经济可行性 51.2.3操作可行性 5第2章需求分析 62.1用户功能需求 62.2性能需求 62.3主要技术分析 7第3章概要设计 93.1功能模块图 93.2处理流程设计 103.2.1系统操作流程 103.2.2数据增加流程 113.2.3数据修改流程 113.2.4数据删除流程 12第4章详细设计 134.1系统E-R图 134.2数据库设计 134.2.1SQLServer2000分析 134.2.2数据库表结构 144.2.3数据库连接技术 174.3界面及代码设计 224.3.1用户注册 224.3.2手机查询 244.3.3用户登陆 27第5章系统调试与测试 305.1程序调试 305.2程序的测试 305.2.1测试的重要性及目的 305.2.2测试的步骤 325.2.3测试的主要内容 32第6章结论 346.1系统评价 346.2安全性问题 35致谢 36参考文献 37第1章引言1.1选题背景本系统的设计目的是为了满足消费者只要通过互联网就可以足不出户的购买自己喜欢的手机,改变传统商业交易,在互联网上进行交易,实现网上购买手机。网上购买手机的优势在于选择面大、价格便宜、交易方便、节省时间和精力等。整个手机市场一片繁荣,在这种情况下,网上手机的加入无疑将使得竞争更加激烈,但从另一个方面看,只有在这种激烈的竞争下,网上手机的优势才能得以体现。在中国,网上手机有发展的必要,也有发展的基础,发展网上手机的各方面条件也日趋成熟,但是还存在一些问题,只有把问题解决好了,才能保证网上手机销售的蓬勃发展。本论文课题新颖,主要涉及软件,数据库与网络技术等。涵盖知识面广,可有效地提高学生综合运用所学知识分析解决问题的能力,增强学生对事物的理解与掌握能力,培养学生掌握科学的研究方法,正确的设计思想,独立思考,勇于进取,探索创新,为今后进一步学习与工作奠定了良好的基础。1.2可行性分析1.2.1技术可行性本系统仅需要一台装有Office软件的计算机即可,对机器本身没有太高的要求,一般当前学校或个人电脑完全可满足要求。对于软件技术要求,现在的程序设计语言已非常成熟,要运用HTML样式,图形图象制作工具来制作生动活泼的网页及美观的图形文件或动画文件。1.2.2经济可行性由于本系统是为学生学习使用的系统,装上该应用软件,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为学校节约大量的人力,物力。所带来的效益远远大于系统软件的开发成本。在经济上完全可行。1.2.3操作可行性界面设计时充分考虑管理人员的习惯,使得操作简单;数据录入迅速、规范、可靠;统计准确;制表灵活;适应力强;容易扩充。第2章需求分析2.1用户功能需求实现一般电子商务网站的基本功能前台:1、首页显示手机;根据ID显示图片;搜索;注册;登陆2、搜素界面3、搜索结果4、注册5、登陆6、购物购物车浏览;结账后台:1、登陆页面2、首页用户管理;产品管理;类别管理;订单管理3、用户管理显示用户;删除用户;搜索用户4、产品管理产品显示;产品添加;产品更改;产品删除;产品搜索5、类别管理类别显示;类别添加;类别删除;类别修改6、订单管理订单浏览;订单处理2.2性能需求系统对环境的要求服务起端的最低配置是由建立站点所需要的软件来决定的,在最底配置的情况下,服务器的性能往往不进人意,现在硬件性能已经相当出色,而且价格也很便宜,因此通常应给服务器端配置高性能硬件。本机器的配置如下:处理器:InterPentium41.6Hz或更高。内存:512MB硬件空间:160GB题目主要采用的技术数据库:MicrosoftSQLServer2000。编程语言JSP服务器:Tomcat5.5,jdk1.6开发环境:WindowsXP2.3主要技术分析JSP(JavaServerPages)作为一种新的Web应用开发技术,越来越受到开发人员的关注。它为创建高度动态的Web应用提供了一个独特的开发环境,能够适应市场上绝大多数的服务器产品。JSP是由多个公司参与合作建立起来的动态网页技术标准。JSP的具体特征如下:(1)分离内容的生成和演示。使用JSP技术,Web页面开发人员可以使用HTML标识设计和格式化最终页面。使用JSP标识或者Java片段来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBean组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。(2)生成可用的组件。绝大多数JSP页面依赖于可重用的、跨平台的组件来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者让这些组件为更多的使用者或者客户集体所使用。(3)采用标识简化页面开发。Web页面开发人员不一定都是熟悉脚本语言。JavaServerPage技术封装了许多功能,这些功能都是在易用的、与JSP相关的XML标识中进行动态内容生成时所需要的。标准的JSP标识能够访问和实例化JavaBean组件、设置或者检索组件属性、下载Applet以及执行用其它方法更难于编码或耗时的功能。通过开发定制标准库,JSP技术可以进行相当的扩展,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和同标识一样执行特定功能的构件来工作。第3章概要设计3.1功能模块图前台管理前台管理用户注册与登录浏览手机订购管理会员注册册会员登录修改会员记录手机分类展示搜索手机后台登录购物车订单信息用户浏览修改会员记录手机分类展示后台管理后台管理手机管理用户管理订单管理添加手机删除手机浏览手机修改手机删除用户信息浏览用户查看单信息处理订单确认已处理订单3.2处理流程设计3.2.1系统操作流程系统登录界面输入操作员及密码系统主界面系统管理错误信息系统登录界面输入操作员及密码系统主界面系统管理错误信息数据库检查密码错误 数据库检查密码错误密码正确功能界面功能处理密码正确功能界面功能处理3.2.2数据增加流程添加信息时,编号字段由系统自动生成,且不能修改,其他信息由用户输入,之后对数据进行合法判断,合法则写入保存至数据库,不合法则重新输入数据。数据增加流程图:开始开始自动生成编号输入数据是否合法写入数据库结束图3.2数据增加流程图3.2.3数据修改流程在修改信息时,先选中一条待修改的记录,然后直接输入数据,判断合法性,合法则保存至数据库,不合法重新输入。数据修改流程图如图3.3所示。开始开始选择需要修改记录输入数据是否合法写入数据库结束图3.3数据修改流程图3.2.4数据删除流程当用户选定一条记录时,单击删除按钮,会提示用户是否确定删除,然后删除数据库相关内容。数据删除流程图如图3.4所示。开始开始选择需要删除记录是否删除更新数据库图3.4数据删除流程图第4章详细设计4.1系统E-R图用户名用户名密码地址电话用户买卖手机属于类别编号类别厂家名称生产日期编号订单用户名手机数量价格属于订单详细订单号总价单价手机号手机号用户名数量手机名称总价购物车4.2数据库设计4.2.1SQLServer2000分析本系统采用SQLServer2000数据库,SQLServer是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。SQLServer近年来不断更新版本,1996年,Microsoft推出了SQLServer6.5版本;1998年,SQLServer7.0版本和用户见面;SQLServer2000是Microsoft公司于2000年推出的最新版本。SQLServer特点:1.真正的客户机/服务器体系结构。2.图形化用户界面,使系统管理和数据库管理更加直观、简单。3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。4.SQLServer与WindowsNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQLServer也可以很好地与MicrosoftBackOffice产品集成。5.具有很好的伸缩性,可跨越从运行Windows95/98的膝上型电脑到运行Windows2000的大型多处理器等多种平台使用。6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。7.SQLServer提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。4.2.2数据库表结构设计表“admin”列名数据类型长度允许空IdInt4否UsernameVarchar50否PasswordVarchar50否CreattimeDatetime8否FlagInt4否IsuseInt4否LogintimesInt4否QuanxianVarchar1000否设计表“affice”列名数据类型长度允许空IdInt4否TitleNvarchar100否ContentNvarchar200否AddtimeDatetime8否AdderNvarchar50否IfhideInt4否设计表“guestbook”列名数据类型长度允许空IdInt4否NicknameNvarchar100否PicNvarchar100否EmailN50是QQNvarchar50是WeburlNvarchar100是BlogurlNvarchar100是ExpressionsNvarchar100否ContentNvarchar200否AddtimeDatetime8否设计表“member”列名数据类型长度允许空Id Int4否Usernamenvarchar50否PasswordNvarchar100否TypeNvarchar50否RegtimeDatetime8否IfuseInt4否LogintimesInt4否LasttimeDatetime8否LastipNvarchar50否设计表“news”列名数据类型长度允许空IdInt4否TitleNvarchar150否PicNvarchar150否ContentText16否AddtimeDatetime8否AdderNvarchar50否IfhideInt4否VisitInt4否UpInt4否设计表“post”列名数据类型长度允许空IdInt4否DnumNvarchar50是AddtimeNvarchar50是FlagNvarchar50是MemberNvarchar50是设计表“prep”列名数据类型长度允许空IdInt4否TidInt4是NumNvarchar50是TelNvarchar50是LinkmanNvarchar50是AddressNvarchar100是AddtimeNvarchar50是FlagNvarchar50是MemberNvarchar50是设计表“sale”列名数据类型长度允许空IdInt4否TitleNvarchar50是TypeNvarchar200是urlNvarchar200是CoNvarchar50是TimeNvarchar50是PriceNvarchar50是VipriceNvarchar50是ContentText16是AddtimeNvarchar50是FlagNvarchar50是NumInt4是SlInt4是4.2.3数据库连接技术JDBC技术是JavaDataBaseConnectivity的缩写,它是SUN公司提供的一种支持基本SQL功能的通用的应用程序接口(ApplicationProgrammingInterface)。它由一组用Java语言编写的类和接口组成。通过这些类和接口,程序开发人员可以在Java语言中方便地建立与数据库的链接,通过执行相应SQL语句,完成对不同数据库的访问。因此,开发人员使用JDBCAPI可以不必编写一个应用程序来访问Sybase数据库,又另外编写一个应用程序去访问Oracle数据库,再写一个应用程序访问Microsoft的SQLServer。不但如此,使用Java语言编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上开发不同的应用程序。简单地说,JDBC能完成下列三件事:同一个数据库建立连接;向数据库建立连接;处理数据库返回的结果。JDBC是一种通用低层的应用程序编程接口,它在不同的数据库功能模块的层次上提供一个统一的用户界面。说JDBC是一处低级的API,是指它直接调用SQL命令,它比其他的一些数据库连接API要容易使用些,但它有同样可以作为更高级的,用户办面更友好的API或开发工具基础。很多可视化的Java开发工具,如VisualAgeForJava、VisualCafé、J++等都提供了基于JDBC的更面向用户的类和包,直接将关系数据库的表或视图映射为Java类,程序员通过可视化工具直接对Java对象进行操作,而真正需要的SQL调用则根据程序员发出的对对象的各种属性、方法的操作来自动产生。另一种使用JDBCAPI的方式为,用户程序可以提供一个界面(如菜单等)让用户选择对数据库进行的操作,选中一个任务后,提示用户输入一些必要的信息,然后根据用户的输入产生相应的SQL命令以及Java程序。通过这处方式,用户可以完成对数据库的操作,即使他并不了解SQL语法以及JDBC编程。数据库访问的三层结构如图5.1所示,浏览器端程序要访问数据库,首先通过中间件,然后由中间件对数据库操作权限进行认证,认证通过才能对数据库进行操作。图5.1使用中间件的数据库访问三层结构用户对数据库的存取权限认证是中间件中完成,对数据库的查询、插入、更新和删除操作等都封装在中间件中,该中间件位于服务器端,中间件对数据库进行操作后,再将处理结果通过Web服务器返回到浏览器端用户。这样,在用户端输入的用户名和密码,可以通过加密算法进行加密后在网络上传输,在中间件中进行解密认证,然后再进行数据库的存取操作,数据库存取权限的用户名和密码出现在位于服务器端的中间件中,这样就更加安全。本系统采用的正是这样的三层结构的数据库访问模式。在三层模型中,命令将被发送到服务的”中间层”,而”中间层”将SQL语句发送到数据库。数据库处理SQL语句并将结果返回”中间层”,然后”中间层”将它们返回用户。其模型如图5.2所示。图5.2JDBC的三层模型因为”中间层”可以进行对访问的控制并协同数据库的更新,并且可以使用一个易用的高层API,这个API可以由“中间层”进行转换,转换成低层的调用。所以在许多种情况下,三层模型可以提供更好的性能,本系统中所采用的就是此种模型。JDBC是JAVA应用程序与数据库的沟通桥梁。它提供了三项服务功能:一、与数据库建立连接。二、将SQL语句传递给数据库。三、从数据库取得SQL语句的执行结果。当JDBC要与数据库建立连接前,首先,它必须先取得连接此数据库的JDBC驱动程序,Class.forName()即是在执行此项工作。建立数据库连接的第一步骤就是将JDBC驱动程序的类载入至JVM(JavaVirtualLMachine)中,本系统中利用java.lang.Class类内的forName()静态函数依据指定的类名称,将JDBC驱动程序载入进来。完成载入驱动程序的步骤后,必须使用java.sal.DriverManager类所提供的getConnection()静态函数,取得与数据库间的连接对象。此连接对象的类类型为java.sal.Connection,必须通过它才能将SQL指令传递给数据库,而执行结果也需要通过连接对象来取得。当取得连接对象后,还必须取得Statement对象才能对数据库执行SQL指令。Statement主要实现两个功能:执行SQL语句以及取得执行结果。在java.sql.Statement的sql对象中执行查询或修改命令的函数后传回的是一个ResultSet对象,这个对象提供了一个存取SQL执行结果的管道,以便通过它将表格数据从数据库中取出。每个Statement对象只能产生一个ResultSet对象。数据库连接如图5.3所示:图5.3数据库的连接处理数据库的连接处理具体实现如下://建立JDBC——ODBC桥sun.jdbc.odbc.JdbcOdbcDriver;//桥建立不成功时的错误处理catch(ClassNotFoundExceptionevent){}//建立与数据库的连接,并发送SQL查询语句,将结果保存到rs对象中 Con=建立JDBC——ODBC桥 Sql=SQL查询语句 执行查询 Rs=返回结果//SQL出错处理 catch(SQLExceptione1){}有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBCAPI,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBCAPI写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。

Java具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是Java应用程序与各种不同数据库之间进行对话的方法。而JDBC正是作为此种用途的机制。JDBC扩展了Java的功能。例如,用Java和JDBCAPI可以发布含有applet的网页,而该applet使用的信息可能来自远程数据库企业也可以用JDBC通过Intranet将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有Windows、Macintosh和UNIX等各种不同的操作系统)。随着越来越多的程序员开始使用Java编程语言,对从Java中便捷地访问数据库的要求也在日益增加。MIS管理员们都喜欢Java和JDBC的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务,Java和JDBC可为外部客户提供获取信息更新的更好方法。简单地说,JDBC可做三件事:与数据库建立连接、发送SQL语句并处理结果。下列代码段给出了以上三步的基本示例:Connectioncon=DriverManager.getConnection("jdbc:odbc:wombat","login","password");Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery("SELECTa,b,cFROMTable1");while(rs.next()){intx=rs.getInt("a");Strings=rs.getString("b");floatf=rs.getFloat("c");}上述代码对基于JDBC的数据库访问做了经典的总结。4.3界面及代码设计4.3.1用户注册游客可以进行注册会员,注册会员需要填写用户的用户名、登陆密码、真是姓名、性别、出生日期、籍贯、email、密码提示问题、提示答案。界面如下图所示:主要代码如下:packageutil;importjava.sql.*;publicclassDBConn{static{try{ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");// Class.forName("com.mysql.jdbc.Driver");//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(Exceptionex){ex.printStackTrace();}}publicstaticConnectiongetConn(){try{ Connectionconn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databasename=hshygl","sa","123");// conn=DriverManager.getConnection("jdbc:mysql://localhost/fzshop","root","123");// Connectionconn=DriverManager.getConnection("jdbc:odbc:temp");returnconn;}catch(Exceptionex){ex.printStackTrace();returnnull;}}publicstaticvoidclose(Connectionconn,Statementst,ResultSetrs){ if(rs!=null){try{rs.close();}catch(SQLExceptionex){}}if(st!=null){try{st.close();}catch(Exceptionex){}}if(conn!=null){try{conn.close();}catch(Exceptionex){}4.3.2手机查询用户可以进行旅游线路查询操作,可以按手机名称、上市时间、手机价格进行查询,界面如下图所示:packageutil;importjava.io.UnsupportedEncodingException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassValidate{ /** *是否为数字和英文验证 * */ publicintgetIntAndChar(Stringstr){ charc; inti; for(i=0;i<str.length();i++){ c=str.charAt(i); if(!((c>='0'&&c<='9')||(c>='a'&&c<='z')||(c>='A'&&c<='Z'))){ break; } }//判断字符是否在某个区间 if(i<str.length()){ return-1; }else{ return0; } } /** *是否为整数验证 * */ publicintgetInt(Stringstr){ charc; inti; for(i=0;i<str.length();i++){ c=str.charAt(i); if(!(c>='0'&&c<='9')){ break; } }//判断字符是否在某个区间 if(i<str.length()){ return-1; }else{ return0; } } /** *是否为非法字符验证 * */ publicbooleangetLawlessChar(Stringstr){ booleanflag=false; charc; for(inti=0;i<str.length();i++){ c=str.charAt(i); switch(c){ case'<':flag=true;break; case'>':flag=true;break; case'"':flag=true;break; case'&':flag=true;break; case'':flag=true;break; } } returnflag; }4.3.3用户登陆用于用户登陆进入系统的界面,用户需要建立一个账号和密码才能进入使用系统,当用户输入自己的账号和密码时,系统进行验证,如果正确,进入系统;如果错误,则提示用户输入的信息不正确,重新输入信息.该界面还为新用户设置了专门的注册组件,通过点击注册按钮直接进入新用户的注册界面.在登陆的时候,密码框采用密文形式输入,保护用户登陆的安全性。界面如下图:主要代码如下:packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importutil.Validate;importbean.InsertUpdateDelBean;publicclassAmountServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicAmountServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } /** *ThedoGetmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doPost(request,response); } /** *ThedoPostmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312"); Stringid=request.getParameter("id"); Stringamount=request.getParameter("amount"); Stringsql="updateuserssetamount=amount+"+amount+"whereid="+id; InsertUpdateDelBeanib=newInsertUpdateDelBean(); ib.insertANDupdateANDdel(sql); sql="insertintopayment(usersid,name,price)values("+id+",'',"+amount+")"; ib.insertANDupdateANDdel(sql); request.setAttribute("message","操作成功!"); RequestDispatcherrd=request.getRequestDispatcher("/admin/users_amount.jsp"); rd.forward(request,response); }第5章系统调试与测试5.1程序调试在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程序运行时自动提示,并请求立即纠正,因此,这类错误比较容易发现和纠正。但另一类错误是在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑错误导致的错误结果。这类错误隐蔽性强,有时会出现,有时又不出现,因此,对这一类动态发生的错误的排查是耗时费力的。5.2程序的测试5.2.1测试的重要性及目的(1)测试的重要性软件的测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。在实践中,软件测试的困难常常使人望而却步或敷衍了事,这是由于对测试仍然存在一些不正确的看法和错误的态度,这包括:①认为测试工作不如设计和编码那样容易取得进展难以给测试人员某种成就感;②以发现软件错误为目标的测试是非建设性的,甚至是破坏性的,测试中发现错位是对责任者工作的一种否定;③测试工作枯燥无味,不能引起人们的兴趣;④测试工作是艰苦而细致的工作;⑤对自己编写的程序盲目自信,在发现错误后,顾虑别人对自己的开发能力的看法。这些观点对软件测试工作是极为不利的,必须澄清认识、端正态度,才可能提高软件产品的质量。(2)测试的目的如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。①软件测试是为了发现错误而执行程序的过程;②测试是为了证明程序有错,而不是证明程序无错误;③一个好的测试用例是在于它能发现至今未发现的错误;④一个成功的测试是发现了至今未发现的错误的测试。这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。5.2.2测试的步骤与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由若干个模块组成。因此,大型软件系统的测试基本上由下述几个步骤组成:(1)模块测试在这个测试步骤中所发现的往往是编码和详细设计的错误。(2)系统测试在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。(3)验收测试在这个测试步骤中发现的往往是系统需求说明书中的错误。5.2.3测试的主要内容为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试。(1)单元测试单元测试集中在检查软件设计的最小单位—模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。(2)集成测试集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。(3)确认测试确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这

温馨提示

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

评论

0/150

提交评论