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

📄 hilton.java

📁 一个基于Java servelet的hotel broker 程序 实现access数据库访问
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.util.*;
import java.io.*;
import java.sql.*;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

public class Hilton extends JFrame
{

    JLabel lab1 = new JLabel("Users from Broker Online");
    JLabel lab2 = new JLabel("Message");
    JTextArea ta = new JTextArea(9,30);
    java.awt.List list = new java.awt.List(9);
    JTextField tf = new JTextField(24);
    //JButton b = new JButton("Send");
    JScrollPane sp = new JScrollPane();
    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    JPanel p3 = new JPanel();
    
    ServerSocket serverSocket;
    Socket socket;
    ArrayList array = new ArrayList(); // the connected client list
    int connect;

	
	 public Hilton()
    {
        super("Hilton Hotel");
        
        
        sp.getViewport().add(ta);
        p1.setLayout(new BorderLayout());
        p3.add(lab1);
        p1.add(p3,BorderLayout.NORTH);
        p1.add(list,BorderLayout.SOUTH);
        p2.add(lab2);
        p2.add(tf);
        //p2.add(b);
        getContentPane().add(sp,BorderLayout.NORTH);
        getContentPane().add(p1,BorderLayout.CENTER);
        getContentPane().add(p2,BorderLayout.SOUTH);
        pack();
        
        
        
        //display the broker server in the center of the screen
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = this.getSize();
        if(frameSize.width > screenSize.width)
        {
            frameSize.width = screenSize.width;
        }
        if(frameSize.height > screenSize.height)
        {
            frameSize.height = screenSize.height;
        }
        setLocation((screenSize.width - frameSize.width)/2,
                    (screenSize.height - frameSize.height)/2);
        
        //add button to handle events
        //b.addActionListener(this);
         
        setSize(450,450);
        setVisible(true);
        setResizable(false);
        
        
        //server starts to listen ports
        
         if(serverSocket == null)
                {
                    try
                    {
                        serverSocket = new ServerSocket(6000);
                        ta.append("SYSTEM:" + " Hiton Hotel Server "
                                  + " started successfully......\n");
                    }
                    catch(IOException ex)
                    {
                        ta.append("SYSTEM:"+" Hiton Hotel Server "
                                  +" started unsuccessfully.....\n");
                    }
                }
                else
                {
                    ta.append("SYSTEM:"+" Hiton Hotel Server "
                              +" started successfully......\n");
                }
     
     
     ////////////////////////////////////////////////////
     
     
     while(true)
            {
             if(array.size() <= 10)
                {
                    try
                    {
                        socket = serverSocket.accept();
                        ta.append("One Client login successfully\n");
                    }
                    catch(IOException ex)
                    {
                        ta.append("SYSTEM: "+ex+"\n");
                    }
                  /////////////////////////////////////////////////////
                  //Create client thread,one thread for one client only
                  Client c = new Client(socket); //Client class extends thread
                  array.add(c);
                  c.start();
                  ta.append("Broker thread ready to run\n");
                  /////////////////////////////////////////////////////
                }
                else
                {
                    ta.append("SYSTEM:"+" Hotel Booking Broker "
                              +" has been fully connected,please try later!\n");
                }
            } 
    }
    ////////////////////////////////////////////////////////////////////////////////
    class Client extends Thread
    {
        String brokerName;
        String ip;
        String ipAddress;
        Socket socket;
        BufferedReader br;
        PrintStream ps;
        
        //List<String> rs;  // for containing the data retrived from the database

        public Client(Socket s)
        {
            try
            {   socket = s;
                br = new BufferedReader(new InputStreamReader(s.getInputStream()));
                ps = new PrintStream(s.getOutputStream());
                ta.append("socket established"+"\n");
            }
            catch (IOException ex)
            {
                ta.append("SYSTEM: "+ex+"\n");
            }
        }

