教你用Java Swing实现自助取款机系统

网友投稿 270 2022-10-20


教你用Java Swing实现自助取款机系统

一、系统介绍

系统功能

1.登录系统

2.查询余额

3.取款

4.存款

5.转账

6.修改密码

7.退出系统

JDK版本:1.8

存储数据形式:TXT存储数据

二、系统展示

1.登录页

2.主页

3.取款

4.存款

5.转账

6.修改密码

三、部分代码

LoginJFrame.java

package atmJFrame.myJFrame;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

//登录界面继承MyJFrame

public class LoginJFrame extends MyJFrame {

public LoginJFrame() {

super("欢迎使用ATM机");

// 设置窗体可关闭

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// 设置组件

init();

// 界面可视化

setVisible(true);

}

// 初始化界面

private void init() {

// 创建面板对象,并定义为空布局

JPanel jp = new JPanel(null);

// 添加标签

JLabel jl1 = new JLabel("账号:");

JLabel jl2 = new JLabel("密码:");

// 设置标签字体

jl1.setFont(FONT_SIZE_20);

jl2.setFont(FONT_SIZE_20);

// 设置标签在面板中的位置

jl1.setBounds(100, 100, 70, 70);

jl2.setBounds(100, 250, 70, 70);

// 添加文本框

JTextField jtf = new JTextField(20);

// 添加密码文本框

JPasswordField jpf = new JPasswordField(20);

// 设置文本框位置

jtf.setBounds(200, 115, 200, 40);

jpf.setBounds(200, 265, 200, 40);

// 添加按钮

JButton jb = new JButton("登录");

// 设置按钮文字大小

jb.setFont(FONT_SIZE_20);

// 设置按钮位置及大小

jb.setBounds(250, 400, 100, 50);

// 设置面板背景颜色

jp.setBackground(Color.YELLOW);

// 内部类进行事件处理

jb.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// 获取输入的账号和密码

String userName = jtf.getText();

String userPassword = new String(jpf.getPassword());

// 验证是否正确

boolean aBoolean = atm.login(userName, userPassword);

if (aBoolean) {

// 登录成功

dispose();// 关闭登录界面

// 打开功能界面

new WorkingJFrame();

} else

showMessageDialog("账号或密码错误");// 调用父类弹窗方法

}

});

// 添加组件

jp.add(jl1);

jp.add(jtf);

jp.add(jl2);

jp.add(jpf);

jp.add(jb);

// 窗体添加面板

add(jp);

}

public static void main(String[] args) {

new LoginJFrame();// 先创建登录界面

}

}

CentreJFrame.java

package atmJFrame.myJFrame;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

//中间窗口,存钱、取钱、转账、修改密码界面的父类

