基于SQL Server与JAVA平台的机票预定系统
   来源:智能计算机与应用     2018年09月09日 12:33

Symbian系统,以及第三版Series60平台.用户内存空

马定争 薛益鸽

文章编号: 2095-2163(2018)03-0214-06中图分类号: 文献标志码: A

摘要: 关键词: (College of Information Engineering, Wenzhou Business College, Wenzhou Zhejiang 325035, China)

Abstract: This paper designs air ticket reservation system based on java, using Swing framework of java and using Eclipse integrated development environment under Windows system for development , using JDBC to connect to the database, which makes the spread of information between them become more convenient and faster. The user can install the database and conveniently store the data in the database. It is divided into domestic air ticket, international air ticket, order management and personal center.

Key words:

作者简介:

通讯作者: 收稿日期: 引言

随着国内社会经济发展,人民生活水平不断提高,选择以更为舒适和快捷的民航出行的旅客也越来越多,民航客运正逐步完成由高端化服务向平民化服务的转变。因此,机票预定服务成为了开启航天旅行的第一步,此时一个好的机票预定系统显得尤为重要。

与传统的C++语言相比,JAVA语言在编程和使用过程中更加人性化,能够设计出计算机高度交互、安全稳定的应用软件,在软件开发的过程中更加方便迅捷。目前,众多的软件开发商也在逐渐支持JAVA开发的软件,推动了JAVA进入PC市场的脚步1]。综上所述,本文采用JAVA语言开发了一个机票预订系统。

1开发环境

1.1MyEclipse

MyEclipse是一个综合性的工作平台(MyEclipseEnterprise Workbench)。利用MyEclipse可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大地提高工作效率。同时,该平台是一个功能丰富的JAVA集成开发环境,包括了完备的编码、调试、测试和发布功能。

MyEclipse是一个很好的用于开发java EE的 Eclipse插件的集合,MyEclipse的功能非常强大,支持也非常广泛,尤其对于各种开源的产品支持很好。MyEclipse是一款付费软件,但由于MyEclipse具有非常强大的功能和丰富的插件系統,使用该插件可以大大缩短工作时间。

1.2 SQL Server

SQL server是Microsoft公司推出的数据库管理系统,可以将数据存在各种设备上,从数据中心到PC端或者移动设备。SQL server具有高效的特点,使得用户可以降低开发和管理数据源的时间和成本。SQL server为本文设计的软件提供了强大的安全性和可靠性,并且使设计出的软件具备完善的功能。

2案例分析

本文设计的机票预订系统可以实现客户在该系统上方便快捷地进行购票,同时,客户还能方便地查看机票的所有信息,其中包括:航班编号、舱位等级、乘客姓名、目的地、出发时间等重要信息。为了方便客户的查询,系统提供了订单管理和个人中心模块。综上所述,本系统的设计目标如下:

(1)登入管理。注册成为本系统的会员后可以进行在线购票、享受优惠、快捷地进行购票管理。

(2)国内机票。查询国内航班的信息,包括航班编号、机舱等级、出发到达时间、票价、登机口号等。

(3)国际机票。查询国内航班的信息,包括航班编号、机舱等级、出发到达时间、票价、登机口号等。

(4)订单管理。可以根据订单号、航班的出发日期、到达日期进行查询已订购的机票。也可以进行机票的退订。

(5)个人中心。会员可以进行修改密码、上传头像等。

该系统的功能示例图和总体功能模块如图1和图2所示。

3程序设计

3.1数据库设计

图3示出了本文设计的数据库的关系图。从图中可以看出,该数据库共分为7个数据表,其中: User(用户表)存放登录会员的账号、密码;Sales(销售表)存放订单号、乘客名字、航班编号、销售时间;Tourers(乘客表)存放乘客的信息,包括性别、身份证号、电话等信息;Tickets(订单表)存放订单编号、乘客名字、航班编号、舱位等级、出发时间、到达时间、机票价格、登机口号;Flight(航班表)存放航班编号、公司编号、出发地、目的地、出发时间、达到时间、飞行长度、机票价格;Company(公司表)存放公司名称、公司ID、公司电话、公司地址;AirportCity(机场城市表)存放机场地址、机场城市、机场类型(国内还是国外的)。上述每张表的关系结构描述见表1。

