飞机售票 罗阳_第1页
飞机售票 罗阳_第2页
飞机售票 罗阳_第3页
飞机售票 罗阳_第4页
飞机售票 罗阳_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、装订线长 春 大 学 课程设计纸 目 录1 设计目的12 需求分析22.1 总体分析22.2 性能需求分析23 设计目标及流程33.1 设计目标33.2设计流程34 功能介绍44.1 功能详细介绍-用户系统54.2功能详细介绍-管理员系统55技术支持75.1 Java技术75.2开发工具95.3 数据库 MySQL 设计146 系统实现196.1 用户系统代码实现206.2 管理员系统实现代码327 设计总结378 致谢38参 考 文 献391 设计目的因特网技术的飞速发展正在迅速地改变着人们的生活方式,因特网正在由科学工作者的工具变为普通百姓获取信息、进行交流的场所,而因特网的商业应用则尤为

2、引人注目。随着国内因特网的发展,国内航空公司也开始酝酿网上订票、售票业务。 网上订票系统是一个取代过去由人工处理的订票系统,在一定成度上提高了购票的透明度和自主性,但网站在方便消费者的同时,仍存在许多不足的地方。例如,航空公司网站只能提供公司自有航班的机票信息,客观上限制了人们的选择范围;旅行社网站则多以旅游产品为主,很少单独提供机票的预订服务,因此其在机票服务的专业性、丰富性上都会大打折扣。个别旅游、机票销售的门户网站虽然可以提供酒店、机票预订等服务,但因这类网站缺乏实时的机票数据信息,因而在其所提供的票务信息的权威性、服务内容的专业性上仍然不尽人意。因此,消费者仍然真正做到自主选购机票,而

3、所获得的购票体验也仍存在着“费时费力,无法排除订票的不确定性”,或者“价格折扣等关键信息可信度不高”等负面感觉。 客户能随时随地通过因特网查询航班的详细信息,并预定最满意的航班。客户无须来往与机场和家、办公室之间,不必在售票点排队买票或订票,只要有一根网线就能轻松搞定从查询航班到订票到取票等一系列列过程。改 “订”票服务为的“定”票服务,排除用户“订”票后可否获得所需机票的不确定性;用户可以自己选择航班、时刻、舱位,就如同在超市货架上自选货物般简单,从而摒弃了传统“问讯式”服务的弊端;使航班价格及信息透明化,最大限度地消除了目前机票销售市场上存在的散、乱、黑等现象,从而使用户明明白白“定”票,

4、机票代理人明明白白售票,使用户及机票代理人的合法权益得到最大保障,这就是本系统的开发目的。2 需求分析2.1 总体分析机票管理系统是实现机场机票的预定、统计和分析,提高机票运用的科学管理水平,充分发挥机票利用率,节省订退票时间。机场管理系统的建立不仅会减少大量人力的繁琐劳动,而且产生良好的社会效益和经济效益。机票管理系统的具体功能为:(1)录入机场近期航班情况,并进行严格校验,保证原始数据的绝对准确。(2)由录入数据进而建立订票系统、退票系统、查询系统、管理系统。(3)订票系统中,具有严格的乘客身份录入,并同时对当次航班票数做出统计。机票分受完与未受完两种,要根据不同情况采取不同措施。(4)退

5、票系统中,严格校验退票人身份,并明确相应的返还金额。(5)查询系统中,分为不同的查询方式,有按航班号查找、按照乘客姓名查询、按照日期查询、按照起飞港到达港查询。(6)管理系统中,细化模块,整体把握机票售出情况和近期及某天飞机飞行情况,并具有新增航班和取消航班的功能。2.2 性能需求分析从实用、好用的角度出发开发航空订票管理系统,建立面向顾客管理全过程的管理与控制系统,在设计过程中主要考虑以下原则:(1)可操作性原始信息皆由管理员录入,系统应尽量减少操作员的数据录入量,录入数据尽量通过设计下拉列表框来选择录入,这样的处理同时也避免了许多录入异常现象的发生。数据输入的格式应符合业务习惯,并且直观、

6、方便。要求系统处理的数据能准确无误,同时输出信息要求直观、简洁。(2)可靠性系统运行具有较高的可靠性,提供严格的并发控制,确保数据的一致性和正确性。(3)实用性从用户的实际需要出发进行系统开发,不盲目追求高新技术的应用。(4)安全性系统安全措施可靠、高效、可维护性措施好,有限权限控制不同人员的操作,保证其安全性。 (5)可维护性为了保证系统的可维护性,要求具有详细的文档资料,同时,要求系统在功能设计上考虑可扩展性,以满足业务变动的需求。(6)可移植性系统开发完成后,要能运行于任何由Windows NT/Windows 9X操作系统所构成的计算机网络环境下。3 设计目标及流程3.1 设计目标 扩

