项目报告
网上花店销售系统的设计与实现
随着时代的快速发展,我们的生活已经离不开计算机网络,而电子商务的快速发展正在改变着人们的生活方式。随着各种网上购物平台的不断兴起,人们早已习惯了不用出门就买到自己需要的东西。但是针对鲜花销售这方面的网络平台还很少,因此设计一个网上花店销售系统很有前景。
网上花店销售系统采用JSP+Servlet+JavaBean的MVC模式,将数据对象、业务逻辑以及用户界面分离。该系统分为用户和管理员两个角色。用户注册登录后可以浏览鲜花,浏览公告,购买鲜花,管理员登录后可以对系统进行管理和维护。
网上花店销售系统对于用户来说操作方便,满足了用户随时随地购买鲜花的需求,不仅为用户节省了时间,还提高了用户的购买效率。对于花店老板而言,不仅提高了销售效率还降低了时间和人工成本。
关键词 销售系统;JSP;MVC;网上花店
目 录
摘 要.............................................................................................................................. I
Abstract............................................................................................................................ II
1 绪论............................................................................................................................. 1
1.1 现状分析............................................................................................................ 1
1.2 研究意义............................................................................................................ 1
1.3 研究方法............................................................................................................ 1
2 系统的开发环境及技术简介.......................................................................................... 3
2.1 系统开发环境简介.............................................................................................. 3
2.2 系统开发技术简介.............................................................................................. 3
3 可行性研究................................................................................................................... 7
3.1 经济可行性........................................................................................................ 7
3.2 技术可行性........................................................................................................ 7
3.3 操作可行性........................................................................................................ 7
3.4 法律可行性........................................................................................................ 7
4 需求分析...................................................................................................................... 9
4.1 数据描述............................................................................................................ 9
4.1.1 数据流图................................................................................................. 9
4.1.2 数据字典................................................................................................ 11
4.1.3 系统IPO图............................................................................................ 12
4.2 功能需求.......................................................................................................... 12
4.2.1 功能划分................................................................................................ 12
4.2.2 功能描述................................................................................................ 13
4.3 性能需求.......................................................................................................... 14
4.4 运行需求.......................................................................................................... 14
4.5 其他需求.......................................................................................................... 15
5 总体设计..................................................................................................................... 16
5.1 系统功能模块设计............................................................................................ 16
5.2 数据库设计....................................................................................................... 18
5.2.1 概念结构设计......................................................................................... 18
5.2.2 逻辑结构设计......................................................................................... 21
6 详细设计与实现.......................................................................................................... 24
6.1 系统对象的设计与实现..................................................................................... 24
6.2 系统首页的设计与实现..................................................................................... 25
6.3 系统前台功能的设计与实现.............................................................................. 25
6.3.1 用户注册模块的设计与实现.................................................................... 25
6.3.2 用户登录模块的设计与实现.................................................................... 27
6.3.3 公告浏览模块的设计与实现.................................................................... 28
6.3.4 鲜花列表模块的设计与实现.................................................................... 29
6.3.5 用户购物车模块的设计与实现................................................................ 30
6.3.6 用户订单模块的设计与实现.................................................................... 31
6.3.7 用户信息管理模块的设计与实现............................................................. 31
6.4 系统后台功能的设计与实现.............................................................................. 32
6.4.1 系统后台页面的设计与实现.................................................................... 32
6.4.2 分类管理功能的设计与实现.................................................................... 33
6.4.3 鲜花管理功能的设计与实现.................................................................... 33
6.4.4 公告管理功能的设计与实现.................................................................... 33
6.4.5 订单管理功能的设计与实现.................................................................... 34
6.4.6 用户管理功能的设计与实现.................................................................... 34
7 系统的调试与测试....................................................................................................... 36
7.1 程序调试.......................................................................................................... 36
7.2 程序测试.......................................................................................................... 36
7.2.1 测试的内容............................................................................................ 36
7.2.2 测试用例................................................................................................ 36
7.2.3 测试结果................................................................................................ 38
结论............................................................................................................................... 44
参考文献........................................................................................................................ 45
致谢............................................................................................................................... 46
外文原文........................................................................................................................ 47
中文译文........................................................................................................................ 53
鲜花销售行业最初是鲜花销售商个体进行实体销售,后来经过发展形成了鲜花进入批发市场再进行分销的形式。传统的鲜花销售模式是以实体花店为主体,直到后来由于网络的迅速发展,电子商务的介入使鲜花销售发生了很大的变化。随着人们生活水平的提高以及对生活品质的要求,鲜花销售行业发展的前景也越来越好。目前,很多大的鲜花销售品牌已经开始了鲜花的网上销售,方便了消费者购买鲜花的需求,节约了大量的时间。但很多个体鲜花销售商的鲜花销售依然不够景气,还停留在传统花店的状态。这样不仅消费者必须亲自进入花店进行购买,再加上鲜花包装等一系列工序,浪费了大量的时间,而且鲜花销售商也会由于实体销售的缺陷降低销售额。另外,传统花店销售由于地域性的约束和客户范围的划分,使得传统花店的客户受到限制。因此发展网上花店销售系统就显得比较重要,也比较有前景。这样能扩展鲜花消费市场,实现利润增长。网上花店销售系统的实现不仅缩短了鲜花上市时间,节约了成本,方便了消费者购买,方便管理员管理,节约了大量时间和大量的人力物力,还增强了人们之间的感情交流等。
传统的实体鲜花销售存在很多的限制,该系统致力于满足用户随时随地在网上挑选购买鲜花的需求。对于花店老板而言,可以提高工作效率,使网上鲜花管理工作系统化、规范化、自动化,提高整个购买鲜花流程的效率,使总体水平上升到一个新的高度。与传统花店相比,网上花店有其不可比拟的优势。首先网上花店的运营成本较低,职员人数较少,也不需要很大的运营场地。其次网上花店有传播信息迅速、容量大、范围广、可交互等特点。不仅如此,网上花店的建立,可以更好的满足消费者的需求。通过这种网络工具为消费者带来方便,同时促进浏览此网站用户的购买欲,提高销售效率。
网上花店系统给用户提供了一整套完整的网上鲜花订购流程,使用户足不出户直接进行网上购物,给消费者带来了很大的方便。随着人类社会的发展,人际交往变得越来越重要。在这个繁忙的社会,人们很少有时间能见面交流感情,在特殊的日子里送给好友一束鲜花是用于联络感情的很好方式,因此受到广大消费者的欢迎。与此同时,商家也不再需要在商店里被动的等待顾客,完全可以坐在家里就轻松的卖出自己的商品,获得利润。计算机的存储与快速查询功能大大提高了网上花店管理的效率,并且还提高了查询并购买鲜花的精确度。方便快速的操作,不仅可减少从前的漏洞,还可以减少因工作的冗余出现的错误,更重要的是该系统的操作非常简单,推广起来比较容易。
网上花店销售系统将采用瀑布模型的方式,先对目前鲜花销售的情况进行概述,然后对开发系统的环境以及技术进行简要介绍,之后对开发网上花店销售系统进行可行性分析、需求分析、总体设计、详细设计、编程实现以及测试直到实现最终理想的效果。本文将详细阐述整个实现过程。
1、MyEclipse简介
MyEclipse企业级工作平台作为对Eclipse IDE的扩展,它的功能体现在可以在数据库和JavaEE的开发、发布、应用程序服务器的整合方面极大的提高工作效率。MyEclipse几乎包括了目前所有主流开源产品的专属Eclipse开发工具,它作为功能丰富的JavaEE集成开发环境,在功能方面包括了完备的编码、调试、测试和发布,十分完整地支持HTML、Struts 2、Spring、JSP、CSS、JavaScript、Servlet、Hibernate、JDBC数据库链接工具等。JavaEE模型;Web开发工具;EJB开发工具;应用程序服务器的连接器;JavaEE项目部署服务;数据库服务;MyEclipse整合帮助是MyEclipse的7类特征。在Eclipse中,对于以上每一种功能上的类别都存在相应的功能部件,以及一系列可以用来实现它们的插件。MyEclipse这种结构上的模块化为它带来了很多优势,可以让开发人员在基本不影响其他模块的前提下,可以单独的扩展和升级任一模块。
2、Tomcat简介
Tomcat服务器是一个免费的开放源代码的Web应用服务器。运行时占用的系统资源小;扩展性好;支持负载平衡与邮件服务等开发应用系统常用的功能这几个特点使得其很受编程人员的喜欢。任何一个编程人员都可以更改它或在其中加入新的功能,因此Tomcat服务器还在不断的改进和完善中。 Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是调试和开发JSP程序的第一选择。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行Tomcat时,它实际上是作为一个与Apache独立的进程单独运行的。
3、SQL Server简介
SQL Server 是一个关系数据库管理系统,常用的有SQL Server 2000,SQL Server 2005,SQL Server 2008等版本。SQL Server 2008是微软公司2008年推出的数据库产品。它紧密结合了微软公司的各类主要产品,与Windows操作系统、Office办公软件、Visual Studio开发平台的最新技术进行了衔接。其各项指标在同类产品中都堪称优秀,而且图形化的管理界面十分便于学习与使用。SQL Server 2008具有很多新的特点,它是可信任的,使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序。它是高效的,使得公司可以降低开发和管理他们的数据基础设施的时间和成本。它是智能的,提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。
1、JSP简介
JSP全称Java Server Pages,是一种动态网页开发技术。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Servlet和JSP配合才能完成。JSP具备了Java技术简单易用的特点,完全地面向对象,具有平台无关性、主要面向因特网且安全可靠。简单的理解,JSP就是HTML页面+Java代码,但是JSP中能写的内容还不止这些,可以包含HTML标签,CSS,JavaScript,JAVA代码,EL表达式,引入并使用其他标签库,例如JSTL标签库、Struts 2标签库等。浏览器可以直接运行HTML页面,但是不能直接运行JSP页面,JSP是需要在拥有JSP引擎的服务器中运行的,例如Tomcat服务器。所以JSP是运行在服务器端的,运行完之后,把动态生成的HTML页面再使用IO流写回给浏览器,浏览器接收并且解析后再呈现出来效果。JSP的生命周期分为编译阶段,初始化阶段,执行阶段,销毁阶段。
2、Javabean简介
JavaBean 是一种Java语言写成的可重用组件。为了编写JavaBean,类必须是特定的和公共的,并且具有无参数的构造器。JavaBean通过提供一个符合一致设计模式的公共方法公开内部域的成员属性。众所周知,属性名与此模式相一致,其他java类可以通过自省机制发现和操纵这些JavaBean的属性。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。JavaBean可分为两种:一种是有用户界面的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。JavaBean是可复用的平台独立的软件组件,开发者可以在软件构造器工具中对其直接进行可视化操作。一个JavaBean由3部分组成:属性、方法、事件。
3、Servlet简介
Servlet是一个基于JAVA技术的Web组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容,Servlet是平台独立的Java类,编写一个Servlet实际上就是按照Servlet规范编写一个Java类,Servlet被编译为平台独立的字节码,可以被动态地加载到支持 Java技术的Web服务器中运行。Servlet容器也叫Servlet引擎,是Web服务器或者应用服务器的一部分,用户在发送请求和响应之上提供网络服务,Servlet不能独立运行,必须被部署到Servlet容器中,由容器实例化和调用Servlet的方法,Servlet容器在Servlet的生命周期内包含和管理Servlet。Servlet是单实例多线程的运行方式,每个请求在一个独立的线程中运行,提供服务的Servlet实例只有一个Servlet 具有可升级性,能响应更多的请求,因为Servlet容器使用一个线程而不是操作系统进程,线程占用的资源要小,Servlet使用标准的API,被更多的Web服务器所支持。Servlet使用Java语言编写,拥有更多的Java程序语言的优点,Servlet可以访问Java平台丰富的类库,使得各种应用的开发更为容易,Servlet容器给Servlet提供额外的功能。
4、JDBC简介
对系统来说数据库连接应该说是最为重要的部分,Java中连接数据库的技术是JDBC。JDBC作为一种用于执行SQL语句的Java API,具备为多种关系数据库提供统一访问的功能,JDBC是由一组用Java语言编写的类和接口组成的。为了达到可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序的目的,JDBC提供了一种基准。众所周知,JDBC API、JDBC驱动程序和JDBC驱动程序管理器是JDBC的三个部分,即可以通过Java.sql包来提供JDBC API,JDBC API上仅仅设计为了利用数据库而提供的类的接口,提供JDBC驱动的软件商来实际完成这个接口。当JDBC API制作的程序进行数据调用时,JDBC驱动发挥它的作用,实际连接数据库并且进行相应的处理, JDBC API的接口类也由JDBC驱动提供。
两层模型(C/S)和三层模型(B/S)同样都是JDBC API支持数据库访问的。在两层模型(C/S)中,Java Applet或应用程序与数据库会直接进行对话,与所访问的特定数据库管理系统进行通讯时需要一个JDBC驱动程序,数据库收到被用户送来的SQL语句,而用户将会收到其被送回的结果。客户机/服务器配置指的是数据库可以位于另一台计算机上,用户通过网络连接到上面。其中客户机就是我们平时常说的用户的计算机,而服务器是我们常说的提供数据库的计算机,网络是Internet。在三层模型(B/S)中,服务的"中间层"先是收到命令,然后由服务的“中间层”将SQL语句交给数据库,数据库需要对SQL语句进行处理并将所得结果送回到中间层,最后用户将会收到中间层所得的结果。
JDBC是用于直接调用SQL命令的“低级”接口。它在这方面的功能极佳,相比其它的数据库,它连接API易于使用,与此同时它也被设计成为了一种基础接口,高级接口和工具可以建立在它之上。很明显,JDBC具有如下优点:JDBC支持不同的关系数据库,JDBC使得开发人员不需要再使用复杂的驱动器调用命令和函数,可以将常用的JDBC数据库连接封装成一个类等。
SQL全称是结构化查询语言(Structured Query Language),SQL语言结构简洁,功能强大,简单易学。SQL语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。SQL语言不仅是一个功能强大的通用的关系数据库标准语言,而且还是一种介于关系演算和代数之间的语言,其功能之强大体现在查询、操纵、定义和控制这四个方面。SQL语言包含以下六个部分:
(1)数据查询语言
(2)数据操作语言
(3)事务处理语言
(4)数据控制语言
(5)数据定义语言
(6)指针控制语言
作为非过程化的语言,SQL一次只对一个记录进行处理,自动对数据提供导航。SQL不对单个记录进行操作,它不仅可对记录集进行操作,还允许用户在高层的数据结构上工作。对于所有SQL语句,输入的是接受集合,输出的是返回集合。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL可用于所有用户的DB活动模型,这里所指的用户包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员以及许多其它类型的终端用户等。基本的SQL命令简单易学,一般情况下只需很少时间就能学会,即使是高级的命令在几天也内便可掌握。SQL语言则将所有任务统一在了一种语言中。用户之所以可将使用SQL的技能从一个关系数据库管理系统转到另一个,是因为所有主要的关系数据库管理系统都支持SQL语言。
经济可行性,主要考虑的是系统开发涉及到的一些相关费用问题,企业是否可以支撑这些费用,通常来分析,软件系统开发主要包括的费用有设备购买费用,人员开发成本,设备维护更新成本,以及其他零散费用等,这些费用中,人员开发费用相对较高,但是本次系统开发规模小,周期短,所设计的开发费用不高,因此企业不必担心此方面问题。再则就是设备购买费用,一般保持电脑,交换机,网络,服务器等,这些都是一次性购买,费用也不高。因此,对于企业来讲,问题不大,经济上可以接受。通过对现已存在的相关系统进行调查,开发该系统所需的相关资料可以由此采集。同时所需的应用软件、系统硬件也便于获得,因此该系统开发成本不高。在引进该系统之后,不可否认,与传统方式相比可以节省不少人力、物力及财力,因为它的确具有效率高、质量高、成本低以及实用性高的特点。所以,站在经济的角度来讲,网上花店销售系统被认定为是可行的。
技术可行性主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。首先,系统采用的是JAVA开发技术,这项技术比较全面,实用广泛,没有实现不了的功能需求;其次该网站采用了SQL Server2008数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能,它的灵活性、安全性和易用性为数据库编程提供了良好的条件;最后开发工具,采用的是MyEclipse,工具中具有框架函数等,可以直接引用。因此,系统的软件开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
操作可行性主要是考虑系统完成后,用户使用的是否便利,是否可以达到用户的操作要求。该系统界面设计充分考虑浏览用户的习惯,鲜花信息浏览,公告浏览,鲜花搜索,用户注册,用户登录,用户挑选鲜花加入购物车,用户将购物车的鲜花生成订单,用户查看订单,用户管理个人信息等功能操作方便。除此之外,对于管理员而言,管理界面一目了然,对于系统的管理和维护也很容易。更重要的是所有网页设计清新、简洁、合理,不会让用户感到视觉疲劳,可操作性强。
法律可行性主要是看新系统的开发会不会在社会上或政治上引起侵权,有无违法问
题。网上花店销售系统开发过程中所有技术资料都是合法的;在开发过程中是不存在知识产权问题的;未抄袭其他系统,故不存在侵犯版权问题;开发过程中不会涉及任何法律责任。
数据流图简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。网上花店销售系统的数据流图如图4-1所示。
图4-1 系统数据流图
在该数据流图中方框表示数据的原点或终点,原点和终点是系统之外的实体。椭圆表示变换数据的处理,也称之为加工,它对数据流进行某些操作或变换。箭头表示数据流,数据流是数据在系统中的运行方向。双杠表示数据存储文件,是用来暂时存储数据的。网上花店销售系统的实体有两个,分别为用户和管理员,用户对应于在网上购买鲜花的顾客,管理员对应于网上花店的老板。此系统中的加工对于用户来说有浏览鲜花、查看分类、管理用户信息、管理购物车、生成并查看订单、查看公告,对管理员来说有鲜花管理、分类管理、用户管理、订单管理、公告管理。此系统中的数据存储包括鲜花信息、分类信息、用户信息、购物车信息、订单信息和公告信息,在实际的实现中应该将这些信息存储在对应的表里,虽然鲜花信息、分类信息、用户信息、订单信息和公告信息是用户和管理员共享的,但是由于权限的不同用户对于鲜花信息、分类信息以及公告信息只有查看的权限,管理员对于这些信息有增、删、改的权限。在数据流图中反映为加工的不同。
用户在系统中可以浏览鲜花、查看分类、管理用户信息、管理购物车、生成并查看订单、查看公告,本系统中用户数据流图如图4-2所示。
图4-2 用户数据流图
管理员在系统中可以进行鲜花管理、分类管理、用户管理、订单管理、公告管理,其中管理员可以对鲜花、分类和公告进行添加、修改、查看和删除,对用户进行查看和删除,对订单进行查看和处理。本系统中管理员数据流图如图4-3所示。
图4-3 管理员数据流图
数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。图4-1中数据流条目如下所示:
用户信息=用户ID+用户名+密码+姓名+角色+手机号+地址
鲜花信息=鲜花ID+鲜花名+鲜花图片+上架时间+分类ID+分类名+价格+是否推荐+
点击数+鲜花销量+鲜花描述
公告信息=公告ID+标题+内容+添加时间
分类信息=分类ID+分类名称
购物车信息=购物车ID+用户ID+鲜花ID+鲜花名+价格+购买数量
订单信息=订单ID+订单状态+用户ID+用户姓名+用户手机+收货地址+订单详情+订单号+备注+生成时间+总价
根据数据流条目得到数据项条目如表4-1所示。
表4-1 系统数据项
名称 |
类型 |
长度 |
别名 |
|
id |
int |
11 |
用户ID |
|
username |
varchar |
255 |
用户名 |
|
password |
varchar |
255 |
密码 |
|
xingming |
varchar |
255 |
姓名 |
|
role |
int |
11 |
角色 |
|
dianhua |
varchar |
255 |
手机号 |
|
dizhi |
varchar |
255 |
地址 |
|
id |
int |
11 |
鲜花ID |
|
pname |
varchar |
255 |
鲜花名 |
|
imgpath |
varchar |
255 |
鲜花图片 |
|
createtime |
varchar |
255 |
上架时间 |
|
fname |
varchar |
255 |
分类名 |
|
jiage |
double |
价格 |
||
tuijian |
varchar |
255 |
是否推荐 |
|
dianjishu |
int |
11 |
点击数 |
|
xiaoliang |
int |
11 |
鲜花销量 |
|
miaoshu |
text |
鲜花描述 |
||
id |
int |
11 |
公告ID |
|
biaoti |
varchar |
255 |
标题 |
|
neirong |
text |
内容 |
||
shijian |
varchar |
255 |
添加时间 |
|
表4-1(续)
名称 |
类型 |
长度 |
别名 |
|
id |
int |
11 |
分类ID |
|
fname |
varchar |
255 |
分类名称 |
|
id |
int |
11 |
购物车ID |
|
shuliang |
int |
11 |
购买数量 |
|
id |
int |
11 |
订单ID |
|
status |
varchar |
255 |
订单状态 |
|
xiangqing |
text |
订单详情 |
||
orderid |
varchar |
255 |
订单号 |
|
beizhu |
varchar |
255 |
备注 |
|
shijian |
varchar |
255 |
生成时间 |
|
zongjia |
double |
总价 |
IPO图是输入--处理--输出图(Input-Process-Output)的简称。基本形式是画三个方框,在左边框中列出有关输入数据,在中间框内列出主要处理,在右边框中列出产生的输出数据。网上花店销售系统的输入数据主要是用户信息以及鲜花信息,处理主要针对用户、鲜花分类、鲜花详情、购物车以及订单,输出数据对应于处理过程。该系统IPO图如图4-4所示。
图4-4 系统IPO图
本网上花店销售系统主要分为前台操作和后台管理两部分。
1、前台操作
前台作为与用户直接交互的界面,在考虑功能的同时,也考虑了操作的简洁和方便性,目的是让大多数不太懂电脑操作的用户也能轻松的享受该系统带来的便利。
前台主要功能包括:首页(主界面)、鲜花搜索、鲜花分类、花店公告、鲜花浏览、用户注册、用户登录、订购鲜花、查看购物车、查看订单等。
2、后台管理
后台管理考虑了花店管理的操作简单方便。
后台主要功能包括:分类管理、鲜花管理、公告管理、订单管理、用户管理。
1、首页(主界面)
提供简洁美观的主界面,界面陈列系统提供功能,用户和管理员通过选择各个功能来达到自己所需的目的。
2、用户注册
新用户通过填写注册表单,将自己的详细信息输入并提交系统,系统会通过与数据库的连接以及表单限定的格式来检查合法性。注册成功后可以进行订购等其他功能。
3、用户登录
用户通过输入“用户名”和“密码”进行登录,系统会通过与数据库的连接来检查合法性,如果存在则登录成功继续接下来的功能,如果不存在则返回登录界面。
4、鲜花浏览
用户可以通过选择该功能看到本系统鲜花的详细介绍。
5、加入购物车
用户可以通过该功能选择自己要购买的鲜花并放入购物车,在购物车也可以进行数量的修改并且生成订单。但要首先登录才可以实现该功能。
6、生成订单
用户可以把购物车里的鲜花下订单。
7、查看订单
用户可以查询自己的订单,但首先必须登录。
8、修改个人信息
用户可以修改个人资料。
9、管理员分类管理
管理员可以对系统首页的分类进行增加、查看、修改、删除。
10、管理员鲜花管理
管理员可以对系统首页的鲜花进行增加、查看、修改、删除。
11、管理员公告管理
管理员可以对系统首页的公告进行增加、查看、修改、删除。
12、管理员订单管理
管理员可以对用户的订单进行查看、处理。
13、管理员用户管理
管理员可以对系统已经注册的用户进行查看、删除。
网上花店销售系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足用户对信息处理的求。由于网上花店销售系统的查询功能对于整个系统的功能和性能完成举足轻重,作为系统的很多数据源,其准确性很大程度上决定了网上花店销售系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。当操作发生变化时,一些功能同样能够实现。因为在实现各项功能时了,把功能划分成了不同的模块,各模块之间互不干扰,而且JavaBean都采用类的形式,每个功能都封装成一个类,当运行环境发生变化时,对程序会有一些影响,但打上补丁就可以继续运行了。总体上讲,本系统具有一定的自适应性。
硬件条件:英特尔酷睿2 CPU、1GB 内存、20GB以上硬盘的PC机。
软件条件:Windows 7操作系统。
当系统遇到问题时,首先查看运行环境是否更改;如果更改,只修复运行环境即可;若未更改,查看系统中各个模块之间的接口是否有问题,可通过调试改正错误。数据库最严重的问题是数据库损坏,此时最好是从备份恢复数据库。如果是由于存储问题导致部分数据库文件损坏,但数据库还可以连接,这种情况采用导出数据库的表结果和数据的方法来恢复数据库。解决数据库的性能问题,可以从以下方面入手,检查数据库的配置,如缓冲池,排序堆等是否处理;检查数据库是否收集过统计信息,准确的统计信息对语句优化起着重要的作用;对sql语句进行优化;查看是否有系统资源瓶颈。
网上花店销售系统是直接面对使用人员的,而使用人员往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面。针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。网上花店系统中涉及到的数据是相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。
网上花店销售系统一共分为前台和后台两大模块,两个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连的,各个模块访问的是同一个数据库,只是所访问的表不同。
网上花店销售系统的前台功能模块分为:
1、鲜花展示模块
鲜花展示模块主要是向用户展示网上花店的鲜花,主要分为鲜花搜索和鲜花分类两个子模块。用户可以通过鲜花搜索直接查询自己想要了解的鲜花,也可以通过鲜花分类查找某一类的鲜花。
2、公告展示模块
公告展示模块是管理员发布的与网上花店系统相关的公告信息,可以包括系统的使用或者最新的优惠活动等。用户登录系统后,可以查看公告信息,以此来最快的了解系统。
3、购买鲜花模块
购买鲜花模块主要是完成用户在网上的购物的流程。购买鲜花模块分为加入购物车和生成订单两个子模块。
4、用户管理模块
用户管理模块分为用户注册、用户登录、用户修改信息三个子模块。
网上花店销售系统前台功能模块图如图5-1所示。
图5-1 前台功能模块图
用户进行购买鲜花时,先进行注册,然后进行登录,登录系统后用户可以浏览鲜花,把需要购买的鲜花加入购物车,把购物车的鲜花生成订单。用户购买鲜花时序图如图5-2所示。
图5-2 用户购买鲜花时序图
网上花店销售系统的后台功能模块分为:
1、分类管理模块
分类管理模块主要是实现管理员对系统分类的管理,使得用户可以按照分类挑选鲜花,方便了用户的挑选,管理员通过这个模块可以向系统添加新的分类,查看已有的分类,修改已有的分类,删除旧的分类。
2、鲜花管理模块
鲜花管理模块主要是实现管理员对系统鲜花的管理,该模块对整个系统至关重要。管理员通过这个模块可以向系统添加新的鲜花,查看已有的鲜花,修改已有的鲜花,删除旧的鲜花。
3、订单管理模块
订单管理模块主要是实现管理员对系统订单的管理,管理员通过这个模块可以查看用户下的订单并对订单做出相应的处理。
4、公告管理模块
公告管理模块主要是实现管理员对系统公告的管理,这样用户进入系统后可以通过浏览公告获取网上花店销售系统的最新资讯,并且可以在最短的时间内对系统有基本的了解。管理员通过这个模块可以向系统添加新的公告,查看已有的公告,修改已有的公告,删除旧的公告。
5、用户管理模块
用户管理模块主要是实现管理员对已注册用户的管理,管理员通过这个模块可以查看用户的信息或者删除用户。
网上花店销售系统后台功能模块图如图5-3所示。
图5-3 后台功能模块图
描述概念模型的有力工具是E-R模型,E-R模型是用E-R图来描述现实世界的概念模型。E-R模型包括实体、属性、实体之间的联系等。接下来将用E-R图对网上花店销售系统进行概念结构设计,包括各实体间的E-R图及各实体的详细属性E-R图。其中实体型用矩形表示,矩形框内写明实体名。属性用椭圆形表示,并用无向边将其与相应的实体型连接起来。联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型。
本网上花店销售系统的实体有管理员,用户,公告,订单,分类,鲜花。下面将分别设计各实体的E-R图。
1、用户E-R图如图5-4所示。
图5-4 用户E-R图
在该E-R图中,对于用户实体,用户可以浏览公告,因此用户实体和公告实体是浏览关系,用户可以选购鲜花,因此用户实体和鲜花实体是选购关系,用户可以查看分类,因此用户实体和分类实体是查看关系,用户可以管理自己的购物车,因此用户实体和购物车实体是管理关系,用户可以查看自己的订单,因此用户实体和订单实体是查看关系,用户在系统中是被管理员管理的,因此用户和管理员是被管理的关系。
图5-5 管理员E-R图
在该E-R图中,对于管理员实体,管理员可以对系统的公告、订单、分类、鲜花进行管理,对已注册的用户进行管理,因此它与其他实体的关系都是管理关系。
3、用户实体的属性有ID、用户名、密码、姓名、角色、手机号、地址。用户详细属性E-R图如图5-6所示。
图5-6 用户详细属性E-R图
4、鲜花实体的属性有ID、鲜花名、鲜花图片、上架时间、分类ID、分类名、价格、是否推荐、点击数、鲜花销量、鲜花描述。鲜花详细属性E-R图如图5-7所示。
图5-7 鲜花详细属性E-R图
5、公告实体的属性有ID、标题、内容、添加时间。公告详细属性E-R图如图5-8所示。
图5-8 公告详细属性E-R图
6、分类实体的属性有ID、分类名称。分类详细属性E-R图如图5-9所示。
图5-9 分类详细属性E-R图
7、购物车实体的属性有ID、用户ID、鲜花ID、鲜花名、价格、购买数量。购物车详细属性E-R图如图5-10所示。
图5-10 购物车详细属性E-R图
8、订单实体的属性有ID、订单状态、用户ID、用户姓名、用户手机、收货地址、订单详情、订单号、备注、生成时间、总价。订单详细属性E-R图如图5-11所示。
图5-11 订单详细属性E-R图
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。数据库设计时注意保证在整个系统运行和业务操作过程中,数据库都能便于访问和查询,同时还需要考虑到要尽量节省数据库操作时的响应时间,尽可能的提高数据库对程序和业务请求的响应速度。
根据概念结构设计阶段的E-R图,设计数据库表结构如下。
1、t_Fenlei分类表
该表存放分类ID及分类名称。t_Fenlei分类表如表5-1所示。
表5-1 t_Fenlei分类表
名称 |
类型 |
长度 |
备注 |
id |
int |
11 |
主键 |
fname |
varchar |
255 |
分类名称 |
2、t_Product鲜花表
该表存放鲜花信息,主要包括鲜花名、鲜花图片、上架时间、价格、鲜花销量、鲜花描述等信息。分类表和该表相关联,因此表中还包含了分类ID以及分类名。t_Product鲜花表如表5-2所示。
表5-2 t_Product 鲜花表
名称 |
类型 |
长度 |
备注 |
id |
int |
11 |
主键 |
pname |
varchar |
255 |
鲜花名 |
imgpath |
varchar |
255 |
鲜花图片 |
createtime |
varchar |
255 |
上架时间 |
fenleiid |
varchar |
255 |
分类ID,外键 |
fname |
varchar |
255 |
分类名 |
jiage |
double |
价格 |
|
tuijian |
varchar |
255 |
是否推荐 |
dianjishu |
int |
11 |
点击数 |
xiaoliang |
int |
11 |
鲜花销量 |
miaoshu |
text |
鲜花描述 |
3、t_Gonggao公告表
该表存放公告信息,主要包括标题、内容、添加时间。t_Gonggao公告表如表5-3
所示。
表5-3 t_Gonggao 公告表
名称 |
类型 |
长度 |
备注 |
id |
int |
11 |
主键 |
biaoti |
varchar |
255 |
标题 |
neirong |
text |
内容 |
|
shijian |
varchar |
255 |
添加时间 |
4、t_Gouwuche购物车表
该表存放购物车ID、以及用户ID、鲜花ID、鲜花名、价格、购买数量。t_Gouwuche购物车表如表5-4所示。
表5-4 t_Gouwuche购物车表
名称 |
类型 |
长度 |
备注 |
id |
int |
11 |
主键 |
userid |
int |
11 |
用户ID,外键 |
pid |
int |
11 |
鲜花ID,外键 |
pname |
varchar |
255 |
鲜花名 |
jiage |
double |
价格 |
|
shuliang |
int |
11 |
购买数量 |
5、t_User用户表
该表中存放用户的基本信息,普通用户和管理员共用此表,主要包括用户ID、用户名、密码、姓名、角色、手机号、地址信息。普通用户和管理员通过角色的值进行区分, 0表示普通用户,1表示系统管理员。t_User用户表如表5-5所示。
表5-5 t_User 用户表
名称 |
类型 |
长度 |
备注 |
id |
int |
11 |
主键 |
username |
varchar |
255 |
用户名 |
password |
varchar |
255 |
密码 |
xingming |
varchar |
255 |
姓名 |
role |
int |
11 |
角色 |
dianhua |
varchar |
255 |
手机号 |
dizhi |
varchar |
255 |
地址 |
6、t_Dingdan订单表
该表存放订单ID、订单状态、以及关联表里的用户ID、用户姓名等信息。t_Dingdan订单表如表5-6所示。
表5-6 t_Dingdan订单表
名称 |
类型 |
长度 |
备注 |
id |
int |
11 |
主键 |
status |
varchar |
255 |
订单状态 |
userid |
int |
11 |
用户ID 外键 |
xingming |
varchar |
255 |
用户姓名 |
dianhua |
varchar |
255 |
用户手机 |
dizhi |
varchar |
255 |
收货地址 |
xiangqing |
text |
订单详情 |
|
orderid |
varchar |
255 |
订单号 |
beizhu |
varchar |
255 |
备注 |
shijian |
varchar |
255 |
生成时间 |
zongjia |
double |
总价 |
根据总体设计部分对于功能模块的划分,在详细设计中采用JSP+Servlet+Javabean的MVC模式,其中系统的显示由JSP页面完成,用Javabean封装对象,业务的逻辑处理由Servlet完成,对于数据库的操作写在dao包的文件里。
系统中总共包括七个对象,分别为用户,管理员,公告,鲜花,类别,购物车和订单。系统的类图如图6-1所示。
图6-1 系统类图
在实现过程中将这七个对象封装成bean对象,其中管理员和用户的封装对象内容相同,故二者共用一个对象,用属性role进行区分,0表示用户,1表示系统管理员。六个对象对应于代码中的Dingdan.java,Fenlei.java,Gonggao.java,Gouwuche.java,Product.java,User.java。以User.java为例,关键代码如下:
public class User {
private int id;//主键
private String username;//用户名
private String password;//密码
private String xingming;//姓名
private int role;//用户角色 0表示用户,1表示系统管理员
private String dianhua;//手机
private String dizhi;//收货地址
}
该系统首页页面风格简单明了,上边横条可以选择注册和登录,左侧有鲜花搜索,鲜花分类,销量排行榜以及花店公告,用户可以根据自己的需求浏览相关内容。页面右侧是鲜花列表,用户可以通过点击相应的链接查看详情或者加入购物车。首页页面的设计如图6-2所示。
图6-2 系统首页
具体的实现过程是:index.jsp文件主要包括鲜花列表部分,在index.jsp页面引入黄色横条的head.jsp以及左侧的left.jsp。
用户注册需要填写相应的信息,主要包括用户名、密码、确认密码、姓名、收货地址以及手机号码。用户注册页面的设计如图6-3所示。
图6-3 注册页面
该页面对应代码中的register.jsp,该页面对输入的每一个数据都有格式上的要求,用户名不能为空且必须是数字,字母或者下划线,密码不能为空且至少6位,确认密码要和密码一致,姓名,收货地址以及手机号都不能为空,手机号码还要符合正确的格式。当用户进行注册时,页面首先会对输入的数据格式进行检验,若输入错误会有相应的提示。除此之外,当用户输入正确的格式的数据之后,点击了注册按钮,系统会在数据库进行比对,若用户名已经被注册,系统也会弹出相应的提示,若用户名还未注册则将数据插入数据库,提示注册成功并跳转到首页。具体的实现过程是在IndexServlet.java中对注册进行逻辑处理,在UserDao.java中对数据库进行操作。
该页面关键代码如下:
用户在注册时,第一不能有空值,第二两次密码的输入要一致,第三各项数据的格式要正确。除此之外,用户名不可以是已经注册过的。用户注册程序流程图如图6-4所示。
图6-4 用户注册程序流程图
用户登录需要填写用户名以及密码,登录页面的设计如图6-5所示:
图6-5 登录页面
该页面对应代码中的login.jsp,用户名和密码都不能为空,否则页面会进行相应的提示,当输入用户名和密码点击登录之后,系统会在数据库中查找,若有匹配的数据则提示登录成功并跳转到首页,否则提示用户名或密码不正确。具体的实现过程是在IndexServlet.java中对登录进行逻辑处理,在UserDao.java中对数据库进行操作。
该页面关键代码如下:
用户在登录时,用户名和密码要一致,如果正确才可以登录成功,否则登录失败需要重新输入登录信息。用户登录程序流程图如图6-6所示。
图6-6 用户登录程序流程图
用户在首页可以浏览花店公告,通过点击花店公告的标题可以查看花店公告的详细信息。花店公告页面以及公告详情页面设计如图6-7以及6-8所示。
图6-7 花店公告页面
图6-8 公告详情页面
具体的实现过程是,当用户点击花店公告的标题时,通过IndexServlet.java的gonggaoupdate方法获取对象,然后通过GonggaoDao.java对数据库进行操作,最后将对象传到gonggao.jsp页面。
公告详情页面关键代码如下:
用户在系统首页的鲜花列表可以浏览鲜花,鲜花列表包括鲜花名,图片,分类名,鲜花价格,以及查看详情和加入购物车两种操作。点击查看详情后页面会跳转到鲜花信息详情页面。鲜花列表页面以及鲜花信息详情页面如图6-9以及6-10所示。
图6-9 鲜花列表页面
图6-10 鲜花信息详情页面
鲜花列表页面对应代码中的index.jsp,鲜花信息详情页面对应代码中的product.jsp,具体实现方式是当用户点击查看详情时,在IndexServlet.java中用productupdate方法进行具体处理,之后把对象传到product.jsp页面。当用户点击鲜花列表或鲜花信息详情页面的加入购物车时,如果用户已经登录,那么系统跳转到我的购物车页面。否则,系统会提示用户先登录并跳转到登录页面。
我的购物车页面,包括鲜花名,单价,购买时间,小计。用户可以修改购买数量或者删除购物车里的东西,也可以点击链接跳转到订单页面。我的购物车页面设计如图6-11所示。
图6-11 购物车页面
我的购物车页面对应代码中的gouwuchelist.jsp,当用户点击鲜花列表或鲜花信息详情页面的加入购物车时,在IndexServlet.java中用gouwucheadd2方法进行添加商品到购物车操作,在GouwucheDao.java里对数据库进行操作,将所选鲜花数据插入数据库。我的购物车页面的变更删除分别用IndexServlet.java的gouwucheupdate2方法和gouwuchedelete方法实现。
我的订单页面,包括订单号,收货人姓名,订单状态,生成时间,总价,以及查看订单详情的操作。用户也可以查看和搜索自己的订单。我的订单页面如图6-12所示。
图6-12 生成订单页面
我的订单页面对应代码中的orderlist.jsp,查询订单的操作在indexServlet/orderlist中实现,查看订单详情的操作在indexServlet/dingdanupdate3中实现,其中对数据库的操作在DingdanDao.java中完成。
用户可以在个人信息页面对自己的信息进行管理,主要是对姓名,手机号以及收货地址的更改,可以在修改密码页面进行密码的修改。用户信息页面的设计与修改密码的
设计如图6-13以及6-14所示。
图6-13 个人信息页面
图6-14 修改密码页面
个人信息页面对应代码中的userupdate.jsp,修改密码页面对应代码中的passwordupdate.jsp,修改个人信息在是在indexServlet/userupdate2中完成的,修改密码是在indexSe rvlet/passwordupdate2中完成的,操作数据库的部分在UserDao.java中完成。
管理员登录成功后会进入系统后台页面,主要包括左侧的主菜单以及中间的欢迎页面。主菜单包括,分类管理,鲜花管理,公告管理,订单管理,用户管理。系统后台页面如图6-15所示。
图6-15系统后台页面
管理员在此页面可以通过点击左侧主菜单进行相应的管理。关键代码如下:
管理员通过此功能可以查看、修改、删除已经存在的分类,也可以增加新的分类。该系统分类管理页面如图6-16所示。
图6-16 分类管理页面
分类管理页面对应代码中的fenleilist.jsp,添加新分类以及查看和修改分别对应fenl eiadd.jsp,fenleiupdate3.jsp,fenleiupdate.jsp,管理员进行操作时,系统通过在ManageSer vlet.java中的方法实现,对数据库的操作在FenleiDao.java中实现。
管理员通过此功能可以查看、修改、删除已经存在的鲜花,也可以增加新的鲜花。该系统鲜花管理页面如图6-17所示。
图6-17 鲜花管理页面
鲜花管理页面对应代码中的productlist.jsp,添加新商品对应productadd.jsp,上传图片对应productupdate5.jsp,查看和修改分别对应productupdate3.jsp,productupdate.jsp,管理员进行操作时,系统通过在ManageServlet.java中的方法实现,对数据库的操作在ProductDao.java中实现。
管理员通过此功能可以查看、修改、删除已经存在的公告,也可以增加新的公告。该系统公告管理页面如图6-18所示。
图6-18 公告管理页面
公告管理页面对应代码中的gonggaolist.jsp,添加新公告对应gonggaoadd.jsp,查看和修改分别对应gonggaoupdate3.jsp,gonggaoupdate.jsp,管理员进行操作时,系统通过在ManageServlet.java中的方法实现,对数据库的操作在GonggaoDao.java中实现。
管理员通过此功能可以查看和处理订单。该系统订单管理页面如图6-19所示。
图6-19订单管理页面
订单管理页面对应代码中的dingdanlist.jsp,查看订单详情对应dingdanupdate3.jsp,管理员进行操作时,系统通过在ManageServlet.java中的方法实现,对数据库的操作在DingdanDao.java中实现。
管理员通过此功能可以查看和删除用户。该系统用户管理页面如图6-20所示。
图6-20 用户管理页面
用户管理页面对应代码中的userlist.jsp,管理员进行查询用户和删除用户操作的时
候,系统通过在ManageServlet.java中的方法实现,对数据库的操作在UserDao.java中实现。
调试是在测试发现错误之后排除错误的过程。调试的目的是为了解决存在的错误,即对错误定位、分析并找出原因改正错误,因此调试也称为纠错。软件调试是一项具有很强技巧性的工作,调试是一个通过外部表现找出原因的思维分析过程。常用的调试技术是消去原因法,即通过思考,分析列出发生错误的所有可能原因,逐个排除,最后找出真正的原因。试探法、归纳法、折半查找法、演绎法都属于消去原因法。
功能测试:用户注册登录后进行鲜花选购、查看公告等功能,与此同时查看数据库内容是否同步更改,若更改成功则说明程序正确,反之说明程序错误。同理以管理员身份进行登录,对公告、用户等进行查看更改,查看数据库的变化。
链接测试:在点击菜单按钮之后,查看跳转的页面是否正确。
极限测式:可以通过频繁登录与退出数据库这类频繁的操作来对系统进行测试等。
根据系统的功能,测试用例为以下几方面:
1、用户的注册和登录以及退出,管理员的登录以及退出。
2、用户浏览鲜花,将鲜花加入购物车,对购物车的鲜花数量进行更改,生成订单,提交订单,查看订单,修改个人信息。
3、管理员对分类、鲜花、公告进行增、删、改、查,对订单和用户进行查、删。
具体的测试细节为:
1、用户注册测试
用户注册时,填写各项信息,首先是各项信息空值的测试,其次是各项数据的数据格式的测试。
2、用户及管理员登录测试
用户及管理员登录时只需填写用户名和密码,因此测试时主要对用户名和密码的匹配性进行测试。
3、用户及管理员退出测试
用户和管理员的退出主要是通过点击“退出系统”按钮,因此实际测试中只需测试用户点击按钮后是否能够正确跳转。
4、浏览鲜花测试
浏览鲜花时用户可以点击查看详情去获取鲜花的详细信息,因此实际测试中只需测试用户点击按钮后是否能够正确跳转到相应的鲜花详情页面。
5、加入购物车测试
鲜花列表以及鲜花详情页面都有包含加入购物车功能,因此实际测试中需要在两个页面都测试用户点击按钮后是否能够正确跳转到购物车页面。
6、管理购物车测试
在购物车页面,用户可以对购物车里的鲜花数量进行更改,可以删除购物车里的鲜花,因此实际测试中需对这两方面进行测试。
7、生成订单测试
用户点击生成订单页面会跳转到确认订单收货信息页面,因此实际测试中要测试用户点击链接后能否正确跳转。
8、提交订单测试
用户提交订单后会跳转到订单页面,因此实际测试中要测试用户点击提交按钮后页面能否正确跳转以及数据库信息是否相应改变。
9、用户管理个人信息测试
用户可以更改自己的姓名、收货地址和手机,更改后数据库数据会有相应改变,因此实际测试中要测试用户点击提交按钮后页面能否正确弹出更改成功的信息以及数据库信息是否相应改变。
10、管理员分类管理测试
管理员在网上花店后台对于分类的管理主要是对分类的增加、修改、查询和删除,因此实际测试中要测试管理员进行查询操作时是否能正确显示查询信息,管理员进行增加、修改和删除操作时前台显示的分类是否改变以及数据库中的分类数据是否相应的改变。
11、管理员鲜花管理测试
管理员在网上花店后台对于鲜花的管理主要是对鲜花的增加、修改、查询和删除,因此实际测试中要测试管理员进行查询操作时是否能正确显示查询信息,管理员进行增加、修改和删除操作时前台显示的鲜花是否改变以及数据库中的鲜花数据是否相应的改变。
12、管理员公告管理测试
管理员在网上花店后台对于鲜花的管理主要是对公告的增加、修改、查询和删除,因此实际测试中要测试管理员进行查询操作时是否能正确显示查询信息,管理员进行增加、修改和删除操作时前台显示的公告是否改变以及数据库中的公告数据是否相应的改变。
13、管理员订单管理测试
管理员在网上花店后台对于订单的管理主要是对订单的查询和处理,因此实际测试中要测试管理员进行查询操作时是否能正确显示查询信息,管理员进行处理操作时订单是否显示已处理并且数据库中的订单数据是否相应的改变。
14、管理员用户管理测试
管理员在网上花店后台对于用户的管理主要是对用户的查询和删除,因此实际测试中要测试管理员进行查询操作时是否能正确显示查询信息,管理员进行删除操作时数据库中的用户数据是否相应的删除。
通过上一小节对测试细节的分析,对系统进行相应的测试,具体的测试结果如表7-1、表7-2以及表7-3所示。
在表中有四项内容:
名称:指测试的对象。
操作:指测试过程中进行的操作方法。
预期结果:指对测试操作产生结果的预测。
实际结果:指实际对系统进行测试时产生的结果。
表7-1 登录注册测试结果
名称 |
操作 |
预期结果 |
实际结果 |
用户注册测试 |
在注册表单输入各种格式的数据 |
格式正确则注册成功,反之失败 |
同预期 |
用户登录测试 |
在登录表单输入未注册和已注册数据 |
与数据库数据一致则登录成功,反之失败 |
同预期 |
管理员登录测试 |
在登录表单输入正确数据及错误数据 |
与数据库数据一致则登录成功,反之失败 |
同预期 |
用户退出测试 |
点击退出系统 |
正确退出 |
同预期 |
管理员退出测试 |
点击退出系统 |
正确退出 |
同预期 |
表7-2 用户操作测试结果
名称 |
操作 |
预期结果 |
实际结果 |
浏览鲜花测试 |
点击首页的鲜花列表相应链接 |
跳转到相应鲜花界面 |
同预期 |
加入购物车测试 |
点击加入购物车按钮 |
跳转正确并且数据库相应改变 |
同预期 |
管理购物车测试 |
对购物车内容进行增、删 |
跳转正确并且数据库相应改变 |
同预期 |
生成订单测试 |
点击生成订单按钮 |
跳转正确 |
同预期 |
提交订单测试 |
点击提交订单按钮 |
跳转正确并且数据库相应改变 |
同预期 |
管理个人信息测试 |
修改个人信息并提交 |
跳转正确并且数据库相应改变 |
同预期 |
表7-3 管理员操作测试结果
名称 |
操作 |
预期结果 |
实际结果 |
分类管理测试 |
在分类管理界面进行增删改查 |
跳转正确并且数据库相应改变 |
同预期 |
鲜花管理测试 |
在鲜花管理界面进行增删改查 |
跳转正确并且数据库相应改变 |
同预期 |
公告管理测试 |
在公告管理界面进行增删改查 |
跳转正确并且数据库相应改变 |
同预期 |
订单管理测试 |
在订单管理界面进行查看和处理 |
跳转正确并且数据库相应改变 |
同预期 |
用户管理测试 |
在用户管理界面查看和删除用户 |
跳转正确并且数据库相应改变 |
同预期 |
下面以用户登录和注册为例,详细说明测试过程。
用户注册需要填写用户名、密码、确认密码、姓名、收货地址、手机号码这六项,
对此划分出有效等价类和无效等价类进行测试,具体测试数据和结果如表7-4所示。
表7-4 用户注册测试结果
输入等价类 |
测试用例 |
测试数据 |
期望结果 |
实际结果 |
无效等价类 |
用户名为空 |
null,222222,222222,小红,太原理工大学,13211111111 |
注册失败 |
弹出提示信息 用户名不能为空 |
密码为空 |
222222,null,222222,小红,太原理工大学,13211111111 |
注册失败 |
弹出提示信息 密码不能为空 |
|
确认密码为空 |
222222,222222,null,小红,太原理工大学,13211111111 |
注册失败 |
弹出提示信息 确认密码和原密码不一致 |
|
姓名为空 |
222222,222222,222222,null,太原理工大学,13211111111 |
注册失败 |
弹出提示信息 姓名不能为空 |
|
收货地址为空 |
222222,222222,222222,小红null,13211111111 |
注册失败 |
弹出提示信息 收货地址不能为空 |
|
手机号码为空 |
222222,222222,222222,小红,太原理工大学,null |
注册失败 |
弹出提示信息 手机不能为空 |
|
密码小于六位 |
222222,22222,22222,小红,太原理工大学,13211111111 |
注册失败 |
弹出提示信息 密码至少六位 |
|
确认密码与密码不一致 |
222222,222222,111111,小红,太原理工大学,13211111111 |
注册失败 |
弹出提示信息 确认密码与密码不一致 |
|
手机不是11位 |
222222,222222,222222,小红,太原理工大学,132 |
注册失败 |
弹出提示信息 请输入正确的手机格式 |
|
手机第一位不是1 |
222222,222222,222222,小红,太原理工大学,03211111111 |
注册失败 |
弹出提示信息 请输入正确的手机格式 |
|
手机第二位不是3、5、8 |
222222,222222,222222,小红,太原理工大学,14211111111 |
注册失败 |
弹出提示信息 请输入正确的手机格式 |
|
手机输入非数字 |
222222,222222,222222,小红,太原理工大学,13aaaaaaaaa |
注册失败 |
弹出提示信息 请输入正确的手机格式 |
|
有效等价类 |
完整正确输入各项 |
222222,222222,222222,小红,太原理工大学,13211111111 |
注册成功 |
弹出提示信息 注册成功,请妥善保管您的账户 |
现将用户注册测试的部分过程截图如下。
当用户名为空时,点击注册,弹出提示框提示“用户名不能为空”。测试结果如图7-1所示。
图7-1 用户名为空时测试结果图
当密码和确认密码不一致时,点击注册,弹出提示框提示“确认密码和原密码不一致”。测试结果如图7-2所示。
图7-2 确认密码和原密码不一致时测试结果图
当输入的手机格式不正确时,点击注册,弹出提示框提示“请输入正确的手机格式”。测试结果如图7-3所示。
图7-3 手机格式不正确时测试结果图
当输入正确格式的数据时,点击注册,弹出提示框提示“注册成功,请妥善保管您的账户”。测试结果如图7-4所示。
图7-4 正确注册时测试结果图
用户登录时需要填写用户名和密码两项,对此划分出有效等价类和无效等价类进行测试,具体测试数据和结果如表7-5所示:
表7-5 用户登录测试结果
输入等价类 |
测试用例 |
测试数据 |
期望结果 |
实际结果 |
无效等价类 |
用户名为空 |
null,222222 |
登录失败 |
弹出提示信息 用户名不能为空 |
密码为空 |
222222,null |
登录失败 |
弹出提示信息 密码不能为空 |
|
用户名密码不匹配 |
111111,222222 |
登录失败 |
弹出提示信息 用户名或者密码错误 |
|
有效等价类 |
完整正确输入各项 |
222222,222222 |
登录成功 |
弹出提示信息 登录成功 |
现将用户登录测试的部分过程截图如下。
当登录密码为空时,点击登录,弹出提示框提示“密码不能为空”。测试结果如图7-5所示。
图7-5 登录密码为空时测试结果图
当登录密码错误时,点击登录,弹出提示框提示“用户名或者密码错误”。测试结果如图7-6所示。
图7-6 登录密码错误时测试结果图
当登录密码正确时,点击登录,弹出提示框提示“登陆成功”。测试结果如图7-7所示。
图7-7 登录成功时测试结果图
通过三个多月紧张的学习和编程工作,网上花店销售系统终于有了成果。
完成了网上花店销售系统的设计,系统前台实现了用户在线浏览所有鲜花,按需求搜索相关鲜花,浏览系统公告以及注册登录后对鲜花选购的操作和购物结束后对订单信息的查看。系统后台实现了管理员对鲜花、分类、公告、订单、用户的管理。
所设计系统中有一些优点,第一系统安全性高,本系统使用者分为管理员和用户两个角色,当其登录系统时,对其身份进行严格认证;第二采用隔离与访问控制,本系统根据用户的工作需求来分析,对用户权限进行了严格的控制,比如,用户只能浏览鲜花信息而不能修改,系统管理员就可以添加、删除、修改鲜花信息;第三操作简便,该系统本着方便易用的目的进行设计,无论是管理员还是用户都不需要具备专业的计算机知识,只要懂得计算机的一些基本操作,就可以轻松的对花店进行使用,这样做更加贴近用户,使用户使用方便,提高用户的体验。
但本系统也有一些不足,比如界面相对比较简单,功能相对有限。所以该系统还可以继续完善。
[1]万常选,刘云生. 电子商务的技术及其应用[J]. 计算机工程与应用. 2002(07) .
[2]王知强,郑炜. 基于UML的动态企业建模的研究与实现[J]. 哈尔滨商业大学学报(自然科学版). 2005(02) .
[3]文灿华,张伟. 基于JSP的网上商城的设计与实现[J]. 电脑知识与技术. 2010(31) .
[4]鲁晓东,李育龙,杨健编著.JSP软件工程案例精解[M]. 电子工业出版社, 2005.
[5]杨学瑜等编著.JSP入门与提高[M]. 清华大学出版社, 2002.
[6]张琳. 网上购物系统的设计与开发[J]. 科技信息(学术研究). 2007(24).
[7]陈春蓉. 网上购物系统的设计与开发[J]. 软件导刊. 2009(08).
[8]万华. 基于JSP的网上购物系统的实现[J]. 现代计算机(专业版). 2002(10).
[9]Enhancing Java server availability with JAS. Reinhard Klemm,Navjot Singh. Software. Practice \& Experience . 2001.
[10]D.C.Ghita.JavaScript Generators. Studia Universitatis Babes-Bolyai:Series Informatica . 2010.
[11]Jeffrey A Hoffer,Joey F. George.Modern SystemsAnalysis and Design. 2003.
JSP应用框架
1.1 什么是应用框架:
框架(framework)是可以被重用的一种半成品的应用程序,我们可以用它来制作专门的定制程序。这就如同人类一样,软件应用的相同点要远远大于不同点。它们在相同的机器上运行,把信息输入相同的设备,用相同的显示设备显示,并将数据村存储到相同的硬件设备中。传统的桌面开发应用的开发人员更习惯于使用可以涵盖应用开发同一性的工具包和开发环境。框架提供给开发人员这些公共基础上的应用框架从而为他们的产品提供可重用服务的基本架构。
框架是经典的构建-购买-命题。如果你独立构建它——那当你可以独立完成的时候你就会理解它,但是你又花费了多长时间来用之自如呢?如果你购买了它,你必须得克服学习曲线——并且学习它将话费你大约多长时间?这里没有明确的答案,因此许多专家会认为,例如Struts这样的框架能提供比全新的开发更显著的投资回报,特别是对大型项目来说尤为显著。
1.2 其它类型的框架:
框架的思想不仅仅用于应用程序也可以应用于组件。通过这些,我们以前也提到过一些可以与在Struts一起使用的框架。其中包括Lucene搜索引擎,Scaffold工具包,Struts验证器,以及Tiles标签库等等。就像应用框架一样,这些工具也提供了一些可以用在用户的定制组件之中的半成品。
某些框架已经被限定于专门的开发环境之中。而Struts以及本文中涉及的其他框架却不是这样的。你可以在各种各样的开发环境中来使用Struts:例如Visual Age for Java, JBuilder, Eclipse, Emacs, 甚至在Textpad中都可以使用Struts。只要是可以用来开发Java的工具都可以用来开发Struts。
1.3 使用的技术:
使用Struts的应用开发基于大量的其它技术。这些技术并不专属于Struts而是针对所有Java web 应用的。开发人员之所以使用Struts之类的框架的一个原因是为了隐藏在HTTP,CGI,以及JSP之类技术后面的繁琐细节。作为一个Struts开发人员,你并不需要完全了解Struts的所有相关知识,但是它们有助于解决比较麻烦的问题。
1.4 超文本传输协议 (HTTP) :
当两个国家之间进行交涉时,外交官们总是遵循一定的正式协议。
设计外交协议的主要目的是避免误会从而防止谈判破裂。同样,当两台计算机需要进行会话时,它们也要遵循一个正式协议。这个协议定义数据如何传输以及到达后如何进行解码。Web应用程序使用HTTP协议从而在运行浏览器的计算机和运行的服务器的程序之间传输数据。
很多服务器应用程序使用HTTP之外的其他协议。这些协议中的大多数是计算机之间的持久性连接。应用服务器可以清楚的知道是谁什么时候连接的并截止到何时中断的连接。因为它们知道每一个连接的状态甚至每一个使用它的人,这就是所谓的状态协议。
与此相反,HTTP被认为是一个无状态协议。HTTP Server 可以接受来自于各种客户的各种请求并且可以提供一些响应,即使这个响应仅仅是一个No。没有大量的协议和连接持久性,无状态协议可以处理大量的请求。这就是Internet可以被数量如此巨大的计算机使用的原因之一。
HTTP 成为通用标准的原因之一是简单性。一个HTTP请求看起来就像一个平常的文本文档。这使应用程序创建HTTP请求变得相当容易。你甚至可以通过标准的程序比如说Telnet来手动发送HTTP请求。当HTTP响应返回时,开发人员也可以直接在文本文档中读到其中的内容。
HTTP请求的首行包含方法,其后是请求的来源地址和HTTP版本。可以没有也可以有多个。HTTP头向服务器提供额外的信息。可以包括浏览器的类型和版本,可接受的文档类型,浏览器的cookies,仅仅为了一个名等等。在这7 种请求方法中, GET和 POST是最流行的。
当服务器接收到请求,服务器会马上产生一个HTTP响应。响应的首行称为状态行包含了HTTP协议的版本,字符型状态,以及该状态的简短描述。紧随状态行其后,服务器将返回一组类似于HTTP请求头的HTTP响应头。
按我们所描述的,HTTP并不会在请求之间保留状态信息。服务器接受请求,发出响应,并且顺利的处理文本请求。尽管HTTP是简单与快捷的,但是无状态的HTTP协议并不适合于需要跟踪用户状态的动态应用。
Cookies和 URL 重写是两种应用于请求之间跟踪用户状态的方式。cookie是一种用户电脑上的特殊信息包。URL重写是在页面地址中存储一个特殊的标记从而让Java服务器可以用它来跟踪用户。这两种方法都不是完美的,而且使用哪一个都意味着开发web工程时需要进行额外的工作。对其本身来说,标准的HTTP web服务器并不需要发送动态内容。它主要是使用请求来定位并在相应中返回文件资源。通常这里的文件使用超文本语言 (HTML) [W3C,HTML] 格式化以及显示它们。HTML页面通常包含一些到其他页面的超连接,或者说一些其他内容比如图片视频等等。用户点击链接产生一个新的请求,同时开始了一个新的处理过程。
标准web服务器对于静态内容和图片的处理相当好,但处理动态内容时需要外力的帮助。
定义:web中的静态内容直接来自于文本或数据文件,例如HTML或JPEG文件。这些文件可以随时改变,但通过浏览器请求时却不能自动改变。相反,从另一方面来说,动态内容是临时产生的,它是针对浏览器的一个典型的个别请求的响应。
1.5 公共网关接口(CGI) :
首个广泛使用动态内容的标准是通用网关接口Common Gateway Interface (CGI)。CGI使用环境变量,标准的输入输出等标准的操作系统特征,在Web服务器之间,以及和主机系统之间创建桥接和网关。其他应用可以看到web server传递过来的请求并创建一个定制的响应。
当一个web服务器收到一个对CGI程序的请求时,服务器运行CGI程序并向CGI提供它请求里面所包含的信息。CGI程序开始运行后将输出返回给web 服务器。web服务器把相应发送给浏览器。
CGI定义了一套关于什么信息将作为环境变量传递以及它希望如何使用标准的输入输出。就像HTTP一样,CGI是灵活和易于实现的,并且已经有大量成型的CGI程序。
CGI程序的主要缺点是每个请求对应一个新副本。这是一个相对昂贵的处理方法对大容量站点来说每分钟的数千个请求可能会使站点瘫痪。另一个缺点是依赖于平台。为一个操作系统写的CGI不能在其他操作系统上使用。
1.6 Java servlet:
Sun公司的Java Servlet平台直接解决了CGI程序的两个主要缺点。首先servlet 比CGI 程序提供更好的性能和资源利用。其次,JAVA的一次编写,随处运行的特性意味着servlet可以在存在虚拟机(JVM)的操作系统间随意移动。
Servlet类似于一个微型web服务器。它接受请求并产生响应。但是,与常规web服务器不同的是,servlet API 是专门用来帮助Java 开发人员创建动态应用的。
Servlet 自身是如同其他任何一个Java类,需要编译成字节码文件的Java类。Servlet访问HTTP 特定服务的API,但它仍然是一个运行于程序之中的Java 对象并可以利用所有的Java 资产。
为了使常规web服务器能访问servlet,servlet被安放在一个容器中。servlet容器连接web服务器。每个servlet 都可以声明它想处理哪种URL。当符合条件的请求到达web服务器的时候,web服务器将请求传递给servlet容器,servlet容器则调用servlet。
但是与CGI 程序不同,并不是每个请求都会创建新的servlet。一旦容器实例化了一个servlet,它就仅为每个新的请求创建一个新的线程。Java线程比CGI程序的服务器话费要少很多。一旦servlet被创建,使用它处理额外的请求仅带来很小的额外开支。Servlet开发人员可以使用init() 方法保持对昂贵资源的引用,比如连接数据库或者EJB Home接口等等,以便它们可以在不同的请求之间进行共享资源。获得这些资源需要好肥几秒钟的时间——这比大多数网上冲浪的人的最长等待时间要长一些。
Servlet的另一个好处是,它可以多线程运行,servlet开发人员必须特别注意确保servlet是线程安全的。
1.7 JavaServer Pages:
对于CGI程序servlets虽然前进了一大步,但它也不是无敌的。为了产生响应,开发人员仍然使用大量的println语句来生成HTML。代码如下:
out.println("
One line of HTML.
");out.println("
Another line of HTML.
");在servlet中产生HTTP响应是很正常的。也有一些库来帮助你产生HTML,但是随着应用的日益复杂化,Java开发人员脱离了HTML设计师的身份。与此同时,给出这种选择,大多数项目经理更喜欢选择将团队分成几个小组来工作。 他们喜欢HTML设计人员处理表示层的工作,与此同时Java工程师则侧重于业务逻辑。单独使用servlet的场合下鼓励混合标记和业务逻辑,这让分组工作变得困难。
为了解决这个问题,Sun公司提出了一个将脚本和模板技术结合到一个组件中的服务器页面技术(JavaServer Pages)。为构建JSP页面, 开发人员开始用以前创建HTML页面的方式来创建页面,使用HTML 语法。为了在页面中引用动态内容,开发人员还将脚本元素置入页面之中。脚本元素是一些标记语言压缩了可以被JSP识别的逻辑。你可以在JSP页面中简单的识别出被压缩在一对<% 和 %>标记中的脚本元素。
为了让大家容易识别JSP页面,JSP文件的扩展名须为.jsp。
当一个客户请求JSP页面时,容器将页面翻译成Java servlet 源代码文件并将它编译成Java 类文件——就像你从零开始写一个servlet文件一样。运行的时候,容器也可以检测出JSP文件对应的类文件的最后更新时间。如果JSP文件在上次编译之后被修改过,容器将再一次翻译和编译JSP文件。
项目经理现在可以将表示层工作分配给HTML 开发人员,而 JAVA开发人员将会被分配一些业务逻辑工作。一定要记住最重要的是JSP页面其实就是一个servlet。用servlet可以处理的事,用JSP也可以处理。
1.8 JavaBean:
JavaBean是一种符合一定的设计模式的 Java类这样的设计模式使它们易于和其他开发工具和组件一起使用。
定义:JavaBean 是一种用JAVA 语言写成的可重用组件。要编写一个JavaBean,类必须是具体的公共类(public),并且有无参构造函数(NON-ARGS CONSTRUCTOR)。JavaBean把通过提供符合一致性的设计模式的public访问方法暴露的内部字段称为属性。众所周知属性名也符合这种模式,其他JAVA 类也可以通过自省来发现和操作JavaBean 属性。
JavaBean设计模式提供的访问bean的内部状态的方法有两种:访问器(accessor)是用来读一个JavaBean状态的;修改器(mutator)是用来修改JavaBean状态的。
修改器方法一般以小写的set 后跟属性名来命名的。属姓名的首字母必须大写。其返回值类型一般为void——因为修改器只能改变属性值,所以无返回值类型。属性简单的修改器在其方法体中可能只有一个参数,该参数可以是任何类型。修改器有时候也可根据其前缀称为设置器(setters)。
相似的设计模式也应用于访问器方法的创建。访问器方法一般以小写的get 为前缀,后跟属性名来命名的。属性名的首字母必须大写。返回值类型必须与对应的修改器方法的参数类型匹配。属性简单的访问器在其方法体中不能接受任何参数。毋庸置疑访问其经常被称为获取器(getters)。
例如对Double类型的属性weight 的访问器方法体可能为:
public Double getWeight();
如果访问器返回一个逻辑值,会有一个变体模式。代替使用小写的 get,逻辑属性的访问器可以使用is ,前缀后跟属性名。属性名的首字母必须大写。返回值必须是一个逻辑值——不管是 boolean型 还是Boolean型。逻辑访问器在其方法体中不能接受任何参数。
例如,对On属性的布尔型访问器的方法体可能为:
public boolean isOn();
在使用JavaBean 时,规范的方法体标识扮演了极为重要的角色。其他组件可以使用Java 的反射API并且通过查找前缀为set,is,get的方法来发现JavaBean的属性。如果组件发现一个这样的JavaBean标识,那它就知道这个方法可以用来访问或者改变bean的属性。
Sun公司引入JavaBean是为GUI组件服务的,但是它们已经用在了Java开发的各个方面,甚至包括web应用。当Sun公司的工程师开发出JSP标签的扩展类时,也开始设计它们以和JavaBean一起运行。一个页面的动态数据可以使用JavaBean来进行传递,并且JSP标签可以用bean的属性来定制页面的输出。