📄 sendthread.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 + -