?? atmscreen.java
字號:
/*-------------------- ATM取款模擬Java實現-----------------
*--------------------- write by 223小組-------------------
*---------------------------2006.4------------------------
*
*----- 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、Change password;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("Exit");
back=new Button("Back");
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("Enter");
x1=new Button("Exit");
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("Please input your Card Id:");
msghint=new Label("");
ta=new TextField("",15);
btnimp=new Button("OK");
btnimp.addActionListener(this);
y1=new Button("Exit");
y1.addActionListener(this);
y2=new Button("Back");
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("Choose an operation");
//albl.setBackground(Color.blue);
albl.setAlignment(Label.CENTER);
a1=new Button("1.getMoney"); a2=new Button("2.Check balance");
a3=new Button("3.Change password"); a4=new Button("4.Exit");
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("Choose Money");
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("Other");
b1.addActionListener(this); b5.addActionListener(this);
b2.addActionListener(this); b6.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b7=new Button("Back");
b7.addActionListener(this);
b8=new Button("Exit");
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("Account Balance");
clbl.setAlignment(Label.CENTER);
lbleft=new Label("");
Panel cpnl1=new Panel();
cpnl1.add(lbleft);
Panel cpnl2=new Panel();
c1=new Button("Back");
c1.addActionListener(this);
c2=new Button("Exit");
c2.addActionListener(this);
//cpnl2.add(edok);Button edok=new Button("OK");
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("Change password");
dlbl1.setAlignment(Label.CENTER);
Label dlbl2=new Label("Input old password");
Label dlbl3=new Label("Input new password");
Label dlbl4=new Label("Input new password again");
dok=new Button("OK");
dok.addActionListener(this);
oldpwd=new TextField(15); newpwd1=new TextField(15); newpwd2=new TextField(15);
oldpwd.setEchoChar('*'); newpwd1.setEchoChar('*'); newpwd2.setEchoChar('*');
d1=new Button("Back");
d1.addActionListener(this);
d2=new Button("Exit");
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("System prompt");
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("Card Id"))>0)//用戶ID驗證
{
if(!act.checkAccount(rcd.getCardID(ta.getText())))
{
msghint.setText("Invalid ID,Please enter again!!");
ta.setText("");
dac.sleep(2);
msghint.setText("");
}
else
{
ta.setEchoChar('*');
msgstr.setText("Input password");
this.gid=ta.getText();
ta.setText("");
}
return;
}
if((msgstr.getText().indexOf("password"))>0)//密碼驗證操作
{
if(!act.checkPwd(gid,ta.getText()))
{
msghint.setText("Invalid password please enter again!!");
ta.setText("");
dac.sleep(2);
msghint.setText("");
}
else
{
ta.setEchoChar('\0');
clt.show(fram,"Menu");
this.pwd=ta.getText();
}
return;
}
if((msgstr.getText().indexOf("Money"))>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("Balance is not enough!!");
nstate=3;
}
}
catch(NumberFormatException e2)//輸入非法的金額
{
lblMsg.setText("Money is error!");
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)//Exit系統
{
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("Account Balance:$ "+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("Balance is not enough!!");
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("Balance is not enough!!");
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("Balance is not enough!!");
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("Balance is not enough!!");
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("Balance is not enough!!");
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("Input Money");
ta.setText("");
msghint.setText("");
clt.show(fram,"input");
return;
}
if(e.getSource()==dok)//執行Change password操作
{
int t=act.changePwd(gid,pwd,oldpwd.getText(),newpwd1.getText(),newpwd2.getText());
if(t==-1)
{lblMsg.setText("Old password is wrong!!"); nstate=1;}
else if(t==-2)
{lblMsg.setText("Two passwords are different!!"); nstate=1;}
else if(t==-3)
{lblMsg.setText("New password cannot be empty!!"); nstate=1;}
if(t==1)
{
lblMsg.setText("Change password succeed!!!");
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 + -