7、展功能 提 升 功 能 设计要求 基本功能1.用户须知2.优惠提醒3.流程介绍1往返航班查询2. 机票预订3. 票务打折1.票务信息查询2.购票3.退票4.查询统计 图 1 设计目标3.2设计流程 设 计 分 析 及 构 思 代 码 编 程 实 现分析总结 测 试 校 验重中之重-好的分析与构思,才能有好的设计。为设计的顺利进行打下基础。 重点亦是难点 重点:没有代码一切都是空想。 难点:想起来容易做起来难。 细心,周祥考虑 每个环节都不能忽视,一个小的疏忽,导致程序无法运行。所以要细心,周详考虑。 分析不足,总结经验。-宝贵财富 图2 设计流程4 功能介绍购票须知购票流程售票系统购票改签预定

8、须知预订系统用户系统预定机票流程预定机票退票须知退票流程 XX航空公司国内售票售票系统退票系统退票特价票须知特价票系统特价票航班查询查询系统票务查询日统计统计系统月统计年统计管理员系统机票打折登录打折系统飞机系统更新更新系统航班信息更新 图3 功能介绍4.1 功能详细介绍-用户系统(1)售票系统 购票须知:提供用户须知、购票须知、购票种类、中转服务、常见问题、其它等相关提示及服务,供购票者查看咨询,为顾客提供嘴特新的服务。 购票流程:顾客在不了解购票过程是可根据购票流程进行操作,给顾客购票提供方便,使购票过程更加快捷,提高实效性。购票:该模块是用户进行购票的主要系统,在这里你可以根据自己的需求

9、,查询您需要的航班。并可查看该飞机的座次情况,以及售票情况。进行选座购票,及核实机票信息与个人信息,进行购票。改签 :进行改签业务,销毁当前机票信息,调到适合顾客的航班。 (2)退票系统退票须知:绍一些退票相关事宜,列如何时是退票正当时间,在有效时间内可以退票,超过这一期限不予退票,及不同时期退票有不同的手续费。给用户提示。退票流程:介绍退票操作的相关顺序,给不了解退票流程的顾客以提示,方便用户进行退票。退票:顾客通过身份验证信息及机票信息查询你的机票是否在退票有效时间范围内,进行退票事物。 (3)预订票系统预订票须知:介绍预订机票的相关事宜,及可能遇到的问题。给顾客已提示,方法顾客订购机票,

10、有一个合适而愉快的的旅行。预订流程:介绍预定票操作的相关顺序,给不了解退票流程的顾客以提示,方便用户进行预定票。预订票:实现预订票操作,在这里你可以根据自己的需求,查询您需要的航班。并可查看该飞机的座次情况,以及售票情况。进行选座预定机票,及核实机票信息与个人信息,进行预定票。(4)特价机票系统特价票须知:对特价票进行介绍,及特价票的风险介绍。给顾客已提示,使顾客根据自身条件选择最适合自己的机票。特价票:进行特价机票购买的操做。4.2功能详细介绍-管理员系统(1) 查询系统航班查询:管理员可根据航班进行查询航班信息。票务查询:对机票进行查询,可以获取航班的上座率。(2)打折系统 机票打折:实现

11、机票打折业务。(3)统计系统日统计:对售出的机票进行日统计,亦可根据航班进行查询。月统计:对售出的机票进行月统计,亦可根据航班进行查询。年统计:对售出的机票进行年统计,亦可根据航班进行查询。(4)更新系统 实现航班的增删改功能。 5技术支持开发语言飞机售票系统数据库开发工具 图 5 系统三大技术支持5.1 Java技术    Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动感的web,int

12、ernate计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中

13、运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.6。  Java分为三个体系JavaSE,JavaEE,JavaME。Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C+语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。主要特性如下:Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承

14、、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConn

15、ection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制

16、(类SecurityManager)让Java应用设置安全哨兵。 Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码

17、格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从

18、Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java语言的优良特性

19、使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。5.2开发工具Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件

20、集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和

21、接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。JDBC与数据库连接代码实现/* * 这是数据库操作类 * * since 3.0 2013/12/9 * author KUANG * */public class DB static String driver = "com.mysql.jdbc.Driver"static String url = "jdbc:mysql:/localhost:3306/yiqisheji"/ 进入指定数据库static String username = "

