⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controller.java

📁 航空售票系统的代码
💻 JAVA
字号:
package com.tarena.abs.server;
import java.net.*;
import java.io.*;
import java.util.*;

import com.tarena.abs.dao.*;
import com.tarena.abs.model.*;

public class Controller {
	private Socket s;
	private ObjectInputStream ois;
	private ObjectOutputStream oos;
	private BranchDAO agentDao;
	private FlightDAO flightDao;
	private TicketOrderDAO ticketOrderDao;
	
	private Set onlineAgent;
	
	public Controller(Socket s){
		this.s=s;
		agentDao=ServerMainClass.agentDao;
		flightDao=ServerMainClass.flightDao;
		onlineAgent=ServerMainClass.allOnlineAgents;
		ticketOrderDao=ServerMainClass.ticketOrderDao;
		
	}
	public void handle() throws Exception {	
		ois=new ObjectInputStream(s.getInputStream());
		oos=new ObjectOutputStream(s.getOutputStream());
		while(true){
			Request req=(Request)ois.readObject();        //从客户端读取请求对象
			String type=req.getType();
			if(type.equals("login")){             // 登陆处理
				loginHandle(req);
			}else if(type.equals("flightSearch")){    //航班计划查询处理
				flightSearchHandle(req);
			}else if(type.equals("order")){      //订单处理
				orderHandle();
			}else if(type.equals("quit")){       //退出处理
				quitHandle(req);
				break;
			}else if(type.equals("modifyPasswd")){
				modifyPasswd(req);
			}
		}
	}
	
	private void loginHandle(Request req){
		String userName=(String)req.getData("UserName");
		String passwd=(String)req.getData("Password");
		Object obj=agentDao.getBranch(userName,passwd);   //获得包含请求信息的代理商
		Branch user=(Branch)obj;     
		try {
			Response res=new Response("login");           //创建应答对象
			res.setData(user);
			oos.writeObject(res);                                  //写入客户端
			oos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
		if(user!=null){
			ServerMainClass.allOnlineAgents.add(user);
		}
	}
	
	private void flightSearchHandle(Request req){
		String fromAddr=(String)req.getData("fromAddress");
		String toAddr=(String)req.getData("toAddress");
		String date=(String)req.getData("date");
		System.out.println("读入的航班查询请求"+date+"  "+fromAddr+"  "+toAddr);
		String[] st = date.split("-");
		int year=Integer.parseInt(st[0]);
		int month=Integer.parseInt(st[1]);
		int day=Integer.parseInt(st[2]);
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.MONTH, month);
		cal.set(Calendar.DATE, day);
		       //分隔????
		HashSet hs=null;
		try {
			hs=(HashSet)(flightDao.getAllFlights(fromAddr,toAddr,cal));
			Response res=new Response("flightSearch");   
			res.setData(hs);
			oos.writeObject(res);               
			oos.flush();
			System.out.println("服务器发的航班集合是"+hs);
		
		} catch (Exception e) {
			e.printStackTrace();
		}
		//航班查询模块
	}
	private void orderHandle(){
		try {
			Order od=(Order)ois.readObject();       //读发来的订单
			//Boolean success=flightDao.order(od);          //执行出票操作
			Boolean success = ticketOrderDao.order(od);
			System.out.println("出票的数据修改"+success);
			/*if(success){
				//服务器当前代理商对象删掉.    当前订单的代理商
				agentDao.removeAgent(od.getUser().getName()); 
				agentDao.addAgent(od.getUser());
			}*/
			oos.writeObject(success); 
			oos.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
		//出票模块
	}
	private void modifyPasswd(Request req){
		String userName=(String)req.getData("userName");
		String oldPasswd=(String)req.getData("oldPasswd");
		String newPasswd=(String)req.getData("newPasswd");
		boolean b=agentDao.modifyPassword(userName,oldPasswd,newPasswd);
		try {
			Response res=new Response("modifyPasswd"); 
			res.setData(b);
			oos.writeObject(res);  
			oos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private void quitHandle(Request req){
		String currentUserName=(String)req.getData("currentUser");
		for(Object o:onlineAgent){
			Branch a = (Branch)o;
			if(a.getName().equals(currentUserName)){
				onlineAgent.remove(a);
			}
		}
		try {
			s.close();
		} catch (IOException e) {
		  e.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -