今天为大家分享一个java web编写的ATM管理系统,目前系统功能已经完善,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步。
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以。数据库采用:MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。
系统框架
利用JDK自带的SWING框架开发,不需要安装第三方JAR包。MySQL数据库,纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档
主要功能
ATM管理系统,实现系统登录、余额查询、ATM取款、ATM存款、查询顾客交易记录等一些ATM柜员机的基本功能,模拟ATM的工作原理和人机交互。
(1)顾客登录:输出个当输入给定的卡号和密码(初始卡号为888888和密码为123456)时,系统能登录ATM柜员机系统。当校验通过的时候,跳转到主界面,校验失败,则提示卡号和密码错:
(2)查询余额:初始余额为5000元 ,用户点击查询余额,可以查询自己银行卡上的余额信息
(3)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。 (4)ATM存款:不能出现负存款。
(5)查询交易记录:用户可以查询自己的历史交易记录,包括类型(存款,取款),交易数量,交易时间,以便顾客知道自己的每一笔资金使用情况。
(6)新增顾客:管理登录后,可以新增顾客,新增顾客需要输入姓名,卡号,账号余额等信息
(7)修改顾客:管理登录后,可以选择一个顾客,对顾客的姓名,卡号,账号余额等信息进行修改。
(8)删除顾客:管理登录后,可以选择一个顾客,对顾客的的银行卡情况进行删除。
运行效果
1 登陆界面
2 显示用户信息
3 存款操作
4 取款操作
5 取款日志信息
6 查看余额
7 用户管理界面
8 添加顾客操作界面
9 修改顾客界面
关键代码
/*
* 功能:这是顾客/管理员登陆的窗口,根据权限不同进入不同的后台界面
* */
package com.View;
import com.SqlConnection.SqlConn;
import com.Tools.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.sql.ResultSet;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Login extends JFrame implements ActionListener{
//定义登陆窗口需要的组件
JLabel jl1,jl2,jl3;
JTextField jtf1;
JPasswordField jpf1;
JButton jb1,jb2;
int width,height;
//定义用于连接数据库的组件,也就是com.SqlConnection类下的SqlConn方法
SqlConn sqlconn;
//定义用于传送SQL语句的变量
String sql;
//定义一个用于接收登陆验证返回来的记录集
ResultSet rs;
//声明用于验证登陆用户的模型
LoginModel loginModel;
int flag;
public static void main(String []args)
{
Login login=new Login();
}
public Login()
{
//创建登陆所需的组件
jl1=new JLabel("卡号:");
jl1.setFont(MyFont.f1);
jl1.setBounds(50,50,60,25);
jl2=new JLabel("密 码:");
jl2.setFont(MyFont.f1);
jl2.setBounds(50,90,60,25);
jtf1=new JTextField(20);
jtf1.setBounds(110,50,150,25);
//设置文本框下凹,三维效果
jtf1.setBorder(BorderFactory.createLoweredBevelBorder());
jpf1=new JPasswordField(20);
jpf1.setBorder(BorderFactory.createLoweredBevelBorder());
jpf1.setBounds(110,90,150,25);
jb1=new JButton("登 陆");
jb1.setFont(MyFont.f1);
jb1.addActionListener(this);
jb1.setBounds(95,130,75,25);
jb2=new JButton("取消");
jb2.setFont(MyFont.f1);
jb2.addActionListener(this);
jb2.setBounds(185,130,75,25);
//添加到窗体
//先设置窗体的空布局
this.setLayout(null);
this.add(jl1);
this.add(jtf1);
this.add(jl2);
this.add(jpf1);
this.add(jb1);
this.add(jb2);
//创建一个BackImage对象
BackImage bi=new BackImage();
//设定图片的位置
bi.setBounds(0,0,350,250);
this.add(bi);
this.setSize(350,250);
this.setTitle("<-银行自动取款机-->");
//设置窗口在屏幕的初始位置
width=Toolkit.getDefaultToolkit().getScreenSize().width;
height=Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation(width/2-180, height/2-180);
//设置窗口不可改变大小
this.setResizable(false);
//注意:************设置窗口的背景颜色,由于是继承Swing包,所以必须先得到窗口的一个面板,然后再通过这个面板去设置背景色,否则设置不显示出来
//this.getContentPane().setBackground(Color.gray);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
//创建一个内部类,并继承JPanle,用于画背景图片
class BackImage extends JPanel
{
Image im;
public BackImage(){
try
{
im=ImageIO.read(new File("Image/login.gif"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
//要把图片画到JPanle,需要重写一个Paint方法
public void paint(Graphics g) //此处的paint中的p是小写,
//如果是大写,则就是重写paint方法了,而是一个新的方法了,那么后面的图片是不会输出的
{
g.drawImage(im,0,0,350,250,this);
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//如果说点击了登陆按钮
if(e.getSource()==jb1)
{
//获取输入的用户名和密码
String username=jtf1.getText().trim();
System.out.println("username="+username);
String password=new String(jpf1.getPassword());//此处不能通过getText()来获取,从安全角度考虑,通过getPassword()来获取,即可通过new String这便是数组
System.out.println("password="+password);
//调用处理登陆用户验证的模型
loginModel=new LoginModel();
User user=loginModel.checkUser(username,password);
//判断用户名和密码是否正确username
if(user!=null)
{
MyFont.usertype=user.getRole();
MyFont.username=user.getName();
MyFont.userID=user.getId();
MyFont.bankno=user.getBankno();
new ManageView(user.getRole());
this.dispose();
}else
{
System.out.println("slsl");
JOptionPane.showMessageDialog(this, "用户名或密码错误!");
}
}
else if(e.getSource()==jb2)
{
System.exit(0);
}
}
}