Java+Swing实现自助取款机(ATM)系统-TXT存储数据

news2024/11/29 12:34:11

Java+Swing实现自助取款机ATM系统-TXT存储数据

  • 一、系统介绍
    • 1.系统功能
    • 2.环境配置
    • 3.工程截图
  • 二、系统展示
    • 1.登录页
      • 1.1登录成功
    • 2.取款
      • 2.1取款成功
    • 3.存款
      • 3.1 存款成功
    • 4.转账
    • 5.余额查询
    • 6.退出系统
  • 三、部分代码
    • AccountDao.java
    • LoginFrame.java
    • Account.java
  • 四、其他
    • 获取源码


一、系统介绍

1.系统功能

1.登录系统
2.取款
3.存款
4.转账
5.余额查询
6.退出系统

2.环境配置

JDK版本:1.8
存储数据形式:TXT存储数据

3.工程截图

在这里插入图片描述

二、系统展示

1.登录页

在这里插入图片描述
账号密码都是1

1.1登录成功

在这里插入图片描述

2.取款

在这里插入图片描述

2.1取款成功

在这里插入图片描述

3.存款

在这里插入图片描述

3.1 存款成功

在这里插入图片描述

4.转账

在这里插入图片描述

5.余额查询

在这里插入图片描述

6.退出系统

在这里插入图片描述

三、部分代码

AccountDao.java

package cn.com.cdp.dao;

import java.util.List;

import cn.com.cdp.model.Account;
 
public class AccountDao {
	public Account accountDao(int accountNo) {
 
		return findAccByNo(accountNo);
 
	}
 
	// 如果用户找不到,返回false
	public boolean accountDaoForUI(int accountNo) {
		if (findAccByNo(accountNo) != null)
			return true;
		else
			return false;
 
	}
 
	// 根据账户查询用户,并返回一个Account对象
	public Account findAccByNo(int accountNo) {
		AccountIO aio=new AccountIO();
		List<Account> list= aio.queryAccountAll();
		Account account=null;
		for(int i=0;i<list.size();i++) {
			if(accountNo == list.get(i).getAccountNo()) {
				account=list.get(i);
			}
		}		
		// 返回用户对象
		return account;
 
	}
}

LoginFrame.java

package cn.com.cdp.view;


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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import cn.com.cdp.model.Account;
import cn.com.cdp.dao.AccountDao;
 
//登录窗口
public class LoginFrame extends JFrame {
	// 主面板
	private JPanel p;
	// 标签
	private JLabel lblName, lblPwd;
	// 用户名,文本框
	private JTextField txtAccount;
	// 密码,密码框
	private JPasswordField txtPwd;
	// 确认、取消和注册,按钮
	private JButton btnOk, btnCancle, btnRegist;
	// 登录用户
	private static Account account;
 
	public static Account getAccount() {
		return account;
	}
 
	public static void setAccount(Account account) {
		LoginFrame.account = account;
	}
 
	// 账户DAO类
	private AccountDao accountDao;
 
	// 构造方法
	public LoginFrame() {
		super("ATM自助存取款机");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 实例化用户业务类对象
		accountDao = new AccountDao();
 
		// 实例化组件
		p = new JPanel();
		// 使用null布局
		p.setLayout(null);
		lblName = new JLabel("账户:");
		lblPwd = new JLabel("密码:");
		txtAccount = new JTextField(20);
		txtPwd = new JPasswordField(20);
		txtPwd.setEchoChar('*');
 
		btnOk = new JButton("登录");
		btnOk.addActionListener(new LoginListener());
 
		btnCancle = new JButton("重置");
		btnCancle.addActionListener(new ResetListener());

 
		lblName.setBounds(30, 40, 95, 25);
		lblPwd.setBounds(30, 105, 83, 40);
		txtAccount.setBounds(140, 40, 250, 35);
		txtPwd.setBounds(140, 108, 250, 35);
		btnOk.setBounds(75, 191, 75, 35);
		btnCancle.setBounds(351, 191, 75, 35);
		
 
		p.add(lblName);
		p.add(txtAccount);
		p.add(lblPwd);
		p.add(txtPwd);
		p.add(btnOk);
		p.add(btnCancle);
 
		// 主面板放入窗体中
		getContentPane().add(p);
		// 设置窗体大小和位置
		this.setSize(488, 343);
		// 设置窗口在屏幕中央
		this.setLocationRelativeTo(null);
		// 设置窗体初始可见
		this.setVisible(true);
	}
 
