电子交通模拟系统_第1页
电子交通模拟系统_第2页
电子交通模拟系统_第3页
电子交通模拟系统_第4页
电子交通模拟系统_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

第第页共31页1引言道路交通管理与控制是道路交通工程的一个重要组成部分,他的主要目的,是根据现有的道路网及其设施和出行分布状况,对各种出行加以指导性管理,使整个系统从时间上尽可能地得到协调。随着城市的快速发展,交通系统的问题也日渐突出,如市区道路行车延误增大,整体行驶车速过低等,其中最为关键的是交叉口的车流量已处于饱和状态。分析其原因,主要是由于现有交叉口的几何条件所限,以及缺少完善的交通管理设施。道路上交通标志不规范,路口灯控率、十字路口渠划率等衡量城市管理水平的重要指标较低等等。 为了解决交通拥挤的问题,许多城市采取了完善路网和改善交通信号控制设施的措施,也提出许多新理论和新方法,在这一定程度上环节了交通拥挤的问题。但是,交通系统的新理论和新方法受实践限制,不能充分的进行验证或者应用于实际中;而道路交叉口或区域的交通控制系统参数的测算,由于计算烦琐和时间情况的变化也不能达到最佳效果,无法知道动态的情况。因此需要一种比较简便快捷的方法来设计交通控制系统或能对其完善性进行评价和验证。通过计算机,动态模拟交通控制系统,可以在一定程度上对道路交通系统进行研究并得到较好的效果。2开发语言和开发工具简介2.1Java技术简介Java是近代出现的新一代面向对象程序设计语言,由Sun公司推出,起初用于家电产品上的软件编程。后来,经过Sun公司的不断推出新的版本,目前版本已达到1.6。Java是一种简单的、面向对象的、分布式的、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的语言。2.1.1Java语言的特点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.2Java开发工具JDKJDK(JavaDevelopmentKit)是一个写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的VisualAge。由于意识到VisualAge存在难以扩展、底层技术较为脆弱、很难与WebSphereStudio软件集成等诸多问题,进一步发展甚为困难,同时也面临包括Symantec公司的VisualCafé、Borland公司的JBuilder等开发工具的竞争压力,IBM决定创建一个更开放的,并且可以为IBM其他开发工具提供支持的一体化开发平台。1998年11月,IBM专门成立了一个项目开发小组,开始开发该平台,2000年新一代开发平台诞生,这就是大家所熟悉的Eclipse。2000年11月,IBM做出了一个重大决定,将Eclipse采用开放源码的授权和运作模式发布,以增强业界对Eclipse的关注度并加快其推广应用速度。随后,IBM于2001年12月向外界宣布,捐赠价值4千万美元的Eclipse源码给开源社区;成立由成员公司组成的Eclipse协会(EclipseConsortium),以便支持并促进Eclipse开源项目。事实证明,IBM的决策非常英明。Eclipse受到广泛关注,蜂拥而至的用户使得其下载服务器一度阻塞,给业界带来了久违的震撼!IBM趁热打铁,在EclipseCon2004上宣布成立一个独立的、非盈利性的基金会,由该基金会负责管理和指导Eclipse开发,目前其成员多达近百家知名公司,其中包括Borland、RationalSoftware、RedHat、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.1GUI的概述GUI(GraphicsUserInterface)是指图形用户接口,当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(AbstractWindowingToolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言--"writeonce,runanywhere"许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括MicrosoftWindows,Sun’sownSolaris,Apple’sMacOS以及Linux。虽然最初Java是支持操作系统独立的应用程序开发,在Java提出"writeonce,runanywhere"宣言那段时间的革命导致了Javaapplet和主导桌面应用程序计划的产生。尽管从那以后大部分构建桌面应用程序的成就都慢慢衰退,Java构建图形用户界面的能力反倒增强了。跟踪JavaGUI的发展和演化,我们将发现3个主要的构建窗口程序库:AWT,Swing和SWT(StandardWidgetToolkit)。在本系统中,主要采用的是Swing。2.2.2Swing的概述Swing是SUN公司退出的第二代图形用户接口工具包,通过Swing可以开发出功能强大,界面优美的客户应用程序。Swing不但提供了很多功能完善的控件,而且其还具有良好的扩展能力,用Swing来进行交互界面的开发是一件另开发人员非常愉快的工作。Swing从诞生到现在大致经历了如下几个阶段。Swing项目是从1996年底开始的,在项目开始的同时所有的参与者共同选定了这个名称,目的就是开发一个不依赖于本地系统的图形用户接口工具包。1997年后半年Swing进入测试阶段,并在1998年春随同JDK1.1首次发行,对于JDK1.1之前的版本,是不能使用Swing库的。Swing从首次发行开始,就不断快速的成长,自JDK1.2之后,便被完全集成到了java的标准类库中,成为java基础类库(JFC)大家族中一个重要组成部分。2.2.3Swing的特点 Swing的特点主要包括完全轻量级的控件、可插拔的感观风格、更多的控件扩展3个方面。完全轻量级的控件:几乎所有的Swing控件都是轻量级的、纯java开发的,这样在控件对自己进行绘制时就不会依赖本地操作系统平台的对等控件,而是使用绘制图形的基本元素直接通过java平台在屏幕上进行绘制,这样就避免了早期不是使用轻量级控件的java图形用户界面程序在不同的操作系统中运行时有不同的外观,切换操作系统后显示不正常等问题。可插拔的感观风格:Swing在界面显示上很吸引人的一点就是支持可插拔的感观风格,主要包含以下几个方面:Swing能够模拟各种不同操作系统的感观风格,其类库中就包含了Windows,UnixMotif,LinuxGTK,MacOSX以及JavaMetal等感观风格。如果有需要,开发人员还可以通过系统提供的接口编写自定义的感观风格。Swing还允许用户在不关闭应用程序的情况下,在各种感观风格之间进行自由切换。系统自带的JavaMetal感观风格合并了众多风格中最好的图形元素,甚至增加了一些属于其自己的特性。现在的Metal感观风格支持多种不同的主题,各主题之间在颜色和字体等方面都有所不同,用户如果有需要,还可以开发自己的主题。3)更多的控件扩展:Swing中增加了许多新的控件并且为每个控件都增加了工具提示的功能,同时Swing还支持任意数量嵌套边框的镶边替代物,并且可以任意的将键盘事件绑定到控件中。2.3JDBC技术简介2.3.1JDBC概述1996年,SUN公司提出JDBC即JavaDataBaseConnectivity;JDBCTM(trademark);JDBC(java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。2.3.2JDBC的功能1)有了JDBC,向各种关系数据库发送SQL语句就是一件很容易的事。换言之,有了JDBCAPI,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,为访问Informix数据库又写另一个程序,等等。您只需用JDBCAPI写一个程序就够了它可向相应数据库发送SQL语句。而且,使用Java编程语言编写的应用程序,就无须去忧虑要为不同的平台编写不同的应用程序。将Java和JDBC结合起来将使程序员只须写一遍程序就可让它在任何平台上运行。2)Java具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是Java应用程序与各种不同数据库之间进行对话的方法。而JDBC正是作为此种用途的机制。3)JDBC扩展了Java的功能。例如,用Java和JDBCAPI可以发布含有applet的网页,而该applet使用的信息可能来自远程数据库企业也可以用JDBC通过Intranet将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有Windows、Macintosh和UNIX等各种不同的操作系统)。随着越来越多的程序员开始使用Java编程语言,对从Java中便捷地访问数据库的要求也在日益增加。3系统分析和总体规划3.1系统的必要性和可行性一、必要性:近年来,随着社会经济的不断发展和人们生活水平的普遍提高,整个社会对交通运输的需求日益增加。虽然世界各国政府已经或是正在大量投入财力于交通基础设施的建设,但交通状况恶化及其伴生的安全事故、空气污染等一系列问题越来越困扰着有关的政府当局。交通运输对经济发展的制约作用不同程度地普遍存在于每个国家/地区,如何解决大城市周围地区交通拥挤和堵塞现象几乎成了最为棘手的难题之一。因此为了能更好的控制车辆流动;更好的减少交通拥挤,避免交通堵塞;更好的发挥智能交通灯的优势,使城市车流的调节达到最优,以至让我国的经济再一次的快速发展,我们通过构建一个电子交通模拟器实现对交通的模拟是很有必要的。二、可行性:(1)经济可行性:该系统只需要一台计算机,运行安装oracle数据库服务器即可,对于一个交通管理部门来说,这是很容易达到的,所以在经济上是可行的。(2)操作可行性:在当今社会,科技腾飞的时代,计算机的使用已经很普及,只要是受过教育的人,对于计算机的基本操作都能得心应手,所以对于交通管理部门里面的人员,其操作性毋庸怀疑,所以也是可行的。(3)技术可行性:本系统采用Java语言,基于Eclipse+SUSELinux+SunOS5.10开发平台,采用GUISwing,Oracle10g,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语言,在客户端使用GUISwing编程技术,实现图形化界面和用户进行交互,对于用户的请求由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字段名类型字段宽度小数位数键值idint10PKdaydatetimer_redint10timer_greenint10timer_yellowInt10count_carInt10 表4-1east_tbl表建表语句:createtableeast_tbl(idnumber(10)primarykey,daydate,timer_rednumber(10),timer_greennumber(10),timer_yellownumber(10),count_carnumber(10))创建sequence:createsequenceeast_tbl_idincrementby1startwith1nocachenocycle;2)南路口的表(south_tbl)该表只存放南边交通路口所纪录的数据信息,主键是id字段名类型字段宽度小数位数索引idint10PKdaydatetimer_redint10timer_greenint10timer_yellowint10count_carInt10表4-2south_tbl表创建语句createtablesouth_tbl(idnumber(10)primarykey,daydate,timer_rednumber(10),timer_greennumber(10),timer_yellownumber(10),count_carnumber(10))创建sequence:createsequencesouth_tbl_idincrementby1startwith1nocachenocycle;3)西边路口(west_tbl)该表只存放西边交通路口所纪录的数据信息,主键是id字段名类型字段宽度小数位数索引idint10PKdayinttimer_redint10timer_greenint10timer_yellowInt10count_carint10表4-3west_tbl表创建语句createtablewest_tbl(idnumber(10)primarykey,daydate,timer_rednumber(10),timer_greennumber(10),timer_yellownumber(10),count_carnumber(10))创建sequence:createsequencewest_tbl_idincrementby1startwith1nocachenocycle;4)北边路口(north_tbl)该表只存放北边交通路口所纪录的数据信息,主键是id字段名类型字段宽度小数位数索引idint10PKdaydatetimer_redint10timer_greenint10timer_yellowInt10count_carInt10表4-4north_tbl表创建语句createtablenorth_tbl(idnumber(10)primarykey,daydate,timer_rednumber(10),timer_greennumber(10),timer_yellownumber(10),count_carnumber(10))创建sequence:createsequencenorth_tbl_idincrementby1startwith1nocachenocycle;5)E-R图:由于这四张表是独立的表,所以E-R图如下: 图4-5E-R图4.2系统界面设计1.主窗口界面(模拟界面)实现过程:本页面主要实现用户可以直接从该窗口看出交通路口模拟的情况。 图4-6程序运行主界面代码如下:publicclassMainGUI{ staticJFramef; privateContainerc; privateJPanelp1,p2,p3,p5; privateBoxb;privateJButtonstartjb,endjb,selectjb;//开始,结束,查询按钮publicstaticJPanelp4;//设置主画面 publicstaticTimertimer1,timer2,timer3;//三种灯的计时publicstaticJLabel[]jl=newJLabel[21]; publicstaticJTextField[]jt=newJTextField[11];//标记单行文本框,用于输入初始数据publicstaticJButton[]jb=newJButton[12];//标记红绿灯的按钮publicstaticJButton[]jb1=newJButton[10];//标记北方向车辆的按钮publicstaticJButton[]jb11=newJButton[30];//标记北方后来车辆的按钮publicstaticJButton[]jb2=newJButton[10];//标记南方向车辆的按钮publicstaticJButton[]jb22=newJButton[30];//标记南方后来车辆的按钮publicstaticJButton[]jb3=newJButton[10];//标记东方向车辆的按钮publicstaticJButton[]jb33=newJButton[30];//标记东方后来车辆的按钮publicstaticJButton[]jb4=newJButton[10];//标记西方向车辆的按钮publicstaticJButton[]jb44=newJButton[30];//标记西方后来车辆的按钮//初始化所有的车辆 static{ //北方开始车辆 for(inti=0;i<jb1.length;i++){ jb1[i]=newJButton(); } //北方后来车辆 for(inti=0;i<jb11.length;i++){ jb11[i]=newJButton(); } //南方开始车辆 for(inti=0;i<jb2.length;i++){ jb2[i]=newJButton(); } //南方后来车辆 for(inti=0;i<jb22.length;i++){ jb22[i]=newJButton(); } //东方开始车辆 for(inti=0;i<jb3.length;i++){ jb3[i]=newJButton(i+""); } //东方后来车辆 for(inti=0;i<jb33.length;i++){ jb33[i]=newJButton(i+""); } //西方开始车辆 for(inti=0;i<jb4.length;i++){ jb4[i]=newJButton(i+""); } //西方后来车辆for(inti=0;i<jb44.length;i++){ jb44[i]=newJButton(i+""); } } //frame总窗口 publicMainGUI(){ f=newJFrame("电子交通模拟系统"); c=f.getContentPane(); c.setLayout(newBorderLayout(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(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } 2.查询窗口登陆界面 用户通过输入时间数据,从该窗口进入到查询窗口界面。 图4-7登陆界面代码如下:publicclassSelectGUIextendsJDialog{ privatestaticfinallongserialVersionUID=-5191965365261772248L; privateJPaneljp; privateJLabel[]jl={newJLabel("请输入您要查询记录的时间"),newJLabel("开始时间:"),newJLabel("结束时间:")}; privateJTextFieldjt1,jt2; privateJButtonjb; publicSelectGUI(finalJFramejf){ jp=newJPanel(); 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=newJTextField(); jt1.setBounds(150,80,100,20); jp.add(jt1); jl[2].setBounds(60,130,80,20); jp.add(jl[2]); jt2=newJTextField(); jt2.setBounds(150,130,100,20); jp.add(jt2); jb=newJButton("确定"); jb.setBounds(170,200,60,20); jb.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ if(jt1.getText()==null||jt1.getText().equals("")){ JOptionPane.showMessageDialog(jf,"您没有输入开始时间,请重新输入"); } if(jt2.getText()==null||jt2.getText().equals("")){ JOptionPane.showMessageDialog(jf,"您没有输入结束时间,请重新输入"); }else{ newDatebaseGUI(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); } publicstaticvoidmain(String[]args){ JFramejf=newJFrame(); newSelectGUI(jf); }}3.查询结果界面用户通过单击“确定”按钮进入此界面。该界面显示了所想要查询的所有纪录,它包含了红绿灯的计时时间,和各个路口的车辆数。从而可以判断出交通是否拥挤图4-9查询结果界面5运行与测试5.1软件测试的目的和原则在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。尽管面向对象技术的基本思想保证了软件应该有更高的质量,但无论采用什么样的编程技术,编程人员的错误都是不可避免的,而且由于面向对象技术开发的软件代码重用率高,更需要严格测试,避免错误的繁衍。因此,软件测试在面向对象编程里更具有它的重要性。与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤地继续。大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。因此,图5-1测试的基本层次大型软件系统的测试的基本层次如图5-1所示。1)单元测试单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。2)集成测试在这个测试步骤中所发现的往往是概要设计的错误。3)系统测试在这个测试步骤中所发现的往往是需求规格说明的错误。一般来说,系统测试是功能性测试,不是结构性测试。5.2软件的运行与安装5.2.1J2EE应用程序的构建与部署在J2EE框架下,使用Eclipse开发出来的程序可以通过工具直接布署到服务器上进行测试运行,但是由于真正的运行服务器并没有与开发环境同处于同一环境,所以需要手工进行布署。首先,将整个程序进行打包成一个.war包或.ear包,或直接将整个工程拷贝到webapps目录下,服务器会自动进行解包,打包与部署过程如图5-2所示。 图5-2打包与部署过程5.2.2具体运行过程以及后期维护打开oracle数据库,运行MainGUI.java类文件,就可以运行该系统。所谓软件维护就是在软件交付使用之后,为了改正错误或满足新的需要而修改软件的过程。我们可以通过描述软件交付使用后可能进行的四项活动,具体定义软件维护。1.改正性维护因为软件测试不可能暴露出一个大型软件系统的所有潜在错误,所以必然会有第一项维护活动:在任何软件的使用期间,用户必然发现程序,并且把他们遇到的问题报告给维护人员。我们把诊断和改正错误的过程称为改正性维护。2.适应性维护计算机科学技术的各个方面都在迅速进步,大约每36个月就有新一代的硬件出现,因此,适应性维护,也就是为了和变化的环境适当的配合而进行的修改软件的活动,是既必要又经常的维护活动。3.完善性维护当一个软件系统顺利的进行时,在使用软件的过程中用户往往提出增加新功能或修改已有功能的建议,还可能提出一般性修改意见。为了满足这类要求,需要进行完善性维护。这项维护活动通常占软件维护的大部分工作。4.预防性维护为了改进未来可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件时出现的维护活动,我们把它称为预防性维护。6结论从本系统开始设计到现在,基本功能已经实现。通过对本系统的开发,我对软件的设计和开发的步骤、方法及思路有了一个全新的认识,加深了我对计算机编程思想的理解,同时也给我提供了一次为以后实际模拟锻炼的机会,我感到受益非浅。本系统具有如下特点:(1)本系统采用的是java语言,能够实现跨平台使用。(2)本系统采用的框架也很清晰,从界面(客户端)-连接层(业务逻辑)-数据库(服务器),用户也很容易看懂。(3)本系统比较直观,用户可以直接从界面上看到所有功能,简单,直观。(4)后台数据库采用的Oracle,它功能比较强大,除了可以处理包含在各种平台上运行的数据库管理系统内核之外,还包括了数据复制、数据库系统管理、Internet网关支持、在线分析处理、多媒体支持和各种并行处理能力。但因为本系统比较大,而且在本项目开始的时候,在GUI程序设计方面不太熟悉,再加上毕业设计的时间有限,本人并未考虑到现实中的所有因素。许多方面在下一步的工作中还需要进一步改进和完善。参考文献[1]贺廉云,唐艳,孙秀文.交通灯的控制[I]电脑编程技巧与维护,2008(02).[2]赵伯山.Oracle9i中文版实用培训教程[M].清华大学出版社,2003.[3](美)ArtTaylor著JDBC数据库编程与J2EE[M]电子工业出版社2004.[4](美)JasonPrice著Oracle9iJDBC程序设计[M]机械工业出版社2003.[5]WarrenW.Gay著实战LinuxSocket编程[M]西安电子科技大学出版社2002.01.[6]肖刚等编著JavaGUI程序设计[M]清华大学出版社1998.[7]万常选编著XML数据库技术[M]清华大学出版社2005.[8]张银鹤,张秋香,孙膺等编著XML实践教程[M]清华大学出版社2007TP312-43/1014.[9]张海潘软件工程导论[M]清华大学出版社2003.[10]孙凌翔,陈世和,李劲松.顺序控制法在交通灯控制系统中的应用[I]现代电子技术,2006(10).[11]MartyHall.MoreServletsandJavaServerPages[M].PearsonEducation,Inc.2002.[12]RogerS.Pressman.SoftwareEngineeringAPractitioner’sApproach,5thed[M].北京:清华大学出版社,2001年1月.589.[13]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,1997.91-132.[14]Cays.Horstmann.CayCornell.CoreJava2VolumeI–Fundamentals.SeventhEdition.PrenticeHallPTR.2004年8月17.[15]MarcoCant.MasteringBorlandOracle2004[M].RinehartandWinston,2004,34-96.[16]罗晓沛,张迎新,蔡越江.Oracle数据库技术[M].武汉:华中理工大学出版.社,2000,134-137.[17]王晟,万科.Oracle数据库开发经典案例解析[M].北京:清华大学出版.社,2005,157-167.[18]王志伟,黄超.J2EE企业经营管理系统开发实例导航[M].北京:人民邮电出版社,2003,89-92.致谢基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究基于单片机的一体化智能差示扫描量热仪系统研究

温馨提示

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

评论

0/150

提交评论