快递送货信息管理系统的设计

更新时间:2024-04-21 16:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

快递送货信息管理系统的设计和实现

(姓名)

(浙江海洋学院 数理与信息学院 A0 计算机,浙江 舟山 316000)

摘 要

快递业是我国发展最快的行业之一,随着人们生活水平的提高,人们推崇更方便快捷的物流,特别是随着网上购物的流行,大大加快了我国快递业的发展。快递物流服务涉及运输、仓储、配送等多个环节,硬件方面的园区建设与软件方面的标准化信息化建设环环相扣,缺一不可。因此,需要有相关软件对各个快件信息进行管理,优质的快递送货信息管理系统的软件具有很大的市场需求。

本文是软件工程设计快递送货信息管理系统的开发说明,重点描述运用软件工程知识对系统进行分析、设计和实现的思想,其中包括软件生命周期的三个主要方面:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码、测试)和运行维护。通过实际的运用软件工程知识处理问题,加强程序的规范性、清晰性、可靠性,并且使得程序易于维护。

本软件前台设计由JAVA实现,后台用Access管理数据。系统主要的功能为送货信息的录入、查询、更新和删除。本软件分四个操作界面,各个界面简洁,操作方便,容易上手。信息的录入只要在录入界面输入快件的相关信息就可添加到数据库,信息的查询只要在查询界面输入快件的运单号码就可显示该快件的全部信息,信息的更新只要在更新界面输入快件的运单号码就可直接更新信息,信息的删除只要在删除界面输入要删除快件的运单号码就可删除该快件的全部信息。

【关键词】:快递送货,信息管理系统,Java,Access

1

目录

摘要……………………………………………………………………………………………….….....1 1. 概述………………………………………………………………………………………………….3 1.1管理信息系统简介………………………………………………………………………………3 1.2快递送货信息管理系统产生的背景…………………………………………………….…...…3 1.3快递送货信息管理系统概述……………………………………………….………………...…3 2. 快递送货信息管理系统的分析…………………………………………………………...……….4 2.1问题定义………………………………………………………………………………….…..….4 2.2可行性研究……………………………………………………………………………….…..….4 2.2.1技术可行性……………………………………….………………………………….……...4 2.2.2经济可行性……………………………………….………………………………….….…..6 2.2.3操作可行性……………………………………….………………………………..………..6 2.3系统需求分析……………………………………….………………………………….………..7 2.3.1确定对系统的综合要求………………………………………………………...….……….7 2.3.2分析建模…………………………………………………………………………….………7 3. 快递送货信息管理系统的设计……………………………………………………………………10 3.1系统总体设计…………………………………………………………………………….……..10 3.1.1系统层次结构图……………………………………………………………………………10 3.1.2 IPO图……………………………………………………………………………………….11 3.2数据库设计……………………………………………………………………………………...12 3.2.1E-R图……………………………………………………………………………….……….12 3.2.2创建数据库…………………………………………………………………………………12 3.2.3建立数据源的说明…………………………………………………………………………13 3.3系统详细设计………………………………………………………………………….………..13 3.3.1程序流程图……………………………………………………………………….………...13 3.3.2主要功能盒图设计…………………………………………………………………………14 4. 快递送货信息管理系统的编码和测试………………………………………………..…………..16 4.1系统编码…………………………………………………………………………….…………..16 4.1.1系统的启动模块……………………………………………………………………………16 4.1.2录入新快件信息的模块……………………………………………………………………19 4.1.3查询快件信息的模块………………………………………………………………………24 4.1.4更新快件信息的模块………………………………………………………………………29 4.1.5删除快件信息的模块………………………………………………………………………34 4.2系统测试………………………………………………………………………………………...36 4.2.1黑盒测试的内容……………………………………………………………………………36 4.2.2使用黑盒测试情况分析……………………………………………………………………37 5. 总结…………………………………………………………………………………………………42 参考文献……………………………………………………………………………………………….43

2

1. 概述

1.1 管理信息系统简介

管理信息系统(Management Information Systems 简称MIS)在现代社会已深入到各行各业,由于计算机技术的迅速发展和普及,MIS事实上已成为计算机MIS。

管理信息系统既指使用信息技术来提供信息和通信服务的组织系统,又指计划开发和管理系统的企业功能,由人、计算机系统、软件系统、数据库系统构成的,是以人为主导,以计算机为工具,对企业的各种信息进行收集、存储、加工、分析,以协助企业的决策、管理与运行的系统。

