项目报告
基于JSP物流信息网的设计与实现
本文讲述了基于JSP物流信息网的设计与实现。该系统使用java语言开发,使系统具有更好的平台性和可扩展性。
该系统实现了用户登录、注册、查询快递信息、快递公司注册成为合作伙伴以及系统管理员对信息进行管理等功能。系统的主要界面会将所有的服务排列好,用户可以自行选择服务。用户可以查询快递的详细信息以及快递公司的价格以及邮递的时间。系统管理员可以查看所有的信息,甚至可以更新快递的地址。快递公司可以填写公司相关信息成为该系统的合作伙伴。
随着时代的进步,人们的生活水平日益上升,平常的消费已经无法满足人们的需求,再加上互联网的发展,网上购物已经成了人们必不可少的消费渠道,就会需要物流业来配送这些货品,因此,消费者才会急需要一个系统来管理这些货物的信息。
物流,快递,查询,会员,登录;
目录
- 绪论
1.1课题背景
近年来,随着时代的进步,社会随之不断发展,经济也快速发展起来了,人民的消费水平在不断地提高,平常的实体店消费已经不能满足人们的需求;在者,互联网技术的不断发展也为电子商务的兴起提供了丰沃的土壤;电子商务的不断发展,尤其是淘宝,京东的快速兴起和发展,才催生了物流行业的出现;再之,人们在网上买了商品却不知道东西邮寄到了哪,因此又催生了物流网站的发展。再者,在现如今的社会,物流业的快速发展,对于距离的差距,已经不是很大的问题,现在有很多的快递公司存在,例如中通等等。人们会有很多可以选择去快递东西,这不仅方便了人们东西的邮寄,也方便了人们的购物,使人们的生活更加方便快捷。此外,物流业也是整个社会不断发展的缩影,在经济快速发展的今天,距离已经不再是人们苦恼的问题,快递可以稍去家人的思念,也可以使人们有更多的购物选择,据网上调查,2016年光淘宝一家电商就有交易额3万亿元,这意味着传统商业时代告一段落,新网上经济体已经诞生。这更意味着有千千万万的人选择了网上消费;这种网上经济体的发展,不仅仅带来了经济的发展,也带来了快递行业的发展,与此同时,却带来了很多问题,例如:用户如何选择哪家快递公司,如何查询自己的快递成为了最要紧的问题。
出现问题就要解决,为了解决上面所述的一系列问题,人们就设计出了物流网站来解决这些问题,网站查询快递不仅便利了用户查询快递的相关信息,还方便了快递公司的管理。再者,还改变了人们消费的观念和方式,已经成为了网上购物族每日必浏览的网站,这为电子商务的发展起到了至关重要的作用,并加快经济发展的脚步。
1.2目的和意义
现如今是电子商务的时代,电子商务的发展,催生了物流行业的兴起的发展,据查询,全国有1200家的快递公司在开展业务,2016年全国快递业务量突破300亿件,业务量同比增长51.7%;如此之多的快递已经数据是其他行业难以匹敌的,因此,急需要网站物流查询来管理数据和便利人们生活。
近年来,电子商务不断发展,丰富了消费者的选择;传统消费相比,电子商务更加快捷方便;例如,快递员可以送货上门,极大地方便了消费者的生活;并且,随着电子商务与物流行业的合作加深,消费者从消费到送货到家的时间和空间更进一步缩短,由此带来的巨大效益使得快递公司不断发展自己的网站设计,为消费者提供更优质的服务。与此同时,还方便了快递公司的管理,快递公司可以注册成为该系统的第三方,系统管理员可以在网站上更新快递邮寄的地区以及快递邮寄的时间和价格,管理员还可以查看系统的所有信息。所以,该系统是非常值得开发的下图是近年来的电子商务的交易额如图1.1
图1。1 2008-2015年我国电子商务市场规模
正是由于网络和快递的发展,人们才会选择网上消费,电子商务才会有如此之大的成就;再者,用户可以很便捷的查询出自己快递的信息,可以根据居住地区查询,也可以根据快递编号查询,还可以根据快递公司查询;当然,网站还提供快查询递邮寄时间和价格;最后,用户可以注册成为会员,也可以注册成为我们的合作伙伴。最后,系统管理员可以查看会员信息以及合作伙伴信息。
物流网的主要目的是通过网站来推广快递公司的服务,并使客户可以随时查询到快递信息;与电子商务实现无缝接轨,为客户提供更加完善的服务。
1.3系统设计思想
与其他典型的数据库系统相比比较而言,本系统相对比较简单,但是也具备了基本的功能,满足了用户的需要,因此,本系统在设计是应该实现以下几个目标。
(1)采用人机交互的方式,界面简单、大方、易于用户理解操作,此外,系统响应时间短、安全可靠;
(2)便于顾客快捷地进行电脑快递信息查询;
(3)用户可以注册成为会员;
(4)实现电脑查询快递价格的功能;
(5)实现电脑查询快递详细信息;
(6)方便用户查询快递的详细信息;
(7)对用户输入查询、注册时输入的数据,系统会经过检验,排除一些明显的数据错误。
(8)系统管理员登录后查看用户、快递以及快递公司的信息。
(9)系统会最大限度地实现了系统的易维护性和易操作性。
1.4本文的结构
本文具体内容包括:可行性分析、需求分析、系统总体设计、系统详细设计与实现、系统的重要编码、系统的测试、系统维护。可行性研究是为了首先确定系统的得规模和目标,确定项目的约束和限制。需求分析是为了进一步对系统提出完整、准确、清晰而且具体的要求。系统总体设计是为了对系统进行进一步分化,分化成一个个小的模块,便于完成设计。系统详细设计是对系统分化的每一个模块进行详细的分析。系统测试是通过测试来找出系统的可能发生错误以及已经发生的错误,是对需求分析、设计和编码的最终复审。系统维护是指在系统交付使用之后,对出现的问题或新提出来的需求进行修改的过程。本文着重描述了物流网的结构,详细说明了系统设计的每一个步骤,也对系统设计的理念做了一些简单的介绍,重点是对系统的实现方法以及相关技术做出了说明,最后,系统的测试是重中之重,占据了本系统设计的主要时间和精力,对系统做出了完整的测试,从而证实了本系统的可用性和实用性。
1.5本章小结
本章节是为本文的结构和该系统的设计步骤做出了大致的描述,主要叙述了编写本系统的目的和意义以及设计本系统的思想;再者,本文的叙述结构,不仅为读者提供了分析本文的依据,也为接下来的工作做了大致的介绍,具有重要的指导作用。通过编写本章节的内容,了解了设计系统的详细步骤和过程,接下来会按照本章节的叙述进行各步骤。
本章节是对全文的一个概括,是系统设计前的准备工作,通过调查之后对系统发展前景的一个预计估测;正所谓,磨刀不误砍柴工,有了充分的准备,接下来的工作才能更好地进行
第二章 可行性研究分析
2.1引言
本章节是系统设计与实现的第一步,要打好基础,以便于后续工作的进行;因此,这一章节至关重要,要踏踏实实做好软件开发的第一步;可行性研究其主要目的是分析该系统是否有可能实现,是否能用最小的代价在尽可能短的时间内确定客户对系统提出的相关问题是否能够解决。为下一阶段的软件需求分析提供了系统的一个大概范围,为该系统设计奠定一个坚实的基础。
在此章节中,我将与经常网购的几个同学了解一些关于物流的基本信息,了解用户对物流网站的要求以及期望,总结成文档,并且得出系统的大致范围,尽量使系统满足所有用户的需求。
2.2可行性研究前提
现在网站上已经存在一些相关的快递查询的系统,因此,此项目是可以实现的。该项目的功能有:该系统不仅方便了用户,也方便了快递公司管理;用户可以在该网站查询快递信息,通过快递编号、快递的地点以及快递的公司查询,当然,用户也可以在该网站上查询快递的价格,用户还可以通过注册成为会员,也能成为快递公司的合作伙伴;该系统的性能良好,人机交互比较顺畅;但同时也存在限制条件,用户不能修改快递的相关信息,也不能查看快递公司的相关信息。如此看来,该系统要实现的功能比较简单,比较方便实现该系统。
2.3对现有系统的分析
近年来,经济快速发展,电子商务随之兴起,进而之,出现一大批新兴行业与职业,例如物流;正因为新兴,所以才有很多人想分物流行业一杯羹,进而促使物流网站竞争压力猛增;突现出很多物流网站来,例如:现有的快递查询网站有快递100-查快递、快递之家等等,快递100-查快递网站是一个比较大的网站,该网站覆盖面比较广,相应能力比较强,人工交互界面虽然简单明了,但由于其页面清新雅观,吸引了不少用户使用。但该系统也存在一些缺点,过于繁琐,涉及的内容太多,这样一来,网站涉及代码量比较多,就需要多人配合完成设计与实现,因此,开发和维护所要耗费的时间和金钱就比较多。相比较而言,快递之家系统简单,包含了最基本的功能——快递查询,但覆盖面比较窄,因此,一个人也可以完成快递之家,所要耗费的时间和金钱就相对比较少。
2.4对所建设系统的分析
对本次设计的系统而言,可以从以下的三个方面来进行详细分析:
1.经济可行性分析:该系统涉及面比较简单,实现的功能比较简单,工作量比较少,因此一个人也能单独完成此次项目,所要耗费的精力和财力相对比较少。
2.技术可行性分析:目前我们在本科期间已经学习了网页开发的相关知识,也做过一些实践性的成果;因此,我具备开发此项目的能力。
3.社会因素可行性:随着电子商务的兴起和兴盛,广大消费者迫切需要一个系统可以帮助他们来查询快递信息,来替快递公司来管理客户、快递资料。
系统流程图如2-1所示:
图2-1 系统结构流程图
2.5本章小结
本章节是系统设计的第一步,是此次系统开发的基本,因此,要认真做好可行性研究,就像是盖房子,首先要打好地基,才能盖好一个房子;在本章节中,明确了用户对本系统的要求,并且初步确定了本系统设计的规模和目标;再者,通过与其他存在的系统的对比判断此次系统设计的可行性与实用性;最重要的是,判断此系统的是否值得投资,值得花费精力去设计;最后从用户角度进行分析,经过经济可行性、技术可行性和社会因素可行性等方面得出该系统的设计开发技术纯熟,系统收益比较高,具有良好的市场拓展,具有开发的价值。
第三章 系统需求分析
3.1引言
本章节是软件开发第二步,也是最至关重要的一步,在此过程中,我们要根据上一章节的分析来进行更加深刻的了解用户的需要,本章编写的目的是,对上一阶段确定的用户对系统需求进行进一步的分析,进而得出更加明确、更加完整的系统需求以及系统的规模与目标,进一步帮助程序开发人员了解客户的需求,使最终的成果能够满足用户的需要。
在此章节中,我将采用客户访谈的方式来了解客户的需要,然后整理访谈记录,明确用户的需求并且记录在册,再通过数据流图和数据字典来进一步清晰地分析该系统的结构,为接下来的工作打下坚实的基础。
3.2任务概述
该系统首先具有着统一友好的操作界面,保证系统的简单操作和实用性,方便用户的操作;其次,实现了用户通过快递编号查询,也可以通过地区和快递公司查询,用户也可以在该网站上查询快递时效和价格,当然,该网站还实现了用户注册成为会员或是合作伙伴;该系统最终将运行在各网站上和手机客户端。但该系统也有些局限性,用户不能修改快递信息,也不能修改自身注册的信息,更不能查看其他人的快递信息。其该系统的功能结构图如下所示。
图3.1 功能结构图
3.3数据描述
- 数据流图:
图3.2顶层数据流图
图3.3 1层数据流图
图3.4 2层数据流图
2.数据字典:
数据字典是对数据流图中所包含元素的定义集合;数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。
(1)数据流条目
登录表=账号+密码
查询表=快递单号+姓名+手机号+出发地+接收地+快递公司
网点表=出发地+接收地+时效+重量+价格
合作伙伴=编号+姓名+性别+公司
(2)数据存储条目
文件名:登录
组成:账号+密码
组织方式:索引文件,以账号为关键
文件名:查询
组成:快递单号+姓名+手机号+出发地+接收地+快递公司
组织方式:索引文件,以快递单号为关键
文件名:网点
组成:出发地+接收地+时效+重量+价格
组织方式:索引文件,以出发地为关键
文件名:合作伙伴
组成:编号+姓名+性别+公司
组织方式:索引文件,以编号为关键
- 数据项
表3.1数据项
序号 | 名称 | 别名 | 类型 | 长度 |
01 | number | 快递编号 | int | 4 |
02 | xingming | 姓名 | varchar | 20 |
03 | shoujihao | 手机号 | int | 12 |
04 | cfd | 出发地 | varchar | 20 |
05 | jsd | 接收地 | varchar | 20 |
06 | kd | 快递公司 | varchar | 20 |
07 | name | 账号 | int | 12 |
08 | password | 密码 | Varchar | 20 |
09 | sx | 时效 | Varchar | 5 |
10 | zl | 重量 | Varchar | 10 |
11 | jg | 价格 | Varchar | 5 |
12 | xb | 性别 | Varchar | 2 |
- 加工条目
加工名:登录
编号:1
输入:账号、密码
输出:账户快递信息
加工逻辑:根据登录表
If输入账号等于登录表中账号
If输入密码等于登录表中密码
Then输出该账户快递信息
Else输出账号与密码不匹配
Else输出该账号不存在
加工名:查询
编号:2
输入:快递编号
输出:快递信息
加工逻辑:根据查询表
If输入快递编号等于查询表中快递编号
Then输出该快递信息
Else输出该快递不存在
加工名:时效查询
编号:3
输入:出发地、接收地
输出:时效
加工逻辑:根据网点表
If输入出发地等于网点表中出发地
If输入接收地等于网点表中出发地
Then输出时效
Else输出不能快递到此地
Else输出不能从此地快递
加工名:价格查询
编号:4
输入:出发地、接收地、重量
输出:价格
加工逻辑:根据网点表
If输入出发地等于网点表中出发地
If输入接收地等于网点表中出发地
If输入重量等于网点表中重量
Then输出价格
Else输出该重量不能邮寄
Else输出不能快递到此地
Else输出不能从此地快递
加工名:注册
编号:5
输入:账户、密码
输出:注册成功、注册失败
加工逻辑:根据登录表加入新账户信息
加工名:合作伙伴
编号:6
输入:姓名、性别、公司
输出:合作成功
加工逻辑:根据合作伙伴表加入新合作伙伴信息
加工名:管理员
编号:7
输入: 账户、密码
输出: 快递信息、用户信息、留言板信息、快递公司信息
加工逻辑:根据登录表
If输入账号等于登录表中账号
If输入密码等于登录表中密码
Then输出 快递信息、用户信息、留言板信息以及快递公司信息
Else输出账号与密码不匹配
Else输出该账号不存在
3.4功能需求
该系统可将功能划分为:登录、注册、查询、合作、管理员查询,其中用户首先在主要页面上选择登陆后,系统跳转到登陆界面,用户在此页面上输入账号和密码登录查看自己的快递信息;再者,用户也可以在主页上选择注册后,系统跳转到注册页面后,用户在注册页面填写相关信息后成为该系统的会员,系统会更加快捷的为用户提供服务;最主要的功能是用户可以直接在系统主页面上填写快递单号来查询快递信息,也可以先选择快递公司,然后再在快递公司页面上填写快单号查询该快递公司所属快递信息;快递公司或其他广告公司可以在网站上参与合作,建立更加便捷的网络服务体系。最后,系统管理员通过登录后,可以查看用户、快递、快递公司的详细信息,方便了系统对数据的管理。
3.5性能需求
随着电子商务的兴起和发展,物流业异军突起,网络物流查询的竞争力也随之加强,因此,用户对系统性能要求极为严格;为此,该系统完全符合当前社会对物流网站性能的要求,响应速度极快;数据精确度极高,实时更新各存储表信息,上传用户和快递信息,并且响应时间短,系统会根据情况不断进行系统维护更新,数据上传速度快且准确率较高,运行时间长,后台待机时间长达10个小时。最重要的是该系统的适应性较强,无论是电脑客户端还是手机客户端都能够灵活的适应并且供用户使用,并且与百度等网站无缝衔接,并在出现卡机等特殊情况能自行处理。此外,该系统还应该具备相应的用户反馈模块,使系统设计人员能够了解用户使用系统后的感受以及对系统新的要求,便于编程人员来修改完善。
3.6运行需求
近年来,经济快速发展,催生出电子商务行业,又带动了物流行业发展,进而又带动了网络物流行业兴起;因此,在此行业中竞争激烈,因此对物流系统的要求极为严格,尤其是用户交互界面,如果用户交互界面不是很吸引用户,那还有什么收益可言;因此该系统在外观上要严格做到美观、易操作,由于考虑到大多数用户对Wwindows系统的风格较熟悉,因此,在设计的时候,我会尽量向着这一方向靠拢。在设计语言上,我在本科学习时,经常使用JAVA语言,因此,我将使用HTML、JSP对该系统进行编程。其中系统的程序界面要做到操作简单,易于管理。在主要页面的设计上采用下拉式菜单方式供用户选择服务,用户可以自行选择想要的服务类型;总的来说,该系统的用户界面具有简洁性、易操作性和维护性。该系统还具有软件接口,本工程产品的软件接口由编程操作系统、SQL数据库以及物流管理应用软件的词典和数据结构组成;该系统还具备故障处理的功能,当出现错误时,本系统能自动修复故障,保证回退;当出现较难解决的问题时,本系统会提供对话框可以使用户提供反馈。如果在操作过程中出现意外,只需退出系统重新登录即可。
3.7 本章小结
需求分析是系统设计的第二个步骤,也是极为关键的一步,在本章节中详细的对本系统进行了需求分析,其目的是在于以通过对客户的调查以及对客户提出来的对系统的需求进行分析,确定出用户对系统的准确的,完整的需求,总的来说此过程的分析不仅仅细化了软件的作用范围,而且分析和确定了本软件系统构成的过程,以确定未来系统的主要成分及它们之间的接口细节;并且软件需求分析是系统设计与实现的最关键的一步,是系统开发设计的基础;因此,软件需求分析必不可少又极为重要。
第四章 系统总体设计
4.1引言
本章节编写的主要目的是要把上一阶段分析得出来用户对系统的需求变换为该系统如何实现这些用户的这些需求,总体设计是进入系统设计的第一个阶段,因此,该步骤至关重要,也是接下来进行工作的基础。在该阶段内,该系统将被分为5个模块,分别为登录、注册、查询、合作伙伴、管理员等。在下面我将使用层次图来表示本系统中各模块之间的关系。具体情况如下图4.1所示。
图4.1层次方框图
本系统一共分为用户查询、用户登录、用户注册、快递公司合作、系统管理员管理五个功能,五个功能之间看似相互独立,没有明显的直接联系,但是在对数据库的访问中却是紧密相连的,各个模块访问的是同一数据库的内容,有时候甚至会访问同一个表;例如,登录模块和注册模块访问的是同一个表格,管理员则访问的是这个数据库全部的表格。
本系统的主要页面比较简洁明了,用户可以很简单的掌握本系统的使用要领,但是主要页面还是存在着一些缺点与不足,主页面如下图4.2所示
图4.2主页面
4.2任务概述
1 .目标
开发基于JSP物流信息网的设计与实现
2.运行环境
系统将由两部分程序组成安装在各快递公司客户机上的客户程序及用户内的数据服务器程序。
根据对用户的调查访谈得知大多数的快递公司的计算机配置均在Pentium 133级别以上,客户程序应能够在Pentium 133级别以上, Win NT环境下运行。
3.需求概述
用户可以在主页上直接填写快递单号进行查询快递信息,也可以先在主页上选择在各快递公司,系统跳转到快递公司页面后,在此界面上填写快递单号来查询快递信息,还可以在主页上选择在地区页面后,在地区页面上输入快递单号来查询快递信息;此外,用户可以先在网站首页上选择注册后,系统跳转到注册页面,用户在注册页面填写相关信息后成为本系统会员,当然快递公司以及各广告公司可以在网站上填写各自的详细信息后成为本系统的合作伙伴,以此来为用户提供更优质的服务。管理员可以先在主页上选择管理员后,系统跳转到管理员登录界面,管理员在登录成功之后,可以查询相关信息。
4.条件与限制
用户不能修改快递信息和查看其他用户信息。快递公司不能修改快递信息,并且不能查看用户信息;管理员不能修改用户信息以及快递公司信息。
4.3数据库设计
在本系统中有不少涉及到数据库的内容,尽管数据库的软件比较多,但本系统只采用Microsoft Mysql 数据库来与该系统连接为用户服务,因为MYSQL方便快捷,易于编程,而且操作简单,是数据库的不二人选,因此,我才选择该数据库与该系统联系与服务;接下来,我将详细介绍该系统所使用到的数据库的相关内容。
在本系统的五个模块中都访问了数据库的内容,尤其是用于信息的保存、插入和查询;因此,需要进一步的分析系统对数据的需求,从而确定数据库的结构。根据系统功能划分的情况,本系统将使用的数据库名字为bishe,在该数据库里有五张表格,下面是对数据库的详细介绍。
- 概念结构设计
概念模型是对各种数据模型的基础,在此,我将采用E-R模型来描述该模块的概念模型。其涉及到的E-R图如下所示。
图4.3查询模块E-R图
- 逻辑结构设计
经过上一阶段概念分析之后,这一部分将E-R图转化为关系模型。该部分将转化为四个关系模型,详细情况如下所示。
用户(账号,密码);
快递(编号,用户名,出发地,用户手机,接收地,快递公司,现在地址);
网点(出发地,接收地,时间,重量,价格);
合作伙伴(姓名,快递公司,性别);
3.物理结构设计
经过其那面两个阶段的分析之后,该阶段是将关系模型转变成数据库中表格存储起来,其详细情况如下所示。
表4.1登录表
序号 | 名称 | 别名 | 类型 | 长度 |
01 | name | 账号 | int | 12 |
02 | password | 密码 | Varchar | 20 |
表4.2 查询表
序号 | 名称 | 别名 | 类型 | 长度 |
01 | number | 快递编号 | int | 4 |
02 | xingming | 姓名 | varchar | 20 |
03 | shoujihao | 手机号 | int | 12 |
04 | cfd | 出发地 | varchar | 20 |
05 | jsd | 接收地 | varchar | 20 |
06 | kd | 快递公司 | varchar | 20 |
07 | xz | 现在地址 | varchar | 20 |
表4.3网点表
序号 | 名称 | 别名 | 类型 | 长度 |
01 | cfd | 出发地 | varchar | 20 |
02 | jsd | 接收地 | varchar | 20 |
03 | sx | 时效 | Varchar | 5 |
04 | zl | 重量 | Varchar | 10 |
05 | jg | 价格 | Varchar | 5 |
表4.4 合作伙伴表
序号 | 名称 | 别名 | 类型 | 长度 |
01 | xingming | 姓名 | varchar | 20 |
02 | kd | 快递公司 | varchar | 20 |
03 | xb | 性别 | varchar | 5 |
表4.5 留言板表
序号 | 名称 | 别名 | 类型 | 长度 |
01 | name | 姓名 | varchar | 10 |
02 | | | varchar | 20 |
03 | title | 主题 | varchar | 10 |
04 | liuyan | 留言 | varchar | 50 |
以下我将介绍相关的数据库,详细情况如下图4.4 、4.5、4.6所示
图4.4登录表
图4.5查询表
图4.6网点表
图4.7合作伙伴表
图4.8留言板表
以上内容是对本系统的各部分进行数据库相关介绍,分别对毕设数据库里的登录、网点、查询、留言、合作伙伴表的数据累心的介绍,接下来,我们将进行更深的分析各部分的功能,分析系统如何协调好系统各部分执行好各自的功能。
4.4错误处理
1.出错输出信息
程序在运行时主要会出现两种错误:(1)当输入的信息经检查无法满足要求时产生的错误,称为软错误。(2)由于其他问题产生的问题,称为硬错误。
- 出错处理对策
为防止该系统出错,该系统编程人员将不定期的检查和维护该系统,用户也可以在网站上提交错误信息,直至系统修复。管理员会不定期的查看用户提交的系统反馈,根据用的反馈对该系统对出相应的调整以及修改。
4.5本章小结
本章节详细介绍了该系统的总体设计,给出了该系统的层次方框图,清晰的介绍了该系统的各个模块,并说明了各模块之间的联系,各个模块紧密联系,休戚相关;此外,在本章节中,还说明了各个模块对数据库的访问情况以及对数据的要求,更为该系统接下来的详细设计部分作好了充足的准备工作。
此外,本章节是软件开发设计的第三步骤,既是对上一步需求分析做出了检查和进一步的分析,又是对下一步的工作做出了指导与铺垫作用;因此,本阶段必不可少,必须认真完成软件开发的每一个步骤,是一个好的软件开发实现的必然要求。
第五章 详细设计
5.1引言
根据上一章节总体设计将系统划分的五个部分:登录、查询、注册和合作伙伴以及管理员,在此章节中将进行各个模块详细分析,其主要目的在于明确指定本系统应该怎样具体实现用户所提出来的要求,也就是说在经过这一阶段的分析后,要准确的对系统的每一模块的工作要做出详细的说明。并且,这一章节也极为重要,为下一阶段编程人员根据其内容编写代码提供主要信息,其内容的好坏决定系统最终的成果;因此,此过程必不可少且至关重要,要重点把握好此过程的分析。
登录模块是用户在本系统中经过注册成为会员之后,登录成功之后,可以查看本人的详细信息;查询模块是用户在本系统中通过输入快递单号之后得到的该快递的详细信息,此外用户还可以输入快递地区以及快递公司缩小查找的范围;注册模块是用户在系统页面上输入个人信息成为会员;合作伙伴模块是快递公司在系统上填写相关信息成为该网站的合作伙伴。管理员模块是系统管理员在登录之后对各种信息的查询。以下是对各个模块的详细介绍与分析。
5.2查询模块
本节对于用户查询模块进行详细分析
1.通过快递编号查询
实现目标:用户在网站上文本框里输入快递编号,JSP页面自动获取其文本框里的快递编号与数据库里的查询表里快递编号对比,如果对比一致,系统就输出该快递单号的快递信息,如果对比不一致,则输出没有该快递。
实现过程:
所属页面:zhuye.html、chaxun.jsp
表单属性:action=chaxun.jsp method="get"
界面设计如图5.1所示
图5.1用户查询界面
页面设计如表5.1所示
表5.1用户查询快递信息列表
名称 | 类型 | 含义 |
text | Text | 快递编号 |
查询 | button | 查询 |
2.通过快递编号及地区查询
实现目标:用户在网站首页的全国站里先选择地区,然后在该地区网页文本框里输入快递编号,
JSP页面获取其文本框里的快递编号与查询表里快递编号对比并且出发地是深圳,如果一致,就输出该快递单号的快递信息,如果不一致,系统则提示用户没有该快递。如果该快递编号与查询表里快递编号对比一致但出发地不是深圳,系统则提示用户该快递不属于深圳站。
实现过程:
所属页面:shenzhen.html、shenzhen.jsp
表单属性:action=shenzhen.jsp method="get"
界面设计如图5.2、5.3所示
图5.2深圳站界面 图5.3用户查询界面
相关的页面设计如表5.2所示
表5.2用户查询快递信息列表
名称 | 类型 | 含义 |
text | Text | 快递编号 |
查询 | button | 查询 |
fanhui | button | 返回首页 |
3.通过快递公司及地区查询
实现目标:用户在网站首页的查快递里先选择快递公司大全或者国际快递大全,然后在该快递公司网页文本框里输入快递编号,JSP页面获取其文本框里的快递编号与查询表里快递编号对比并且查询表里快递公司与所选快递公司对比,如果一致,就输出该快递单号的详细信息,如果不一致,系统就会提示用户,没有该快递的存在。如果该快递编号与查询表里快递编号对比一致但查询表里快递公司与所选快递公司对比不一致,则输出该快递不属于该快递公司。
实现过程:
所属页面:kdgsdq.html、gjkddq.html、yuantong.html、zhongtong.html、yunda.html、ems.html、dhl.html、yuantong.jsp、zhongtong.jsp、yunda.jsp、ems.jsp、dhl.jsp
表单属性:action=yuantong.jsp method="get"
action=zhongtong.jsp method="get"
action=yunda.jsp method="get"
界面设计如图5.4、5.5、5.6所示
图5.4 图5.5 图5.6
页面设计如表5.1 上表所示
4.通过发送地点和收件地点查询时效
实现目标:用户在网站首页的寄快递里先选择快递时效查询,然后在该页面发送地址文本框里输入快递出发地,在接收地址文本框里输入快递接收地,JSP页面获取其文本框里的接收地和发送地,然后将接收地和发送地与网点表里的接收地和发送地一致,就输出该快递邮寄时间,如果发送地不一致,则输出不能从此地快递,如果接收地不一致,则输出不能快递到此地,
实现过程:
所属页面:kdsxcx.html、kdsx.jsp
表单属性:action=kdsx.jsp method="get"
界面设计如图5.7、5.8所示
图5.7 图5.8
相关的页面设计如表5.3所示
表5.3用户查询快递信息列表
名称 | 类型 | 含义 |
Text1 | Text | 出发地 |
Text2 | Text | 接收地 |
查询 | button | 查询 |
5.通过发送地点和收件地点及重量查价格
实现目标:用户在网站首页的寄快递里先选择快递价格查询,然后在该页面发送地址文本框里输入快递出发地,在接收地址文本框里输入快递接收地,在重量文本框里输入重量,JSP页面获取其文本框里的接收地和发送地以及重量,然后将接收地、发送地和重量与网点表里的接收地发送地一致,就输出该快递价格,如果存在不一致,则输出查询不到价格。
实现过程:
所属页面:kdjgcx.html、jgcx.jsp
表单属性:action=jgcx.jsp method="get"
界面设计如图5.9所示
图5.9
页面设计如表5.4所示
表5.4用户查询快递信息列表
名称 | 类型 | 含义 |
Text1 | Text | 出发地 |
Text2 | Text | 接收地 |
Text3 | text | 重量 |
sskd | button | 搜索快递 |
5.3登录模块
实现目标:用户首先在系统首页上点击登录按钮,也可以选择在首页上点击快递管家,然后页面就会跳转到登录界面,用户在登录界面上的用户名文本框里输入自己先前注册的账号,在密码文本框里输入相应的密码,JSP页面会自动获取其文本框里的账号和密码,将该账号与密码与数据库里登录表中的账号与密码对比,如果一致,系统就会输出该用户的快递信息,如果账号不一致,就会输出没有该账号,如果密码不一致,则输出账户与密码不匹配。
实现过程:
所属页面:kdgj.html、denglu.jsp
表单属性:action=denglu.jsp method="get"
界面设计如图5.10所示
图5.10
页面设计如表5.5所示
表5.5登录信息列表
名称 | 类型 | 含义 |
txtUser | Text | 账号 |
txtPassword | Password | 密码 |
dl | button | 登录 |
faihui | button | 返回首页 |
5.4 注册模块
实现目标:用户点击系统网站首页上的注册按钮,页面就自动跳转到注册界面,用户在注册界面上的用户名文本框里输入账号,在密码文本框里输入密码,在再次输入密码文本框里输入密码,JSP页面会自动获取其文本框里的账号和密码,将账号以及密码插入到登录表中,并且注册、登录界面可以相互跳转。
实现过程:
所属页面:zc.html、zc.jsp
表单属性:action=zc.jsp method="get"
界面设计如图5.11所示
图5.11
页面设计如表5.6所示
表5.6注册信息列表
名称 | 类型 | 含义 |
user | Text | 账号 |
Password21 | password | 密码 |
Password2 | Password | 密码 |
zc | button | 注册 |
qingkong | reset | 清空表单 |
5.5合作伙伴模块
实现目标:用户点击网站首页的快递接口里的合作伙伴,页面就会跳转到合作伙伴界面,用户在此页面中姓名文本框里输入姓名,在公司文本框里输入公司名称,在单选框里选择性别,JSP页面会自动获取其文本框里的姓名和公司名称以及性别,将合作伙伴信息插入到合作伙伴表中。
实现过程:
所属页面:hzhb.html、hzhb.jsp
表单属性:action=hzhb.jsp method="get"
界面设计如图5.12所示
图5.12
页面设计如表5.7所示
表5.7快递公司注册信息列表
名称 | 类型 | 含义 |
name | Text | 姓名 |
gs | text | 公司名称 |
xb | raio | 性别 |
ljhz | button | 立即合作 |
Fanhui | reset | 返回 |
5.6管理员模块
实现目标:管理员首先点击网站首页的管理员按钮后,页面就会自动跳转到管理员登录界面,然后用户在此页面中的账号文本框里输入自己的账号,在密码文本框里输入相应的密码, JSP页面会自动获取其文本框里的账号以及密码与登录表中账号密码相比较之后做出相应的响应。
实现过程:
所属页面:guanliyuan.html、gly.jsp
表单属性:action=gly.jsp method="get"
界面设计如图5.13所示
图5.13
页面设计如表5.9所示
名称 | 类型 | 含义 |
txtUser | Text | 账号 |
txtPassword | Password | 密码 |
dl | button | 登录 |
faihui | button | 返回首页 |
表5.9登录信息
5.7本章小结
本章节详细对上一阶段划分的系统的各个模块分别进行了详细分析,然后介绍了该系统的各个模块界面设计和页面设计,清晰完整的介绍了该系统的各个模块要完成的功能,给下一步编码提供了指导和要求,因此,详细设计极为重要,必须要到符合客户要求,认真完成各部分的分析。
本章节是软件开发设计的第四个步骤,是对上一章节对系统分成的模块进行的详细分析,为下一步骤每一部分编写代码提供了依据,认真完成和分析了系统的每个模块,是系统顺利完成设计和实现的重要基础。
第六章 系统测试
6.1引言
在本章节中要在上一章节编写代码之后才进行测试,软件测试是系统开发的重中之重,它是对前面进行的需求分析、系统设计以及编码的最终复审;进行此过程的目的是为了尽可能多的发现系统存在的潜在错误及问题,以保证该系统的质量。
软件的开发与设计是一项大项目,文档的数量不仅多,而且文档的内容比较复杂,再加之由于软件产品本身是无形的、复杂的、知识密集的逻辑产品,其中难免会存在着各种各样的问题及错误,再者,为了保证软件的可靠性;因此,需要通过测试检查来发现其中潜在的错误,以此来保证软件系统的质量,使其尽可能的符合用户的需求。
在此章节中,将采用白盒测试和黑盒测试两种方法分别对此系统分别进行测试,尽可能多的发现系统中存在的问题,及早发现尽早解决,系统问题发现的越晚,所要付出的代价就越大,因此,本章节是该系统设计最重要的部分,要认真对待。
6.2白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构对系统的程序进行测试,通过测试来检测系统内部的动作是否按照前面分析的设计规格说明书的规定正常运行,检验程序中的每条通路是否都能够按用户预定要求进行着正确的工作。这一方法就是把测试对象看作一个打开的盒子,然后测试人员依据系统程序内部逻辑结构的相关信息,设计或选择测试用例,对系统程序存在的所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
白盒测试是以代码的结构为依据的,因此被测试的对象基本上是系统的源程序,是以系统程序的内部逻辑结构为基础设计测试用例的。以下分别是白盒测试的三种方法;逻辑覆盖、循环覆盖、基本路径覆盖。
逻辑覆盖的测试过程是逐渐进行越来越完整的通路测试,逻辑覆盖又大致分为语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖等不同的覆盖标准。
以下是登录的逻辑覆盖测试,如下图6.1所示,
图6.1登录模块的测试流程图
以下是查询模块的逻辑覆盖测试,如下图6.2所示
图6.2查询模块的测试流程图
循环覆盖测试也是白盒测试中最常见的测试方法,但是本系统比较简单,未曾涉及到循环方法的使用,因此,在本小节中将不使用循环覆盖的方法。
基本路径覆盖也是白盒测试方法里所用的一种方法,此方法是分析员在程序控制流程图的基础上,通过对控制结构的环路复杂性的分析,导出系统基本可执行路径的集合,从而进行测试。由于本系统的设计相对比较简单,并没有涉及到很复杂的环路,所以,本系统将不进行基本路径覆盖的测试。
以上内容是对本系统进行了白盒测试的内容,此阶段比较精简,有些错误还是没能发现,下一阶段将进行系统的黑盒测试,继续查找系统的错误。
6.3黑盒测试
黑盒测试也称功能测试,它是通过测试来检测系统的每个功能是否都能够正常运用。在测试过程中,把程序看作一个不能打开的黑盒子,在完全不考虑系统程序内部结构和内部特性的情况下,对系统程序的接口进行测试,它只检查系统程序的功能是否按照需求规格说明书的规定正常使用,系统程序是否能适当地接收输入数据而产生相应的输出信息。黑盒测试着眼于系统程序外部结构,不考虑内部逻辑结构,主要是针对系统软件页面和软件功能进行测试。 黑盒测试完全是从用户的角度出发,对输入数据与输出数据的对应关系进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,采用黑盒测试方法是发现不了这些问题的,这也是黑盒测试所存在的限制。
黑盒测试注重的是软件的功能;因此,在设计测试用例的时候,需要认真研究需求分析和总体设计阶段的有关输入、输出之间的关系等信息;黑盒测试又分为等价类划分、边界值分析、错误推测和因果图4种方法;以下部分是采用每种方法分别对系统进行测试,详细情况如下所示。
- 等价类划分
该部分分别对系统的各模块进行测试,将选取少量的最具有代表性的几组数据作为测试数据,该方法是用较小的代价来暴露出系统存在的较多潜在错误。等价类划分法是把所有可能的存在数据类型都考虑进去,例如将输入数据分为有效的和无效的数据进行进行测试,并将它们划分成若干个等价类,测试每个等价类的代表值就等于对该类其它值进行测试,这样,能很大的提高测试效率,并且能够取得良好的测试结果。以下是对各个部分测试的详细分析。
1.1登录部分
首先进行的是对登录模块的测试,以下是先按照查找等价类、等价类用例、测试等次序依次对各个部分进行测试,其内容主要是是对登录时用户账号验证的等价类划分的测试,分别对账户和密码进行分析,详细情况如下表6.1所示。
表6.1登录输入条件的等价类表
输入条件 | 有效等价类 | 无效等价类 |
账号 | 1.12位数字字符 |
4.多余12位数字字符 |
密码 | 5.20位字符 |
|
经过对账户密码的分析过后,接下来是对每种情况列举出一组代表值进行测试,下表6.2是账号验证的测试用例
表6.2 登录的测试用例
测试数据 | 期望结果 | 覆盖范围 |
15234052011 dyr682963 | 输入有效 | 1、5 |
Djwaoif2134 374dsuwqir | 输入无效 | 2 |
213424 8524tdhfjks | 输入无效 | 3 |
3245667589800 sjhhgh7890 | 输入无效 | 4 |
15234052011 ewrwer24 | 输入无效 | 5 |
15234052011jhksfltuiwelr23455 | 输入无效 | 7 |
下图是输入正确的账户密码的情况,详细情况如下图6.1和图6.2所示
图6.1登录正确的账户密码 图6.2登录成功
下图是输入了错误的账号或者是密码后出现的情况,详细情况如下图6.3所示。
图6.3登录失败
以上部分是对登录模块测试的详细过程,在这一部分中我们很全面的查找了该模块可能存在的潜在错误,但是在该模块中没有发现问题,说明此模块功能的实现比较完善,目前还没有发现比较突出的问题。
1.2查询模块
此部分是对查询模块的测试,该模块可以分成按快递单号直接查询、地区加快递单号查询、快递公司加快递单号查询、快递时效查询、快递价格查询等;以下是先按照查找等价类、等价类用例、测试等次序依次对各个部分进行测试,其主要内容主要是对快递单号的测试;以下是对快递单号查询时验证快递单号的等价类划分的测试,如下表6.3所示。
输入条件 | 有效等价类 | 无效等价类 |
快递单号 | 1.2位数字字符 |
|
表6.3查询输入条件的等价类表
结果上面对快递的单号的测试之后,接下来将列举出每一种情况的代表数据,详细情况下表6.4所示,以下是快递单号验证的测试用例。
测试数据 | 期望结果 | 覆盖范围 |
01 | 输入有效 | 1 |
D1 | 输入无效 | 2 |
1 | 输入无效 | 3 |
123 | 输入无效 | 4 |
表6.4 查询的测试用例
下图是输入正确的快递单号出现的情况,详细情况如图6.4所示。
图6.4查询成功
下图是输入了快递单号D1以后出现的情况,如下图6.5所示
图6.5查询失败
下图是输入了快递单号1以后出现的情况,如下图6.6所示
图6.6查询失败
下图是输入了快递单号123以后出现的情况,如下图6.7所示
图6.7查询失败
接下来是对快递单号加地区的测试,其结果会出现三种情况,一种情况是既是该地区又存在该快递则显示该快递的详细信息;另一种情况是不属于该地区但是又该快递的存在则显示不属于该地区;最后一种情况是既不属于该地区又不存在该快递则显示没有该编号;详细情况如下图6.8、6.9、6.10所示。
图6.8查询失败 图6.9查询成功 图6.10查询失败
这一部分是对快递公司加快递单号的测试,其结果也会出现三种情况,一种情况是既属于该快递公司又存在该快递则显示该快递的详细信息;另一种情况是不属于该快递公司但是又该快递的存在则显示不属于该快递公司;最后一种情况是既不属于该快递公司又不存在该快递则显示没有该编号;详细情况如下图6.11、6.12、6.13所示。
图6.11查询成功 图6.12查询失败 图6.13查询失败
接下来这一部分是对快递价格查询的测试,通过输入寄件地和收件地来查询快递所需要的时间,因此,该部分测试的主要内容是对寄件地和收件地的测试,首先,下面是对 寄件地和收件地的等价类划分的测试,详细情况如下表6.5所示。
表6.5查询输入条件的等价类表
输入条件 | 有效等价类 | 无效等价类 |
寄件地 | 1.20位以内的字符 | 2.仅含其他类型的字符 |
收件地 | 3.20位以内的字符 | 4.仅含其他类型的字符 |
其次是对以上分析的等价表列举出一组代表值进行测试,详细情况如下表6.6所示。
测试数据 | 期望结果 | 覆盖范围 |
太原、深圳 | 输入有效 | 1、3 |
32132、深圳 | 输入无效 | 2 |
太原、22434 | 输入无效 | 4 |
1237、6890 | 输入无效 | 2、4 |
表6.6 查询的测试用例
其测试可能出现的情况有两种,一种情况是输入了正确寄件地址和收件地址后显示的快递时间;另一种是输入了错误的寄件地址或者是收件地址后出现的系统提示,请检查输入的地址;详细的情况如下图6.14和6.15所示。
图6.14查询成功 图6.15查询失败
最后一部分是对快递价格查询的测试,通过输入寄件地址、收件地址和重量来查询快递的价格,因此,该部分测试的主要内容是对寄件地址、收件地址以及重量的测试,首先下面是对寄件地址、收件地址、重量的等价类划分的测试,详细情况如下表6.7所示。
表6.7查询输入条件的等价类表
输入条件 | 有效等价类 | 无效等价类 |
寄件地 | 1.20位以内的字符 | 2.仅含其他类型的字符 |
收件地 | 3.20位以内的字符 | 4.仅含其他类型的字符 |
重量 | 5.10位以内的数字字符 |
|
其次是对以上分析的等价表列举出一组代表值进行测试,详细情况如下表6.8所示。
表6.8查询的测试用例
测试数据 | 期望结果 | 覆盖范围 |
太原、深圳、1 | 输入有效 | 1、3 |
32132、深圳、1 | 输入无效 | 2 |
太原、22434、1 | 输入无效 | 4 |
1237、6890、1 | 输入无效 | 2、4 |
太原、深圳、胜多负少 | 输入无效 | 1、3、6 |
太原、深圳、623856794132 | 输入无效 | 1、3、7 |
其最终可能出现的情况有两种,一种是输入了正确寄件地址、收件地址和重量之后得出的查询结果价格,另一种是错误的输入了寄件地址或者收件地址或者重量之后出现的系统提示,请检查寄件地或收件地,详细情况如下图6.16、6.17所示。
图6.16查询成功 图6.17查询失败
以上的全部内容就是查询模块测试的详细情况,在此部分中,我们全面的对此模块进行了测试,尽可能的找出此模块中可能存在的潜在问题,但是在此模块中没有发现比较突出的问题,说明此模块中存在的问题较少,该模块功能的实现比较全面,剩下的一些少的问题只能在投入使用过程中解决了。
1.3注册模块
此部分是对登录模块的测试,该模块是用户在系统网站上填写信息,网站会把用户信息上传给数据库,用户因此注册成功成为会员;以下内容是先按照查找等价类、等价类用例、测试等次序对该部分进行测试,其主要内容主要是对用户输入的账号和密码的测试;因此,该部分的等价类划分的测试以及测试用例与上面登录模块的一致,如上表6.3、6.4所示。
经过上面的测试后,系统有可能出现三种结果,一种情况是当用户输入的账号已经注册时,系统会没有显示,另一种情况是用户输入的两次密码不相同时系统会提示,两次输入的密码不一致;最后一种情况,用户输入新的账户以及自己设定的密码后,系统会提示注册成功。具体的情况如下图6.18、6.19所示。
图6.18注册成功 图6.19注册密码不一致
以上内容是对注册模块的简单测试,由于与登录模块的测试内容相一致,因此,在此部分将不再重复说明。此部分的功能比较简单,实际上的功能就是实现了在JSP上获取HTML上的信息并把这些信息传到数据库,最后,把这组数据插入到数据库中并保存。在对此部分进行了测试后,发现此部分并不存在着一些明显的错误,一些潜在的、难以发现的问题,还有待考证。
1.4合作伙伴模块
该模块是对合作伙伴模块的测试,该模块是快递公司在网站上输入信息后,网站会把这些信息传给数据库,数据库会记录着在册,这样,快递公司就注册成功,成为本系统的合作伙伴;以下内容是先按照查找等价类、等价类用例、测试等次序对该部分进行测试,其主要内容是对快递公司输入的姓名和快递公司以及选择的性别的测试,由于性别是单选项,用户不可能出现错误,因此不用对性别进行测试;以下是该部分的等价类划分的测试,如下表6.9所示。
表6.9注册输入条件的等价类表
输入条件 | 有效等价类 | 无效等价类 |
姓名 | 1.10位以内的字符 | 2.仅含其他类型的字符 |
快递公司 | 3.10位以内的字符 | 4.仅含其他类型的字符 |
其次是对上面分析的等价类列举出一组最具有代表性的值进行测试,详细情况如下表6.10所示。
测试数据 | 期望结果 | 覆盖范围 |
小明、圆通快递 | 输入有效 | 1.3 |
32132、圆通快递 | 输入无效 | 2 |
小明、3425435 | 输入无效 | 4 |
表6.10注册的测试用例
经过上面的分析之后,我们将进行下一步的工作——测试,测试将可能出现两种结果,一种情况是当用户没有完整的输入个人信息,系统就会提示用户,没有填写完整信息,另一种情况是用户输入了完整的信息后,系统提示合作成功。以下是该测试结果的
具体情况,如图6.20、6.21所示。
图6.20没有填写信息 图6.21合作成功
以上内容就是对合作伙伴模块测试的详细情况,由于本模块的功能比较简单,测试起来就比较简单;在经过测试后发现该部分存在的问题易于发现,也比较容易解决,剩下的没有发现的潜在问题只能在维护期间发现并修改了。
1.4管理员模块
该模块是对管理员模块的测试,该模块是管理员在网站上输入账号信息后,网站会把输入的账号信息与数据库里的信息相比较,如果正确,系统会把快递、会员、合作伙伴的信息显示出来,其主要内容是对管理员输入的账号以及密码的测试,由于此部分内容的测试与第一部分登录模块的测试相同,在这里将不再详细说明,只介绍测试结果。
其详细情况如下图6.22、6.23所示。
图6.22 图6.23
以上内容是对管理员模块的的测试,本模块的功能比较简单,因此,测试比较简单,该模块存在的问题比较少。
2.边界值分析
除过上面所介绍的等价类分析法,我们还经常使用边界值分析方法进行测试,所谓边界值,就是输入等价类和输出等价类在边界上的情况。在测试的过程中,如果忽略了这些边界值的条件,系统就会在输入或输出范围出现大量的错误,因此,系统还是要进行边界值分析,能更多的找出系统的错误,以保证系统的质量。以下是对本系统的边界值测试用例的详细情况,如下表6.11所示。
表6.11边界值分析
输入等价类 | 测试用例说明 | 测试数据 | 期望结果 | 选取理由 |
账号 | 1个数字字符 13个数字字符 11个数字字符 有一个非数字字符 全部是非数字字符 12个数字字符 | 2 1234564325234 12342113343 243454A1234 Asddfsjsdadf 15234052011 | 显示出错 显示出错 显示出错 显示出错 显示出错 显示有效 | 仅有一个合法字符 比有效长度多一个字符 比有效长度少一个字符 含有一个非数字字符 12个非数字字符 类型及长度均有效 |
密码 | 1位字符 19位字符
21位字符
20位字符 | E 124345112312321123 12345657577677754323 3465432331321344334 | 显示出错
显示出错
显示出错
显示有效 | 仅有一个合法字符
比有效长度少一个字符
比有效长度多一个字符
类型及长度均有效 |
姓名 | 11位字符
10位以内的字符 | 小明笑话小李是个大笨蛋 李晓明 | 显示出错
显示有效 | 比有效长度多一个字符
类型及长度均有效 |
寄件地 | 21位字符
20位以内的字符
| 山西省太原市万柏林区航道局亏即可考虑 山西省太原市 | 显示出错
显示有效 | 比有效长度多一个字符
类型及长度均有效 |
快递公司 | 11位字符
10位以内的字符 | 几十块杜绝浪费客观水电 圆通快递 | 显示出错
显示有效 | 比有效长度多一个字符
类型及长度均有效 |
以上内容是对系统进行了边界值分析,主要是对账号、密码、姓名、寄件地进行了测试,由于寄件地址和收货地址的类型一样,因此只进行了对寄件地址的测试,其他的数据由于没有准确的边界,所以不用在对其进行测试了;再经过其边界值分析后,系统有些潜在的问题能够检测出来;保证了系统的质量。
- 错误推测
错误推测法也是黑盒测试的一种方法,主要是按照人们的经验、直觉和简单的判断来找出错误,测试员会列举出系统可能出现错误地方的测试用例来进行测试;正是由于这种测试方法过于简单,发现的错误较少,所以不经常使用此方法来进行测试。因此,本系统将不进行了错误推测法来进行测试。
- 因果图
因果图也是黑盒测试的一种方法,前面介绍的等价类划分法和边界值分析法都只是对输入数据进行单个分析测试,并没有考虑到这些数据的组合在一起的测试情况;因此,才需要采用因果图法对系统进行测试。由于本系统涉及到的数据比较少,因此,系统输入数据并不具有很复杂的组合情况,所以,再此,没有对本系统进行因果图法的测试。
6.4本章小结
在本章节里叙述了软件测试的相关内容,主要是采用白盒测试和黑盒测试对系统进行测试,尽可能多的发现系统中的问题;其中最重要的就是黑盒测试,比较直观,清晰地对系统进行了测试,在此章节中,黑盒测试均采用了等价类划分和边界值分析的方法进行了分析。本章节是此次系统设计最重要的阶段,系统分析的越早,发现的错误就越早,这样最终由系统错误造成代价就越小,正因为系统分析是保证软件质量的重要手段,因此,软件测试要越早越好。测试做的越详细越好。因此,系统测试必不可少,而且起着至关重要的作用。
本章节是系统设计的第五个步骤,也是必不可少的关键一步,系统在编完代码后,即使全部功能都能实现,也还是会有一些潜在的错误没有发现,如果不进行系统测试就将系统投入使用,每当用户发现错误就返还给程序员重新设计,就会浪费更多的人力物力。因此,系统测试必不可少。
第七章 系统维护
7.1引言
此章节是软件开发的最后一个部分,也是最费时费力的一部分;但是绝不能因此而放弃对软件的维护;软件维护是指在软件系统交付用户使用以后,为了修改在系统运行过程中出现错误,或者是要满足用户提出来的对系统的新的需求而加入新功能而进行的修改软件的过程;总之,软件维护的工作可以分为4种类型:改正性维护、适应性维护、完善性维护和预防性维护。
改正性维护是为了解决把系统投入到市场后,用户在使用了软件产品后才逐渐暴露出来的错误,对这些错误进行诊断、定位、改错的过程。适应性维护是为了适应计算机和软件市场的快速发展,使系统能够适应外部硬的硬件和软件环境或者数据环境快速发生的变化,而进行修改软件的过程。完善性维护是为了扩充软件的功能,增强软件性能、提高软件运行效率和可维护性而进行的一系列维护活动。预防性维护是为了提高软件在未来的可维护性、可靠性等功能,或为了给未来的改进奠定基础而修改软件的过程。
在此章节中,将根据可理解性、可测试性、可修改性、可靠性、可移植性、可使用性、效率等方面来判断软件的可维护性。
可理解性是指维护人员通过阅读系统设计相关的文档以及源代码,以此来理解系统的结构、接口、功能和内部过程的难易程度。可测试性是指验证系统正确性的难易程度。可修改性是指修改系统程序的难易程度。可靠性是指系统按照客户的要求和设计目标,在给定一段时间系统能正常运行的概率。可移植性是指将系统从一个计算机环境移到另一个计算机环境的适应能力。可使用性是指从用户的观点出发,系统方便快捷,易于使用的程度。效率是指一个系统能够运行且不浪费计算机资源的程度。
7.2可行性研究
目前为止,许多系统的维护工作十分困难,原因在于这些系统的文档和源代码数量多而且难以理解,因此造成了系统出现漏洞后难以修改。软件维护实际上是由于种种客观原因不能真正实现。例如,文档不全、质量差、难以理解、开发过程采用结构化方法、忽视程序设计风格等。最终造成了系统在软件维护中的工作量加大并且成本上升、修改出错率不断升高。由于软件维护工作面广,涉及的内容较多,维护难度较大,稍有不慎,就会在修改时将新的问题带入系统,使系统维护更加困难。因此,为了使软件维护更加容易,必须考虑软件具有可维护性。
软件的可维护性是指纠正软件系统出现的错误和缺陷,以及为了满足用户提出新的要求对系统进行修改、扩充或压缩的容易程度。以下表格是显示了本系统的可维护性的特性
表7.1该系统维护特性
| 改正性维护 | 适应性维护 | 完善性维护 |
可理解性 | √ |
|
|
可测试性 | √ |
|
|
可修改性 | √ | √ |
|
可靠性 | √ |
|
|
可移植性 |
| √ |
|
可使用性 |
| √ | √ |
效率 |
|
| √ |
7.3本章小结
在本章节中叙述了软件维护的相关内容,主要的工作是做好软件系统的维护,系统维护是系统设计的最后一步,也是历时最长的一个阶段。在系统交付使用开始就进入了维护阶段,它可以持续几年甚至是几十年。因此,不论维护的时间的到底有多长,维护的问题有多简单,都要认真完成维护的工作,坚持认真完成本系统的最后一部分。
到此为止,本系统才算是真正完成;前面的每一个步骤都是缺一不可的;认真做好每一步骤,才会有一个好的成果。
结论
基于JSP物流信息网的设计与实现这个课题紧跟社会发展的脚步,使用了比较流行的B/S模式和比较简单易操作的MYSQ数据库来完成此次毕业设计。该系统充分考虑用户的使用感受,一切站在用户角度来设计和开发此网站,因此,此网站设计比较简单易操作,系统的人机交互界面比较简单清楚,但是用户要求的最基本的功能本系统都具备;此外本系统网站实现了用户在网站上填写快递编号来查询快递信息,也可以根据地区和快递公司对快递进行查询,用户还可以查询快递的实效和价格,最重要的是,用户可以在网站上填写个人信息注册成为本系统的会员,这样,用户就能享受到本系统提供的更优质的服务,快递公司也可以在本系统网站中填写相关信息成为本系统的合作伙伴。
但是也存在着一些缺憾,由于本人参与设计的软件不够多,所以实践能力比较差,对系统分析还是不够透彻,有些复杂的功能并没有实现,系统设计的比较简单精短;而且人机交互界面也不是很美观,并不是很吸引人;还有就是在编写代码的期间,编写遇到的问题不管是大问题还是小问题,自己都不能准确找到错误的原因,无从下手,没有积累一些解决问题的方法;总的来说,自己还存在着很多缺点和不足,还需要通过不懈的努力才能更好地完成项目。
通过此次系统的设计,我已经很清楚地认识到自己的一些缺点,还有很多的地方需要改进,这需要自己积累更多的知识和实践基础,因此我将多做几次系统设计,希望自己可以更加努力,在经过多次的系统设计后,能独立的解决问题,娴熟的完成系统设计。
参考文献
1.李爱萍、崔冬华、李东生.软件工程.人民邮电出版社.2014.3
2.刘於勋.web开发实用技术基础.清华大学出版社
3.崔尚森、张白一、张辰.web应用开发技术:JSP.西安电子科技大学出版社第二版
4.王珊、萨师煊.数据库系统概论.高等教育出版社第五版
5.周建儒.JSP中自定义标签的实现与部署.科技信息(科学教研).2008.(23):51-53
6. 何玉洁.数据库原理与应用教程.机械工业出版社.2003:23-78
7. 胡燕.软件工程与标准化.信息技术与标准化.2004.(12):17-21
8.Mcleod.Management Information system management in practice.Prentice Hall.1998:43-55
9.Raghu Ramakrishnan.Johannes Gehrke.Database Management System.McGraw-Hill Professional. 2007:180-213
10. Dionysios Tsichritzis C.Data Base Management Systems.1977:150-53
附录1
电子商务
电子商务是以信息网络技术为手段,以商品交换为中心的商务活动;也可以理解为在互联网、企业内部网上以电子交易方式进行交易活动和相关服务的活动,是传统商业活动各环节的电子化、网络化、信息化。
电子商务的崛起正是由于经济以及技术的快速发展得支持,电子商务的发展有进一步的带动了物流业的发展,在以前,还没有网购的时候,我们只知道EMS快递,而在近2、3年之内,出现了数百家快递公司,如现在发展较好的圆通、中通、韵达等;如此之多的快递,再加之它们属于不同的快递公司,这很难管理,而用户查询快递也不方便。因此,用户才需要一个系统来帮助他们来查询快递。由此可以看出电子商务与物流业息息相关。所以,本文也将对电子商务进行一些简单的分析。
虽然电子商务是一个新兴的行业,但它的发展前景是巨大的,并且它的发展速度也非常迅猛;例如,近年来非常火的微商和家喻户晓的淘宝,已经是非常流行了,比如说,在我们的村子里,有很多的家庭主妇已经在淘宝上开始购物。再者,电子商务也带动了其他行业的发展,例如,我们当地的苹果有很多,销售不出去并且在当地价格非常低,我们就可以在网上销往其他没有苹果的地区,这样就给农民们提供了一个销售的平台,便利了农民的生活。最终的要是它催生了一个新兴行业的产生和发展--物流业,一个伴随着电子商务发展的行业,正是由于它工作简单,所以适合各行各业的人参与工作,这样它就给千万个失业群众提供了工作,为社会的发展提供了一份贡献。最后,它方便了人们的生活,人们可以在网上选购各种所需要的物品,并且网上的物品多并且便宜,快递员可以送货到家,更加方便了人们的生活。
物流业,一个作为电子商务发展的新兴行业,它的发展使人们的生活更加便利;就算距离再远,家乡的父母也能捎来家乡的味道,并且人们在网上购买物品之后,物流公司就会根据地址,送货上门。物流业的发展是现代社会发展的缩影,时代在不断发展,物流也在不断的进步。
附录3
主要代码
主页代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>快递查询</title>
<script language="JavaScript">
function clickme()
{
window.location.href="zc.html";
}
function clickme1()
{
window.location.href="kdgj.html";
}
function clickme2()
{
window.location.href="guanliyuan.html";
}
</script>
</head>
<style>
body{ no-repeat;background-postion:center;background-position:top;background-size:cover; }
</style>
<body background="C:\Users\dongyuerun\Desktop\毕业\背景图片\4.jpg">
<center>
<h1>快递查询,欢迎您</h1>
<br>
<hr>
<style>
*{margin0;padding:0;}
#nav{backgroud-color:#ccc;width:960px;margin:0 auto;height:40px;}
ul{list-style:none;}
ul li{float:left;text-align:center;padding:20px;line-height:40px;}
a{text-decoration:none;color:#000;display:block;}
a:hover{background-color:930;color:#fff}
.erji{float:none;background-color:#ccc;}
.erji a:hover{color:#fff;background-color:#930;}
.erji_ul{display:none;}
ul li:hover .erji_ul{display:block;}
</style>
<table border=0>
<tr>
<td>
<div id="nav">
<ul>
<li><a href="#">全国站</a>
<ul class="erji_ul">
<li class="erji"><a href="shenzhen.html">深圳站</a></li>
</ul>
</li>
<li><a href="#">查快递</a>
<ul class="erji_ul">
<li class="erji"><a href="kdgsdq.html">快递公司大全</a></li>
<li class="erji"><a href="gjkddq.html">国际快递大全</a></li>
</ul>
</li>
<li><a href="#">寄快递</a>
<ul class="erji_ul">
<li class="erji"><a href="kdsxcx.html">快递时效查询</a></li>
<li class="erji"><a href="kdjgcx.html">快递价格查询</a></li>
</ul>
</li>
<li><a href="#">查网点</a>
<ul class="erji_ul">
<li class="erji"><a href="kddhcx.html">快递电话大全</a></li>
</ul>
</li>
<li><a href="#">快递接口</a>
<ul class="erji_ul">
<li class="erji"><a href="hzhb.html">合作伙伴</a></li>
</ul>
</li>
<li><a href="kdgj.html">快递管家</a></li>
</ul>
</div>
<input type="submit" value=登陆 onclick="clickme1()" >
<input type="submit" value=注册 onclick="clickme()" >
<input type="submit" value=管理员 onclick="clickme2()" >
</td>
</tr>
<tr>
<td align=center>
<form action=chaxun.jsp method="get">
<h2> <font color=white>全新升级 智能查询</h2>
<input type="text" name="text" placeholder="请输入订单号">
<input type="submit" value=查询 >
</from>
</td>
</tr>
</table>
</center>
</body>
</html>
查询代码:
<%@ page language="java" import="java.sql.*" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>快递查询</title>
</head>
<body bgcolor="33ccff">
<center>
<h1>查询结果</h1><br>
<hr>
<table border=1 align="center">
<tr>
<th>快递编号</th>
<th>姓名</th>
<th>手机号</th>
<th>出发地</th>
<th>接收地</th>
<th>快递单位</th>
<th>现在位置</th>
</tr>
<%
String driverName="com.mysql.jdbc.Driver";
String userName="root";
String userPasswd="123";
String dbName="bishe";
String tableName="chaxun";
String url="jdbc:mysql://localhost:3306/"+dbName;
Connection con=null; Statement st=null; ResultSet rs=null;
try
{
Class.forName(driverName).newInstance();
}catch(ClassNotFoundException e){
System.out.print("Error loading Driver,不能加载驱动程序");
}
try
{
con=DriverManager.getConnection(url, "root", "123");
}catch(SQLException er)
{
System.out.print("Error getConnection,不能连接数据库");
}
try{
String number=request.getParameter("text");
st=con.createStatement();
String sql="select * from "+tableName+" where number ="+number;
rs=st.executeQuery(sql);
if(rs.next()){
out.println("<tr>");
out.println("<td>"+rs.getString("number")+"</td>");
out.println("<td>"+rs.getString("xingming")+"</td>");
out.println("<td>"+rs.getString("shoujihao")+"</td>");
out.println("<td>"+rs.getString("cfd")+"</td>");
out.println("<td>"+rs.getString("jsd")+"</td>");
out.println("<td>"+rs.getString("kd")+"</td>");
out.println("<td>"+rs.getString("xz")+"</td>");
out.println("<tr>");
}else{
out.print("<script language='javascript'>alert('没有该编号!');history.back();</script>");
}
rs.close();
st.close();
con.close();
}
catch(SQLException er)
{System.out.println("Error executeQuery,不能执行查询!");}
%>
</center>
</body>
</html>