馬定爭 薛益鴿
文章編號: 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:
作者簡介:
通訊作者: 收稿日期: 引言
隨著國內社會經(jīng)濟發(fā)展,人民生活水平不斷提高,選擇以更為舒適和快捷的民航出行的旅客也越來越多,民航客運正逐步完成由高端化服務向平民化服務的轉變。因此,機票預定服務成為了開啟航天旅行的第一步,此時一個好的機票預定系統(tǒng)顯得尤為重要。
與傳統(tǒng)的C++語言相比,JAVA語言在編程和使用過程中更加人性化,能夠設計出計算機高度交互、安全穩(wěn)定的應用軟件,在軟件開發(fā)的過程中更加方便迅捷。目前,眾多的軟件開發(fā)商也在逐漸支持JAVA開發(fā)的軟件,推動了JAVA進入PC市場的腳步1]。綜上所述,本文采用JAVA語言開發(fā)了一個機票預訂系統(tǒng)。
1開發(fā)環(huán)境
1.1MyEclipse
MyEclipse是一個綜合性的工作平臺(MyEclipseEnterprise Workbench)。利用MyEclipse可以在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布以及應用程序服務器的整合方面極大地提高工作效率。同時,該平臺是一個功能豐富的JAVA集成開發(fā)環(huán)境,包括了完備的編碼、調試、測試和發(fā)布功能。
MyEclipse是一個很好的用于開發(fā)java EE的 Eclipse插件的集合,MyEclipse的功能非常強大,支持也非常廣泛,尤其對于各種開源的產(chǎn)品支持很好。MyEclipse是一款付費軟件,但由于MyEclipse具有非常強大的功能和豐富的插件系統(tǒng),使用該插件可以大大縮短工作時間。
1.2 SQL Server
SQL server是Microsoft公司推出的數(shù)據(jù)庫管理系統(tǒng),可以將數(shù)據(jù)存在各種設備上,從數(shù)據(jù)中心到PC端或者移動設備。SQL server具有高效的特點,使得用戶可以降低開發(fā)和管理數(shù)據(jù)源的時間和成本。SQL server為本文設計的軟件提供了強大的安全性和可靠性,并且使設計出的軟件具備完善的功能。
2案例分析
本文設計的機票預訂系統(tǒng)可以實現(xiàn)客戶在該系統(tǒng)上方便快捷地進行購票,同時,客戶還能方便地查看機票的所有信息,其中包括:航班編號、艙位等級、乘客姓名、目的地、出發(fā)時間等重要信息。為了方便客戶的查詢,系統(tǒng)提供了訂單管理和個人中心模塊。綜上所述,本系統(tǒng)的設計目標如下:
(1)登入管理。注冊成為本系統(tǒng)的會員后可以進行在線購票、享受優(yōu)惠、快捷地進行購票管理。
(2)國內機票。查詢國內航班的信息,包括航班編號、機艙等級、出發(fā)到達時間、票價、登機口號等。
(3)國際機票。查詢國內航班的信息,包括航班編號、機艙等級、出發(fā)到達時間、票價、登機口號等。
(4)訂單管理??梢愿鶕?jù)訂單號、航班的出發(fā)日期、到達日期進行查詢已訂購的機票。也可以進行機票的退訂。
(5)個人中心。會員可以進行修改密碼、上傳頭像等。
該系統(tǒng)的功能示例圖和總體功能模塊如圖1和圖2所示。
3程序設計
3.1數(shù)據(jù)庫設計
圖3示出了本文設計的數(shù)據(jù)庫的關系圖。從圖中可以看出,該數(shù)據(jù)庫共分為7個數(shù)據(jù)表,其中: User(用戶表)存放登錄會員的賬號、密碼;Sales(銷售表)存放訂單號、乘客名字、航班編號、銷售時間;Tourers(乘客表)存放乘客的信息,包括性別、身份證號、電話等信息;Tickets(訂單表)存放訂單編號、乘客名字、航班編號、艙位等級、出發(fā)時間、到達時間、機票價格、登機口號;Flight(航班表)存放航班編號、公司編號、出發(fā)地、目的地、出發(fā)時間、達到時間、飛行長度、機票價格;Company(公司表)存放公司名稱、公司ID、公司電話、公司地址;AirportCity(機場城市表)存放機場地址、機場城市、機場類型(國內還是國外的)。上述每張表的關系結構描述見表1。
非空銷售銷售號Varchar10主鍵用戶名Varchar10非空機票號Varchar10非空銷售時間Datetime旅客旅客名Varchar10主鍵性別Bit非空身份證號碼Varchar20電話Varchar20機票機票號Varchar10主鍵旅客名Varcahr10非空航班號Varchar10非空航班等級Varchar10非空出發(fā)時間Varchar10非空到達時間Varcahr10非空價格Float非空登記口Int非空航班航班號Varchar10主鍵公司號Varchar10非空出發(fā)地Varchar20非空到達地Varchar20非空出發(fā)時間Varchar10非空到達時間Varchar10非空飛行時間Int公司公司名Varchar20非空公司號Varchar10主鍵公司電話Varchar20非空地址Varchar40非空3.2數(shù)據(jù)庫的連接
本文采用JDBC(Java Data Base Connectivity)連接數(shù)據(jù)庫編寫數(shù)據(jù)庫應用程序。JDBC由一組用JAVA語言編寫的類和接口組成,可以為軟件訪問數(shù)據(jù)庫提供接口。本文首先創(chuàng)建一個DbUtil.JAVA類來連接數(shù)據(jù)庫。在使用軟件時各種功能都要連接數(shù)據(jù)庫,因此把連接數(shù)據(jù)庫的代碼打包封裝。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登錄、注冊功能模塊
為了使用戶更好地體驗到本系統(tǒng)的方便、快捷。登錄、注冊界面的設計遵循簡潔美觀的原則。界面設定3個按鈕,分別為登錄、重置、注冊。重置功能是把輸入框置空。注冊界面如圖4所示。
用戶在登錄、注冊時都會與數(shù)據(jù)庫發(fā)生信息的交互。利用傳參使用戶在輸入框里輸入的數(shù)字和數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生交互,驗證密碼的正確性。注冊利用了SQL的插入語句,通過JDBC實現(xiàn)用戶的注冊。登錄、注冊功能模塊的核心代碼如下所示:
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選票訂票功能模塊
用戶點擊國內機票按鈕,通過選擇出發(fā)城市、目的城市、出發(fā)日期查看航班信息,然后進行購票。用戶不需要點擊查詢按鈕就可進行數(shù)據(jù)的刷新,增加了用戶的UI體驗。點擊數(shù)據(jù)中的購買按鈕,輸入乘客的信息就能快捷地購買機票。圖5示出了國內機票功能模塊。
國內機票和國際機票的UI界面和功能實現(xiàn)全部由代碼編寫。本文采用動作監(jiān)聽事件,當鼠標點擊出發(fā)城市、目的城市、出發(fā)時間時,系統(tǒng)將用戶的數(shù)據(jù)傳送到后臺,實現(xiàn)了不用鼠標點擊查詢就可查詢航班信息的功能。核心代碼如下所示:
final JDesktopPane jDesktopPane = new JDesktopPane();
JButtonbefore = new JButton("上一頁");
JButtonnext = new JButton("下一頁");
finalJTextField dateText = new JTextField();
JLabeljLabellv1 = newJLabel("出發(fā)城市:");
JLabeljLabellv2 = newJLabel("目的地城市:");
finalJLabeljLabellv3 = newJLabel("出發(fā)日期:")
3.5訂單管理功能模塊
用戶訂購機票后,可以進入訂單管理功能模塊進行機票信息查詢,退訂等操作。與選票訂票功能模塊不同,訂單管理功能模塊使用了MyEclipse中的Swing組件。通過可視化進行UI布局及簡單功能的實現(xiàn)。圖6示出了訂單管理功能模塊。
訂單管理模塊可以分別根據(jù)訂單號、預定日期進行查詢。通過參數(shù)傳遞,把數(shù)據(jù)傳遞給執(zhí)行SQL語句的JAVA類進行數(shù)據(jù)的查詢與退訂。查詢按鈕設置了鼠標監(jiān)聽功能,當點擊查詢按鈕時,會把訂單號、預定日期等參數(shù)傳入TicketDao.java 類中,執(zhí)行此類中已創(chuàng)建的方法。部分代碼如下 :
//訂單查詢
public List
List
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
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; }
當用戶取消行程進行退票時,退訂按鈕設置一個常用的動作監(jiān)聽功能,當鼠標點擊此按鈕時,用戶所選的機票信息傳入下方的方框,點擊退訂可以把參數(shù)傳入TicketDao.java 類中來執(zhí)行SQL的刪除語句。圖7示出了退票功能模塊,點擊乘客為張三的機票,數(shù)據(jù)實時傳入訂單操作的表單里,確定用戶訂單信息,進行退訂。
3.6個人中心功能模塊
個人中心具有修改密碼和查詢近期訂單的功能。實現(xiàn)效果如圖8所示。
實現(xiàn)了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結束語
航空出行已經(jīng)成為人們普遍選擇的一種交通工具,本文設計的系統(tǒng)利用SQLServer2008作為服務器數(shù)據(jù)庫,并使用Swing、JDBC、JAVA、util、EventListene等技術實現(xiàn)注冊、登錄、航班查詢、訂單管理、個人中心等功能。UI界面簡潔美觀,各功能能夠正常使用,同時也注重用戶的體驗。不過龐大的機票預定系統(tǒng)需要各方面的技術支持,本文所設計的軟件只從功能角度簡單地實現(xiàn)了機票預定系統(tǒng),在系統(tǒng)的結構架設、系統(tǒng)安全性能、用戶體驗等方面還有待完善。
參考文獻
[1] 李政. 試論Java編程的現(xiàn)狀及其發(fā)展前景[J].電子制作,2013(19):81.
[2] 李莫凡.淺析java現(xiàn)狀和前景[J]. 電腦迷,2016(2):78.
[3] 翁春榮.基于計算機軟件開發(fā)的JAVA編程語言分析[J]. 山西能源學院報,2017,30(4):204-205,219.
[4] 韓璐. 基于Web的航空票務管理系統(tǒng)的設計與實現(xiàn)[D]. 西安電子科技大學, 2013.
[5] 韓若冰. 機票預定系統(tǒng)的設計與實現(xiàn)[D]. 廈門大學,2014.
[6] 周寶亮,王敏.計算機軟件開發(fā)中JAVA編程語言的應用[J]. 電子技術與軟件工程,2017(3):61-62.
[7] 王小虎. 影票在線預訂系統(tǒng)的設計與實現(xiàn)[D]. 吉林大學,2017.
[8] 李煒杰.計算機軟件開發(fā)的JAVA編程語言分析[J]. 知音勵志,2017(10):131.
[9] 田智.基于計算機軟件開發(fā)的JAVA編程語言分析[J]. 硅谷,2014,7(19):59,37.
[10]邢俊鑫.基于Java編程語言的計算機軟件開發(fā)技術[J]. 電子技術與軟件工程,2017(23):47-48.
[11]張波. 基于Java的數(shù)據(jù)庫訪問引擎的研究與實現(xiàn)[D]. 中南大學,2007.(