由于科学技术总是不断发展和更新的,适应知识经济的新的管理模式和管理方法不断涌现:敏捷制造、虚拟制造、精益生产、客户关系管理、供应商关系管理、大规模定制、基于约束理论的先进计划、电子商务以及商业智能。管理信息系统必须不断融进这些新的思想和方法以适应企业的管理变革和发展要求。我们还要看到我们现在处在全球经济一体化的年代,网络经济的时代已经到来,由于互联网络和通信技术的高速发展,彻底改变了我们的经营管理模式和生活方式。只有采用基于互联网络的系统才能方便地实现资源共享以及全球供应链。

1.2 快递送货信息管理系统产生的背景

近几年,中国快运速递产业发展迅速,目前已经在中国东部地区形成了以沿海大城市群为中心的4大区域性快运速递圈。同时这4大快运速递圈又以滚动式、递进式的扇面辐射,带动中部和西部地区的发展。部分大城市和特大城市已经成为区域性快运速递产业发展中心,而且全国范围内形成了以基本交通运输干线为基础的若干快运速递通道,使中国快运快递业的点——轴——面系统初呈雏形。

随着人们生活水平的提高,人们推崇更方便快捷的物流,特别是随着网上购物的流行,大大加快了我国快递业的发展。快递物流服务涉及运输、仓储、配送等多个环节,硬件方面的园区建设与软件方面的标准化信息化建设环环相扣,缺一不可。因此,需要有相关软件对各个快件信息进行管理,及时地更新快件信息,完善物流管理机制,优质的快递送货信息管理系统的软件具有很大的市场需求。

1.3 快递送货信息管理系统概述

本次开发的快递送货信息管理系统软件的前台设计由JAVA实现,后台用Access管理数据,建立了快件信息的表。系统主要的功能为实现送货信息的录入、查询、更新和删除的简单操作,是一个简单的小型管理信息系统。进入快递送货信息管理系统的主界面后,有录入、查询、更新和删除这四个操作界面可供用户选择,各个界面简洁,操作方便,容易上手。信息的录入只要在录入界面输入快件的相关信息,然后确定录入就可添加到数据库中。信息的查询只要在查询界面输入快件的运单号码,然后在界面显示该快件的全部信息。信息的更新只要在更新界面输入快件的运单号码,就可直接更新信息,然后确定保存后就把新

3

信息保存到数据库中。信息的删除只要在删除界面输入要删除快件的运单号码,就可删除该快件的全部信息。

采用Java制作系统,它的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。而选择Access作为后台数据库,由于Access是基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一,使用简单,Access支持ODBC,连接数据库时比较好连接。

2. 快递送货信息管理系统的分析

2.1 问题定义

问题定义阶段必须确定系统应该做什么,一般应通过对客户的访问调查,让系统分析员扼要地写出关于问题性质、工作目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。由于此次程序实现的功能较少且简单,只是实现了对快件信息的录入、查询、更新、删除的简单管理操作,因此跳过。

2.2 可行性研究

2.2.1 技术可行性

Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的Hot Java浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。

Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。

Java具有一下特点:

1、Java语言是简单的。Java从C++演变而来,保留了C++的许多优点,去除了C++中易产生错误的功能,简化了内存管理,减轻了程序员进行内存管理的负担。

4

2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。Java语言全面支持动态绑定, Java语言是一个纯的面向对象程序设计语言。

3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口,它提供了用于网络应用编程的类库。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。Java对通过网络下载的类具有一个安全防范机制,并提供安全管理机制让Java应用设置安全哨兵。

6、Java语言是体系结构中立的。Java程序在Java平台上被编译为体系结构中立的字节码格式,然后可以在实现这个Java平台的任何系统中运行。

7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性。

8、Java语言是解释型的。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。

10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。线程的活动由一组方法来控制,Java语言支持多个线程的同时执行,并提供多线程之间的同步机制。

11、Java语言是动态的。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。

Access 是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。

Microsoft Access在很多地方得到广泛使用,例如小型企业,大公司的部门,和喜爱编程的开发人员专门利用它来制作处理数据的桌面系统。它也常被用来开发简单的WEB应用程序.这些应用程序都利用ASP

5

技术在Internet Information Services运行.比较复杂的WEB应用程序则使用PHP/MySQL或者ASP/Microsoft SQL Server.

