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

📄 controller.java

📁 一套基于JAVA开发的完整版航空订票系统,代码简洁,适合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 AgentDAO agentDao;
	private FlightDAO flightDao;
	
	public Controller(Socket s){
		this.s=s;
		agentDao=ServerMainClass.agentDao;
		flightDao=ServerMainClass.flightDao;
	}
	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("changePW")){
				changePassworldHAndle(req);
			}else if(type.equals("seachFlights")){
				seachFlightsHandle(req);
			}
		}
	}
	//自己实现的航班查询
	private void seachFlightsHandle(Request req){
		String fromAddress=(String)req.getData("FromAddress");
		String toAddress=(String)req.getData("ToAddress");
		String date = (String)req.getData("MyDate");
		MyDate d = new MyDate(Integer.parseInt(date.split("-")[0]),Integer.parseInt(date.split("-")[1]),Integer.parseInt(date.split("-")[2]));
		Set set = ServerMainClass.flightDao.getAllFlights(fromAddress, toAddress, d);
		try {
			Response res=new Response("seachFlights");
			res.setData((Serializable) set);
			oos.writeObject(res);
			oos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	private void changePassworldHAndle(Request req){
		String userName=(String)req.getData("UserName");
		String oldPasswd=(String)req.getData("OldPassword");
		String newPasswd=(String)req.getData("NewPassworld");
		boolean isSuccess=agentDao.modifyPassword(userName, oldPasswd, newPasswd);
		Agent agent = null;
		if(isSuccess){
			agent = agentDao.getAgent(userName, newPasswd);
		}
		try {
			Response res=new Response("changePW");
			res.setData(agent);
			oos.writeObject(res);
			oos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	@SuppressWarnings("unchecked")
	private void loginHandle(Request req){
		String userName=(String)req.getData("UserName");
		String passwd=(String)req.getData("Password");
		Object obj=agentDao.getAgent(userName,passwd);
		Agent user=(Agent)obj;
		if(user != null){
			ServerMainClass.allOnlineAgents.add(user);
		}
		try {
			Response res=new Response("login");
			res.setData(user);
			oos.writeObject(res);
			oos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	private void flightSearchHandle(Request req){
		String fromAddr=(String)req.getData("fromAddr");
		String toAddr=(String)req.getData("toAddr");
		String date=(String)req.getData("date");
		MyDate theDate=MyDate.getDateFromStr(date,"-");
		HashSet hs=new HashSet();
		try {
			hs=(HashSet)(ServerMainClass.flightDao.getAllFlights(fromAddr,toAddr,theDate));
			int i=hs.size();
			oos.writeInt(i);
			oos.flush();
			for(Object obj:hs){
				ois.read();
				Flight f=(Flight)obj;
				oos.writeObject(f);
				oos.flush();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		//航班查询模块
	}
	@SuppressWarnings("unchecked")
	private void orderHandle(){
		try {
			Object obj = new Object();
			synchronized(obj){
				Order od=(Order)ois.readObject();
				boolean success=flightDao.order(od);
				Agent agent = null;
				if(success){
					agent = agentDao.updateScore(od.getUser().getName(), od.getItems().size()*100);
					ServerMainClass.orders.add(od);
				}
				oos.writeObject(agent);
				oos.flush();
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		//出票模块
	}
	private void quitHandle(Request req){
		try {
			String name = req.getData("Name");
			Iterator it = ServerMainClass.allOnlineAgents.iterator();
			while(it.hasNext()){
				Agent agent = (Agent)it.next();
				if(agent.getName().equals(name)){
					ServerMainClass.allOnlineAgents.remove(agent);
				}
			}
			s.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

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