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

📄 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.net.*;
import java.io.*;
import java.sql.*;
public class ClientThread extends Thread
{
	Socket Sock;
	int CurID;
	final int MAX_CONNECT=100;
	DataInputStream inData;
	DataOutputStream outData;
	ObjectOutputStream outObject;
	String Getcmd;
	DefaultTreeModel treeModel;
	DefaultMutableTreeNode newNode;
	Vector Client_list;
	AtmAccount Customer;
	public ClientThread(Socket s,int n,Vector VecClient,DefaultTreeModel model,DefaultMutableTreeNode newnode)
	{
		Sock=s;
		this.CurID=n;
		Client_list=VecClient;
	    treeModel=model;
	    newNode=newnode;
	}
	public void run()
	{   System.out.println("Client "+String.valueOf(CurID)+"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());
	    }	
		if (CurID>MAX_CONNECT)
		{   
		try{
		    outData.writeUTF("STOP");
			Sock.close();
			System.out.println("Thread number more than 3,closed!");
		   }
		   catch (IOException e)
	       {
	    	System.out.println("Error: "+e.toString());
	       }	
		}
	    else
	    {   
	        while(true)
	        { 	
	          try
	          { 
	            if((Getcmd=new String(inData.readUTF()))!=null);
	            {
	            	System.out.println("Received from client"+String.valueOf(CurID)+":"+Getcmd);
	            	ProcessData(Getcmd);
	            	//outData.writeUTF(Getcmd);
	            }
	           } 
	           catch (IOException e)
	           { 	
	                System.out.println(String.valueOf(CurID)+" connect over!");
	                treeModel.removeNodeFromParent(newNode);
                    Client_list.remove(newNode);
	                break;
	           }
	           catch (Exception e)
	           {    
	                System.out.println(String.valueOf(CurID)+" connect over!");
	                treeModel.removeNodeFromParent(newNode);
                    Client_list.remove(newNode);
	                break;
	           }
	         }
	     }
	}
	private void Pick(String card,double cash,String pass1)
    {
     try
	   {
    	System.out.println("取款操作:从卡号为"+card+"的ATM卡上取出"+String.valueOf(cash)+"元");
    	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	    Connection c = DriverManager.getConnection("jdbc:odbc:accounts","","");
		Statement s = c.createStatement();
		ResultSet r = s.executeQuery("SELECT * FROM Accounts WHERE CardID='"+card+"'");
		String UserPwd="";
		double UserMoney=0;
		while(r.next()) 
	    { 
	         UserPwd = new String(r.getString("Password"));
	         UserMoney=r.getDouble("Sum");
	    }
        if (pass1.equals(UserPwd)) //密码验证通过!
        {
        	if (UserMoney>=cash)
        	{    s.executeUpdate("UPDATE Accounts SET Sum=Sum-"+cash+" WHERE CardID='"+card+"'");
        	     outData.writeUTF("550 |CASH:"+String.valueOf(UserMoney-cash)+"|CARD:"+card);
        	}
        	else
        	outData.writeUTF("560 |CASH:"+String.valueOf(UserMoney));    
        }
        else
             outData.writeUTF("130"); 
        s.close();	
       }
       catch(SQLException Exp)
         {     System.out.println("sqlexception   "+Exp);  }
       catch(ClassNotFoundException Exp)
         {     System.out.println("classnotfound");  }
       catch(Exception Exp)
         {     System.out.println("exp");  }
        
    }    	
    private void Turn(String card,String acct,double cash,String pass1)
    {
    	System.out.println("转帐操作:从卡号为"+card+"的帐号转出"+String.valueOf(cash)+"元到卡号为"+acct+"的帐号里");
     try
	   {
    	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	    Connection c = DriverManager.getConnection("jdbc:odbc:accounts","","");
		Statement s = c.createStatement();
		ResultSet r = s.executeQuery("SELECT * FROM Accounts WHERE CardID='"+card+"'");
		String UserPwd="";
		double UserMoney=0;
		while(r.next()) 
	    { 
	         UserPwd = new String(r.getString("Password"));
	         UserMoney=r.getDouble("Sum");
	    }
        if (pass1.equals(UserPwd) || acct.equals("company")) //密码验证通过!
        {
            System.out.println(acct);
            if (UserMoney>=cash){
            s.executeUpdate("UPDATE Accounts SET Sum=Sum-"+cash+" WHERE CardID='"+card+"'");
            s.executeUpdate("UPDATE Accounts SET Sum=Sum+"+cash+" WHERE CardID='"+acct+"'");
            outData.writeUTF("250 |CASH:"+String.valueOf(UserMoney-cash)+"|CARD:"+card);
            }
            else
            {outData.writeUTF("560 |CASH:"+String.valueOf(UserMoney));}
        }
        else
             outData.writeUTF("240"); 
        s.close();
       }
       catch(SQLException Exp)
         {     System.out.println("sqlexception   "+Exp);  }
       catch(ClassNotFoundException Exp)
         {     System.out.println("classnotfound");  }
       catch(Exception Exp)
         {     System.out.println("exp");  }
    }    	
    private void Pass(String card,String pass1,String pass2)
    {
     try
	   {
    	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	    Connection c = DriverManager.getConnection("jdbc:odbc:accounts","","");
		Statement s = c.createStatement();
		ResultSet r = s.executeQuery("SELECT * FROM Accounts WHERE CardID='"+card+"'");
		String UserPwd="";
		while(r.next()) 
	    { 
	         UserPwd = new String(r.getString("Password"));
	    }
        if (pass1.equals(UserPwd)) //密码验证通过!
        {
            s.executeUpdate("UPDATE Accounts SET Password='"+pass2+"' WHERE CardID='"+card+"'");
            outData.writeUTF("350");
        }
        else
             outData.writeUTF("320"); 
        s.close();
       }
       catch(SQLException Exp)
         {     System.out.println("sqlexception   "+Exp);  }
       catch(ClassNotFoundException Exp)
         {     System.out.println("classnotfound");  }
       catch(Exception Exp)
         {     System.out.println("exp");  }
    }
    private void SendProfit()
    {
    	try{
    	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	    Connection c = DriverManager.getConnection("jdbc:odbc:accounts","","");
		Statement s = c.createStatement();
        ResultSet r = s.executeQuery("SELECT * FROM Accounts WHERE CardID='Company'");
        while(r.next()) 
	    {
	    	outData.writeUTF("850:|INFO:"+String.valueOf(r.getDouble("Sum")));
	    }
	    s.close();}
	    catch(SQLException Exp)
     	{
		System.out.println(Exp.toString());
        }
        catch(ClassNotFoundException Exp)
        {
         System.out.println(Exp.toString());
        }
        catch(Exception Exp)
        {
         System.out.println(Exp.toString());
        }
    }
    	    	