它的使用方便程度和强大的设计工具为初级程序员提供许多功能。不过,这种便于使用可能使人误解。这类开发者都是没有在应用或者数据设计方面训练的办公室从业人员。因此许多人以为这样的开发者能够创造可用的系统,但也有很多人认为工具本身的局限性产生了这样的误导。一些专业的应用程序开发人员使用 Access 用作 快速应用开发,特别是给街道上的推销员制作一个初型或独立应用程序的工具。可是如果是透个网络存取数据的话,Access 的可扩放性并不高.因此当程序被较多使用者使用时,他们的选择多会是倾向于一些客户端-服务器为本的方案,例如 Oracle、DB2、Microsoft SQL Server、Windows SharePoint Services、PostgreSQL、MySQL、Alpha Five、MaxDB,或者Filemaker。无论如何,不少 Access 的功能(表单,报告,序列和VB代码)可以用作其他数据库的后期应用,包括 JET(档案为主的数据库引擎,Access 缺省使用)、Microsoft SQL Server、Oracle和任何其他跟ODBC兼容的产品。这种方法允许开发者把一个成熟的应用的数据移动到一台更大功率的服务器而没有已经在适当的位置牺牲发展。

综上面所述,本系统采用java语言和Access进行开发,技术是可行的。

2.2.2 经济可行性

虽然本系统实现的功能较少且简单,只是实现了对快件信息的录入、查询、更新、删除的简单管理操作,但是在作为一般的对送货信息管理,一些事务还是能够实现的,并可以快捷方便的进行对快件信息的基本管理,对于管理者来说也可以有效减轻他们的工作量提高工作效率,减少不必要的支出。开发本系统所需费用很低,而带来的效益是巨大而长久的,费用的支出和带来的巨大收益相比自是不能相提并论了,所以开发本系统在经济上是可行的。

2.2.3 操作可行性

本系统提供了直观的图形用户界面,用户进入快递送货信息管理系统的主界面后,有录入、查询、更新和删除这四个操作界面可供用户选择,各个界面简洁,操作方便,容易上手。信息的录入只要在录入界面输入快件的相关信息,然后确定录入就可添加到数据库中。信息的查询只要在查询界面输入快件的运单号码,然后在界面显示该快件的全部信息。信息的更新只要在修改界面输入快件的运单号码,就可直接修改信息,然后确定保存后就把新信息保存到数据库中。信息的删除只要在删除界面输入要删除快件的运单号码,就可删除该快件的全部信息。

另外,从法律方面来看,该系统的开发的合法的,完全可行。从社会效益方面来看,该系统的应用有利于快递业的发展,有利于经济发展。

6

2.3 系统需求分析

2.3.1 确定对系统的综合要求

1、功能需求。快递送货信息管理系统的必须完成的功能是:对快件信息的录入、查询、修改、删除的简单管理操作,系统的实现采用直观的图形用户界面,用户进入快递送货信息管理系统的主界面后,有录入、查询、修改和删除这四个操作界面可供用户选择,各个界面简洁,操作方便,容易上手。

2、性能需求。为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的性能需求:系统处理的准确性和及时性是系统的必要性能,快递送货信息管理系统在开发过程中,应该充分考虑以后的可扩充性,要求系统提供足够的手段进行功能的调整和扩充。

2.3.2 分析建模

1、对象模型

程序中建立5个类,类图如图2-2所示:

录入界面

查询界面 主界面 包含 更新界面 删除界面 如图2-2 类图

7

2、功能模型

数据流图如图2-3所示: 录入: 查询: 更新: 删除:

用户 快件信息 记录快件信息 存入数据库 快件信息 用户 快件信息 快件信息 快件信息 快件信息 用户 查询运单号码 快件信息 显示快件信息 快件信息 用户 快件信息 用户 查询运单号码 快件信息 更新快件信息 快件信息 用户 快件信息 快件信息 快件信息 用户 查询运单号码 快件信息 删除快件信息 快件信息 用户 快件信息 快件信息 系统用例图如图2-4所示: 用户

快递送货信息管理系统 快件信息录入 快件信息更新 快件信息查询 快件信息删除 图2-4 快递送货信息管理系统用例图

8

3、动态模型

主要状态转换图如下:

选择录 入信息 录入 do/录入快件信息 有效 继续

录入成功 选择查 询信息 输入 do/ 输入运单号码 确定 无效 核对 do/ 核对运单号码 有效 继续 显示 do/ 显示快件信息 提示 do/提示无效号码 重置 无效 图2-5 录入类的状态转换图 图2-6 查询类的状态转换图 选择更 新信息 输入 do/ 输入运单号码 确定 无效 核对 do/ 核对运单号码 有效 继续 更新 do/ 更新快件信息 提示 do/提示无效号码 重置 图3-7 更新类的状态转换图 9

选择删 除信息 输入 do/ 输入运单号码 确定 无效 核对 do/ 核对运单号码 有效 继续 删除 do/ 删除快件信息 提示 do/提示无效号码 重置 图2-8 删除类的状态转换图 3. 快递送货信息管理系统的设计

