📄 atmscreen.java
字号:
/*-------------------- ATM取款模拟Java实现-----------------
*----- atmScreen(ATM屏幕)类:主要创建各操作窗体和相应按钮事件
*/
import java.sql.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class atmScreen implements ActionListener
{
Frame fram;
Panel Pnlwel,Pnlinput,PnlMenu,PnlGetmoney,PnlQueryleft,PnlChgpwd,PnlMsg;
Button btnwel,btnimp,a1,a2,a3,a4,quit,b1,b2,b3,b4,b5,b6,back,dok;
Button x1,y1,b7,b8,c1,c2,y2,d1,d2;
Label msgstr,msghint,msg3,lbleft,lblMsg;
TextField ta,oldpwd,newpwd1,newpwd2;
CardLayout clt=new CardLayout();//系统界面布局方式
float gmoney=0;
int nstate=0;//判别多个状态 1、修改密码;2、数据输入;3、菜单
String gid,pwd;
Account act=new Account();
moneyMachine mce=new moneyMachine();
readCard rcd=new readCard();
dataAccess dac=new dataAccess();
public void mainFram()
{
fram=new Frame("Welcome to 223 Bank2");
quit=new Button("退出");
back=new Button("返回");
back.addActionListener(this);
quit.addActionListener(this);
this.showChangePwd();
this.showGetMoney();
this.showHint();
this.showMenu();
this.showQueryLeft();
this.showWelcome();
this.showInput();
fram.setLayout(clt);
fram.add(Pnlwel,"wel");
fram.add(Pnlinput,"input");
fram.add(PnlMenu,"Menu");
fram.add(PnlChgpwd,"Chgpwd");
fram.add(PnlGetmoney,"Getmoney");
fram.add(PnlQueryleft,"Queryleft");
fram.add(PnlMsg,"Msg");
fram.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});
fram.setSize(400,300);
fram.setLocation(400,200);
fram.setVisible(true);
}
public void showWelcome()
{
Pnlwel=new Panel();
GridLayout gdo1=new GridLayout(3,3,10,10);
Label xlbl1=new Label("Welcome to 223 Bank");
xlbl1.setAlignment(Label.CENTER);
btnwel=new Button("进入");
x1=new Button("退出");
btnwel.addActionListener(this);
x1.addActionListener(this);
Panel xpnl=new Panel();
xpnl.add(btnwel);xpnl.add(x1);
Pnlwel.setLayout(gdo1);
Pnlwel.add(xlbl1);
Pnlwel.add(xpnl);
}
public void showInput()
{
Pnlinput=new Panel();
GridLayout gdo2=new GridLayout(4,3,10,10);
msgstr=new Label("请输入您的卡号:");
msghint=new Label("");
ta=new TextField("",15);
btnimp=new Button("确定");
btnimp.addActionListener(this);
y1=new Button("退出");
y1.addActionListener(this);
y2=new Button("返回");
y2.addActionListener(this);
y2.setVisible(false);
Panel spnl1=new Panel();
spnl1.setLayout(new BorderLayout());
spnl1.add(ta,BorderLayout.NORTH);
spnl1.add(msghint,BorderLayout.SOUTH);
Panel spnl2=new Panel();
spnl2.add(btnimp); spnl2.add(y2); spnl2.add(y1);
Pnlinput.setLayout(gdo2);
Pnlinput.add(msgstr);
Pnlinput.add(spnl1);
Pnlinput.add(spnl2);
}
public void showMenu()
{
PnlMenu=new Panel();
GridLayout gdo3=new GridLayout(5,1);
Label albl=new Label("请选择业务");
//albl.setBackground(Color.blue);
albl.setAlignment(Label.CENTER);
a1=new Button("1、取款"); a2=new Button("2、余额查询");
a3=new Button("3、修改密码"); a4=new Button("4、退出");
a1.addActionListener(this); a3.addActionListener(this);
a2.addActionListener(this); a4.addActionListener(this);
PnlMenu.setLayout(gdo3);
PnlMenu.add(albl); PnlMenu.add(a1);
PnlMenu.add(a2); PnlMenu.add(a3);
PnlMenu.add(a4);
}
public void showGetMoney()
{
PnlGetmoney=new Panel();
GridLayout gdo4=new GridLayout(4,4);
PnlGetmoney.setLayout(new BorderLayout());
Label blbl=new Label("请选择取款金额");
msg3=new Label("");
b1=new Button("100"); b2=new Button("300");
b3=new Button("500");b4=new Button("800");
b5=new Button("1000");b6=new Button("其他");
b1.addActionListener(this); b5.addActionListener(this);
b2.addActionListener(this); b6.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b7=new Button("返回");
b7.addActionListener(this);
b8=new Button("退出");
b8.addActionListener(this);
Panel bpnl1=new Panel();
bpnl1.add(blbl);
Panel bpnl3=new Panel();
bpnl3.add(b7); bpnl3.add(b8);
Panel bpnl2=new Panel();
bpnl2.setLayout(gdo4);
bpnl2.add(b1); bpnl2.add(new Label()); bpnl2.add(b4);
bpnl2.add(b2); bpnl2.add(msg3); bpnl2.add(b5);
bpnl2.add(b3); bpnl2.add(new Label()); bpnl2.add(b6);
bpnl2.add(new Label()); bpnl2.add(bpnl3); bpnl2.add(new Label());
PnlGetmoney.add(bpnl1,BorderLayout.NORTH);
PnlGetmoney.add(bpnl2,BorderLayout.CENTER);
}
public void showQueryLeft()
{
PnlQueryleft=new Panel();
PnlQueryleft.setLayout(new BorderLayout());
Label clbl=new Label("帐户余额");
clbl.setAlignment(Label.CENTER);
lbleft=new Label("");
Panel cpnl1=new Panel();
cpnl1.add(lbleft);
Panel cpnl2=new Panel();
c1=new Button("返回");
c1.addActionListener(this);
c2=new Button("退出");
c2.addActionListener(this);
//cpnl2.add(edok);Button edok=new Button("确定");
cpnl2.add(c1); cpnl2.add(c2);
PnlQueryleft.add(clbl,BorderLayout.NORTH);
PnlQueryleft.add(cpnl1,BorderLayout.CENTER);
PnlQueryleft.add(cpnl2,BorderLayout.SOUTH);
}
public void showChangePwd()
{
PnlChgpwd=new Panel();
GridLayout gdo6=new GridLayout(5,1);
PnlChgpwd.setLayout(gdo6);
Label dlbl1=new Label("修改密码");
dlbl1.setAlignment(Label.CENTER);
Label dlbl2=new Label("请输入原密码:");
Label dlbl3=new Label("请输入新密码:");
Label dlbl4=new Label("请再输入新密码:");
dok=new Button("确定");
dok.addActionListener(this);
oldpwd=new TextField(15); newpwd1=new TextField(15); newpwd2=new TextField(15);
oldpwd.setEchoChar('*'); newpwd1.setEchoChar('*'); newpwd2.setEchoChar('*');
d1=new Button("返回");
d1.addActionListener(this);
d2=new Button("退出");
d2.addActionListener(this);
Panel dpnl1=new Panel();
Panel dpnl2=new Panel();
Panel dpnl3=new Panel();
Panel dpnl4=new Panel();
Panel dpnl5=new Panel();
dpnl1.add(dlbl1);
dpnl2.add(dlbl2); dpnl2.add(oldpwd);
dpnl3.add(dlbl3); dpnl3.add(newpwd1);
dpnl4.add(dlbl4); dpnl4.add(newpwd2);
dpnl5.add(dok); dpnl5.add(d1); dpnl5.add(d2);
PnlChgpwd.add(dpnl1); PnlChgpwd.add(dpnl2);
PnlChgpwd.add(dpnl3); PnlChgpwd.add(dpnl4);
PnlChgpwd.add(dpnl5);
}
public void showHint()
{
PnlMsg=new Panel();
PnlMsg.setLayout(new BorderLayout());
Label elbl=new Label("系统提示");
elbl.setAlignment(Label.CENTER);
lblMsg=new Label("");
Panel epnl=new Panel();
epnl.add(lblMsg);
Panel epnl2=new Panel();
epnl2.add(back); epnl2.add(quit);
PnlMsg.add(elbl,BorderLayout.NORTH);
PnlMsg.add(epnl,BorderLayout.CENTER);
PnlMsg.add(epnl2,BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==btnwel)//进入输入界面
{
clt.show(fram,"input");
ta.setFocusable(true);
}
if(e.getSource()==btnimp)//包含用户ID、密码和取款金额的验证等操作
{
if((msgstr.getText().indexOf("卡号"))>0)//用户ID验证
{
if(!act.checkAccount(rcd.getCardID(ta.getText())))
{
msghint.setText("非法用户ID,请重新输入!!");
ta.setText("");
dac.sleep(2);
msghint.setText("");
}
else
{
ta.setEchoChar('*');
msgstr.setText("请输入密码:");
this.gid=ta.getText();
ta.setText("");
}
return;
}
if((msgstr.getText().indexOf("密码"))>0)//密码验证操作
{
if(!act.checkPwd(gid,ta.getText()))
{
msghint.setText("密码错误,请重新输入!!");
ta.setText("");
dac.sleep(2);
msghint.setText("");
}
else
{
ta.setEchoChar('\0');
clt.show(fram,"Menu");
this.pwd=ta.getText();
}
return;
}
if((msgstr.getText().indexOf("金额"))>0)//手动输入金额操作
{
try
{
gmoney=Float.parseFloat(ta.getText());
if(act.reduceMoney(gid,gmoney))
{
lblMsg.setText(mce.printBill(gmoney,gid,act.queryBalance(gid)));
nstate=3;
}
else
{
lblMsg.setText("余额不足!!");
nstate=3;
}
}
catch(NumberFormatException e2)//输入非法的金额
{
lblMsg.setText("您输入的金额错误!!!");
nstate=2;
}
finally
{
clt.show(fram,"Msg");
return;
}
}
}
if(e.getSource()==a4 || e.getSource()==b8 || e.getSource()==c2 || e.getSource()==d2 ||
e.getSource()==x1 || e.getSource()==y1 || e.getSource()==quit)//退出系统
{
this.gid="";
this.pwd="";
act.finalize();
dac.finalize();
rcd.exitCard();
}
if(e.getSource()==a1)//进入取款界面
{
clt.show(fram,"Getmoney");
return;
}
if(e.getSource()==a2)//进入余额查看界面
{
float mleft=act.queryBalance(gid);
lbleft.setText("帐号余额为:$ "+mleft);
clt.show(fram,"Queryleft");
return;
}
if(e.getSource()==a3)//进入密码修改界面
{
clt.show(fram,"Chgpwd");
return;
}
if(e.getSource()==b1)//执行取款100操作
{
if(!act.reduceMoney(gid,100))
lblMsg.setText("余额不足!!");
else
{
lblMsg.setText(mce.printBill(100,gid,act.queryBalance(gid)));
}
nstate=3;
clt.show(fram,"Msg");
return;
}
if(e.getSource()==b2)//执行取款300操作
{
if(!act.reduceMoney(gid,300))
lblMsg.setText("余额不足!!");
else
{
lblMsg.setText(mce.printBill(300,gid,act.queryBalance(gid)));
}
nstate=3;
clt.show(fram,"Msg");
return;
}
if(e.getSource()==b3)//执行取款500操作
{
if(!act.reduceMoney(gid,500))
lblMsg.setText("余额不足!!");
else
{
lblMsg.setText(mce.printBill(500,gid,act.queryBalance(gid)));
}
nstate=3;
clt.show(fram,"Msg");
return;
}
if(e.getSource()==b4)//执行取款800操作
{
if(!act.reduceMoney(gid,800))
lblMsg.setText("余额不足!!");
else
{
lblMsg.setText(mce.printBill(800,gid,act.queryBalance(gid)));
}
nstate=3;
clt.show(fram,"Msg");
return;
}
if(e.getSource()==b5)//执行取款1000操作
{
if(!act.reduceMoney(gid,1000))
lblMsg.setText("余额不足!!");
else
{
lblMsg.setText(mce.printBill(1000,gid,act.queryBalance(gid)));
}
nstate=3;
clt.show(fram,"Msg");
return;
}
if(e.getSource()==b6)//进入手动输入金额取款界面
{
y2.setVisible(true);
msgstr.setText("请输入金额");
ta.setText("");
msghint.setText("");
clt.show(fram,"input");
return;
}
if(e.getSource()==dok)//执行修改密码操作
{
int t=act.changePwd(gid,pwd,oldpwd.getText(),newpwd1.getText(),newpwd2.getText());
if(t==-1)
{lblMsg.setText("原密码输入错误!!"); nstate=1;}
else if(t==-2)
{lblMsg.setText("两次密码输入不同!!"); nstate=1;}
else if(t==-3)
{lblMsg.setText("新密码不能为空!!"); nstate=1;}
if(t==1)
{
lblMsg.setText("密码修改成功!!!");
nstate=3;
this.pwd=newpwd1.getText();
oldpwd.setText(""); newpwd1.setText(""); newpwd2.setText("");
}
clt.show(fram,"Msg");
return;
}
if(e.getSource()==back)
{
if(nstate==1)
{
clt.show(fram,"Chgpwd");
}
else if(nstate==2)
{
clt.show(fram,"input");
ta.setText("");
}
else if(nstate==3) clt.show(fram,"Menu");
}
if(e.getSource()==b7 || e.getSource()==c1 || e.getSource()==d1)
{
clt.show(fram,"Menu");
}
if(e.getSource()==y2)
{
clt.show(fram,"Getmoney");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -