航空订票系统详细设计 联系客服

发布时间 : 星期四 文章航空订票系统详细设计更新完毕开始阅读44fc25f40622192e453610661ed9ad51f11d54ef

import java.util.Calendar; import com.tarena.abs.model.*;

// 机票出票记录访问接口

public interface TicketOrderDAO {

// 执行出票的操作。

public boolean order(Order ord);

// 执行退票操作。

public boolean cancelOrder(int TicketNumber);

// 查询指定营业网点在指定时间段内的出票记录

Set

getAllTicketOrder(Branch

branch,Calendar

public

startDate,Calendar endDate);

// 得到指定营业网点指定日期内的营业额。

public double getAllTicketMoney(Branch branch,Calendar startDate,Calendar endDate);

//得到所有营业网点指定日期内的营业额

public double getAllTicketMoney(Calendar startDate,Calendar endDate); }

4 关健代码分析 4.1流程代码分析

服务器启动时读取配置文件,读取数据,并且服务器端ServerSocket 等待客户端线程

//查询所有出票信息

public Set getAllTicketOrder();

访问,当收到客户端相应后,则创建一个新的服务线程 执行服务。

ServerSocket ss=null; Socket s=null;

try {

//创建服务器socket

ss=new

ServerSocket(Integer.parseInt(pro.getProperty(\

while(true){

s=ss.accept();

//转发给serverThread处理(传递socket参数) new ServerThread(s).start()

}

} catch (IOException e) { }

e.printStackTrace();

服务线程ServerThread通过构造函数接受socket,然后转发给Controller

public class ServerThread extends Thread{

Socket s;

protected ServerThread(Socket s){ //用传入的socket初始化 }

public void run(){

try {

new Controller(s).handle(); //交给控制器处理 this.s=s;

}

} catch (Exception e) {

e.printStackTrace();

}finally{ } }

try{s.close();}catch(IOException e){}

由controller调用handle方法,分析请求对象。

if(type.equals(\登陆处理

loginHandle(req);

}else if(type.equals(\航班计划查询处理

flightSearchHandle(req);

}else if(type.equals(\订单处理

orderHandle();

}else if(type.equals(\退出处理

//quitHandle(); break;

}else if(type.equals(\ }

有不同的处理程序,调用相应的dao将查询信息封装到response中。

modifyPasswd(req);

hs=(HashSet)(flightDao.getAllFlights(fromAddr,toAddr,cal)); Response res=new Response(\res.setData(hs);

4.2用表格显示表单

当客户端查询到航班计划时,把flightlist航班集合传给FlightTableModel,再把FLightTableModel传给JTable,然后把JTable加入JScorllPane,就会自动显示数据。

FlightTableModel ftm = new FlightTableModel(flightlist); JTable jt = new JTable(ftm);

ClientMainClass.clientFrame.setTable(jt);

FlightTableModel实现了AbstractTableModel接口,实现了如下四个方法。

package com.tarena.abs.client; import javax.swing.table.*; import java.util.*;

import com.tarena.abs.model.*;

public class FlightTableModel extends AbstractTableModel{

ArrayList s;

public FlightTableModel(ArrayList s){ }

//获得列名

public String getColumnName(int arg0) {

switch(arg0){

case 0: return \航班号\case 1: return \出发地\case 2: return \目的地\case 3: return \起飞时间\case 4: return \到达时间\case 5: return \机型\case 6: return \票价\case 7: return \头等舱\case 8: return \公务舱\case 9: return \经济舱\default: return null; this.s=s;

}

}

//获得行数

public int getColumnCount() { }

//获得列数

public int getRowCount() { }

//获得指定位置的值

public Object getValueAt(int row, int col) {

Flight f=(Flight)s.get(row); if(row<0 || row>s.size())

return null; return s.size(); return 10;

switch(col){

case 0: return f.getSch().getFlightNumber(); case 1: return f.getSch().getFromAddress(); case 2: return f.getSch().getToAddress(); case 3: return f.getSch().getFromTime(); case 4: return f.getSch().getToTime(); case 5: return f.getSch().getPlane(); case 6: return

(int)(f.getSch().getPrice()*f.getPriceOff());

}

}

case 7: return f.getFCSRemain(); case 8: return f.getBCSRemain(); case 9: return f.getECSRemain(); default: return null;

}

4.3 Hibernate映射关系

1、构建pojo(Plain Old Java Objects)对象

用JDBC储存数据时,涉及多个表格的修改,查找。工作难度较大。所以考虑用hibernate