3.1 系统总体设计

3.1.1系统层次结构图

系统层次结构图如图3-1所示:

快递送货信息管理系统 快件信息录入模块快件信息查询模块快件信息更新模块快件信息删除模块 图3-1 层次图 10

3.1.2 IPO图

每个模块对应的IPO图如图3-2、3-3、3-4、3-5、3-6所示: 输入 选择要 操作的 菜单项 输入 处理 进入相应操作界面 输出 显示选择的操作界面 输入 新快件的信息 处理 信息保存到数据库 输出 更新后的数据库 图3-2 主模块的IPO图 图3-3 快件信息录入模块的IPO图 处理 输出 输入 要更新的运单号码 处理 1.校验运单号码 2更新信息 输出 有效的信息 更新后的数据库 要查询1.校验有效的 的运单运单号信息 号码 码 2.查询 信息

图3-4 快件信息查询模块的IPO图

输入 处理

要删除1.校验

的运单运单号

号码 码

2更新信

图3-5 快件信息更新模块的IPO输出 有效的信息 删除后的数据库 图3-6 快件信息删除模块的IPO图 11

3.2 数据库设计 运单号码 收件地址 快件名称 发件地址 3.2.1 E-R图

用户 管理 快件信息 发件联系 发件时间 收件时间 发送状态 收件联系 3.2.2 创建数据库

图3-7 系统E—R图 通过上面一节的分析,已经对本系统所要求的数据库结构有了一个初步的了解,并建立了一个数据库结构的框架。下面就需要将上面的数据库概念结构转化为Access数据库系统所能够支持的实际数据模型,也就是数据库的逻辑结构。

查询信息表,如下表所示: 字段名称 运单号码 快件名称 收件地址 发件地址 收件联系 发件联系 发送状态 发件时间 收件时间 数据类型 文本 文本 文本 文本 文本 文本 文本 文本 文本 说明 快件运单的号码 快件名称或类型描述 接收快件的地址 快件发出的地址 快件接收者及联系电话 快件发出者及联系电话 快件发送情况 快件发货时间 快件收到时间 下面给数据表初始化,如图3-8所示:

12

3.2.3创建数据源的说明

在运行该程序之前请先建立数据源,进行数据库的连接, 其步骤如下:

打开控制面板,双击ODBC DATA Source 图标,单击Add按钮,增加新的数据源。选择Mirosoft Access Driver(*.mdb)之后,单击\完成\按钮。在Data Source Name 文本框里输入mydb,再单击Select按钮, 把数据源data设成是我们要连接的数据库mydb.mdb,然后单击OK按钮。

3.3 系统详细设计

3.3.1程序流程图 启动界面 程序流程图如图3-9所示: 进入录入界面 进入查询界面 录入快件信息 数据保存到数据库 是 是否继续 否 退出 选择 进入更新界面 进入删除界面 输入运单号码 输入运单号码 输入运单号码 否 是否存在 是 显示快件信息 否 是否存在 是 输入新快件信息 否 是否存在 是 删除数据库里该快件信息 是 是否继续 否 新信息保存到数据库 是 是否继续 是否继续 否 退出 是 退出 否 退出 图3-9 程序流程图 13

3.3.2主要功能盒图设计

快递送货信息管理系统盒图如图3-10、3-11、3-12、3-13、3-14所示: 录入 进入录入 界面

进入录入界面 启动总界面 输入快件信息 选择操作 查询 进入查询 界面 更新 进入更新 界面 删除 进入删除界面 数据保存到数据库 是否继续录入 F 退出录入 重置 继续录入 T 图3-11 系统启动的盒图 图3-10 录入的盒图 进入查询界面 输入运单号码 是否存在 F 提示不存在 重置运单号码 F 退出查询 显示快件信息 是否继续 T 输入运单号码 T 图3-12 查询的盒图 14

进入更新界面 输入运单号码 是否存在 F 提示不存在 重置运单号码 更新快件信息 保存到数据库 是否继续 F 退出更新 T 输入运单号码 T 图3-13 更新的盒图 进入删除界面 输入运单号码 是否存在 F 提示不存在 重置运单号码 删除快件信息 保存到数据库 是否继续 F 退出删除 T 输入运单号码 T 图3-14 删除的盒图 15

4. 快递送货信息管理系统的编码和测试

4.1 系统编码

4.1.1 系统的启动模块

首先是启动系统的总模块,由此进入各个系统操作模块。 操作界面如下:

代码如下: import java.sql.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.border.*; import javax.swing.JOptionPane;

