package program.atm.customer;
import program.atm.AtmMainUI;
import program.atm.data.ATMData;
import program.atm.data.CustomerAccount;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
/**
* 前台用户界面.
*
* @author 林志鹏
* @version 1.0.0
* @date 2020/11/7 16:05
*/
public class CustomerManage extends JFrame {
/**
* 当前登录账号信息.
*/
private CustomerAccount currentAccount;
/**
* 中间输出日志面版.
*/
JTextArea textArea = new JTextArea();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
public CustomerManage(CustomerAccount customerAccount) {
//设置当前用户信息
this.currentAccount = customerAccount;
System.out.println(currentAccount);
//设置头部的图片
ImageIcon img = new ImageIcon(getClass().getResource("/head.png"));
JLabel headLabel = new JLabel(img);
headLabel.setBounds(-2, 0, 584, 74);
getContentPane().add(headLabel);
//设置尾部的图片
ImageIcon img2 = new ImageIcon(getClass().getResource("/foot.png"));
JLabel footLabel = new JLabel(img2);
footLabel.setLocation(0, 320);
footLabel.setBounds(-2, 410, 584, 80);
getContentPane().add(footLabel);
//初始化中心面板功能
initCenter();
//初始化左右的按钮功能
initBtn();
// 设置窗口信息
setTitle("ATM机模拟程序");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
getContentPane().setForeground(Color.BLACK);
getContentPane().setBackground(Color.LIGHT_GRAY);
//设置当前界面的信息,设置界面居中显示
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int screenWidth = (int) screenSize.getWidth();
int screenHeight = (int) screenSize.getHeight();
int x = screenWidth / 2 - 300;
int y = screenHeight / 2 - 265;
setBounds(x, y, 588, 530);
this.setResizable(false);
setVisible(true);
}
/**
* 初始化中间面板.
*/
public void initCenter() {
//中间输出日志面板
textArea.setLineWrap(true); //设置多行文本框自动换行
textArea.setEditable(true);
textArea.setForeground(Color.GREEN);
textArea.setFont(new Font("黑体", Font.PLAIN, 14));
textArea.setBackground(Color.BLACK);
textArea.setBounds(120, 74, 344, 334);
textArea.append("================================================\n");
textArea.append("============== 欢迎使用本 ATM 机 ===============\n");
textArea.append("================================================\n");
textArea.append("【" + LocalDateTime.now().format(dateTimeFormatter) + "】 登录成功...\n");
JScrollPane scrollPane = new JScrollPane(textArea);
//隐藏滚动条
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
scrollPane.setBounds(120, 74, 344, 334);
getContentPane().add(scrollPane);
//监听面板内容的变化
textArea.getDocument().addDocumentListener(new DocumentListener() {
//监听面板被插入内容时
@Override
public void insertUpdate(DocumentEvent e) {
//滚动条滚动到底部
textArea.setCaretPosition(textArea.getText().length());
}
@Override
public void removeUpdate(DocumentEvent e) {
}
@Override
public void changedUpdate(DocumentEvent e) {
}
});
}
/**
* 初始化功能.
*/
private void initBtn() {
//左侧菜单栏
JPanel leftPanel = new JPanel();
leftPanel.setBackground(SystemColor.textInactiveText);
leftPanel.setBounds(-2, 75, 122, 334);
getContentPane().add(leftPanel);
leftPanel.setLayout(null);
//查询余额功能
JButton checkMoneyBtn = new JButton("查询余额");
checkMoneyBtn.setBounds(0, 0, 122, 56);
//触发事件
checkMoneyBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "您的余额为【" + currentAccount.getMoney() + "】元", "提示消息", JOptionPane.WARNING_MESSAGE);
textArea.append("【" + LocalDateTime.now().format(dateTimeFormatter) + "】您的余额为【" + currentAccount.getMoney() + "】元\n");
}
});
leftPanel.add(checkMoneyBtn);
//atm取款功能
JButton getMoneyBtn = new JButton("ATM取款");
getMoneyBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//取款触发事件
JTextField getMoney = new JTextField();
Object[] message = {
"输入取款金额:", getMoney
};
//弹出输入框
int option = JOptionPane.showConfirmDialog(null, message, "ATM取款", JOptionPane.OK_CANCEL_OPTION);
if (JOptionPane.OK_OPTION == option) {
String text = getMoney.getText();
Integer integer = Integer.valueOf(text);
boolean flag = currentAccount.lessMoney(integer);
List<String> operationRecod = currentAccount.getOperationRecod();
if (flag) {
//获取本账号最后一条交易记录
textArea.append(operationRecod.get(operationRecod.size() - 1) + "\n");
} else {
textArea.append("【" + LocalDateTime.now().format(dateTimeFormatter) + "】 取款失败.\n");
}
}
}
});
getMoneyBtn.setBounds(0, 92, 122, 56);
leftPanel.add(getMoneyBtn);
// atm存款功能
JButton saveMoneyBtn = new JButton("ATM存款");
saveMoneyBtn.setBounds(0, 184, 122, 56);
saveMoneyBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//存款触发事件
JTextField getMoney = new JTextField();
Object[] message = {
"输入存款金额:", getMoney
};
//弹出输入框
int option = JOptionPane.showConfirmDialog(null, message, "ATM存款", JOptionPane.OK_CANCEL_OPTION);
if (JOptionPane.OK_OPTION == option) {
String text = getMoney.getText();
Integer integer = Integer.valueOf(text);
boolean flag = currentAccount.addMoney(integer);
if (flag) {
//获取本账号最后一条交易记录
List<String> operationRecod = currentAccount.getOperationRecod();
textArea.append(operationRecod.get(operationRecod.size() - 1) + "\n");
} else {
textArea.append("【" + LocalDateTime.now().format(dateTimeFormatter) + "】 存款失败..金额需为100的倍数\n");
}
}
}
});
leftP
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Java GUI开发的桌面程序: 需要输入管理员账号和密码,可以查看这台ATM机近期资金出入明细,可以查看这台ATM机上面操作的所有账户的历史记录和明细,可以把所有记录导出到excel文件中; 进入用户账号和密码的登录界面,当输入给定的卡号和密码(初始卡号16位和密码6位)时,对比系统存储的账号和密码正确,能登录ATM柜员机系统,当日出错次数操作3次,当日锁定账户不能继续操作,累计三日被锁定,需要管理员账号才能够完成解锁操作。 详情可进本人博客 https://blog.csdn.net/m4330187/article/details/110845235 查看。。
资源详情
资源评论
资源推荐
收起资源包目录
Java GUI实现 ATM 模拟程序.zip (10个子文件)
atm
atm.iml 559B
src
foot.png 20KB
atm.png 183KB
program
atm
AtmMainUI.java 4KB
admin
AdminManage.java 9KB
customer
CustomerManage.java 13KB
data
CustomerAccount.java 6KB
ATMData.java 5KB
Card.java 2KB
head.png 29KB
共 10 条
- 1
林志鹏JAVA
- 粉丝: 3106
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0