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

📄 clientthread.java

📁 课程设计:ATM Project源码
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.border.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.net.*;
import java.io.*;
import java.sql.*;
public class ClientThread extends Thread
{
	Socket Sock;
	DataInputStream inData;
	DataOutputStream outData;
	ObjectOutputStream outObject;
	String Getcmd;
	LogPane CardLog;
	RequestPane QuestPane;
	Vector m_Bill = new Vector();
	SimpleDateFormat DateFormatter=new SimpleDateFormat("yyyy-MM-dd");
	public ClientThread(Socket s,LogPane card,RequestPane q)
	{
		Sock=s;
		CardLog=card;
		QuestPane=q;
	}
	public void run()
	{   System.out.println("Client Connected! IP:"+Sock.getInetAddress().getHostAddress());
		try
		{
		inData = new DataInputStream(Sock.getInputStream());
		outData = new DataOutputStream(Sock.getOutputStream());
	    }
	    catch (IOException e)
	    {
	    	System.out.println("Error: "+e.toString());
	    }	
	    while(true)
	    { 	
	      try
	      { 
	         if((Getcmd=new String(inData.readUTF()))!=null);
	         {
	            	System.out.println("Received from client:"+Getcmd);
	            	ProcessData(Getcmd);
	            	//outData.writeUTF(Getcmd);
	         }
	       } 
	       catch (IOException e)
	       { 	
	         System.out.println(" connect over!");
	         break;
	       }
	       catch (Exception e)
	       {    
	          System.out.println("connect over!");
	          break;
	       }
	    }
	}
	private void Log(Vector Bill)
    {
     System.out.println("Log Started!");
     Date time = new Date();
     String IP=Sock.getInetAddress().getHostAddress();
     String Product="";
     String Amount="";
     String Money="";
     String CardID="";
     try{
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	      Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
	      Statement s = c.createStatement();
		  for (int i=0;i<Bill.size();i++)
		  {
            Product=new String(((BillItem)Bill.elementAt(i)).Name);
            Amount=new String(String.valueOf(((BillItem)Bill.elementAt(i)).buyNum));
            Money=new String(String.valueOf(((BillItem)Bill.elementAt(i)).Money));
            CardID=new String(((BillItem)Bill.elementAt(i)).CardID);
            String newLog=new String("INSERT INTO log"+"(BuyTime,CardID,IP,Product,Amount,Cash)"
		    +"VALUES('"+DateFormatter.format(time)+"','"+CardID+"','"+IP
		    +"','"+Product+"',"+Amount+","+Money+")");
		    System.out.println(newLog);
            s.executeUpdate(newLog);
          }
        s.close();
        m_Bill.removeAllElements();
        this.sleep(1000);
        CardLog.Logdata.Refresh("select * from log");
        }
        catch(SQLException Exp)
        {     System.out.println("sqlexception   "+Exp);  }
        catch(ClassNotFoundException Exp)
        {     System.out.println("classnotfound");  }
        catch(Exception Exp)
        {     System.out.println("exp");  }
    }
    private void RecordSend(String name,int cont,String have)
    {
     try{
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	      Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
	      Statement s = c.createStatement();
	      s.executeUpdate("DELETE FROM request WHERE RequestIP='"+Sock.getInetAddress().getHostAddress()+"' AND Product='"+name+"'"); 
          String newRecord=new String("INSERT INTO request"+"(ProductID,Product,RequestIP,RequestTime,RequestNum,NowHave)"
		    +"VALUES('"+"1','"+name+"','"+Sock.getInetAddress().getHostAddress()+"','"+
		    DateFormatter.format(new Date())+"','"+String.valueOf(cont)+"','"+have+"')");
		    System.out.println(newRecord);
            s.executeUpdate(newRecord);
            s.close();
            this.sleep(500);
            QuestPane.getRequestDB();
	    }
        catch(SQLException Exp)
        {     System.out.println("sqlexception   "+Exp);  }
        catch(ClassNotFoundException Exp)
        {     System.out.println("classnotfound");  }
        catch(Exception Exp)
        {     System.out.println("exp");  }  
    }
    	    	
	private void ProcessData(String command)
	{
		StringTokenizer st=new StringTokenizer(command,"|");
		String[] tokens=new String[st.countTokens()];
		int i=0;
		String Card ="";
		String Name =""; 
		String Cont ="";
		String Cash ="";
		String Have="";
		while(st.hasMoreTokens())
		{
			tokens[i]=st.nextToken();
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("CARD:"))
			Card = new String(tokens[i].trim().substring(5));
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("CASH:"))
			Cash = new String(tokens[i].trim().substring(5));
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("CONT:"))
			Cont = new String(tokens[i].trim().substring(5));
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("NAME:"))
			Name = new String(tokens[i].trim().substring(5));
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("HAVE:"))
			Have = new String(tokens[i].trim().substring(5));
			i++;
		}
		if (command.trim().toUpperCase().substring(0,5).equals("TRAD:"))
		{m_Bill.addElement(new BillItem(Name,Integer.parseInt(Cont),Double.parseDouble(Cash),Card));}
		if (command.trim().toUpperCase().substring(0,5).equals("OVER:"))
		{Log(m_Bill);}
		if (command.trim().toUpperCase().substring(0,5).equals("SEND:"))
		{   
			RecordSend(Name,Integer.parseInt(Cont),Have);}
	}
}
class BillItem {
	public String Name;
	public int buyNum;
	public double Money;
	public String CardID;
	BillItem(String name,int num,double money,String card)
	{
		this.Name=name;
		this.buyNum=num;
		this.Money=money;
		this.CardID=card;
	}
}

⌨️ 快捷键说明

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