        public void run()	
        {
            ta.append("Broker thread starts to run\n");
            
            String info;
            try
            {
                    ta.append("Broker thread ready to read info\n");
                    info = br.readLine();
                    ta.append ("information read:\n");
                    ta.append(info+"\n");
                    
                    StringTokenizer st = new StringTokenizer(info, ":");
                    String keyword = st.nextToken();
                    
                    if(keyword.equals("BOOK"))
                    {
                    	String name = st.nextToken();
                    	String phoneNumber = st.nextToken();
                    	String creditNumber = st.nextToken();
                    	String roomName = st.nextToken();
                    	String checkinDate = st.nextToken();
                    	String checkoutDate = st.nextToken();
                    	
                    	int phone_number = Integer.parseInt(phoneNumber);
                    	int credit_number = Integer.parseInt(creditNumber);
                    	Date checkin_date = java.sql.Date.valueOf(checkinDate);
                    	Date checkout_date = java.sql.Date.valueOf(checkoutDate);
                    	
                    	String result = InsertBooking(name,phone_number,credit_number,roomName,checkin_date,checkout_date);
                    	
                    	ps.println(new StringBuffer(result));
                        ps.flush();
                        ta.append(result);
                    		 
                    }
                   
                    if(keyword.equals("TYPE"))
                    {
                    	List<String> roomType = getRoomType();
                    	Iterator it = roomType.iterator();
                    	while(it.hasNext())
                    	{
                    		ps.println(new StringBuffer(" " + it.next()));
                    		ps.flush();
                    	}
                    	socket.close();
                    	ta.append ("Room Type retrive successful!\n");
                    	
                    }
                    
                    if(keyword.equals ("SINGLE") || keyword.equals ("DOUBLE") || keyword.equals ("KING") || keyword.equals ("SUITE"))
                    {
                    	List<String> emptyRoom = getEmptyRoom(keyword);
                    	Iterator it = emptyRoom.iterator();
                    	while(it.hasNext())
                    	{
                    		ps.println(new StringBuffer(" " + it.next()));
                    		ps.flush();
                    	}
                    	socket.close();
                    	ta.append ("Empty room retrive successful!\n");
                    }
                    
                    if(keyword.equals("AVAILABILITY"))
                    {
                    	String roomType = st.nextToken();
                    	String checkinDate = st.nextToken();
                    	String checkoutDate = st.nextToken();
                    	
                    	Date checkin_date = java.sql.Date.valueOf(checkinDate);
                    	Date checkout_date = java.sql.Date.valueOf(checkoutDate);
                    	
                    	String result =checkAvailability(roomType,checkin_date,checkout_date);
                    	
                    	ps.println(new StringBuffer(result));
                        ps.flush();
                        ta.append(result);
                    }
            
            }
            catch (IOException ex)
            {
                ta.append("SYSTEM:"+ex+"\n");
               
            }
            
            ta.append("Client thread stop to run\n");
        }
		
		public void send(StringBuffer msg)
        {
            ps.println(msg);
            ps.flush();
        }
		
        
	}
	
	public synchronized void sendToClients(StringBuffer msg) //send messages to all of the hotels
    {
        for(int i=0;i<array.size();i++)
        {
            Client c = (Client)array.get(i);
            c.send(msg);
            
        }
    }
	
	public synchronized void sendToClient(StringBuffer msg,String s) //send message to single hotels
    {
        for(int i=0;i<array.size();i++)
        {
            Client c = (Client)array.get(i);
            if(c.brokerName.equals(s))
            {
            	
                 c.send(msg);
                
                break;
            }
        }
    }  
    
    public static void main(String[] args)
    {
        Hilton app = new Hilton();
    }
    
    public void refreshClientList()
    {
        StringBuffer sb = new StringBuffer("PEOPLE");
        for(int i=0;i<array.size();i++)
        {
            Client c =(Client)array.get(i);
            sb.append(":"+c.brokerName);
        }
        sendToClients(sb);
    }
    
    /////////////////////////////////////////////
    //database methods
    public ArrayList<String> getRoomType()
    {
    	final String sql = "SELECT TYPENAME,TYPEPRICE FROM TYPE";
    	final ArrayList<String> result = new ArrayList();
    	
    	Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
    	
    	try
        {
    	  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          String dburl ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=sydney_hilton.mdb";//此为NO-DSN方式
          //String dburl ="jdbc:odbc:odbcName";//此为ODBC连接方式
          connection=DriverManager.getConnection(dburl);
          statement=connection.createStatement();
          resultSet=statement.executeQuery(sql);
          while(resultSet.next())
          {
           result.add(resultSet.getString("TYPENAME"));
           result.add(resultSet.getString("TYPEPRICE"));
          }	
    	}
    	catch(Exception ex)
    	{
    	   ex.printStackTrace();	
    	}
    	finally
        {
            if (connection != null)
            {
                try
                {
                    connection.close();
                }
                catch (Exception e)
                {
                    // do nothing
                }
            }
            
            if (statement != null)
            {
                try
                {
                    statement.close();
                }
                catch (Exception e)
                {
                    // do nothing
                }
            }
            
            if (resultSet != null)
            {
                try
                {
                    resultSet.close();
                }
                catch (Exception e)
                {
                    // do nothing
                }
            }
        
    }	
    return result;
  }
  
  public ArrayList<String> getEmptyRoom(String roomType)
    {
    	final String sql = "SELECT ROOM_NAME FROM ROOM " +
    		               "WHERE ROOM_STATUS = 0 " +
    		               "AND ROOM_TYPE =?";
    		            
    	final ArrayList<String> result = new ArrayList();
    	
    	Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
    	
    	try
        {
    	  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          String dburl ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=sydney_hilton.mdb";//此为NO-DSN方式

⌨️ 快捷键说明

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