public class CentreJFrame extends MyJFrame {

// 空布局面板,自己设置组件位置及大小

protected JPanel jp = new JPanel(null);

// 输入金额标签

protected JLabel jl = new JLabel("请输入金额:");

// 输入金额文件框

protected JTextField jtf = new JTextField(20);

// 确认、取消按钮

protected JButton jb1 = new JButton("确认");

protected JButton jb2 = new JButton("取消");

// 转账时转账账号标签

protected JLabel jLabel = new JLabel("请输入转账账号:");

// 转账时转账账号文本框

protected JTextField jTextField = new JTextField(20);

// 修改密码时新密码标签

protected JLabel jLabelCP = new JLabel("请输入新密码(只能为数字):");

// 修改密码时新密码文本框

protected JTextField jTextFieldCP = new JTextField(20);

// 提醒用户输入金额为100的倍数

private JLabel jle = new JLabel("( 提示:只能输入100的倍数 )");

public CentreJFrame(String str) {

super(str);

// 判断要进行的操作

if (str.equals("转账"))

init1();

else if (str.equals("修改密码"))

init2();

else

init();

one();// 最后调用共有

}

// 取钱和取钱特有组件

private void init() {

// 输入金额标签,设置字体,位置及大小

jl.setFont(FONT_SIZE_25);

jl.setBounds(100, 100, 200, 100);

// 输入金额文本框

jtf.setBounds(300, 250, 200, 50);

// 添加输入金额标签和输入金额文本框

jp.add(jl);

jp.add(jtf);

setJLE();

}

// 转账特有组件

private void init1() {

init();

// 输入账户标签

jLabel.setFont(FONT_SIZE_25);

jLabel.setBounds(100, 10, 200, 40);

// 输入账户文本

jTextField.setBounds(300, 80, 200, 50);

// 添加输入账户标签和输入账户文本

jp.add(jLabel);

jp.add(jTextField);

}

// 修改密码特有组件

private void init2() {

// 输入新密码标签

jLabelCP.setFont(FONT_SIZE_25);

jLabelCP.setBounds(50, 100, 400, 70);

// 输入新密码文本框

jTextFieldCP.setBounds(300, 215, 200, 40);

// 添加输入新密码标签和输入新密码文本框

jp.add(jLabelCP);

jp.add(jTextFieldCP);

}

// 共有组件及操作

private void one() {

// 按钮设置

jb1.setFont(FONT_SIZE_20);

jb2.setFont(FONT_SIZE_20);

jb1.setBounds(300, 350, 100, 50);

jb2.setBounds(450, 350, 100, 50);

jp.add(jb1);

jp.add(jb2);

jp.setBackground(Color.GREEN);

jb1.addActionListener(listener);

jb2.addActionListener(listener);

// 添加到窗体

add(jp);

setVisible(true);

}

// 设置提示

private void setJLE() {

jle.setFont(FONT_SIZE_10);

jle.setBounds(100, 180, 300, 50);

jp.add(jle);

}

// 创建监听器

private ActionListener listener = new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {// 按钮被点击后

String actionCommand = e.getActionCommand();// 获取按钮上的字

switch (actionCommand) {

case "确认":

change();

break;

case "取消":

new WorkingJFrame();// 创建功能界面

dispose();// 关闭此界面

break;

}

}

};

// 点击确认按钮执行的操作,子类重写覆盖实现各自功能

protected void change() {

}

// 正则表达式判断输入是否为数字

protected boolean isNumber(String str) {

Pattern pattern = Pattern.compile("[0-9]*");

Matcher isNum = pattern.matcher(str);

if (!isNum.matches())

return false;

return true;

}

}

CunMoneyJFrame.java

package atmJFrame.myJFrame;

//存钱界面

public http://class CunMoneyJFrame extends CentreJFrame {

public CunMoneyJFrame() {

super("存钱");

}

protected void change() {

String s = jtf.getText();

if (isNumber(s)) {

Double money = Double.parseDouble(s);

boolean b = atm.saveMoney(money);

if (b)

showMessageDialog("您的钱钱已存入\n您的账户余额为:" + atm.getMoney1());

else

showMessageDialog("您输入有误");

} else

showMessageDialog("您输入有误");

jtf.setText("");

}

}

GiveMoneyJFrame.java

package atmJFrame.myJFrame;

//转账界面

public class GiveMoneyJFrpwHGzame extends CentreJFrame {

public GiveMoneyJFrame() {

super("转账");

}

protected void change() {

String s = jTextField.getText();

boolean b = atm.anotherUser(s);

if (b) {

// 获取输入金额

String s1 = jtf.getText();

if (isNumber(s1)) {// 如果输入是数字

Double money = Double.parseDouble(s1);

atm.giveMoney(money);

showMessageDialog("钱已转入\n您的账户余额为:" + atm.getMoney1());

} else

showMessageDialog("您输入有误");

} else

showMessageDialog("您输入有误");

new WorkingJFrame();// 创建功能界面

dispose();// 关闭此界面

}

}

Qhttp://uMoneyJFrame.java

package atmJFrame.myJFrame;

//取钱界面

public class QuMoneyJFrame extends CentreJFrame {

public QuMoneyJFrame() {

super("取钱");

}

protected void change() {

String s = jtf.getText();

if (isNumber(s)) {

Double money = Double.parseDouble(s);

boolean b = atm.quMoney(money);

if (b) {

showMessageDialog("请收好您的钱\n您的账户余额为:" + atm.getMoney1());

} else

showMessageDialog("您输入有误");

} else

showMessageDialog("您输入有误");

jtf.setText("");

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:万兆以太网编码及传输分析
下一篇:数据中心机房标识应用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~