	// 监听类,负责处理登录按钮
	public class LoginListener implements ActionListener {
		// 重写actionPerFormed()方法,事件处理逻辑
		public void actionPerformed(ActionEvent e) {
			System.out.println("==========="+txtAccount.getText());
			
			if("".equals(txtAccount.getText())) {
				JOptionPane.showMessageDialog(null, "账户不能为空", "错误提示", JOptionPane.WARNING_MESSAGE);
				return;
			}
			
			
			
			// 根据账户查询用户
			account = accountDao.findAccByNo(Integer.parseInt(txtAccount.getText().trim()));
			// 判断用户是否存在
			if ( null!= account) {
				
				
				
				// 判断输入的密码是否正确
				if (account.getPwd() == Integer.parseInt(new String(txtPwd.getPassword()))) {
					// 登录成功,隐藏登录窗口
					LoginFrame.this.setVisible(false);
					// 显示主窗口
					new MainFrame(account).setVisible(true);
				} else {
					// 输出提示信息
					// System.out.println("密码错误!请重新输入!");
					JOptionPane.showMessageDialog(null, "密码错误!请重新输入!", "错误提示", JOptionPane.ERROR_MESSAGE);
					// 清空密码框
					txtPwd.setText("");
				}
			} else {
				// 输出提示信息
				// System.out.println("该用户不存在,请先注册!");
				JOptionPane.showMessageDialog(null, "该用户不存在!", "错误提示", JOptionPane.ERROR_MESSAGE);
			}
		}
	}
 
	// 监听类,负责处理重置按钮
	public class ResetListener implements ActionListener {
		// 重写actionPerFormed()方法,事件处理方法
		@Override
		public void actionPerformed(ActionEvent e) {
			// 清空文本框
			txtAccount.setText("");
			txtPwd.setText("");
		}
	}
 

 
	// 主程序,整个应用程序的入口
	public static void main(String[] args) {
		new LoginFrame();
	}
}





Account.java

package cn.com.cdp.model;

public class Account {
	private int accountNo;
	
	private int pwd;
	
	private String aName;
	
	private double balance;
	
	

	public Account() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Account(int accountNo, int pwd, String aName, double balance) {
		super();
		this.accountNo = accountNo;
		this.pwd = pwd;
		this.aName = aName;
		this.balance = balance;
	}

	public int getAccountNo() {
		return accountNo;
	}

	public void setAccountNo(int accountNo) {
		this.accountNo = accountNo;
	}

	public int getPwd() {
		return pwd;
	}

	public void setPwd(int pwd) {
		this.pwd = pwd;
	}

	public String getaName() {
		return aName;
	}

	public void setaName(String aName) {
		this.aName = aName;
	}

	public double getBalance() {
		return balance;
	}

	public void setBalance(double balance) {
		this.balance = balance;
	}
	
	
	
}




四、其他

获取源码

点击以下链接获取源码。

Java+Swing+Mysql自助存取款机系统

Java+Swing+mysql5实现学生成绩管理系统(带分页)

Java+Swing+Mysql实现超市商品管理系统源码

Java+Swing+Mysql实现通讯录管理系统源码

Java+Swing+Mysql实现图书管理系统源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rocketmq源码-producer发送消息

前言 这篇笔记&#xff0c;记录producer发送消息的相关源码 我们以最简单的demo为例 public static void main(String[] args) throws MQClientException, InterruptedException {DefaultMQProducer producer new DefaultMQProducer("please_rename_unique_group_name&…

去哪儿是如何做到大规模故障演练的?|TakinTalks

# 一分钟精华速览 #混沌工程作为一种提高技术架构弹性能力和容错能力的复杂技术手段&#xff0c;近年来讨论声音不断&#xff0c;相比在分布式系统上进行随机的故障注入实验&#xff0c;基于混沌工程的大规模自动化故障演练&#xff0c;不仅能将“作战演习”常态化&#xff0c;…

Spring结合mybatis

目录 一、Spring结合mybatis 二、业务层添加声明式事务 1、事务的传播机制 2、事务的四大特性 3、事务的隔离级别 4、事务属性 一、Spring结合mybatis 1.创建Web工程&#xff0c;导入Spring和MyBatis的相关依赖 <!-- springmybatis整合 --><dependency><…

web渗透安全测试(靶场搭建及常见漏洞攻防)

渗透测试 渗透测试&#xff08;Penetration test&#xff09;即安全工程师模拟黑客&#xff0c;在合法授权范围内&#xff0c;通过信息搜集、漏洞挖掘、权限提升等行为&#xff0c;对目标对象进行安全测试&#xff08;或攻击&#xff09;&#xff0c;最终找出安全风险并输出测…

Denoising Diffusion Probabilistic Models简介

目录概要前向过程nice property逆向过程参数推导简化参考资料概要 Denoising Diffusion Probabilistic Model(DDPM)是一个生成模型&#xff0c;给定一个目标分布&#xff0c;学习模型以便可以从目标分布中采样。 使用马尔科夫链建模。输入是噪声&#xff0c;通过神经网络逐步去…

“乌卡时代”下,跨境电商卖家到底在焦虑什么?

三年前新冠疫情大爆发&#xff0c;现今国家全面解封&#xff0c;但形式任然不稳定&#xff0c;加之国际形势扑朔迷离&#xff0c;各国外贸瞬息万变&#xff0c;跨境电商行业面对的复杂性也随之正变得越来越高。无论是运价&#xff0c;还是爆仓&#xff0c;亦或是港口拥堵等情况…

WPF入门 第一篇 基础布局与简单样式

