资源描述
目 录
1引言 1
2开发语言和开发工具简介 2
2.1 JAVA技术简介 2
2.1.1 JAVA语言的特点 2
2.1.2 JAVA开发工具 3
2.2GUI技术简介 5
2.2.1 GUI的概述 5
2.2.2 SWING 的概述 5
2.2.3 SWING的特点 6
2.3JDBC技术简介 6
2.3.1 JDBC概述 6
2.3.2 JDBC的功能 7
3 系统分析和总体规划 7
3.1系统的必要性和可行性 7
3.2需求分析 8
3.2.1 数据需求: 8
3.2.2 功能需求: 8
3.3总体设计 9
3.3.1系统功能设计 9
3.3.2 运行过程设计 10
3.3.3 数据库设计 12
第 I 页 共 31 页
4 系统具体设计 12
4.1 数据库表设计 12
4.2 系统界面设计 18
5 运行与测试 25
5.1 软件测试的目的和原则 25
5.2 软件的运行与安装 26
5.2.1 J2EE应用程序的构建与部署 26
5.2.2 具体运行过程以及后期维护 26
6 结论 28
参考文献 29
致 谢 30
第 1 页 共 31 页
1引言
道路交通管理与控制是道路交通工程的一个重要组成部分,他的主要目的,是根据现有的道路网及其设施和出行分布状况,对各种出行加以指导性管理,使整个系统从时间上尽可能地得到协调。随着城市的快速发展,交通系统的问题也日渐突出,如市区道路行车延误增大,整体行驶车速过低等,其中最为关键的是交叉口的车流量已处于饱和状态。分析其原因,主要是由于现有交叉口的几何条件所限,以及缺少完善的交通管理设施。道路上交通标志不规范,路口灯控率、十字路口渠划率等衡量城市管理水平的重要指标较低等等。
为了解决交通拥挤的问题,许多城市采取了完善路网和改善交通信号控制设施的措施,也提出许多新理论和新方法,在这一定程度上环节了交通拥挤的问题。但是,交通系统的新理论和新方法受实践限制,不能充分的进行验证或者应用于实际中;而道路交叉口或区域的交通控制系统参数的测算,由于计算烦琐和时间情况的变化也不能达到最佳效果,无法知道动态的情况。因此需要一种比较简便快捷的方法来设计交通控制系统或能对其完善性进行评价和验证。通过计算机,动态模拟交通控制系统,可以在一定程度上对道路交通系统进行研究并得到较好的效果。
2开发语言和开发工具简介
2.1 Java技术简介
Java是近代出现的新一代面向对象程序设计语言,由Sun公司推出,起初用于家电产品上的软件编程。后来,经过Sun公司的不断推出新的版本,目前版本已达到1.6。Java是一种简单的、面向对象的、分布式的、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的语言。
2.1.1 Java语言的特点
1. 简单
Java与C的区别是C是面向过程的语言,而Java是面向对象的语言,Java与C++语言非常相近,但比C++简单,在Java中取消息了对指针的操作,抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。Java实现了自动的垃圾收集,简化了内存管理的工作。
2. 面向对象
Java是面向对象的语言,将世间万物都看成对象,将对象所具有的共性抽取出来,就是对象的类。Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用。
3. 多线程
多线程的实现方式可以通过软件或硬件实现,Java是语言级别的多线程,通过JVM实现,多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。
4. 分布式
Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象。
5. 跨平台
Java是通过JVM实现其跨平台的,JVM通过不同的接口与操作系统交互,上层通过相同的接口与Java语言交互,Java是一种网络语言,为使Java程序能在网络的任何地方运行,Java解释器生成与体系结构无关的字节码结构的文件格式。Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持Java的平台上。
6. 安全性
用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
2.1.2 Java开发工具
JDK
JDK(Java Development Kit)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。
1. Java编译器(Javac命令)
Java编译器将Java源代码文件编译成可执行的Java字节码。Java源代码文件的扩展名为 .java,Java编译器把这种扩展名的文件编译成扩展名为.class的文件。源文件中的每个类在编译后都将产生一个class文件,这意味一个Java源代码文件可能编译生成多个class文件。
2. Java解释器(java命令)
Java解释器对编译生成的字节码格式的可执行程序的运行提供支持,它是运行非图形Java程序的命令行工具。
ECLIPSE
根据需求分析及功能分析,选用Eclipse集成开发工具及Oracle数据库来开发此系统。
1.Eclipse的起源和发展Eclipse的前身是IBM的Visual Age。由于意识到Visual Age存在难以扩展、底层技术较为脆弱、很难与WebSphere Studio软件集成等诸多问题,进一步发展甚为困难,同时也面临包括Symantec公司的Visual Café、Borland公司的JBuilder等开发工具的竞争压力,IBM决定创建一个更开放的,并且可以为IBM其他开发工具提供支持的一体化开发平台。1998年11月,IBM专门成立了一个项目开发小组,开始开发该平台,2000年新一代开发平台诞生,这就是大家所熟悉的Eclipse。2000年11月,IBM做出了一个重大决定,将Eclipse采用开放源码的授权和运作模式发布,以增强业界对Eclipse的关注度并加快其推广应用速度。随后,IBM于2001年12月向外界宣布,捐赠价值4千万美元的Eclipse源码给开源社区;成立由成员公司组成的Eclipse协会(Eclipse Consortium),以便支持并促进Eclipse开源项目。事实证明,IBM的决策非常英明。Eclipse受到广泛关注,蜂拥而至的用户使得其下载服务器一度阻塞,给业界带来了久违的震撼!IBM趁热打铁,在EclipseCon 2004上宣布成立一个独立的、非盈利性的基金会,由该基金会负责管理和指导Eclipse开发,目前其成员多达近百家知名公司,其中包括Borland、Rational Software、Red Hat、Sybase、Google和Oracle等业界巨头。
Eclipse开发状态非常活跃,目前成熟稳定的版本是3.2,正在开发的版本是3.3,已经成为业界主要的非微软软件开发平台。
2.Eclipse的优势
目前全球有上百万人在使用Eclipse进行开发。为什么Eclipse拥有如此众多的用户?这与Eclipse集众多特性于一身有很大关系。
Eclipse是开放源代码的软件。这意味着Eclipse不仅可以免费使用,还可以通过研究源代码学习世界上顶尖开发人员的编程技术,并可以共享遍布全球的开发人员所贡献的公共开放源代码库。
Eclipse是真正可扩展并可配置的。Eclipse采用插件机制,犹如一个花瓶,你可以随时向花瓶里面插花,也可以很容易将不再需要的花取出。
Eclipse支持众多的开发语言而不仅仅是Java。Eclipse只是给开发人员提供了一个能够扩展系统功能的最小核心,基于扩展点的插件体系结构使得Eclipse支持多种语言成为可能。只要安装相应语言的插件,Eclipse就可以支持该种语言的开发。目前,Eclipse已经可以支持C、COBOL、PHP、Perl、Python等多种语言。
Eclipse提供了对多重平台特性的支持。开发者可以使用他们感觉最舒适、最熟悉的平台,例如Windows、Linux等。Eclipse对每个平台都有其单独的图形工具包,这使得应用程序具有接近本地操作系统的外观和更好的性能。
2.2GUI技术简介
2.2.1 GUI的概述
GUI(Graphics User Interface)是指图形用户接口,当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(Abstract Windowing Toolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言--"write once, run anywhere"许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括Microsoft Windows, Sun’s own Solaris, Apple’s Mac OS以及Linux。
虽然最初Java是支持操作系统独立的应用程序开发,在Java提出"write once, run anywhere"宣言那段时间的革命导致了Java applet和主导桌面应用程序计划的产生。
尽管从那以后大部分构建桌面应用程序的成就都慢慢衰退,Java构建图形用户界面的能力反倒增强了。跟踪Java GUI的发展和演化,我们将发现3个主要的构建窗口程序库:AWT,Swing和SWT(Standard Widget Toolkit)。
在本系统中,主要采用的是Swing。
2.2.2 Swing 的概述
Swing 是SUN 公司退出的第二代图形用户接口工具包,通过Swing 可以开发出功能强大,界面优美的客户应用程序。Swing 不但提供了很多功能完善的控件,而且其还具有良好的扩展能力,用Swing来进行交互界面的开发是一件另开发人员非常愉快的工作。
Swing从诞生到现在大致经历了如下几个阶段。
Swing 项目是从1996年底开始的,在项目开始的同时所有的参与者共同选定了这个名称,目的就是开发一个不依赖于本地系统的图形用户接口工具包。
1997年后半年Swing进入测试阶段,并在1998年春随同JDK1.1首次发行,对于JDK1.1之前的版本,是不能使用Swing库的。
Swing从首次发行开始,就不断快速的成长,自JDK1.2之后,便被完全集成到了java的标准类库中,成为java基础类库(JFC)大家族中一个重要组成部分。
2.2.3 Swing的特点
Swing的特点主要包括完全轻量级的控件、可插拔的感观风格、更多的控件扩展3个方面。
完全轻量级的控件:几乎所有的Swing控件都是轻量级的、纯java开发的,这样在控件对自己进行绘制时就不会依赖本地操作系统平台的对等控件,而是使用绘制图形的基本元素直接通过java平台在屏幕上进行绘制,这样就避免了早期不是使用轻量级控件的java图形用户界面程序在不同的操作系统中运行时有不同的外观,切换操作系统后显示不正常等问题。
可插拔的感观风格:Swing在界面显示上很吸引人的一点就是支持可插拔的感观风格,主要包含以下几个方面:
Swing能够模拟各种不同操作系统的感观风格,其类库中就包含了Windows,Unix Motif,Linux GTK,Mac OS X以及Java Metal等感观风格。如果有需要,开发人员还可以通过系统提供的接口编写自定义的感观风格。
Swing还允许用户在不关闭应用程序的情况下,在各种感观风格之间进行自由切换。
系统自带的Java Metal感观风格合并了众多风格中最好的图形元素,甚至增加了一些属于其自己的特性。现在的Metal感观风格支持多种不同的主题,各主题之间在颜色和字体等方面都有所不同,用户如果有需要,还可以开发自己的主题。
3)更多的控件扩展:Swing中增加了许多新的控件并且为每个控件都增加了工具提示的功能,同时Swing还支持任意数量嵌套边框的镶边替代物,并且可以任意的将键盘事件绑定到控件中。
2.3JDBC技术简介
2.3.1 JDBC概述
1996年,SUN公司提出JDBC即Java Data Base Connectivity; JDBC TM(trademark);
JDBC(java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
2.3.2 JDBC的功能
1)有了 JDBC,向各种关系数据库发送 SQL 语句就是一件很容易的事。换言之,有了 JDBC API,就不必为访问 Sybase 数据库专门写一个程序,为访问 Oracle 数据库又专门写一个程序,为访问 Informix 数据库又写另一个程序,等等。您只需用 JDBC API 写一个程序就够了它可向相应数据库发送 SQL 语句。而且,使用 Java 编程语言编写的应用程序,就无须去忧虑要为不同的平台编写不同的应用程序。将Java 和 JDBC 结合起来将使程序员只须写一遍程序就可让它在任何平台上运行。
2)Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
3)JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。
3 系统分析和总体规划
3.1系统的必要性和可行性
一、必要性:
近年来,随着社会经济的不断发展和人们生活水平的普遍提高,整个社会对交通运输的需求日益增加。虽然世界各国政府已经或是正在大量投入财力于交通基础设施的建设,但交通状况恶化及其伴生的安全事故、空气污染等一系列问题越来越困扰着有关的政府当局。交通运输对经济发展的制约作用不同程度地普遍存在于每个国家/地区,如何解决大城市周围地区交通拥挤和堵塞现象几乎成了最为棘手的难题之一。因此为了能更好的控制车辆流动;更好的减少交通拥挤,避免交通堵塞;更好的发挥智能交通灯的优势,使城市车流的调节达到最优,以至让我国的经济再一次的快速发展,我们通过构建一个电子交通模拟器实现对交通的模拟是很有必要的。
二、可行性:
(1)经济可行性:该系统只需要一台计算机,运行安装oracle数据库服务器即可,对于一个交通管理部门来说,这是很容易达到的,所以在经济上是可行的。
(2)操作可行性:在当今社会,科技腾飞的时代,计算机的使用已经很普及,只要是受过教育的人,对于计算机的基本操作都能得心应手,所以对于交通管理部门里面的人员,其操作性毋庸怀疑,所以也是可行的。
(3)技术可行性:本系统采用Java语言,基于Eclipse + SUSE Linux+Sun OS 5.10开发平台,采用GUI Swing,Oracle 10g,JDBC技术,开发者掌握这些技术就可以具备开发此系统的能力,这些技术都是公开的,且开发者容易掌握的。所以,技术方面也是可行的。
3.2需求分析
3.2.1 数据需求:
此系统主要完成交通路口模拟的功能,因此,需要的数据信息包括:红绿灯的计时时间,各方向的开始车辆,各方向的后来车辆,以及车速等。
3.2.2 功能需求:
功能需求分析的任务是弄清用户对目标系统数据处理功能所提出的需求。本系统的功能需求有:
(1)用户可以通过输入红绿灯的数据,看到时间计时。
(2)用户可以通过界面直接看到红绿灯随着时间有规律的转换。
(3)用户可以通过输入车辆的相应数据,看到车辆通行的情况。
(4)用户可以直接查询日志文件。
(5)用户可以查询某一时间段的交通情况。
3.3总体设计
3.3.1系统功能设计
1. 系统功能:
本模块的主要功能是客户端通过用户输入数据,对交通路口进行一个模拟,并把数据纪录下来,以供研究。
其主要功能如下:
(1)时间的计时
通过用户输入的红绿灯时间进行倒计时。
(2)红绿灯的切换
用户可以观看红绿灯在规定时间自动转换。
(3)车辆的模拟
通过用户输入的数据,实现车辆。
(4)日志查看
用户可以查看某一天的日志情况。
(5)历史查询
用户可以查询某一时间段的交通模拟情况
2 .系统功能结构图:
通过对所做模块的功能需求分析,该模块主要功能可分为五大部分,
系统用例如图3-1所示。
图3-1 系统用例图
3.3.2 运行过程设计
本系统使用java语言,在客户端使用GUI Swing编程技术,实现图形化界面和用户进行交互,对于用户的请求由action事件进行处理,转而调用相应的业务逻辑层,随着时间的计时,系统执行相应的功能,对于执行后的结果直接写入到日志中同时也备份到数据库中,供用户查询。
运行步骤:
(1)用户打开图形化界面。
(2)输入相应的数据。
(3)查看红绿灯计时以及车辆通行的情况。
(4)查看日志文件。
(5)用户通过输入时间查询对应的历史纪录。系统流程图
图3-2 系统流程
流程图详解:
用户找到MainGUI.java类文件,并运行它,弹出交通模拟界面图像,根据图像显示的内容,用户输入相应的初始数据,然后点击确定按钮,此时,界面上的计时模块便开始计时,同时界面上的车辆也开始根据红绿灯的显示走动起来。用户此时就可以观察,如果发现某个路口的车辆越来越多,则表明用户输入的初始数据不适合此路口的交通,需重新输入,再进行观察,直到界面上的车辆走动顺畅,就表明此次用户输入的时间数据适合这个路口的交通。当用户点击查询按钮时,会弹出一个查询界面,此时,用户输入所想要查询的某一天或某几天的日期,就可以搜索到这几天所输入的数据的纪录,根据这些纪录也可以找出一个适合这个交通路口的最佳的时间设置。最后点击结束按钮,就会停止模拟。
3.3.3 数据库设计
数据库设计就是设计程序所需数据的类型、格式、长度和组织方式。因为数据库应用系统主要是处理大量的数据,所以数据库设计的优劣,直接影响整个数据库应用系统的性能和执行速率。
根据本系统的功能需求分析,本系统的数据库包括四个表,东边交通路口表(east_tbl),南边交通路口表(south_tbl),西边交通路口表(west_tbl),北边交通路口表(north_tbl)
4 系统具体设计
4.1 数据库表设计
1)东路口的表(east_tbl)
该表只存放东边交通路口所纪录的数据信息,主键是id
字段名
类型
字段宽度
小数位数
键值
id
int
10
PK
day
date
timer_red
int
10
timer_green
int
10
timer_yellow
Int
10
count_car
Int
10
表4-1 east_tbl 表
建表语句:
create table east_tbl(
id number(10) primary key,
day date ,
timer_red number(10),
timer_green number(10),
timer_yellow number(10),
count_car number(10)
)
创建sequence:
create sequence east_tbl_id
increment by 1
start with 1
nocache
nocycle;
2)南路口的表(south_tbl)
该表只存放南边交通路口所纪录的数据信息,主键是id
字段名
类型
字段宽度
小数位数
索引
id
int
10
PK
day
date
timer_red
int
10
timer_green
int
10
timer_yellow
int
10
count_car
Int
10
表4-2 south_tbl 表
创建语句
create table south_tbl(
id number(10)primary key,
day date ,
timer_red number(10),
timer_green number(10),
timer_yellow number(10),
count_car number(10)
)
创建sequence:
create sequence south_tbl_id
increment by 1
start with 1
nocache
nocycle;
3)西边路口(west_tbl)
该表只存放西边交通路口所纪录的数据信息,主键是id
字段名
类型
字段宽度
小数位数
索引
id
int
10
PK
day
int
timer_red
int
10
timer_green
int
10
timer_yellow
Int
10
count_car
int
10
表4-3 west_tbl 表
创建语句
create table west_tbl(
id number(10)primary key,
day date ,
timer_red number(10),
timer_green number(10),
timer_yellow number(10),
count_car number(10)
)
创建sequence:
create sequence west_tbl_id
increment by 1
start with 1
nocache
nocycle;
4)北边路口(north_tbl)
该表只存放北边交通路口所纪录的数据信息,主键是id
字段名
类型
字段宽度
小数位数
索引
id
int
10
PK
day
date
timer_red
int
10
timer_green
int
10
timer_yellow
Int
10
count_car
Int
10
表4-4 north_tbl 表
创建语句
create table north_tbl(
id number(10)primary key,
day date ,
timer_red number(10),
timer_green number(10),
timer_yellow number(10),
count_car number(10)
)
创建sequence:
create sequence north_tbl_id
increment by 1
start with 1
nocache
nocycle;
5)E-R图:
由于这四张表是独立的表,所以E-R图如下:
图4-5 E-R图
4.2 系统界面设计
1. 主窗口界面(模拟界面)
实现过程:本页面主要实现用户可以直接从该窗口看出交通路口模拟的情况。
图4-6程序运行主界面
代码如下:
public class MainGUI {
static JFrame f;
private Container c;
private JPanel p1, p2, p3, p5;
private Box b;
private JButton startjb, endjb, selectjb;// 开始,结束,查询按钮
public static JPanel p4;// 设置主画面
public static Timer timer1, timer2, timer3;// 三种灯的计时
public static JLabel[] jl = new JLabel[21];
public static JTextField[] jt = new JTextField[11];// 标记单行文本框,用于输入初始数据
public static JButton[] jb = new JButton[12];// 标记红绿灯的按钮
public static JButton[] jb1 = new JButton[10];// 标记北方向车辆的按钮
public static JButton[] jb11 = new JButton[30];// 标记北方后来车辆的按钮
public static JButton[] jb2 = new JButton[10];// 标记南方向车辆的按钮
public static JButton[] jb22 = new JButton[30];// 标记南方后来车辆的按钮
public static JButton[] jb3 = new JButton[10];// 标记东方向车辆的按钮
public static JButton[] jb33 = new JButton[30];// 标记东方后来车辆的按钮
public static JButton[] jb4 = new JButton[10];// 标记西方向车辆的按钮
public static JButton[] jb44 = new JButton[30];// 标记西方后来车辆的按钮
// 初始化所有的车辆
static {
// 北方开始车辆
for (int i = 0; i < jb1.length; i++) {
jb1[i] = new JButton();
}
// 北方后来车辆
for (int i = 0; i < jb11.length; i++) {
jb11[i] = new JButton();
}
// 南方开始车辆
for (int i = 0; i < jb2.length; i++) {
jb2[i] = new JButton();
}
// 南方后来车辆
for (int i = 0; i < jb22.length; i++) {
jb22[i] = new JButton();
}
// 东方开始车辆
for (int i = 0; i < jb3.length; i++) {
jb3[i] = new JButton(i + "");
}
// 东方后来车辆
for (int i = 0; i < jb33.length; i++) {
jb33[i] = new JButton(i + "");
}
// 西方开始车辆
for (int i = 0; i < jb4.length; i++) {
jb4[i] = new JButton(i + "");
}
// 西方后来车辆
for (int i = 0; i < jb44.length; i++) {
jb44[i] = new JButton(i + "");
}
}
// frame总窗口
public MainGUI() {
f = new JFrame("电子交通模拟系统 ");
c = f.getContentPane();
c.setLayout(new BorderLayout(10, 10));
// p1窗口的左半边
p1 = westJPanel();
p1.setBackground(Color.gray);
c.add(p1, BorderLayout.WEST);
// p2窗口的右半边
p2 = mainJPanel();
c.add(p2);
f.setSize(800, 500);
f.setVisible(true);
f.setResizable(false);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
2. 查询窗口登陆界面
用户通过输入时间数据,从该窗口进入到查询窗口界面。
图4-7 登陆界面
代码如下:
public class SelectGUI extends JDialog {
private static final long serialVersionUID = -5191965365261772248L;
private JPanel jp;
private JLabel[] jl = { new JLabel("请输入您要查询记录的时间"), new JLabel("开始时间:"),new JLabel("结束时间:") };
private JTextField jt1, jt2;
private JButton jb;
public SelectGUI(final JFrame jf) {
jp = new JPanel();
jp.setLayout(null);
jl[0].setBounds(100, 30, 200, 20);
jp.add(jl[0]);
jl[1].setBounds(60, 80, 80, 20);
jp.add(jl[1]);
jt1 = new JTextField();
jt1.setBounds(150, 80, 100, 20);
jp.add(jt1);
jl[2].setBounds(60, 130, 80, 20);
jp.add(jl[2]);
jt2 = new JTextField();
jt2.setBounds(150, 130, 100, 20);
jp.add(jt2);
jb = new JButton("确定");
jb.setBounds(170, 200, 60, 20);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (jt1.getText() == null || jt1.getText().equals("")) {
JOptionPane.showMessageDialog(jf, "您没有输入开始时间,请重新输入");
}
if (jt2.getText() == null || jt2.getText().equals("")) {
JOptionPane.showMessageDialog(jf, "您没有输入结束时间,请重新输入");
} else {
new DatebaseGUI(jf, jt1.getText(), jt2.getText());
}
}
});
jp.add(jb);
this.add(jp);
this.setTitle("查询历史记录");
this.setResizable(false);
this.setBounds(100, 100, 400, 300);
this.setVisible(true);
jf.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
JFrame jf = new JFrame();
new SelectGUI(jf);
}
}
3.查询结果界面
用户通过单击“确定”按钮进入此界面。该界面显示了所想要查询的所有纪录,它包含了红绿灯的计时时间,和各个路口的车辆数。从而可以判断出交通是否拥挤
图4-9 查询结果界面
5 运行与测试
5.1 软件测试的目的和原则
在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。
尽管面向对象技术的基本思想保证了软件应该有更高的质量,但无论采用什么样的编程技术,编程人员的错误都是不可避免的,而且由于面向对象技术开发的软件代码重用率高,更需要严格测试,避免错误的繁衍。因此,软件测试在面向对象编程里更具有它的重要性。
与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤地继续。大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。因此,
图5-1 测试的基本层次
大型软件系统的测试的基本层次如图5-1所示。
1)单元测试 单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。
展开阅读全文