非空销售销售号Varchar10主键用户名Varchar10非空机票号Varchar10非空销售时间Datetime旅客旅客名Varchar10主键性别Bit非空身份证号码Varchar20电话Varchar20机票机票号Varchar10主键旅客名Varcahr10非空航班号Varchar10非空航班等级Varchar10非空出发时间Varchar10非空到达时间Varcahr10非空价格Float非空登记口Int非空航班航班号Varchar10主键公司号Varchar10非空出发地Varchar20非空到达地Varchar20非空出发时间Varchar10非空到达时间Varchar10非空飞行时间Int公司公司名Varchar20非空公司号Varchar10主键公司电话Varchar20非空地址Varchar40非空3.2数据库的连接

本文采用JDBC(Java Data Base Connectivity)连接数据库编写数据库应用程序。JDBC由一组用JAVA语言编写的类和接口组成,可以为软件访问数据库提供接口。本文首先创建一个DbUtil.JAVA类来连接数据库。在使用软件时各种功能都要连接数据库,因此把连接数据库的代码打包封装。DbUntil.JAVA的代码如下所示:

packageUtil;

importjava.sql.Connection;

public classDbUtil {

String driver ="com.microsoft.sqlserver.jdbl.SQLServerDriver";

Stringurl ="jdbc;sqlserver://localhost:1433;DatabaseName=TRSystem";

String user="sa";

Stringpwd="123456";

Connectionconn=null;

@SuppressWarnings("finally")

public Connection getcon() {

try{

Class.forName(driver);

conn=DriverManager.getConnection(url,user,pwd);

} catch (Exception e) {

//TODO Auto-generated catch block

e.printStackTrace();

} finally{

returnconn; } }

public void close(Connectionconn) {

if (conn!=null){

try {

conn.close();

} catch (SQLException e){

//TODO Auto-generated catch block

e.printStackTrace();

}

} else {

} } }

3.3登錄、注册功能模块

为了使用户更好地体验到本系统的方便、快捷。登录、注册界面的设计遵循简洁美观的原则。界面设定3个按钮,分别为登录、重置、注册。重置功能是把输入框置空。注册界面如图4所示。

用户在登录、注册时都会与数据库发生信息的交互。利用传参使用户在输入框里输入的数字和数据库中的数据发生交互,验证密码的正确性。注册利用了SQL的插入语句,通过JDBC实现用户的注册。登录、注册功能模块的核心代码如下所示:

private voidjButtonlActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

StringuserName = this.jTextFieldl.getText();

String password = new String(this.jPl.getPassword());

if (StringUtil.isEmpty(userName)) {

JOPtionPane.showMessageDialog(null, "用户名不能为空!");

return;

}

if (StringUtil.isEmpty(password)) {

JOPtionPane.showMessageDialog(null, "密码不能为空!");

return;

}

Useruser = new User(userName, password);

try {

UsercurrentUser = userDao.login(user);

if (currentUser != null) {

JOPtionPane.showMessageDialog(null, "登陆成功!");

this.dispose();

String Name = userName;

Mainfrm mainfrm = new Mainfrm(Name);

mainfrm.setVisible(true);

} else {

JOPtionPane.showMessageDialog(null, "用户名或密码错误!");

return;

}

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace(); } }

3.4选票订票功能模块

用户点击国内机票按钮,通过选择出发城市、目的城市、出发日期查看航班信息,然后进行购票。用户不需要点击查询按钮就可进行数据的刷新,增加了用户的UI体验。点击数据中的购买按钮,输入乘客的信息就能快捷地购买机票。图5示出了国内机票功能模块。

国内机票和国际机票的UI界面和功能实现全部由代码编写。本文采用动作监听事件,当鼠标点击出发城市、目的城市、出发时间时,系统将用户的数据传送到后台,实现了不用鼠标点击查询就可查询航班信息的功能。核心代码如下所示:

final JDesktopPane jDesktopPane = new JDesktopPane();

JButtonbefore = new JButton("上一页");

JButtonnext = new JButton("下一页");

finalJTextField dateText = new JTextField();

JLabeljLabellv1 = newJLabel("出发城市:");

JLabeljLabellv2 = newJLabel("目的地城市:");

finalJLabeljLabellv3 = newJLabel("出发日期:")

3.5订单管理功能模块