基础布局与简单样式 首先&#xff0c;创建WPF项目&#xff0c;在自动打开的MainWindow.xaml里面&#xff0c;找到Grid标签&#xff0c;并将它替换为&#xff1a; <Grid><Grid.RowDefinitions><RowDefinition></RowDefinition><RowDefinition>&…

【案例教程】地球科学数据(ERA5、雪深、积雪覆盖、海温、植被指数、土地利用)处理实践

【查看原文】地 球 科 学 常 见 数 据 的 处 理 实 践 技 术 应 用 在地球科学中&#xff0c;不同数据根据具体学科的特色存储为多种数据格式。在科研工作中需要将多种数据进行综合使用分析&#xff0c;因此需要寻找学习通用的数据格式解决方法&#xff0c;把研究的精力聚焦到具…

芜湖~西门子低代码最新组件首发,快来围观!

热爱低代码的小伙伴们&#xff0c;我们又见面啦~ 在与大家长达1年多时间的沟通交流中&#xff0c;我们深刻感受到大家对西门子低代码的浓厚兴趣。为了不辜负大家的厚爱&#xff0c;我们潜心研制了一批前端组件。因为随着商业化的趋势&#xff0c;越来越多的企业级产品对更好的…

web前端实训作业 html+css+javascript 水果超市网页设计实例 企业网站制作

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

12.7、后渗透测试--python插件执行py脚本

加载python插件&#xff1a;meterpreter >load python查看指令集&#xff1a;meterpreter >helppython执行单条语句&#xff1a;meterpreter > python_execute "import os; cdos.getcwd()" -r cd # 将os.getcwd()赋值给 cd 这个变量&#xff0c;然后用 -…

中英翻译《The number thirteen数字13》

The number thirteen 数字13 一、Pre-reading activity 阅前思考 1.Do you have a lucky number? If so, what is it? 你有幸运数字吗&#xff1f;如果有&#xff0c;是什么&#xff1f; 2.What number is next? 10, 11, 12, ____? 下一个数字是什么&#xff1f; 10、11、1…

设计模式-迭代器模式

迭代器模式UML类图 实现代码如下&#xff08;这里使用的集合是list,也可以使用其他集合这里就不一一展示了&#xff09; public interface Iterator<T> {T next();boolean hasNext(); } 复制代码 public class ConcreteIterator<T> implements Iterator<T>…

商品企划VE课程大纲

课程信息 课程受众: 高中基层管理人员、储备干部&#xff0c;项目经理&#xff0c;商品企划人员&#xff0c;研发人员 课程时间: 2天 授课方式: 理论讲座&#xff0b;实战工作坊&#xff0b;录像观赏&#xff0b;角色扮演&#xff0b;提问互动&#xff0b;分组讨论&#xff0…

Java入门教程(29)——封装

封装是面向对象三大特征之一。 文章目录1.封装的特性2.封装的作用3.访问控制符4.实例1.封装的特性 高内聚、低耦合 2.封装的作用 提高代码的安全性。提高代码的复用性。高内聚&#xff1a;封装细节&#xff0c;便于修改内部代码&#xff0c;提高可维护性。低耦合”&#xff…

Linux常用目录操作及示例操作

文章目录一、常用权限操作1.1 常用权限操作1. chgrp命令2. chown命令3. chmod命令1.2 权限操作实战任务1 创建文件&#xff0c;设置其用户组任务2 修改文件的所有者任务3 修改文件操作权限二、常用目录操作2.1 常用目录操作2.2 目录操作实战任务1 获取命令帮助信息任务2 查看当…

IBM有望在2026年之前实现量子优势

&#xff08;图片来源&#xff1a;网络&#xff09; 目前&#xff0c;噪声是量子计算面临的最大挑战&#xff0c;限制了量子计算技术的快速发展。在未来几年内&#xff0c;IBM正努力通过各种类型的量子误差管理来减少噪声&#xff0c;直到实现真正的量子纠错 (QEC)。 这也是降低…

ANSYS Topology Optimization拓扑优化技术在轻量化设计应用概述

产品概念设计初期&#xff0c;单纯的凭借经验以及想象对零部件进行设计往往是不够的&#xff0c;在适当约束条件下&#xff0c;如果能充分利用“拓扑优化技术”进行分析&#xff0c;并结合丰富的产品设计经验&#xff0c;是有能力设计出更满足产品结构技术方案、工艺要求、而且…

通俗易懂的Redis数据结构基础教程

Redis有5个基本数据结构&#xff0c;string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构&#xff0c;把这5个数据结构都吃透了&#xff0c;你就掌握了Redis应用知识的一半了。 string 首先我们从string谈起。string表示的是一个可变的字节…

操作系统中的线程

我的GitHub&#xff1a;Powerveil GitHub 我的Gitee&#xff1a;Powercs12 (powercs12) - Gitee.com 皮卡丘每天学Java 进程就是 任务&#xff0c;跑起来的程序 系统使用 PCB 描述进程&#xff0c;使用双向链表来管理进程 进程存在的意义就是让操作系统可以同时执行多个任务&…