ATM程序java实现客户端+服务器.docx

上传人:b****4 文档编号:4165630 上传时间:2022-11-28 格式:DOCX 页数:21 大小:174.16KB
下载 相关 举报
ATM程序java实现客户端+服务器.docx_第1页
第1页 / 共21页
ATM程序java实现客户端+服务器.docx_第2页
第2页 / 共21页
ATM程序java实现客户端+服务器.docx_第3页
第3页 / 共21页
ATM程序java实现客户端+服务器.docx_第4页
第4页 / 共21页
ATM程序java实现客户端+服务器.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

ATM程序java实现客户端+服务器.docx

《ATM程序java实现客户端+服务器.docx》由会员分享,可在线阅读,更多相关《ATM程序java实现客户端+服务器.docx(21页珍藏版)》请在冰豆网上搜索。

ATM程序java实现客户端+服务器.docx

ATM程序java实现客户端+服务器

程序实现其实并不是很难,主要是思路,对程序的各个功能的设计,各个按钮的处理事件及按钮按照逻辑显示出来和隐藏。

服务器采用多线程并行机制,针对每个用户登录创建一个线程。

程序代码

客户端:

importjavax.swing.*;

import.*;

importjava.io.*;

importjava.util.*;

importjava.awt.event.*;

importjava.awt.*;

importjava.sql.*;

importjava.math.*;

importjavax.swing.*;

classATMWindowsextendsJFrameimplementsActionListener