22、root"static String password = "123"Connection conn = null;Statement stmt = null;ResultSet rs = null; /* * 这是数据库-加载驱动-获得连接 构造方法 * * */public DB() try Class.forName(driver);/ 加载驱动conn = DriverManager.getConnection(url, username, password);/ 获得连接/* 自动提交设置 */ conn.setAutoCommit(false);stm

23、t = conn.createStatement();/ 语句对象 catch (ClassNotFoundException e2) e2.printStackTrace(); catch (SQLException e) e.printStackTrace();/* * 设置自动/手动提交 * param tag * 自动/手动 * */public void setAutoCommit(boolean tag) try conn.setAutoCommit(tag); catch (SQLException e) e.printStackTrace();/* * 提交事务 * conn.

24、rollback();-回滚操作-加入batch中-若失败全失败 * */public void commit() try mit(); catch (SQLException e) e.printStackTrace();/* * 这是数据库增删改操作方法 * param str * sql语句 * return 返回操作成功行数 */public int update(String str) try int i = stmt.executeUpdate(str);return i;/ 返回操作成功行数 catch (SQLException e) e.printStackTrace();r

25、eturn -1;/ 操作失败返回-1/* * 这是数据库批处理方法-用于增删改 * param sql * SQL语句数组 * return 返回每行语句影响的行数所组成的数组 * */public int executeBatch(String sql) for (int i = 0; i < sql.length; i+) try stmt.addBatch(sqli); catch (SQLException e) e.printStackTrace();try return stmt.executeBatch(); catch (SQLException e) e.printS

