1、ATM程序java实现客户端服务器程序实现其实并不是很难,主要是思路,对程序的各个功能的设计,各个按钮的处理事件及按钮按照逻辑显示出来和隐藏。服务器采用多线程并行机制,针对每个用户登录创建一个线程。程序代码 客户端:import javax.swing.*;import .*;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
2、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
3、,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(t67,Font.BOLD,1
4、6); n=new JButton10; box1=Box.createVerticalBox(); box2=Box.createHorizontalBox(); box3=Box.createVerticalBox(); panel1=new JPanel(); panel2=new JPanel(); tishi=new JLabel(欢迎使用XX银行!请输入卡号。); tishi.setFont(f); username=new JTextField(20); password=new JPasswordField(20); panel1.setLayout(new GridLayou
5、t(3,3); panel2.setLayout(new GridLayout(4,1); for(i=1;i=0&n.intValue()0)/余额大于等于0,表示用户可以取款 out.writeInt(n.intValue(); money=in.readInt(); if(money=0) tishi.setText(登陆成功,您当前余额为:+money); chaxun.show(false); qukuan.show(true); box1.remove(password); box1.validate(); return; else if(money=-1) tishi.setTe
6、xt(卡号错误请从新输入卡号和密码); susername=null; spassword=null; box1.remove(password); box1.add(username); box1.validate(); password.setText(null); username.setText(null); queding.show(true); chaxun.show(false); validate(); return; else if(money=-2) tishi.setText(密码错误请从新输入密码!); spassword=null; password.setText(
7、null); chaxun.show(false); queding.show(true); b=false;/用户输入密码错误,数字键盘输入到password return; else tishi.setText(抱歉!服务器错误,暂停服务。); queding.show(true); susername=null; spassword=null; box1.remove(password); box1.add(username); box1.validate(); username.setText(null); chaxun.show(false); return; catch(IOExc
8、eption e1) System.out.println(e1); else for(i=0;i=0)/用户账号和密码正确,登陆成功,等待取款 while(true) money=in.readInt(); if(money=0)/客户端输入大于等于0时,准备取款,update数据库 db.connect(); money=db.select(susername,spassword)-money; if(db.update(money,susername)0)/数据库update成功,返回操作后的余额给客户端 System.out.println(数据库update成功,返回操作后的余额给客
9、户端); out.writeInt(db.select(susername,spassword); else/数据库update失败,返回当前余额给客户端 out.writeInt(db.select(susername,spassword); db.close(); else if(money=-1)/用户已在客户端退出 db.close(); System.out.println(此用户已经退出终端,线程自动结束。); break; else if(b=-3) db.close(); System.out.println(数据库错误,用户登陆失败,自动关闭连接线程); else /用户验证失败 db.close(); System.out.println(账号或者密码错误,用户登陆失败,自动关闭连接线程); else out.writeInt(-3);/用-3表示数据库连接失败,通知客户端暂停使用 catch(IOException e) System.out.println(e); class DB Connection con; PreparedStatement pre; ResultSet r
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1