车票查询系统的设计和实现.docx
《车票查询系统的设计和实现.docx》由会员分享,可在线阅读,更多相关《车票查询系统的设计和实现.docx(37页珍藏版)》请在冰豆网上搜索。
车票查询系统的设计和实现
车票查询系统的设计和实现
(姓名)
(浙江海洋学院数理与信息学院A06计算机,浙江舟山316004)
摘 要
本文是软件工程设计车票查询系统的开发说明,重点描述运用软件工程知识对系统进行分析、设计和实现的思想,其中包括软件生命周期的三个主要方面:
软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码、测试)和运行维护。
通过实际的运用软件工程知识处理问题,加强程序的规范性、清晰性、可靠性,并且使得程序易于维护。
本软件前台设计由JAVA实现,后台以SQLSEVER2000为数据服务器,具有自己的独立模块,兼容性好且易于实现。
系统主要的功能为车票信息的查询,只需要输入出发和到达地点就可方便查出车次号,界面简单,查找方便,容易上手。
【关键词】:
车票查询系统,Java,SQLSEVER
目录
摘 要I
1.概述1
1.1管理信息系统简介1
1.2车票查询系统概述1
2.车票查询系统的分析2
2.1问题定义2
2.2可行性研究2
2.2.1技术可行性2
2.2.2经济可行性3
2.2.3操作可行性3
2.3系统需求分析3
2.3.1功能需求3
2.3.2性能需求4
2.3.3数据需求5
3.车票查询系统的设计7
3.1系统总体设计7
3.2.数据结构设计8
3.2.1数据库数据结构设计8
3.2.2物理数据结构设计9
3.2.3创建表/字段10
3.3.系统详细设计10
3.3.1系统流程图10
3.3.2运行模块13
3.3.3出错处理设计13
3.3.4运用面向对象的分析对系统建模13
4.车票查询系统的编码和测试15
4.1系统编码15
4.1.1用户操作模块15
4.1.2数据库操作模块20
4.2系统测试22
4.2.1功能测试的内容22
4.2.2测试用例的设计和结果分析22
5.总结25
参考文献26
1.概述
1.1管理信息系统简介
管理信息系统(ManagementInformationSystems简称MIS[1])在现代社会已深入到各行各业,由于计算机技术的迅速发展和普及,MIS事实上已成为计算机MIS。
目前,由于开发高质量MIS的能力大大落后计算机硬件日新月异的进展,加上社会对MIS发展和完善需求的增加以及对MIS开发过程中出现的错误认识和行为而导致MIS开发的失败,这些情况已严重妨碍了计算机技术的进步。
因此对MIS有关的内容进行深入研究,提高工作效率,提高MIS开发成功率已变得十分重要。
1.MIS的定义。
管理信息系统既指使用信息技术来提供信息和通信服务的组织系统,又指计划开发和管理系统的企业功能,由人、计算机系统、软件系统、数据库系统构成的,是以人为主导,以计算机为工具,对企业的各种信息进行收集、存储、加工、分析,以协助企业的决策、管理与运行的系统。
2.MIS的特征。
管理信息系统能实测企业的各种运行情况,利用过去和现行的数据预测未来,从全局出发辅助企业决策,利用信息控制企业行为,帮助企业实现规划目标,辅助计算机管理人员完成信息搜集、加工等管理工作的系统软件。
信息系统不能只考虑其单一性,即只认为此系统是为管理者提供决策信息的人机对话界面,这样就孤立了管理信息系统的价值与其存在的意义。
我们应该把它放入社会这个大的背景之下来仔细研究,就会发现管理信息系统的意义不只如此。
它不仅是一门科学技术,更多的是一种社会性实践,而它的价值也更多的体现在系统与组织、环境的交互。
3.MIS的发展趋势。
由于科学技术总是不断发展和更新的,适应知识经济的新的管理模式和管理方法不断涌现:
敏捷制造[2]、虚拟制造、精益生产、客户关系管理、供应商关系管理、大规模定制、基于约束理论的先进计划、电子商务以及商业智能。
管理信息系统必须不断融进这些新的思想和方法以适应企业的管理变革和发展要求。
我们还要看到我们现在处在全球经济一体化的年代,网络经济的时代已经到来,由于互联网络和通信技术的高速发展,彻底改变了我们的经营管理模式和生活方式。
只有采用基于互联网络的系统才能方便地实现资源共享以及全球供应链。
1.2车票查询系统概述
本次开发的车票查询系统是车票管理系统的一个子系统,所以也可以称之为一个微型的管理信息系统。
它的主要的功能是接受用户的查询信息(包括起点、终点、乘客人数),然后查询数据库中的信息,再将信息反馈给用户。
采用Java[3]制作系统,它的优良特性使得Java应用具有无比的健壮性[4]和可靠性,这也减少了应用系统的维护费用。
Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。
Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。
2.车票查询系统的软件定义
2.1问题定义
问题定义阶段必须确定系统应该做什么,一般应通过对客户的访问调查,让系统分析员扼要地写出关于问题性质、工作目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。
由于此次程序较小,所以只确定一个功能,即车票信息查询。
2.2可行性研究
2.2.1技术可行性
Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。
用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:
跨平台、动态的Web、Internet计算。
从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Javaapplet。
另一方面,Java技术也不断更新。
Java平台由Java虚拟机(JavaVirtualMachine)和Java应用编程接口(ApplicationProgrammingInterface[5]、简称API)构成。
Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。
现在Java平台已经嵌入了几乎所有的操作系统。
这样Java程序可以只编译一次,就可以在各种系统中运行。
Java分为三个体系J2SE(Java2StandardEdition),J2EE(Java2Platform,EnterpriseEdition),J2ME(Java2MicroEdition)。
SQL[6]是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。
SQL语言的主要功能就是同各种数据库建立联系,进行沟通。
按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。
SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。
目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,MicrosoftSQLServer,Access等都采用了SQL语言标准。
虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。
SQLServer是一个关系数据库管理系统。
它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。
在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。
Sybase则较专注于SQLServer在UNIX操作系统上的应用。
SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统[7],该版本继承了SQLServer7.0版本的优点,同时又比它增加了许多更先进的功能。
具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。
SQL系统分为静态和动态[8]俩个部分:
静态SQL指直接内嵌到应用源程序中的SQL语句,当编写数据库应用程序时,静态SQL用于完成特定的或固定的任务。
在有些应用中,对数据库作何种操作,或对数据库作某种操作的先决条件在编译时还不明确,必须在程序运行时动态构造(或接收)和处理各种各样的SQL语句。
在这种情况下,SQL语句的构成在程序运行前不知道,通常这类语句每次执行都有可能发生变化。
涉及这类SQL语句的编程要用到动态SQL方法,它是一种先进的程序设计技术。
它不但能增加应用程序的功能还能提高其灵活性。
一般说来,程序中SQL语句的文本(即命令、子句)、宿主变量个数、宿主变量的数据类型或引用的数据库对象等有一种情况不知道时,就要用到动态SQL方法。
在存储过程或函数中使用动态SQL语句将会大大提高程序的处理性能,同时可以执行各种类型的SQL语句,使用起来非常灵活。
在实际应用中可以把已调试成功的程序通过定义程序中的动态SQL语句构造函数和查询结果格式化函数的方法[9],就可以方便地把修改后的程序移植到其它应用系统中。
2.2.2经济可行性
本系统作为车票管理系统的一个部分,在作为售票点服务或者网上查询系统时,可以快捷方便的为查询者提供所需信息,对于管理者来说也可以有效减轻他们的工作量提高工作效率,减少不必要的支出。
相对的只需用很小的代价便可开发完毕,所以开发本系统在经济上是可行的。
2.2.3操作可行性
本系统提供了直观的查询界面,用户只要输入出发城市、目的城市和乘客人数,即可得到相应信息,操作十分简便。
2.3系统需求分析
2.3.1功能需求
车票查询系统的目标是:
在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面[10]的车票查询系统,实现自动化的计算机系统。
系统数据流图:
系统功能:
将Java的前台界面程序与后台的数据库相连,对用户的信息进行处理,实现车票的查询系统。
以计算机为中心,实现查询功能的自动化,可为车票信息的查询提供便利。
在实现上,可以分为以下几个部分:
[1]接收由用户输入的车票信息:
通过前台程序接收信息并存入到数据库中。
[2]查询班次信息:
根据所需车票信息(出发城市、目的城市、乘客人数),在数据库中查询并得到正确的班次的信息。
[3]传递班次信息到用户:
把得到的班次信息通过前台显示程序反映给用户。
2.3.2性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的性能需求:
1.系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。
在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。
2.系统的开放性[11]和系统的可扩充性
车票查询系统在开发过程中,应该充分考虑以后的可扩充性。
例如进一步扩展为车票管理系统,用户查询的需求也会不断的更新和完善。
所有这些,都要求系统提供足够的手段进行功能的调整和扩充。
而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。
通过软件的修补、替换完成系统的升级和更新换代。
3.系统的易用性和易维护性
本系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。
这就要求系统能够提供良好的用户接口,易用的人机交互界面。
4.系统的标准性
系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。
所有这些都要符合主流国际、国家和行业标准。
例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。
如规范的数据库操纵界面、作为业界标准的TCP/IP网络协议及ISO9002标准所要求的质量规范等;同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范[12],保证代码的易读性、可操作性和可移植性。
5.系统的先进性
目前计算系统的技术发展相当快,在系统的生命周期尽量做到系统的先进,充分完成信息处理的要求而不至于落后。
这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。
另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。
6.系统的响应速度
应尽量优化代码,加快反应速度,以保证实时的操作性。
2.3.3数据需求
机票预定系统的数据需求包括如下几点:
1.数据录入和处理的准确性和实时性
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。
数据的输入来源是手工输入。
手工输入要通过系统界面上的安排系统具有容错性[13]。
2.数据的一致性与完整性
由于系统的数据是共享的,如何保证这些数据的一致性,是系统必须解决的问题。
要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。
对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。
3.数据的共享与独立性[14]
整个车票查询系统的数据是共享的。
然而,从系统开发的角度上看,共享会给设计和调试带来困难。
因此,应该提供灵活的配置,通过人工干预的手段进行系统数据的交换。
这样,也能提供系统的强壮性。
2.3.4系统逻辑模型
系统的ER图如下:
3.车票查询系统的设计
3.1系统总体设计
系统层次结构图:
用户界面的设计:
在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。
在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。
外观上也要做到合理化,考虑到用户多对WINDOW风格较熟悉,应尽量向这一方向靠拢。
在设计语言上,已决定使用Java进行编程,在界面上可使用Java所提供的可视化组件[15],向WINDOWS风格靠近。
其中服务器程序界面要做到操作简单,易于管理。
总的来说,系统的用户界面应作到可靠性、简单性、易学习和使用。
软件接口设计:
程序可使用Java提供的对SQLSERVER的接口,进行对数据库的所有访问,使用SQLSERVER的对数据库的备分命令,以做到对数据的保存。
硬件接口设计:
在输入方面,对于键盘、鼠标的输入,可用Java的标准输入/输出,对输入进行处理。
在输出方面,也可用Java的标准输入/输出对其进行处理。
内部接口设计:
内部接口方面,各模块之间采用方法、参数传递、返回值的方式进行信息传递。
接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。
3.2.数据结构设计
3.2.1数据库数据结构设计
DBMS的使用上系统将采用SQLSERVER,系统主要需要维护1张数据表:
班次号
出发城市
目的城市
乘客人数
上表保存了所有的班次信息,它的主键为班次号。
车票查询系统的类图如下:
3.2.2物理数据结构设计
物理数据结构设计主要是设计数据在模块中的表示形式。
数据在模块中都是以结构的方式表示。
查询信息
错误信息
车票信息
数据库基本信息表
数据库信息表
列名
数据类型
字段大小
含义
是否为空
Number
Varchar
10
班次号
NOTNULL
Leavecity
Varchar
50
出发城市
NOTNULL
Destination
Varchar
50
目标城市
NOTNULL
Econum
INT
乘客人数
NOTNULL
3.2.3创建表/字段
上面分析了数据库表的结构,下面给出在SQLServer2000中实现这些表的创建的SQL语句。
创建数据库中车次信息表,SQL代码如下。
创建SQL的数据库文件mdf和日志文件ldf:
createdatabaseticket
on
(
name='ticket_data',
filename='e:
\\ticket\\ticket.mdf',
size=5MB,
filegrowth=1MB
)
logon
(
name='ticket_log',
filename='e:
\\ticket\\ticket.ldf',
size=5MB,
filegrowth=10%
)
创建车次表:
useticket
createtableticketinfo(numbervarchar(10)notnullprimarykey,leavecityvarchar(50)notnull,destinationvarchar(50)notnull,econumintnotnull)
insertticketinfo
3.3.系统详细设计
3.3.1系统流程图
系统具体工作流程:
第一步,接受用户输入的查询信息(包括出发城市、目标城市、乘客人数);第二步,对用户输入的数据进行处理,如数据不符合格式要求,则提示错误,如符合要求,则将数据送入数据库进行查询;第三步,将输入数据和数据库中内容进行核对,如有满足条件的数据库信息则输出,如无则给用户提示。
系统流程图如下:
由系统流程图改编的流图:
从图中可看出,系统环形复杂度为3
用盒图的表示方法:
3.3.2运行模块
运行模块的组合:
程序在有输入时启动接收数据模块,通过各模块之间的调用,读入并对输入进行格式化。
在接收数据模块得到充分的数据时,将调用数据传输模块,将数据送到数据库,并等待接收数据库返回的信息。
接收到返回信息后随即调用数据输出模块,对信息进行处理,产生相应的输出。
运行控制:
运行控制将严格按照各模块间调用关系来实现。
在事务中心模块中,需对运行控制进行正确的判断,选择正确的运行控制路径。
运行时间:
在软体的需求分析中,对运行时间的要求为必须对作出的操作有较快的反应。
可以使用较快的处理器或者其他硬件设备来加快运行速度。
3.3.3出错处理设计
程序在运行时主要会出现两种错误:
1、由于输入信息,或无法满足要求时产生的错误,称为软错误。
2、由于其他问题,如网络传输超时等,产生的问题,称为硬错误。
对于软错误,须在查询操作成功判断及输入数据验证模块由数据进行数据分析,判断错误类型,再生成相应的错误提示语句,送到输出模块中。
对与硬错误,可在出错的相应模块中输出简单的出错语句,并将程序重置。
返回输入阶段。
出错信息必须给出相应的出错原因,例:
输入数据不符合要求;
找不到指定班次。
3.3.4运用面向对象的分析对系统建模
面向对象分析[16],就是抽取和整理用户需求并建立问题与精确模型的过程。
面向对象建模得到的模型[17]包含系统的3个要素,即静态结构(对象模型)、交互次序(动态模型)和数据变换(功能模型)。
解决的问题不同,这三个子模型的重要程度也不同:
几乎解决任何一个问题,都需要从客观世界实体及实体间相互关系抽象出极有价值的对象模型;当问题涉及用和时序时,动态模型是重要的;解决运算量很大的问题,则涉及重要的功能模型。
动态模型和功能模型中都包含了对象模型中的操作。
复杂问题的对象模型通常由下述5个层次组成:
主题层、类与对象层、结构层、属性层、服务层。
描绘车票查询系统的用例图:
系统事件跟踪图:
4.车票查询系统的编码和测试
4.1系统编码
4.1.1用户操作模块
定义图形界面中的各个变量(包括界面边框,按钮等):
privateJPanelpan;
privateJLabellblLeave;
privateJTextFieldtxtLeave;
privateJLabellblDestination;
privateJTextFieldtxtDestination;
privateJLabellblEconum;
privateJTextFieldtxtEconum;
privateJButtonbtnSearch;
privateJButtonbtnReset;
定义各个参数的变量(名称、数据库、返回值):
privateStringstrLeave="";
privateStringstrDestination="";
privateStringstrEconum="";
privateintEconum=0;
privateStringsql="";
privateStringresult="";
privateintrstNum=0;
privateDBToolsdb;
privateResultSetrs;
查询界面的类名:
publicMainFrame()
查询界面中各个部分的名字
pan=newJPanel();
lblLeave=newJLabel("出发城市");
txtLeave=newJTextField();
lblDestination=newJLabel("目的城市");
txtDestination=newJTextField();
lblEconum=newJLabel("乘客人数");
txtEconum=newJTextField();
btnSearch=newJButton("查询");
btnReset=newJButton("重置");
初始化各项的值:
getContentPane().setLayout(null);
pan.setLayout(null);
pan.setSize(450,110);
pan.setLocation(20,15);
pan.setBorder(newTitledBorder(null,"",TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.DEFAULT_POSITION,null,null));
给绘图函数赋值,画出具体的界面:
lblLeave.setBounds(20,20,90,30);
pan.add(lblLeave);
txtLeave.setBounds(90,20,100,25);
pan.add(txtLeave);
lblDestination.setBounds(230,20,90,