26、tackTrace();return null;/* * 这是数据库查询操作方法-禁止外部调用 * param str * 语句 * return ResultSet 返回结果集 * */private ResultSet query(String str) try rs = stmt.executeQuery(str);return rs; catch (SQLException e) e.printStackTrace();return null;/* * 这是ResultSet(返回结果集)转LinkedList(双项链表)的方法-间接调用query * param sql * 执行的语

27、句 * return 返回链表 * */public LinkedList<HashMap<String, String>> queryToList(String sql) LinkedList<HashMap<String, String>> list = new LinkedList<HashMap<String, String>>();rs = query(sql);try ResultSetMetaData mt = rs.getMetaData();/ 结果集的元数据-字段,字段类型,长度while (rs.ne

28、xt() HashMap<String, String> map = new HashMap<String, String>();for (int i = 1; i <= mt.getColumnCount(); i+) / 条数String columnName = mt.getColumnName(i);/ 第i个字段String columnValue = rs.getString(columnName);/ 结果集中该字段信息map.put(columnName, columnValue);/ 加入hashmaplist.add(map);/ 加入list

29、return list; catch (SQLException e) e.printStackTrace();return null;/* * 这是关闭数据库方法 * */public void close() try if (rs != null) rs.close();/ 关闭查询操作结果集 catch (SQLException e) e.printStackTrace();try if (stmt != null) stmt.close();/ 关闭数据库对象 catch (SQLException e) e.printStackTrace();try if (conn != nul

30、l) conn.close();/ 关闭数据库连接 catch (SQLException e) e.printStackTrace();5.3 数据库 MySQL 设计 (1)业务模型通过上面的分析,我建立了下列业务模型航班(Flight):用来描述在某个确定日期执行某个定期航班计划的一次航班。例如:2008年5月25日从北京飞上海的CA1202就是一个航班的实例。属性:航班计划,出发日期,各舱剩余座位数,折扣。起始日期(Start Date):用来描述某个航班计划开始的日期。结束日期(End Date):用来描述某个航班计划结束的日期。航班号(planemodel):由航空公司给航班计划定

31、义的唯一标识号码,该号码由2位英文字符和4位数字组成,2位英文字符是航空公司编码,4位数字是航班编码。例如:CA1202就是一个航班计划的航班号,其中CA代表中国国际航空公司,1202代表航班的编号。出发地(From City):用来描述某个航班计划的起飞城市和机场,所有国内机场均用三个英文字母的代码表示,详情请见附录I(国内机场代码表)。目的地(To City):用来描述某个航班计划的到达城市和机场,所有国内机场均用三个英文字母的代码表示,详情请见附录I(国内机场代码表)。离港时间:(Departure):用来描述某个航班计划的从出发地机场离开的时刻,离港时间一般代表飞机舱门关闭,不再接收乘

32、客的时刻。该时间精确到分钟。到港时间:(Arrival):用来描述某个航班计划到达目的地机场的时间,到港时间一般代表飞机舱门开启,允许乘客下飞机的时刻,该时间精确到分钟。出发日期(Date):用来描述某个航班的出发日期,该日期精确到某一天。舱位等级:(Cabin Class):用来描述航班的不同舱位,一般分为三种:头等舱(F),商务舱(C),经济舱(Y)。不同的舱位等级具有不同的机票折扣。*实际情况中航空公司定义的舱位等级可能更复杂,在本项目中为简化业务模型,只对舱位等级作上述三种划分。乘客类型:(Passenger type):用来描述乘坐航班的乘客的类型,一般分为三种:成人(A)(age&

33、gt;12),儿童(C)(2<age<=12),军人 须有军人证件,残疾人士 。不同的乘客类型具有不同的机票折扣,详情请见乘客折扣。飞机机型:(Airplane Model):用来描述执行某个航班计划的飞机的型号,一般来讲,一个航班计划的各次航班都应该采用同种机型的飞机来执行。不同的飞机型号有不同的航程及各舱座位数。*实际情况中,各种机型的座位数是不一样的,同一机型还分好几个系列,如B737(波音737)有B737-200、B737-300.B737-900等多个系列,每个系列座位数都不一样。即使是同一型号、同一系列的机型,所属的航空公司不同,座位数也会不同,因为航空公司在购买飞机

34、时,会根据自己的需要要求厂家采用不同的布局,不同的布局会有不同的头等舱、公务舱、经济舱座位数。在本项目中为简化业务模型,我们认为同种型号的飞机各舱座位数是固定的。基准票价:(Full Price):是指某个航班在没有季节折扣时的一张经济舱成人票的价格,该价格作为该航班计划的基准价格,最终机票价格应该在此基础上乘以舱位折扣和乘客类型折扣。舱位折扣:(Class Discount):不同舱位在基准价格基础上的价格系数,头等舱为1.5,公务舱为1.3,经济舱为1.0乘客类型折扣:(Passenger Discount):不同乘客类型在基准票价基础上的价格系数,成人为1.0,儿童为0.5,军人 0.6

35、,残疾人0.5 。机票订单(Ticket Order):一张成功出票的机票记录,机票价格:(Ticket Price):一张机票的价格,机票价格由以下公式计算:基准价格:=里程*每公里的金额*乘客类型折扣经济舱票价:=基准价格*机票打折率+机建燃油税;商务舱票价:=基准价格*1.3机票打折率+机建燃油税;头等舱票价:=基准价格*1.5机票打折率+机建燃油税;(2)数据库设计根据数据模型,设计数据库如下:其中航班计划表有一个外间引用飞机机型表,飞机机型表(AIRPLANE_MODEL)表1 飞机机型表建表数据字段名描述类型约束airtypeid机型编号INTPRIMARY KEYairtypen

36、ame飞机名VARCHAR (20)NOT NULLt_zuo头等舱座位数INTNOT NULLs_zuo商务舱座位数INTNOT NULLj_zuo经济舱座位数INTNOT NULL 表1 飞机机型表航班表(FLIGHT)表2 航班表见表数据字段名描述类型约束h_id航班编号INTPRIMARY KEYhangban航班号CHAR (20)NOT NULLairtypeid飞机类型编号INTNOT NULLaddress城市名VARCHAR(20)NOT NULLlicheng里程数INTNOT NULLtime出发时刻DATENOT NULL 表2 航班表 售票记录表(TICKET_ORD

37、ER)表5 售票表建表数据字段名描述类型约束id机票编号INT(10)PRIMARY KEYhangban航班编号INT(8)NOT NULLREFERENCES FLIGHT.idsaddress出发城市VARCHAR(40)NOT NULLzhengjian证件号码VARCHAR(20)NOT NULLtime出票日期DATENOT NULLt_h_l头等舱座位号CHAR(6)NULL s_h_l商务舱座位号CHAR(6)NULL j_h_l经济舱座位号CHAR(6)NULL money实付金额DOUBLENOT NULL 表5 售票表6 系统实现进入航空自动售票系统的欢迎界面展示如图6-

38、1所示。 图6-1 系统界面6.1 用户系统代码实现(1)用户系统的购票界面如图6-2所示 图 6-2 购票界面购票界面使用editor面板,在服务类型和行程类型使用单选按钮( Radio Button)将单选按钮放入组控件(Composites)中,是两种服务都可以满足单选。出发城市和目的城市设置mouse Down 事件,mouse Down 事件设置弹出shell来选择城市。出发时间使用DateTime控件,供用户选择日期。界面设置以供用户选择为主。使程序跟规范更有效,同时给检验减轻负担。所有界面都有这一优点。搜索使用 Button 按钮,在Button 中获取用户选择的服务类型和行程类

39、型,根据其不同在做出不同的反应,根据buttonDancheng.getSelection()方法可知是否选择单程按钮,使用if语句判断然后做出不同的反应。如在服务类型选择单程时,当点击搜索(Button)按钮时,首先 获得初始城市和目的地与出发时间。在获取时间时要注意到很多细节如月份是从零开始获取后要加一,另外月与日在小于十时要在前面补零。获取日期的代码如下int year = dateTime.getYear();int month = dateTime.getMonth();int day = dateTime.getDay();String year1 = "" +

40、 year;String month1;String day1;if (month + 1 < 10) month1 = "0" + (month + 1); else month1 = "" + (month + 1);if (day < 10) day1 = "0" + day; else day1 = "" + day;String time = year1 + "-" + month1 + "-" + day1;在获取好所有信息后,便通过JDBC使用SQL

41、语句与数据库建立连接,进行查询。SQL语句sql = "SELECT t.h_id as id,t.hangban as hb,t.airtypeid as type,t.address as sad,r.address as end,t.time as st,r.time as et,r.licheng-t.licheng as km FROM "+ " hangban AS t,hangban AS r WHERE t.hangban=r.hangban AND t.address !=r.address AND "+ "t.address

42、='"+ sad+ "'AND r.address='"+ end+ "'AND t.licheng < r.licheng "将查询结果放在map中,再将map放入LinkedList中。根据其get()方法获取存入的数据。根据size()方法可知其是否有数据。若没有数据则显示Label。提示没有查询到用户需要的航班。反之,则将查询到的结果显示在表格中。其代码实现如下if(list.size()=0)/查寻不到信息是提醒label_6.setVisible(true);label_6.setText(&q

43、uot;暂时没有符合您要求的航班");else/查到了便显示信息,查询到的信息for (int i = 0; i < list.size(); i+) HashMap<String, String> m = list.get(i);String id = m.get("id");String type = m.get("type");String hb = m.get("hb");String st = m.get("st");String km = m.get("km&quo

44、t;);String sql1 = "SELECT discount FROM discount WHERE hangban='"+ hb + "'"System.out.println(sql1);LinkedList<HashMap<String, String>> list1 = d.queryToList(sql1); d.close();HashMap<String, String> m1 = list1.get(0);String discountrate =m1.get("dis

45、countrate");TableItem item = new TableItem(table, SWT.NONE);item.setText(new String id, hb, sad, st,end,discountrate, time,km ); 图 6-3 选座购票界面(2)选座购票界面如图6-3所示,飞机座位使用Label通过for循环实现并给每个Label设置初值0,根从数据库中查询的结果控制Label的颜色并改变初值,再点击订票时根据该值,判断是否为他要定的票。根据点击次数控制座位颜色的代码如下int p = 1;public void mouseDown(Mous

46、eEvent e) if (p % 2 = 1) label.setBackground(SWTResourceManager.getColor(SWT.COLOR_GREEN);String q = (String) label.getData();int x = Integer.parseInt(q.split("-")0);int y = Integer.parseInt(q.split("-")1);tzuoweixy = "t2"/用户选中欲购买的 else label.setBackground(SWTResourceMa

47、nager.getColor(SWT.COLOR_LIST_SELECTION);p+; 图 6-4 验证信息界面 (3)在确定购票后将显示机票信息,和用户个人信息,如图6-4所示。用户仔细核对机票信息无误后可以填写自己身份信息。和是否购买保险。查看相关费用。实现费用查询的代码如下public void widgetSelected(SelectionEvent e) if (button.getSelection() money = money; else if (button_1.getSelection() money = money * 0.5; else if (button_2.g

48、etSelection() money = money * 0.8; else money = money * 0.6;if (button_6.getSelection() yanmoney = 50; else yanmoney = 0;if (button_4.getSelection() yimoney = 200; else yimoney = 0;double countmoney = money + yimoney + yanmoney + moneyshui;count = "" + countmoney;String yufukuan = countmon

49、ey * 0.1 + ""lblYuFuFei.setText(yufukuan);String shengyu = countmoney * 0.9 + ""labelShengYu.setText(shengyu);TableItem item = new TableItem(tableMoney, SWT.NONE);item.setText(new String "" + money, "" + moneyshui,"" + yimoney, "" + yanmone

50、y, count );在用户填写姓名和身份证件信息时要做校验,保证输入规范。姓名校验代码如下/* * 姓名校验 * param String str, Label label 校验字段,提示标签 */public static boolean nameCheck(String str, Label label) Pattern p3 = Ppile("u4e00-u9fa52,6");Matcher m3 = p3.matcher(str);if (!m3.matches() if (str = "" | str = null) / 无信息无错误提示label.setText(""); else if (label != null)labe

温馨提示

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

评论

0/150

提交评论