用户订购机票后,可以进入订单管理功能模块进行机票信息查询,退订等操作。与选票订票功能模块不同,订单管理功能模块使用了MyEclipse中的Swing组件。通过可视化进行UI布局及简单功能的实现。图6示出了订单管理功能模块。

订单管理模块可以分别根据订单号、预定日期进行查询。通过参数传递,把数据传递给执行SQL语句的JAVA类进行数据的查询与退订。查询按钮设置了鼠标监听功能,当点击查询按钮时,会把订单号、预定日期等参数传入TicketDao.java 类中,执行此类中已创建的方法。部分代码如下 :

//订单查询

public List list1(MTickets mtickets,String username) {

List listTickets = new ArrayList();

try {

PreparedStatement pr = conn.prepare Statement(sql);

t = new MTickets();

t.setSaleld(rs.getString("SaleId"));

listTickets.add(t);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

dbUtil.close(conn);

}

return listTickets;

}//日期查詢

public List list2(MTickets mtickets,String username,String St1,String St2) {

if(mtickets.getSaleld()!=null)sql+= " and SaleId='"+mtickets.getSaleld()+"' ";

if(St1!="选择日期"&&St2;!="选择日期")sql+=" and SaleTime between '"+St1+"' and '"+St2+"'";

System.out.println(St1);

try {

PreparedStatement pr = conn.prepare Statement(sql);

ResultSet rs = pr.executeQuery();

MTickets t = null;

while (rs.next()) {

t = new MTickets();

t.setSaleld(rs.getString("SaleId"));

}

} catch (Exception e) {

e.printStackTrace();

} finally {

dbUtil.close(conn);

}

return listTickets; }

当用户取消行程进行退票时,退订按钮设置一个常用的动作监听功能,当鼠标点击此按钮时,用户所选的机票信息传入下方的方框,点击退订可以把参数传入TicketDao.java 类中来执行SQL的删除语句。图7示出了退票功能模块,点击乘客为张三的机票,数据实时传入订单操作的表单里,确定用户订单信息,进行退订。

3.6个人中心功能模块

个人中心具有修改密码和查询近期订单的功能。实现效果如图8所示。

实现了SQL语句的更新操作。部分代码如下:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

String pwd = jLabel4.getText();

if (StringUtil.isEmpty(oldPwd)) {

JOptionPane.showMessageDialog(null, "原密码不能为空!");

return; }

if (a != 0) {

JOptionPane.showMessageDialog(null, "修改成功!\\n新密码为" + newPwd1+ "。");

this.dispose();

} else {

JOptionPane.showMessageDialog(null, "Wrong!");

return; } } }

4结束语

航空出行已经成为人们普遍选择的一种交通工具,本文设计的系统利用SQLServer2008作为服务器数据库,并使用Swing、JDBC、JAVA、util、EventListene等技术实现注册、登录、航班查询、订单管理、个人中心等功能。UI界面简洁美观,各功能能够正常使用,同时也注重用户的体验。不过庞大的机票预定系统需要各方面的技术支持,本文所设计的软件只从功能角度简单地实现了机票预定系统,在系统的结构架设、系统安全性能、用户体验等方面还有待完善。

参考文献

[1] 李政. 试论Java编程的现状及其发展前景[J].电子制作,2013(19):81.

[2] 李莫凡.浅析java现状和前景[J]. 电脑迷,2016(2):78.

[3] 翁春荣.基于计算机软件开发的JAVA编程语言分析[J]. 山西能源学院报,2017,30(4):204-205,219.

[4] 韩璐. 基于Web的航空票务管理系统的设计与实现[D]. 西安电子科技大学, 2013.

[5] 韩若冰. 机票预定系统的设计与实现[D]. 厦门大学,2014.

[6] 周宝亮,王敏.计算机软件开发中JAVA编程语言的应用[J]. 电子技术与软件工程,2017(3):61-62.

[7] 王小虎. 影票在线预订系统的设计与实现[D]. 吉林大学,2017.

[8] 李炜杰.计算机软件开发的JAVA编程语言分析[J]. 知音励志,2017(10):131.

[9] 田智.基于计算机软件开发的JAVA编程语言分析[J]. 硅谷,2014,7(19):59,37.

[10]邢俊鑫.基于Java编程语言的计算机软件开发技术[J]. 电子技术与软件工程,2017(23):47-48.

[11]张波. 基于Java的数据库访问引擎的研究与实现[D]. 中南大学,2007.(

文章 机票 功能