程序实现其实并不是很难,主要是思路,对程序的各个功能的设计,各个按钮的处理事件及按钮按照逻辑显示出来和隐藏。服务器采用多线程并行机制,针对每个用户登录创建一个线程。程序代码
客户端:
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;
import java.awt.event.*;
import java.awt.*;
import java.sql.*;
import java.math.*;
import javax.swing.*;
class ATMWindows extends JFrame implements ActionListener
{
Font f;
Socket clint=null;
DataOutputStream out=null;
DataInputStream in=null;
Connection con;
Statement pre;
ResultSet rs;
int i,money;
boolean b=true;//b的取值有0,1,共2个值分别告诉程序该吧数字键盘的输入复制给username,password,
String susername=null;
String spassword=null;
Box box1,box2,box3,box11,box12;
JPanel panel1,panel2;
JLabel tishi;
JTextField username;
JPasswordField password;
JButton n[],queding,chaxun,qukuan,tuichu;
ATMWindows(String s)
{
GraphicsEnvironment
ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
String t[]=ge.getAvailableFontFamilyNames();
f=new Font(t[67],Font.BOLD,16);
n=new JButton[10];
box1=Box.createVerticalBox();
box2=Box.createHorizontalBox();
box3=Box.createVerticalBox();
panel1=new JPanel();
panel2=new JPanel();
楴桳?敮??扡汥尨欢迎使用XX 银行!请输入卡号。 );
tishi.setFont(f);
username=new JTextField(20);
password=new JPasswordField(20);
panel1.setLayout(new GridLayout(3,3));
panel2.setLayout(new GridLayout(4,1));
for(i=1;i
{
n[i]=new JButton(\+i);
panel1.add(n[i]);
n[i].addActionListener(this);
}
n[0]=new JButton(
panel1.add(n[0]);
n[0].addActionListener(this);
n[0].setPreferredSize(new Dimension(20,20));
畱摥湩?敮??瑵潴?确定 );
档硡湵渽睥?畂瑴湯尨 查询);//用户输入账号和密码后,点击查询按钮登陆
畱畫湡渽睥?畂瑴湯尨取款 );
畴捩畨渽睥?畂瑴湯尨退出);
qukuan.show(false);
chaxun.show(false);//初始化窗口后,账号和密码还没输入,不能用查询按
钮登陆box1.add(tishi);
tishi.setBounds(50,10,290,60);
box1.add(username);
username.setBounds(50,60,300,20);
password.setBounds(60,60,300,20);
panel2.add(queding);
panel2.add(chaxun);
panel2.add(qukuan);
p