public class Run extends Frame implements ActionListener {

MenuBar bar=null;

Menu menu1,menu2,menu3,menu4;

16

MenuItem item1,item2,item3,item4; Add zengjia; Search chaxun; Update gengxin; Delete shanchu; Run() {

super(\快递送货信息管理系统\ zengjia=new Add(); chaxun=new Search(); gengxin=new Update(); shanchu=new Delete(); bar=new MenuBar();

menu1=new Menu(\信息录入\ menu2=new Menu(\信息查询\ menu3=new Menu(\信息更新\ menu4=new Menu(\信息删除\ item1=new MenuItem(\录入\ item2=new MenuItem(\查询\ item3=new MenuItem(\更新\ item4=new MenuItem(\删除\ menu1.add(item1); menu2.add(item2); menu3.add(item3); menu4.add(item4); bar.add(menu1); bar.add(menu2); bar.add(menu3); bar.add(menu4); setMenuBar(bar);

item1.addActionListener(this); item2.addActionListener(this); item3.addActionListener(this); item4.addActionListener(this);

Label label=new Label(\欢迎进入快递送货信息管理系统\ String s=\

17

Font f=new Font(s,Font.BOLD,22); label.setFont(f);

label.setBackground(new Color(200,255,200)); label.setForeground(Color.BLUE); add(label,\ setVisible(true); setSize(420,390); setLocation(400,160); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==item1) {

removeAll(); add(zengjia,\ validate(); }

if(e.getSource()==item2) {

removeAll(); add(chaxun,\ validate(); }

if(e.getSource()==item3) {

removeAll();

add(gengxin,\ validate(); }

if(e.getSource()==item4) {

removeAll();

add(shanchu,\ validate(); }

18

}

public static void main(String[] args) {

Run kd=new Run(); kd.setVisible(true);

kd.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0); } }); } }

4.1.2 录入新快件信息的模块

实现录入新的快件信息,并保存的数据库。 录入操作界面如下:

19

保存到数据库的界面如下:

代码如下: import java.sql.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.border.*; import javax.swing.JOptionPane;

class Add extends Panel implements ActionListener {

Connection con; Statement sql; Button b1,b2;

TextField tf1,tf2,tf3,tf4,tf5,tf6,tf7,tf8,tf9; Box baseBox,bv1,bv2; Add() { try {

Class.forName(\ }

catch(ClassNotFoundException e){} try {

con=DriverManager.getConnection(\ sql=con.createStatement(); }

catch(SQLException ee){} setLayout(new BorderLayout()); Panel p1=new Panel(); Panel p2=new Panel();

20

tf1=new TextField(20); tf2=new TextField(20); tf3=new TextField(20); tf4=new TextField(20); tf5=new TextField(20); tf6=new TextField(20); tf7=new TextField(20); tf8=new TextField(20); tf9=new TextField(20); b1=new Button(\录入\ b2=new Button(\重置\ b1.addActionListener(this); b2.addActionListener(this); p1.add(b1); p1.add(b2);

bv1=Box.createVerticalBox(); bv1.add(new Label(\运单号码\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\快件名称\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\收件地址\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\发件地址\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\收件人:电话\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\发件人:电话\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\发送状态\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\发件时间\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\收件时间\ bv1.add(Box.createVerticalStrut(8)); bv2=Box.createVerticalBox(); bv2.add(tf1);

21

bv2.add(Box.createVerticalStrut(8)); bv2.add(tf2);

bv2.add(Box.createVerticalStrut(8)); bv2.add(tf3);

bv2.add(Box.createVerticalStrut(8)); bv2.add(tf4);

bv2.add(Box.createVerticalStrut(8)); bv2.add(tf5);

bv2.add(Box.createVerticalStrut(8)); bv2.add(tf6);

bv2.add(Box.createVerticalStrut(8)); bv2.add(tf7);

bv2.add(Box.createVerticalStrut(8)); bv2.add(tf8);

bv2.add(Box.createVerticalStrut(8)); bv2.add(tf9);

bv2.add(Box.createVerticalStrut(8)); baseBox=Box.createHorizontalBox(); baseBox.add(bv1);

baseBox.add(Box.createHorizontalStrut(10)); baseBox.add(bv2); p2.add(baseBox); add(p1,\ add(p2,\

setBackground(new Color(200,255,200)); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==b1) {

try{ insert();}

catch(SQLException ee){}

JOptionPane.showMessageDialog(this,\数

\TION_MESSAGE); }

else if(e.getSource()==b2)

22

!\

{

tf1.setText(\ tf2.setText(\ tf3.setText(\ tf4.setText(\ tf5.setText(\ tf6.setText(\ tf7.setText(\ tf8.setText(\ tf9.setText(\ } }

public void insert() throws SQLException {

String s1=\ String s2=\ String s3=\ String s4=\ String s5=\ String s6=\ String s7=\ String s8=\

String s9=\

String temp=\ALUES (\

\

con=DriverManager.getConnection(\ sql.executeQuery(temp); con.close(); } }

23

4.1.3 查询快件信息的模块

实现对已在数据库中的快件信息的查询。

查询成功后在界面显示全部信息。 查询失败界面如下:

24

代码如下: import java.sql.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.border.*; import javax.swing.JOptionPane;

class Search extends Panel implements ActionListener {

Connection con; Statement sql;

TextField t1,t2,t3,t4,t5,t6,t7,t8,t9; Button b;

Box baseBox,bv1,bv2; int flag=0; Search() { try

{Class.forName(\ catch(ClassNotFoundException e){} try {

con=DriverManager.getConnection(\ sql=con.createStatement(); }

catch(SQLException ee){} setLayout(new BorderLayout()); b=new Button(\查询\ b.addActionListener(this); t1=new TextField(10); t2=new TextField(20); t3=new TextField(20); t4=new TextField(20); t5=new TextField(20); t6=new TextField(20); t7=new TextField(20);

25

t8=new TextField(20); t9=new TextField(20); t2.setEditable(false); t3.setEditable(false); t4.setEditable(false); t5.setEditable(false); t6.setEditable(false); t7.setEditable(false); t8.setEditable(false); t9.setEditable(false);

Panel p1=new Panel(),p2=new Panel();

p1.add(new Label(\输入要查询信息的运单号码\ p1.add(t1); p1.add(b);

bv1=Box.createVerticalBox(); bv1.add(new Label(\快件名称\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\收件地址\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\发件地址\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\收件人:电话\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\发件人:电话\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\发送状态\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\发件时间\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\收件时间\ bv1.add(Box.createVerticalStrut(8)); bv2=Box.createVerticalBox(); bv2.add(t2);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t3);

bv2.add(Box.createVerticalStrut(8));

26

bv2.add(t4);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t5);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t6);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t7);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t8);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t9);

bv2.add(Box.createVerticalStrut(8)); baseBox=Box.createHorizontalBox(); baseBox.add(bv1);

baseBox.add(Box.createHorizontalStrut(10)); baseBox.add(bv2); p2.add(baseBox); add(p1,\ add(p2,\

setBackground(new Color(200,255,200)); }

public void actionPerformed(ActionEvent e) { flag=0; try{search();}

catch(SQLException ee){} }

public void search() throws SQLException {

String hm,mc,sz,fz,sd,fd,zt,fj,sj;

con=DriverManager.getConnection(\ ResultSet rs=sql.executeQuery(\ while(rs.next()) {

hm=rs.getString(\运单号码\ mc=rs.getString(\快件名称\

27

sz=rs.getString(\收件地址\ fz=rs.getString(\发件地址\ sd=rs.getString(\收件联系\ fd=rs.getString(\发件联系\ zt=rs.getString(\发送状态\ fj=rs.getString(\发件时间\ sj=rs.getString(\收件时间\ if(hm.equals(t1.getText().trim())) {

t2.setText(mc); t3.setText(sz); t4.setText(fz); t5.setText(sd); t6.setText(fd); t7.setText(zt); t8.setText(fj); t9.setText(sj); flag=1; break; } }

con.close(); if(flag==0) {

t1.setText(\没有该信息\ t2.setText(\ t3.setText(\ t4.setText(\ t5.setText(\ t6.setText(\ t7.setText(\ t8.setText(\ t9.setText(\ } } }

28

4.1.4 更新快件信息的模块

实现对已在数据库中的快件信息的更新。 更新操作界面如下:

代码如下: import java.sql.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.border.*; import javax.swing.JOptionPane;

class Update extends Panel implements ActionListener {

Connection con; Statement sql; Button b1,b2,b3; Box baseBox,bv1,bv2;

TextField t1,t2,t3,t4,t5,t6,t7,t8,t9; Update() { try

29

{

Class.forName(\ }

catch(ClassNotFoundException e){} try {

con=DriverManager.getConnection(\ sql=con.createStatement(); }

catch(SQLException ee){} setLayout(new BorderLayout()); b1=new Button(\开始修改\ b2=new Button(\录入修改\ b3=new Button(\重置\ b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); t1=new TextField(10); t2=new TextField(20); t3=new TextField(20); t4=new TextField(20); t5=new TextField(20); t6=new TextField(20); t7=new TextField(20); t8=new TextField(20); t9=new TextField(20);

Panel p1=new Panel(),p2=new Panel(),p3=new Panel(); p1.add(new Label(\输入要修改信息的运单号码\ p1.add(t1); p1.add(b1);

bv1=Box.createVerticalBox(); bv1.add(new Label(\新)快件名称\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\新)收件地址\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\新)发件地址\

30

bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\新)收件人:电话\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\新)发件人:电话\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\新)发送状态\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\新)发件时间\ bv1.add(Box.createVerticalStrut(8)); bv1.add(new Label(\新)收件时间\ bv1.add(Box.createVerticalStrut(8)); bv2=Box.createVerticalBox(); bv2.add(t2);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t3);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t4);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t5);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t6);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t7);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t8);

bv2.add(Box.createVerticalStrut(8)); bv2.add(t9);

bv2.add(Box.createVerticalStrut(8)); baseBox=Box.createHorizontalBox(); baseBox.add(bv1);

baseBox.add(Box.createHorizontalStrut(10)); baseBox.add(bv2); p2.add(baseBox); p3.add(b2); p3.add(b3); add(p1,\

31

add(p2,\ add(p3,\

setBackground(new Color(200,255,200)); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==b1) { try {

String hm,mc,sz,fz,sd,fd,zt,fj,sj;

con=DriverManager.getConnection(\ ResultSet rs=sql.executeQuery(\ while(rs.next()) {

hm=rs.getString(\运单号码\ mc=rs.getString(\快件名称\ sz=rs.getString(\收件地址\ fz=rs.getString(\发件地址\ sd=rs.getString(\收件联系\ fd=rs.getString(\发件联系\ zt=rs.getString(\发送状态\ fj=rs.getString(\发件时间\ sj=rs.getString(\收件时间\ if(hm.equals(t1.getText().trim())) {

t2.setText(mc); t3.setText(sz); t4.setText(fz); t5.setText(sd); t6.setText(fd); t7.setText(zt); t8.setText(fj); t9.setText(sj); break; }

32

} con.close(); }

catch(SQLException ee){} }

if(e.getSource()==b2) { try { update(); }

catch(SQLException ee){} }

if(e.getSource()==b3) {

t1.setText(\ t2.setText(\ t3.setText(\ t4.setText(\ t5.setText(\ t6.setText(\ t7.setText(\ t8.setText(\ t9.setText(\ } }

public void update() throws SQLException {

String s1=\ String s2=\ String s3=\ String s4=\ String s5=\ String s6=\ String s7=\ String s8=\ String s9=\

String temp=\db SET 快件名称 =\收件地址=\发件地址=\收件联系

33

=\发件联系=\发送状态=\发件时间=\收件时间=\运单号码=\ con=DriverManager.getConnection(\ sql.executeQuery(temp); con.close(); } }

4.1.5 删除快件信息的模块

实现对已在数据库中的快件信息的删除。 删除操作界面如下:

删除是的确定界面如下:

代码如下: import java.sql.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.border.*; import javax.swing.JOptionPane;

class Delete extends Panel implements ActionListener {

Connection con; Statement sql;

TextField t1,t2,t3,t4,t5,t6,t7,t8,t9;

34

Button b; Delete() { try {

Class.forName(\ }

catch(ClassNotFoundException e){} try {

con=DriverManager.getConnection(\ sql=con.createStatement(); }

catch(SQLException ee){} setLayout(new BorderLayout()); b=new Button(\删除\ b.addActionListener(this); t1=new TextField(10); t1.addActionListener(this); Panel p1=new Panel();

p1.add(new Label(\输入要删除的运单号码\ p1.add(t1); p1.add(b); add(p1,\

setBackground(new Color(200,255,200)); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==b) {

int n=JOptionPane.showConfirmDialog(this,\确定要删除该运单号及其全部信息吗?\确定\ if(n==JOptionPane.YES_OPTION) { try {

35

String s1=\

String temp=\运单号码=\ con=DriverManager.getConnection(\ sql.executeUpdate(temp); con.close(); }

catch(SQLException ee){} }

else if(n==JOptionPane.NO_OPTION){} } } }

4.2 系统测试

信息技术深深融入业务生活,使得软件产品质量的要求变得很高。这也使我们为提高软件测试的效率来寻求各式各样的方法。

而软件测试的方法和技术是多种多样的。对于软件测试技术,可以从不同的角度加以分类: 按测试阶段可分为:单元测试、集成测试、确认测试、系统测试

在每个阶段,按测试的内容可分为:功能测试、性能测试、边界测试、余量测试、可靠性测试、安全性测试、强度测试、安装测试、恢复性测试、配置测试。

测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品的内部过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法成为白盒测试。

4.2.1黑盒测试的内容

功能测试也称为黑盒测试,用于验证系统的各项功能是否能正常完成。由于实际情况的多样性,需要由多人重复测试,在不同情况下执行各项功能操作,其输出就是该功能的执行结果。黑盒测试着重测试软件功能。黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方法,它很可能发现白盒测试不易发现的其他类型错误。

36

黑盒测试发现下述类型错误:

(1) 功能不正确或遗漏了功能。 (2) 界面错误。

(3) 数据结构错误或外部数据库访问错误。 (4) 性能错误。 (5) 初始化和终止错误。

4.2.2使用黑盒测试情况分析

1.录入功能的测试

测试数据:输入运单号码=1024,快件名称=电脑,收件地址=上海…,发件地址=浙江舟山…,

收件人:电话=张晋:18934463746,发件人:电话=李临:15958045739,发送状态=未发送, 发件时间、收件时间为空。

预期的输出结果:信息录入到数据库。 实际运行如下图所示:

37

实际运行效果,在数据库中增加信息如图:

运行效果符合预期情况。

2.查询功能的测试

(1)测试数据:输入要查询的运单号码=1024,单击查询。

预期的输出结果:显示运单号码=1024的快件的全部信息 实际运行结果如下图所示:

38

运行效果符合预期情况。

(2)测试数据:输入要查询的运单号码=1030,单击查询。

预期的输出结果:提示没有该信息 实际运行结果如下图所示:

运行效果符合预期情况。

39

3.更新功能的测试

测试数据:输入要更新的运单号码=1024,单击开始更新。

预期的输出结果:显示运单号码=1024的快件的全部信息,并可直接对该输出的全部信息进行更新,

更新如下内容:发送状态=已收货,发件时间=2009-06-21,发件时间=2009-06-23。

实际运行结果如下图所示:

更新后如下图所示:

40

实际运行效果,在查询界面重新查询运单号码=1024的结果如下图所示:

运行效果符合预期情况。

3.删除功能的测试

测试数据:输入要删除的运单号码=1024,单击删除。 预期的输出结果:删除运单号码=1024的快件的全部信息。 实际运行结果如下图所示:

41

在查询界面重新查询运单号码1024的信息,结果如下图所示:

运单号码为1024的全部信息以删除,运行效果符合预期情况。

5. 总结

本设计实现了快递送货信息管理的一些简单功能,设计了4个简单的人机交互界面,本软件前台设计由JAVA实现,后台用Access管理数据。主要实现的功能有:快件信息的录入、快件信息的查询、快件信息的更新、快件信息的删除。

通过快递送货信息管理系统的设计,感觉动手能力增强了很多,JAVA编程能力有了比较大的提升。设计本系统,是对自己专业知识的一次检验,也是一次增强自身综合素质机会。软件工程这门课程将我们从局部的编写程序带入了整体开发软件的阶段,这是对我们知识与能力的一种挑战。本文是软件工程设计快递送货信息管理系统的开发说明,重点描述运用软件工程知识对系统进行分析、设计和实现的思想,其中包括软件生命周期的三个主要方面:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码、测试)和运行维护。通过对开发本系统的文档的书写,更进一步学习了软件开发的全过程,把软件工程知识与实际开发软件相结合,规范了实际开发软件程序的全过程,为将来的毕业设计做准备。

总之,本次设计锻炼了实践能力,增长了我发现问题、解决问题的能力,大大丰富了自己的专业知识和技能。由于各种原因,系统的功能还没有得到进一步的完善,以后会继续努力,在今后的学习过程中,不断地提高自己。

42

参考文献

[1]张海藩.软件工程导论(第5版),清华大学出版社,2008 [2]史济民.软件工程—原理、方法与应用,高等教育出版社,2002 [3]陈明.软件工程学教程,科学出版社,2002 [4]郑人杰.实用软件工程,清华大学出版社,2002

[5](美)Roger S.Pressman著 梅宏 译.软件工程--实践者的研究方法,机械工业出版社,2005 [6]陈松乔,任胜兵,王国军.现代软件工程 [M].清华大学出版社,2004 [7]薛德黔等.软件工程,科学出版社,2005

[8]郭宁.软件工程实用教程,人民邮电出版社,2006 [9]钱乐秋等.软件工程,清华大学出版社,2007

[10] 李尊朝,苏军.Java语言程序设计(第二版),中国铁道出版社,2007

43

本文来源:https://www.bwwdw.com/article/rgxp.html

Top