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

📄 sendthread.java

📁 课程设计:ATM Project源码
💻 JAVA
字号:
/*服务器返回信息协议
810    发货成功
820    价格设定成功
830    操作失败
*/
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 SendThread extends Thread
{   
	Socket SrvSock;
	Goods CardGoods;
	DataInputStream inData;
	DataOutputStream outData;
	String getcmd;
	String CmdSend;
	int SendNum=0;
	String ProductName;
	RequestPane QuestPane;
	Component f;
	public SendThread(Socket s,String name,double price,Component ComponentF)
	{  
	   SrvSock=s;
	   f=ComponentF;
	   ProductName=name;
	   CmdSend=new String("PRIC:|NAME:"+name+"|CASH:"+String.valueOf(price));
	   try{
	   inData = new DataInputStream(SrvSock.getInputStream());
		  outData = new DataOutputStream(SrvSock.getOutputStream());
		  }catch(IOException exp){System.out.println("create error");}
	}
	public SendThread(Socket s,String name,int cont,Component ComponentF,RequestPane q,Goods goods)
	{  
	   CardGoods=goods;
	   SrvSock=s;
	   QuestPane=q;
	   f=ComponentF;
	   ProductName=name;
	   SendNum=cont;
	   CmdSend=new String("PROD:|NAME:"+name+"|CONT:"+String.valueOf(cont));
	   try{
	   inData = new DataInputStream(SrvSock.getInputStream());
		  outData = new DataOutputStream(SrvSock.getOutputStream());}
		  catch(IOException exp){System.out.println("create error");}
	}
	
	public SendThread(Socket s,Component ComponentF)
	{
		SrvSock=s;
		CmdSend=new String("REPT:");
	   try{
	   inData = new DataInputStream(SrvSock.getInputStream());
		  outData = new DataOutputStream(SrvSock.getOutputStream());}
		  catch(IOException exp){System.out.println("create error");}
	}
	public void PickProduct(String ProName,int Num)
	{
	 try{	
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
		Statement s = c.createStatement();
		s.executeUpdate("UPDATE Store SET Amount=Amount-"+String.valueOf(Num)+" WHERE Product='"+ProName+"'");
        s.close();
        this.sleep(800);
        CardGoods.getStoreDB();}
        catch(SQLException Exp)
    	{System.out.println(Exp.toString()); }
    	catch(ClassNotFoundException Exp)
    	{JOptionPane.showMessageDialog(f, Exp.toString(), "错误:", JOptionPane.ERROR_MESSAGE);}
    	catch(Exception Exp)
    	{JOptionPane.showMessageDialog(f, Exp.toString(), "错误:", JOptionPane.ERROR_MESSAGE);}
    	
	}
	public void run()
	{   
	   try
	   { 
	      //System.out.println(CmdSend);
	      outData.writeUTF(CmdSend);
	      
	      
		  
	      getcmd=new String(inData.readUTF());
	      //System.out.println("Received from Server:");
	      System.out.println(getcmd);
	      
	      ProcessData(getcmd);
	      SrvSock.close();
	   } 
	   catch (IOException e)
	   { 	
	     System.out.println(e.toString());
	   }
	   catch (Exception e)
	   {    
	     System.out.println(e.toString());
	   }
	}
	private void FreshTable(String ProName,String SrvIP)
	{
	 try{	    
		    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		    Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
		    Statement s = c.createStatement();
     	    s.executeUpdate("DELETE FROM request WHERE Product='"+ProName+"' AND RequestIP='"+SrvIP+"'");
	        s.close();
	     }
	 	 catch(SQLException Exp)
    	 {System.out.println(Exp.toString()); }
    	 catch(ClassNotFoundException Exp)
    	 {JOptionPane.showMessageDialog(f, Exp.toString(), "错误:", JOptionPane.INFORMATION_MESSAGE);}
    	 catch(Exception Exp)
    	 {JOptionPane.showMessageDialog(f, Exp.toString(), "错误:", JOptionPane.INFORMATION_MESSAGE);}
		 
	}
	
	private void ProcessData(String command)
	{
		StringTokenizer st=new StringTokenizer(command,"|");
		String[] tokens=new String[st.countTokens()];
		int i=0;
		String tmpInfo="";
		int AccpNum=0;
		int NowHave=0;
		double Profit;
		while(st.hasMoreTokens())
		{
		  tokens[i]=st.nextToken();
		  if(tokens[i].length()>4){	
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("INFO:"))
			{
		    	tmpInfo = new String(tokens[i].trim().substring(5));
		    	//System.out.println(tmpInfo);
	     	}
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("ACCP:"))
			{
				AccpNum = Integer.parseInt(tokens[i].trim().substring(5));
				//System.out.println(AccpNum);
			}
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("HAVE:"))
			{
				NowHave = Integer.parseInt(tokens[i].trim().substring(5));
				//System.out.println(NowHave);
			}
			if(tokens[i].trim().substring(0,5).toUpperCase().equals("CASH:"))
			{
				Profit = Double.parseDouble(tokens[i].trim().substring(5));
				//System.out.println(NowHave);
			}
		  }	
			i++;
		}
		switch (Integer.parseInt(command.trim().substring(0,3)))
		{
		  case 810:
		           PickProduct(ProductName,AccpNum);
		           FreshTable(ProductName,SrvSock.getInetAddress().getHostAddress());
		           Msgbox("发货成功完成!\n"+tmpInfo);
		           QuestPane.getRequestDB();
		           break;
		  case 820:
		           
		           Msgbox("价格设定成功完成!\n"+tmpInfo);
		           
		           break;
		  case 830:
		           FreshTable(ProductName,SrvSock.getInetAddress().getHostAddress());
		  		   PickProduct(ProductName,AccpNum);
		  		   Msgbox(tmpInfo);
		  		   QuestPane.getRequestDB();
		           break;
		  case 850:Msgbox("公司帐上现有资金"+tmpInfo+"元。");
		           break;         
         }
	}
	public void Msgbox(String msg)
    {
  	    JOptionPane.showMessageDialog(f, msg, "联机提示:", JOptionPane.INFORMATION_MESSAGE);
    }
}

⌨️ 快捷键说明

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