    private void Flsh(String card,String pass1)
    {
    try
	 {
    	System.out.println("返回卡号为:"+card+"的ATM客户所有信息");
    	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	    Connection c = DriverManager.getConnection("jdbc:odbc:accounts","","");
		Statement s = c.createStatement();
        ResultSet r = s.executeQuery("SELECT * FROM Accounts WHERE CardID='"+card+"'");
        System.out.println("SELECT * FROM Accounts WHERE CardID='"+card+"'");
	    String UserCard="";
	    String UserName="";
	    String UserPwd="";
	    double UserMoney=0;
	    boolean LostFlag=true;
	    boolean State=true;
	    while(r.next()) 
	    { 
	         UserPwd = new String(r.getString("Password"));
	         UserName = new String(r.getString("Name"));
	         UserCard = new String(r.getString("CardID"));
	         UserMoney = r.getDouble("Sum");
	         LostFlag=r.getBoolean("LostFlag");
	         State=r.getBoolean("State");
	    }
	    s.close();
	    if (pass1.equals(UserPwd))
	    {  String SendString=new String("110|CARD:"+UserCard+"|NAME:"+UserName+"|CASH:"+String.valueOf(UserMoney)
	       +"|PASS:"+UserPwd+"|STAT:"+String.valueOf(State)+"|SIGN:"+String.valueOf(LostFlag));
	       outData.writeUTF(SendString);
	    }
	    else
	       outData.writeUTF("130"); 
	  }  
	  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 Acct =""; 
		String Pass1 ="";
		String Pass2 ="";
		double Cash=0;
		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 = Double.parseDouble(tokens[i].trim().substring(5));
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("ACCT:"))
			Acct = new String(tokens[i].trim().substring(5));
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("PASS1"))
			Pass1 = new String(tokens[i].trim().substring(5));
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("PASS2"))
			Pass2 = new String(tokens[i].trim().substring(5));
			i++;
		}
		if (command.trim().toUpperCase().substring(0,5).equals("PICK:"))
		Pick(Card,Cash,Pass1);
		if (command.trim().toUpperCase().substring(0,5).equals("TURN:"))
		Turn(Card,Acct,Cash,Pass1);
		if (command.trim().toUpperCase().substring(0,5).equals("PASS:"))
		Pass(Card,Pass1,Pass2);
		if (command.trim().toUpperCase().substring(0,5).equals("FLSH:"))
		Flsh(Card,Pass1);
		if (command.trim().toUpperCase().substring(0,5).equals("REPT:"))
		SendProfit();
	}
}

⌨️ 快捷键说明

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