{

Fontf;

Socketclint=null;

DataOutputStreamout=null;

DataInputStreamin=null;

Connectioncon;

Statementpre;

ResultSetrs;

inti,money;

booleanb=true;//b的取值有0,1,共2个值分别告诉程序该吧数字键盘的输入复制给username,password,

Stringsusername=null;

Stringspassword=null;

Boxbox1,box2,box3,box11,box12;

JPanelpanel1,panel2;

JLabeltishi;

JTextFieldusername;

JPasswordFieldpassword;

JButtonn[],queding,chaxun,qukuan,tuichu;

ATMWindows(Strings)

{

GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();

Stringt[]=ge.getAvailableFontFamilyNames();

f=newFont(t[67],Font.BOLD,16);

n=newJButton[10];

box1=Box.createVerticalBox();

box2=Box.createHorizontalBox();

box3=Box.createVerticalBox();

panel1=newJPanel();

panel2=newJPanel();

tishi=newJLabel("欢迎使用XX银行!

请输入卡号。

");

tishi.setFont(f);

username=newJTextField(20);

password=newJPasswordField(20);

panel1.setLayout(newGridLayout(3,3));

panel2.setLayout(newGridLayout(4,1));

for(i=1;i

{

n[i]=newJButton(""+i);

panel1.add(n[i]);

n[i].addActionListener(this);

}

n[0]=newJButton("0");

panel1.add(n[0]);

n[0].addActionListener(this);

n[0].setPreferredSize(newDimension(20,20));

queding=newJButton("确定");

chaxun=newJButton("查询");//用户输入账号和密码后,点击查询按钮登陆

qukuan=newJButton("取款");

tuichu=newJButton("退出");

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);

panel2.add(tuichu);

box1.setBounds(50,10,300,60);

n[0].setBounds(50,290,200,70);

panel1.setBounds(50,80,200,210);

panel2.setBounds(250,80,100,280);

add(box1);

add(panel1);

add(panel2);

add(n[0]);

tuichu.addActionListener(this);

queding.addActionListener(this);

chaxun.addActionListener(this);

qukuan.addActionListener(this);

setLayout(null);

setTitle(s);

setBounds(200,200,400,400);

validate();

setResizable(false);

setVisible(true);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==tuichu)//用户退出,窗口不关闭,需要从新输入账号和密码

{

b=true;//用户推出之后,从数字键输入到username

box1.add(username);

box1.remove(password);

box1.validate();

username.setText(null);

money=0;

susername=null;

spassword=null;

tishi.setText("欢迎使用XX银行!

请输入卡号。

");

chaxun.show(false);

queding.show(true);

qukuan.show(false);//用户退出,查询和取款按钮不可见

if(clint!

=null)

{

try

{

out.writeInt(-1);//服务器输入数字-1,表示客户已经退出,服务器可以关闭该客户的进程

}

catch(IOExceptione1)

{

System.out.println(e1);

}

}

}

elseif(e.getSource()==queding)

{

if(susername==null)

{

susername=username.getText();

username.setText(null);

tishi.setText("请输入密码");

b=false;//从数字键输入到password

box1.remove(username);

box1.add(password);

box1.validate();

password.setText(null);

}

elseif(spassword==null)

{

spassword=password.getText();

chaxun.show(true);

b=true;//从数字键输入到username

queding.show(false);

tishi.setText("请点击查询按钮登陆!

");

password.setText(null);

}

else

{

intyue;

try

{

BigIntegern=newBigInteger(username.getText());

yue=money-n.intValue();

if(yue>=0&&n.intValue()>0)//余额大于等于0,表示用户可以取款

{

out.writeInt(n.intValue());

money=in.readInt();

if(money<=yue)

{

tishi.setText("取款成功,您的余额为:

"+money);

queding.show(false);

username.setText(null);

box1.validate();

}

elseif(money==-3)//服务器连接数据库错误,取款失败

{

money=yue;

tishi.setText("抱歉!

服务器错误,取款失败。

");

username.setText(null);

box1.validate();

qukuan.show(false);

queding.show(false);

validate();

}

else

{

;

queding.show(false);

tishi.setText("操作失败,您的余额为:

"+money);

}

username.setText(null);

box1.remove(username);

box1.validate();

qukuan.show(true);

validate();

}

else

{

tishi.setText("输入错误,不能大于您的余额"+money);

qukuan.show(true);

queding.show(false);

chaxun.show(false);

username.setText(null);

validate();

}

}

catch(IOExceptione1)

{

tishi.setText("输入错误,不能大于您的余额"+money);

qukuan.show(true);

queding.show(false);

chaxun.show(false);

username.setText(null);

validate();

System.out.println(e1);

}

}

}

elseif(e.getSource()==qukuan)

{

tishi.setText("请输入取款金额然后点击确定。

");

box1.remove(password);

box1.add(username);

box1.validate();

box1.remove(username);

box1.add(username);

box1.validate();

username.setText(null);

qukuan.show(false);

queding.show(true);

}

elseif(e.getSource()==chaxun)

{

try

{

clint=newSocket("localhost",4333);

in=newDataInputStream(clint.getInputStream());

out=newDataOutputStream(clint.getOutputStream());

tishi.setText("连接到服务器");

}

catch(IOExceptione1)

{

tishi.setText("无法连接到服务器!

");

}

try

{

out.writeUTF(susername);

out.writeUTF(spassword);

money=in.readInt();

if(money>=0)

{

tishi.setText("登陆成功,您当前余额为:

"+money);

chaxun.show(false);

qukuan.show(true);

box1.remove(password);

box1.validate();

return;

}

elseif(money==-1)

{

tishi.setText("卡号错误请从新输入卡号和密码");

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;

}

elseif(money==-2)

{

tishi.setText("密码错误请从新输入密码!

");

spassword=null;

password.setText(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(IOExceptione1)

{

System.out.println(e1);

}

}

else

{

for(i=0;i

{

if(b)

{

if(e.getSource()==n[i])

{

username.setText(username.getText()+i);

return;

}

}

else

{

if(e.getSource()==n[i])

{

password.setText(password.getText()+i);

return;

}

}

}

}

}

}

publicclassATM

{

publicstaticvoidmain(Stringargs[])

{

ATMWindowsatm=newATMWindows("ATM");

}

}

服务器:

importjavax.swing.*;

import.*;

importjava.io.*;

importjava.util.*;

importjava.util.Date;

importjava.awt.event.*;

importjava.awt.*;

importjava.sql.*;

importjava.math.*;

importjavax.swing.*;

importjava.text.SimpleDateFormat;

publicclassATMServer

{

publicstaticvoidmain(Stringags[])

{

ServerSocketserver=null;

Socketyou=null;

while(true)

{

try

{

server=newServerSocket(4333);

}

catch(IOExceptione)

{

System.out.println("正在监听");

}

try

{

you=server.accept();

}

catch(IOExceptione)

{

System.out.println("正在等待客户");

}

if(you!

=null)

{

newServerThread(you).start();

}

}

}

}

classServerThreadextendsThread

{

DBdb=newDB();

intb,money;

ResultSetrs;

Socketsocket;

DataOutputStreamout=null;

DataInputStreamin=null;

Stringsusername=null;

Stringspassword=null;

ServerThread(Socketyou)

{

try

{

in=newDataInputStream(you.getInputStream());

out=newDataOutputStream(you.getOutputStream());

}

catch(IOExceptione)

{

System.out.println(e);

}

}

publicvoidrun()

{

try

{

susername=in.readUTF();

spassword=in.readUTF();

System.out.println(susername);

if(db.connect()==1)//数据库连接成功

{

b=db.select(susername,spassword);

db.close();

out.writeInt(b);

if(b>=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成功,返回操作后的余额给客户端");

out.writeInt(db.select(susername,spassword));

}

else//数据库update失败,返回当前余额给客户端

{

out.writeInt(db.select(susername,spassword));

}

db.close();

}

elseif(money==-1)//用户已在客户端退出

{

db.close();

System.out.println("此用户已经退出终端,线程自动结束。

");

break;

}

}

}

elseif(b==-3)

{

db.close();

System.out.println("数据库错误,用户登陆失败,自动关闭连接线程");

}

else//用户验证失败

{

db.close();

System.out.println("账号或者密码错误,用户登陆失败,自动关闭连接线程");

}

}

else

{

out.writeInt(-3);//用-3表示数据库连接失败,通知客户端暂停使用

}

}

catch(IOExceptione)

{

System.out.println(e);

}

}

}

classDB

{

Connectioncon;

PreparedStatementpre;

ResultSet

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1