今天为大家分享一个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);
        }
    }
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