📄 bank.java
字号:
/* * 本类主要实现银行的注册账户、登录账户、修改密码、存取钱等最基本工作,不过这里没详述它的细节。 */package guiPackage;import static userPackage.ManageUser.findUser;import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.Container;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;import userPackage.User;//Land类用于模拟ATM的界面public class Bank implements ActionListener{ private JFrame frame; private Container contentPane; private String name; private String password; //登录界面 private JLabel userLbl, pwdLbl, message0; private JTextField userText; private JPasswordField pwdText; private JButton okBtn, exitBtn; //执行界面 private JLabel message1; private JButton balanceBtn, chpwdBtn, withdrawBtn, savingBtn; private JButton returnBtn1; //修改密码 private JLabel message2; private JLabel oldpwdLbl, newpwdLbl, rnewpwdLbl; private JPasswordField oldpwdTxt, newpwdTxt, rnewpwdTxt; private JButton okBtn2, returnBtn2; //存储现金 private JLabel message3; private JLabel saveLbl; private JTextField saveField; private JButton okBtn3,returnBtn3; //提取现金 private JLabel message4; private JButton[] moneyBtn = new JButton[5]; private JButton returnBtn4; //private User user=new User(); public Bank(){ frame = new JFrame("*********银行系统*********"); frame.setBounds(300, 100, 400, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); contentPane = frame.getContentPane(); initGUI(); } //本函数定义一个卡类型的布局,准备以后本界面切卡形式实现界面 public void initGUI(){ contentPane.setLayout(new CardLayout()); contentPane.add(getPanel(0), ""); } public void loadLand(int id){ contentPane.add(getPanel(id), ""); //取得的界面切卡形式切换界面 CardLayout c = (CardLayout)contentPane.getLayout(); c.next(contentPane); } public JPanel getPanel(int id){ JPanel panel = null; switch(id){ case 0:{ //登录界面的实现 message0 = new JLabel("中国牧业银行欢迎您!"); userLbl = new JLabel(" 账户名: "); pwdLbl = new JLabel("账户密码: "); userText = new JTextField(10); pwdText = new JPasswordField(10); okBtn = new JButton("确定"); exitBtn = new JButton("退出"); okBtn.setSize(4, 2); exitBtn.setSize(4, 2); JPanel panel0 = new JPanel(new FlowLayout()); JPanel panel01 = new JPanel(new FlowLayout()); JPanel panel02 = new JPanel(new FlowLayout()); panel01.add(userLbl); panel01.add(userText); panel02.add(pwdLbl); panel02.add(pwdText); panel0.add(panel01); panel0.add(panel02); panel = new JPanel(new BorderLayout()); panel.add(message0, BorderLayout.NORTH); panel.add(panel0, BorderLayout.CENTER); JPanel panel03 = new JPanel(new BorderLayout()); JPanel panel04 = new JPanel(new BorderLayout()); JPanel panel030 = new JPanel(new FlowLayout()); JPanel panel040 = new JPanel(new FlowLayout()); panel030.add(okBtn); panel03.add(panel030, BorderLayout.SOUTH); panel040.add(exitBtn); panel04.add(panel040, BorderLayout.SOUTH); panel.add(panel03, BorderLayout.WEST); panel.add(panel04, BorderLayout.EAST); //然后对两个按钮添加监听,准备做事件 okBtn.addActionListener(this); exitBtn.addActionListener(this); }break; case 1:{ //执行界面的实现 message1 = new JLabel("******中国牧业银行欢迎您******"); balanceBtn = new JButton("查询"); chpwdBtn = new JButton("修改密码"); withdrawBtn = new JButton("取款"); savingBtn = new JButton("存款"); returnBtn1 = new JButton("返回"); JPanel panel1 = new JPanel(new GridLayout(3, 1, 200, 20)); JPanel panel2 = new JPanel(new GridLayout(3, 1, 200, 20)); panel1.add(balanceBtn); panel1.add(chpwdBtn); panel1.add(new JLabel(" ")); panel2.add(withdrawBtn); panel2.add(savingBtn); panel2.add(returnBtn1); panel = new JPanel(new BorderLayout()); panel.add(message1, BorderLayout.NORTH); panel.add(panel1, BorderLayout.WEST); panel.add(panel2, BorderLayout.EAST); //然后对五个按钮添加监听,准备做事件 balanceBtn.addActionListener(this); chpwdBtn.addActionListener(this); withdrawBtn.addActionListener(this); savingBtn.addActionListener(this); returnBtn1.addActionListener(this); }break; case 2:{ //修改密码界面的实现 message2 = new JLabel(" "); oldpwdLbl = new JLabel(" 旧密码: "); newpwdLbl = new JLabel(" 新密码: "); rnewpwdLbl = new JLabel(" 重复新密码: "); oldpwdTxt = new JPasswordField(10); newpwdTxt = new JPasswordField(10); rnewpwdTxt = new JPasswordField(10); okBtn2 = new JButton(" 确定 "); returnBtn2 = new JButton("返回"); JPanel panel2 = new JPanel(new FlowLayout()); JPanel panel20 = new JPanel(new FlowLayout()); JPanel panel21 = new JPanel(new FlowLayout()); JPanel panel22 = new JPanel(new FlowLayout()); panel20.add(oldpwdLbl); panel20.add(oldpwdTxt); panel21.add(newpwdLbl); panel21.add(newpwdTxt); panel22.add(rnewpwdLbl); panel22.add(rnewpwdTxt); panel2.add(panel20); panel2.add(panel21); panel2.add(panel22); panel = new JPanel(new BorderLayout()); panel.add(message2, BorderLayout.NORTH); panel.add(panel2, BorderLayout.CENTER); JPanel panel3 = new JPanel(new BorderLayout()); JPanel panel30 = new JPanel(new FlowLayout()); panel30.add(okBtn2); panel3.add(panel30, BorderLayout.SOUTH); JPanel panel4 = new JPanel(new BorderLayout()); JPanel panel40 = new JPanel(new FlowLayout()); panel40.add(returnBtn2); panel4.add(panel40, BorderLayout.SOUTH); panel.add(panel3, BorderLayout.WEST); panel.add(panel4, BorderLayout.EAST); //然后对两个按钮添加监听,准备做事件 okBtn2.addActionListener(this); returnBtn2.addActionListener(this); }break; case 4:{ //存储现金界面的实现 message3=new JLabel("系统等待存现金...."); saveLbl=new JLabel("存储金额:"); saveField=new JTextField(10); panel = new JPanel(new BorderLayout()); panel.add(message3,BorderLayout.NORTH); JPanel panel40=new JPanel(new FlowLayout()); panel40.add(saveLbl); panel40.add(saveField); panel.add(panel40,BorderLayout.CENTER); saveField.grabFocus(); okBtn3=new JButton("确定"); returnBtn3=new JButton("返回"); JPanel panel41=new JPanel(new FlowLayout()); JPanel panel42=new JPanel(new FlowLayout()); JPanel panel14=new JPanel(new BorderLayout()); JPanel panel24=new JPanel(new BorderLayout()); panel41.add(okBtn3); panel42.add(returnBtn3); panel14.add(panel41,BorderLayout.SOUTH); panel24.add(panel42,BorderLayout.SOUTH); panel.add(panel14,BorderLayout.WEST); panel.add(panel24,BorderLayout.EAST); //然后对两个按钮添加监听,准备做事件 okBtn3.addActionListener(this); returnBtn3.addActionListener(this); }break; case 3:{ //提取现金界面的实现 message4 = new JLabel("您取出的钱不能少于 100元!"); for(int i=0; i<5; i++){ moneyBtn[i] = new JButton((i+1) + "00"); moneyBtn[i].addActionListener(this); } returnBtn4 = new JButton("返回"); returnBtn4.addActionListener(this); JPanel panel31 = new JPanel(new GridLayout(3, 1, 200, 20)); JPanel panel32 = new JPanel(new GridLayout(3, 1, 200, 20)); panel31.add(moneyBtn[0]); panel31.add(moneyBtn[1]); panel31.add(moneyBtn[2]); panel32.add(moneyBtn[3]); panel32.add(moneyBtn[4]); panel32.add(returnBtn4); panel = new JPanel(new BorderLayout()); panel.add(message4, BorderLayout.NORTH); panel.add(panel31, BorderLayout.WEST); panel.add(panel32, BorderLayout.EAST); } } return panel; } public void actionPerformed(ActionEvent e){ //登录界面的监听事件 if(e.getSource() == okBtn){ //getText() 返回此 TextComponent(文本框)中包含的文本 //toLowerCase()使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 //trim()返回字符串的副本,忽略前导空白和尾部空白 //如果查找账户函数里用户不为空就调用loadLand() name = userText.getText().toLowerCase().trim(); password = pwdText.getText().toLowerCase().trim(); if(findUser(name,password) != null){ loadLand(1); for(int i=1;i<=3;i++){ BankATM b=new BankATM(i,name,password); b.go(); } } else{ //登录名和密码任一个不对就输出下条语句,然后对用户名和密码输入文本框清零 //userTest.grabFocus()是用户名输入文本框处取得交互点 message0.setText("您输入的账户名或密码不正确!"); userText.setText(""); pwdText.setText(""); userText.grabFocus(); } return; } //退出登录界面时执行本操作 if(e.getSource() == exitBtn){ frame.hide(); return; } //执行界面的监听事件 if(e.getSource() == balanceBtn){//查询余额 //取得本用户的账户,然后账户里查询得到余额 double d = (findUser(name, password).getAccount().getBalance()); message1.setText("您的余额为:" + d); return; } if(e.getSource() == chpwdBtn){//修改密码 loadLand(2); oldpwdTxt.grabFocus(); return; } if(e.getSource() == withdrawBtn){//提取现金 loadLand(3); return; } if(e.getSource() == savingBtn){ loadLand(4); saveField.grabFocus(); return; } //取得返回按钮 返回到登录界面 if(e.getSource() == returnBtn1){//返回 loadLand(0); return; } //修改密码界面的监听事件 if(e.getSource() == okBtn2){ String pwd1 = oldpwdTxt.getText().toLowerCase().trim(); String pwd2 = newpwdTxt.getText().toLowerCase().trim(); String pwd3 = rnewpwdTxt.getText().toLowerCase().trim(); //如果输入原密码不对输出提示语句 if(!pwd1.equals(password)){ message2.setText("您输入的旧密码不正确!"); oldpwdTxt.setText(""); newpwdTxt.setText(""); rnewpwdTxt.setText(""); oldpwdTxt.grabFocus(); } //如果两次输入的新密码不一致输出提示语句 else if(!pwd2.equals(pwd3)){ message2.setText("您输入的新密码不一致!"); oldpwdTxt.setText(""); newpwdTxt.setText(""); rnewpwdTxt.setText(""); oldpwdTxt.grabFocus(); } else if(pwd3.length()!= 6){ message2.setText("您输入的新密码必须六位字符!"); oldpwdTxt.setText(""); newpwdTxt.setText(""); rnewpwdTxt.setText(""); oldpwdTxt.grabFocus(); } else { User u = findUser(name, password); u.setPwd(pwd2); message2.setText("修改成功!"); } return; } //如果得到返回按钮就返回到执行界面 if(e.getSource() == returnBtn2){ loadLand(1); return; } //存储现金界面的监听事件 if(e.getSource()==okBtn3){ //取得本用户的账户,然后账户里查询得到添加函数进行添加金额 String s=saveField.getText().trim(); if(s.length()!=0){ double amount=Double.parseDouble(s); if(amount%10==0){ if(findUser(name, password).getAccount().deposit(amount)){ double d = (findUser(name, password).getAccount().getBalance()); message3.setText("您已成功存储"+amount+"元;总余额为:"+d+"元"); } else message3.setText("存储失败!"); } else message3.setText("请存储被十整除的现金!"); saveField.setText(""); saveField.grabFocus(); } else message3.setText("请存储金额不为空!"); saveField.grabFocus(); } if(e.getSource()==returnBtn3){ loadLand(1); return; } //提取现金 if(e.getSource() == moneyBtn[0]){ double amount = 100.0; if((findUser(name, password)).getAccount().withdraw(amount)){ double d = (findUser(name, password).getAccount().getBalance()); message4.setText("您成功地取出 100.0元,现在的余额为:"+d+"元"); } else message4.setText("对不起!你的余额不足,取出失败!"); return; } if(e.getSource() == moneyBtn[1]){ double amount = 200.0; if((findUser(name, password)).getAccount().withdraw(amount)){ double d = (findUser(name, password).getAccount().getBalance()); message4.setText("您成功地取出 200.0元,现在的余额为:"+d+"元"); } else message4.setText("对不起!你的余额不足,取出失败!"); return; } if(e.getSource() == moneyBtn[2]){ double amount = 300.0; if((findUser(name, password)).getAccount().withdraw(amount)){ double d = (findUser(name, password).getAccount().getBalance()); message4.setText("您成功地取出 300.0元,现在的余额为:"+d+"元"); } else message4.setText("对不起!你的余额不足,取出失败!"); return; } if(e.getSource() == moneyBtn[3]){ double amount = 400.0; if((findUser(name, password)).getAccount().withdraw(amount)){ double d = (findUser(name, password).getAccount().getBalance()); message4.setText("您成功地取出 400.0元,现在的余额为:"+d+"元"); } else message4.setText("对不起!你的余额不足,取出失败!"); return; } if(e.getSource() == moneyBtn[4]){ double amount = 500.0; if((findUser(name, password)).getAccount().withdraw(amount)){ double d = (findUser(name, password).getAccount().getBalance()); message4.setText("您成功地取出 500.0元,现在的余额为:"+d+"元"); } else message4.setText("对不起!你的余额不足,取出失败!"); return; } //如果是返回按钮就返回到执行界面 if(e.getSource() == returnBtn4){ loadLand(1); return; } } public void go(){ frame.setVisible(true); } /*public static void main(String[] args){ (new Land()).go(); }*/}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -