ATM自助取款系统(Java)

ATM

完整程序

1. 课程设计目的

《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。

2. 课程设计任务与要求

课程设计可选用NetBeans、Eclipse、JBuilder等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。
通过这次设计,要求掌握以下内容:
1)面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用
2)类、包、接口的定义与使用
3)常用工具类与算法的实现(数组、向量、字符串、链表)
4)Java常用标准GUI组件及其事件处理
5)Java的异常处理机制
6)Java的数据库连接技术
7)Java的多线程技术
8)Java的网络编程

3. 课程设计说明书

3.1 需求分析

3.1.1 功能分析

1、ATM机个人用户的信息的显示和删除,个人用户信息主要包括:账号,密码,存款的多少。
2、存款信息的显示,更改,操作,存款的存储,提取,转账,金额。
3、个人用户密码的更改。满足用户的需求。
4、设置一个登陆界面,保护用户的个人账户的安全。

3.1.2 性能要求分析

1、系统易操作性:
所开发的系统就做到操作简单,尽量使系统操作不受用户对电脑知识水平的限制。
2、系统具有可维护性:
由于系统涉及的信息比较广,TXT中的数据需要定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转。
3、系统具有开放性:
该系统能够在开放的硬件系结构中运行,并且能与其他系统顺利连接,不会因外部系统的不同面要做在量的修改工作。

3.2 概要设计

3.2.1 功能模块图,如图1。

图1

3.3 详细设计

3.3.1 实体类的设计

存款信息实体类:属性包括存款余额(deposit),取款数额(withdraw),转账数额(transfer accounts)。
账户信息实体类:属性包括账户密码(Password)

3.3.2 实现数据库处理

本程序采用txt文件对数据进行存储,在java实际中添加一个data类来进行对txt文件中的东西进行操作。

3.4 主要程序功能流程图

1、查询存款信息,如图2。存储存款信息,如图3。取出存款信息,如图4。转出存款信息,如图5。
图2-5

2、修改账户信息,如图6。
图6

4. 课程设计成果

4.1 主要代码

(加注释共1200+代码)

4.1.1 测试类

package com.wangjunwei.system;

public class A_Text {
    
    
    public static void main(String[] args) {
    
    
        //主函数
        new B_Init();
    }
}

4.1.2 初始化界面类

package com.wangjunwei.system;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class B_Init extends JFrame {
    
    

    //初始化界面
    public B_Init() {
    
    
        this.setTitle("ATM系统");
        this.setSize(1800, 1000);
        this.setLayout(null);
        this.setAlwaysOnTop(true);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(3);
        this.setResizable(false);

        //创建一个容器
        JPanel initPanel = new JPanel();
        setContentPane(initPanel);
        initPanel.setLayout(null);

        //"欢迎光临"标签
        JLabel hello1 = new JLabel("欢迎光临");
        hello1.setFont(new Font("黑体", 3, 150));
        hello1.setForeground(Color.WHITE);
        //System.out.println(hello1.getPreferredSize());
        hello1.setBounds(420, 250, 790, 172);
        hello1.setOpaque(false);
        initPanel.add(hello1);

        //"ATM系统"标签
        JLabel hello2 = new JLabel("ATM系统");
        hello2.setFont(new Font("黑体", 3, 150));
        hello2.setForeground(Color.WHITE);
        //System.out.println(hello2.getPreferredSize());
        hello2.setBounds(700, 450, 790, 172);
        hello2.setOpaque(false);
        initPanel.add(hello2);

        //登录按钮
        JButton loginIn = new JButton("登录");
        String user = null;
        loginIn.setForeground(Color.DARK_GRAY);
        loginIn.setFont(new Font("黑体", 1, 40));
        loginIn.setBackground(Color.WHITE);
        loginIn.setBounds(600, 700, 200, 66);
        initPanel.add(loginIn);

        //登录事件
        loginIn.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    
                new B_Login(user);
            }
        });

        //注册按钮
        JButton registerIn = new JButton("注册");
        registerIn.setForeground(Color.DARK_GRAY);
        registerIn.setFont(new Font("黑体", 1, 40));
        registerIn.setBackground(Color.WHITE);
        registerIn.setBounds(1000, 700, 200, 66);

        //注册事件
        registerIn.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    
                new B_Register();
            }
        });
        initPanel.add(registerIn);

        //背景图
        ImageIcon picture = new ImageIcon(new ImageIcon("src\\com\\wangjunwei\\system\\P1.jpg").getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
        JLabel imageLabel = new JLabel(picture);
        imageLabel.setBounds(0, 0, getWidth(), getHeight());
        initPanel.add(imageLabel);

        this.setVisible(true);
    }
}

4.1.3 登录界面类

package com.wangjunwei.system;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.Image;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class B_Login extends JFrame {
    
    

    //创建一个字典,用于存放账号密码
    Map<String, String> users = new HashMap<>();

    public B_Login(String User) {
    
    
        //初始化界面
        this.setTitle("Login");
        this.setSize(800, 400);
        this.setLocationRelativeTo(null);
        this.setAlwaysOnTop(true);
        this.setDefaultCloseOperation(2);
        this.setResizable(false);
        init();
        this.setVisible(true);
    }

    public void init() {
    
    

        //字体
        Font faceOne = new Font("黑体", 3, 40);
        Font faceTwo = new Font("Comic Sans MS", 3, 25);

        //创建一个容器

        JPanel loginPanel = new JPanel();
        loginPanel.setBorder(BorderFactory.createLineBorder(Color.BLUE));
        setContentPane(loginPanel);
        loginPanel.setLayout(null);

        //"登录"标签
        JLabel loginTitle = new JLabel("登 录");
        loginTitle.setFont(new Font("黑体", 1, 50));
        loginTitle.setForeground(Color.WHITE);
        //System.out.println(ID.getPreferredSize());
        loginTitle.setBounds(125, 50, 148, 47);
        loginTitle.setOpaque(false);
        loginPanel.add(loginTitle);

        //"账号"标签
        JLabel ID = new JLabel("账号:");
        ID.setFont(faceOne);
        ID.setForeground(Color.WHITE);
        //System.out.println(ID.getPreferredSize());
        ID.setBounds(30, 130, 148, 47);
        ID.setOpaque(false);
        loginPanel.add(ID);

        //"密码"标签
        JLabel passWord = new JLabel("密码:");
        passWord.setFont(faceOne);
        passWord.setForeground(Color.WHITE);
        passWord.setBounds(30, 180, 148, 47);
        passWord.setOpaque(false);
        loginPanel.add(passWord);

        //账号输入框
        JFormattedTextField idText = new JFormattedTextField("请输入您的账号");
        idText.setForeground(Color.WHITE);
        idText.setToolTipText("");
        idText.setOpaque(false);
        idText.setBounds(150, 135, 200, 40);
        MouseListener idAdd = new MouseListener() {
    
    
            @Override
            public void mouseClicked(MouseEvent e) {
    
    
            }

            @Override
            public void mousePressed(MouseEvent e) {
    
    
                if (idText.getText().equals("请输入您的账号")) {
    
    
                    idText.setText(null);
                }
            }

            @Override
            public void mouseReleased(MouseEvent e) {
    
    
            }

            @Override
            public void mouseEntered(MouseEvent e) {
    
    
            }

            @Override
            public void mouseExited(MouseEvent e) {
    
    
            }
        };
        idText.addMouseListener(idAdd);
        loginPanel.add(idText);

        //密码输入框
        JPasswordField passText = new JPasswordField();
        passText.setForeground(Color.WHITE);
        passText.setOpaque(false);
        passText.setBounds(150, 185, 200, 40);
        loginPanel.add(passText);

        //登录按钮
        JButton loginTo = new JButton("Login");
        loginTo.setForeground(Color.DARK_GRAY);
        loginTo.setFont(faceTwo);
        loginTo.setBackground(Color.WHITE);
        loginTo.setBounds(120, 270, 150, 50);

        //登录事件
        loginTo.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    

                String idTextUse = idText.getText();
                String passTextUse = new String(passText.getPassword());

                String usersPath = "src\\com\\wangjunwei\\system\\Tusers.txt";

                try {
    
    
                    File file = new File(usersPath);
                    if (!file.exists()) {
    
    
                        file.createNewFile();
                    }
                    FileReader fileReader = new FileReader(usersPath);
                    BufferedReader bufferedReader = new BufferedReader(fileReader);
                    String line;
                    while ((line = bufferedReader.readLine()) != null) {
    
    
                        String[] parts = line.split(":");
                        if (parts.length >= 2) {
    
    
                            String key = parts[0].trim();
                            String value = parts[1].trim();
                            users.put(key, value);
                        }
                    }
                    bufferedReader.close();
                    fileReader.close();
                } catch (IOException ioException) {
    
    
                    ioException.printStackTrace();
                }

                if ((idTextUse.equals("请输入您的账号")) || (idTextUse.length() == 0) || (!users.containsKey(idTextUse))) {
    
    
                    JOptionPane.showMessageDialog(loginPanel, "账号不存在,请注册!");
                } else {
    
    
                    if (passTextUse.equals(users.get(idTextUse))) {
    
    
                        dispose();
                        JOptionPane.showMessageDialog(loginPanel, "登录成功!");
                        new C_Deposit(idTextUse);
                    } else {
    
    
                        JOptionPane.showMessageDialog(loginPanel, "账号或密码错误,请重新输入!");
                    }
                }
            }
        });
        loginPanel.add(loginTo);

        //背景图
        ImageIcon picture = new ImageIcon(new ImageIcon("src\\com\\wangjunwei\\system\\P2.jpg").getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
        JLabel imageLabel = new JLabel(picture);
        imageLabel.setBounds(0, 0, getWidth(), getHeight());
        loginPanel.add(imageLabel);
    }
}

4.1.4 注册界面类

package com.wangjunwei.system;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.*;
import java.util.HashMap;
import java.util.Map;


public class B_Register extends JFrame {
    
    

    //创建两个字典,分别保存账号密码和账号金额
    Map<String, String> users = new HashMap<>();
    Map<String, String> deposits = new HashMap<>();

    public B_Register() {
    
    
        //初始化界面
        this.setTitle("注册");
        this.setSize(400, 280);
        this.setLocationRelativeTo(null);
        this.setAlwaysOnTop(true);
        this.setDefaultCloseOperation(2);
        this.setResizable(false);
        init();
        this.setVisible(true);
    }

    public void init() {
    
    

        //字体
        Font faceOne = new Font("黑体", 3, 25);
        Font faceTwo = new Font("Comic Sans MS", 3, 25);

        //创建一个容器
        JPanel registerPanel = new JPanel();
        registerPanel.setBorder(BorderFactory.createLineBorder(Color.WHITE));
        setContentPane(registerPanel);
        registerPanel.setLayout(null);

        //"注册账号"标签
        JLabel ID = new JLabel("注册账号:");
        ID.setFont(faceOne);
        ID.setForeground(Color.WHITE);
        //System.out.println(ID.getPreferredSize());
        ID.setBounds(20, 20, 148, 47);
        ID.setOpaque(false);
        registerPanel.add(ID);

        //"注册密码"标签
        JLabel passWord = new JLabel("注册密码:");
        passWord.setFont(faceOne);
        passWord.setForeground(Color.WHITE);
        passWord.setBounds(20, 70, 148, 47);
        passWord.setOpaque(false);
        registerPanel.add(passWord);

        //"确认密码"标签
        JLabel passWordAgain = new JLabel("确认密码:");
        passWordAgain.setFont(faceOne);
        passWordAgain.setForeground(Color.WHITE);
        passWordAgain.setBounds(20, 120, 148, 47);
        passWordAgain.setOpaque(false);
        registerPanel.add(passWordAgain);

        //"注册账号"输入框
        JFormattedTextField idText = new JFormattedTextField("请输入您的账号");
        idText.setForeground(Color.WHITE);
        idText.setFont(new Font("宋体", Font.BOLD, 20));
        idText.setToolTipText("");
        idText.setOpaque(false);
        idText.setBounds(150, 25, 200, 40);

        //点击"注册账号"输入框触发的事件
        MouseListener idAdd = new MouseListener() {
    
    
            @Override
            public void mouseClicked(MouseEvent e) {
    
    
            }

            @Override
            public void mousePressed(MouseEvent e) {
    
    
                if (idText.getText().equals("请输入您的账号")) {
    
    
                    idText.setText(null);
                }
            }

            @Override
            public void mouseReleased(MouseEvent e) {
    
    
            }

            @Override
            public void mouseEntered(MouseEvent e) {
    
    
            }

            @Override
            public void mouseExited(MouseEvent e) {
    
    
            }
        };
        idText.addMouseListener(idAdd);
        registerPanel.add(idText);

        //"注册密码"输入框
        JPasswordField passText = new JPasswordField();
        passText.setForeground(Color.WHITE);
        passText.setOpaque(false);
        passText.setBounds(150, 75, 200, 40);
        registerPanel.add(passText);


        //"确认密码"输入框
        JPasswordField passAgainText = new JPasswordField();
        passAgainText.setForeground(Color.WHITE);
        passAgainText.setOpaque(false);
        passAgainText.setBounds(150, 125, 200, 40);
        registerPanel.add(passAgainText);

        //"Register"按钮
        JButton loginTo = new JButton("Register");
        loginTo.setForeground(Color.WHITE);
        loginTo.setFont(faceTwo);
        loginTo.setBackground(Color.BLACK);
        loginTo.setBounds(100, 180, 200, 40);

        //"Register"事件
        loginTo.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    

                String idTextUse = idText.getText();
                String passTextUse = new String(passText.getPassword());
                String passAgainTextUse = new String(passAgainText.getPassword());

                String filePath = "src\\com\\wangjunwei\\system\\Tusers.txt";
                try {
    
    
                    File file = new File(filePath);
                    if (!file.exists()) {
    
    
                        file.createNewFile();
                    }
                    FileReader fileReader = new FileReader(filePath);
                    BufferedReader bufferedReader = new BufferedReader(fileReader);
                    String line;
                    while ((line = bufferedReader.readLine()) != null) {
    
    
                        String[] parts = line.split(":");
                        if (parts.length >= 2) {
    
    
                            String key = parts[0].trim();
                            String value = parts[1].trim();
                            users.put(key, value);
                        }
                    }
                    bufferedReader.close();
                    fileReader.close();
                } catch (IOException ioException) {
    
    
                    ioException.printStackTrace();
                }

                if ((idTextUse.equals("请输入您的账号")) || (idTextUse.length() == 0)) {
    
    
                    JOptionPane.showMessageDialog(registerPanel, "请输入你要注册的账号!");
                } else if (passTextUse.length() == 0) {
    
    
                    JOptionPane.showMessageDialog(registerPanel, "请输入你要注册的密码!");
                } else if (users.containsKey(idTextUse)) {
    
    
                    JOptionPane.showMessageDialog(registerPanel, "该账号已存在,请重新输入!");
                } else if (!(passTextUse.equals(passAgainTextUse))) {
    
    
                    JOptionPane.showMessageDialog(registerPanel, "两次密码不一致,请重新输入!");
                } else {
    
    
                    try {
    
    
                        File file = new File(filePath);
                        users.put(idTextUse, passTextUse);

                        FileWriter fileWriter = new FileWriter(file.getAbsoluteFile());
                        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                        for (Map.Entry<String, String> entry : users.entrySet()) {
    
    
                            bufferedWriter.write(entry.getKey() + " : " + entry.getValue());
                            bufferedWriter.newLine();
                        }
                        bufferedWriter.close();
                        fileWriter.close();
                        JOptionPane.showMessageDialog(registerPanel, "注册成功!");
                    } catch (IOException ioException) {
    
    
                        ioException.printStackTrace();
                    }
                }

                //第一次注册时需要同时创建保存存款信息的文件
                String storePath = new String("src\\com\\wangjunwei\\system\\Tdeposits.txt");

                try {
    
    
                    File file = new File(storePath);
                    if (!file.exists()) {
    
    
                        file.createNewFile();
                    }
                    FileReader fileReader = new FileReader(storePath);
                    BufferedReader bufferedReader = new BufferedReader(fileReader);
                    String line;
                    while ((line = bufferedReader.readLine()) != null) {
    
    
                        String[] parts = line.split(":");
                        if (parts.length >= 2) {
    
    
                            String key = parts[0].trim();
                            String value = parts[1].trim();
                            deposits.put(key, value);
                        }
                    }
                    bufferedReader.close();
                    fileReader.close();
                } catch (IOException ioException) {
    
    
                    ioException.printStackTrace();
                }

                try {
    
    
                    File file = new File(storePath);
                    deposits.put(idTextUse, "0");
                    FileWriter fileWriter = new FileWriter(file.getAbsoluteFile());
                    BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                    for (Map.Entry<String, String> entry : deposits.entrySet()) {
    
    
                        bufferedWriter.write(entry.getKey() + " : " + entry.getValue());
                        bufferedWriter.newLine();
                    }
                    bufferedWriter.close();
                    fileWriter.close();
                } catch (IOException ioException) {
    
    
                    ioException.printStackTrace();
                }
            }
        });
        registerPanel.add(loginTo);

        //背景图
        ImageIcon picture = new ImageIcon(new ImageIcon("src\\com\\wangjunwei\\system\\P3.jpg").getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
        JLabel imageLabel = new JLabel(picture);
        imageLabel.setBounds(0, 0, getWidth(), getHeight());
        registerPanel.add(imageLabel);
    }
}

4.1.5 登录成功后,主界面类

package com.wangjunwei.system;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class C_Deposit extends JFrame {
    
    
    public C_Deposit(String User) {
    
    

        //初始化界面
        this.setTitle("存款信息");
        this.setSize(800, 500);
        this.setLayout(null);
        this.setAlwaysOnTop(true);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(2);
        this.setResizable(false);

        //创建一个容器
        JPanel initPanel = new JPanel();
        initPanel.setBorder(BorderFactory.createLineBorder(Color.BLUE));
        setContentPane(initPanel);
        initPanel.setLayout(null);

        //"欢迎"标签
        JLabel hello = new JLabel("欢迎 " + User + "!");
        hello.setFont(new Font("黑体", 3, 50));
        hello.setForeground(Color.WHITE);
        //System.out.println(hello.getPreferredSize());
        hello.setBounds(150, 50, 1000, 60);
        initPanel.add(hello);

        //"查询"标签
        JButton showMoney = new JButton("查询");
        showMoney.setForeground(Color.WHITE);
        showMoney.setBackground(Color.BLACK);
        showMoney.setOpaque(false);
        showMoney.setFont(new Font("黑体", 1, 50));
        //System.out.println(showInformation.getPreferredSize());
        showMoney.setBounds(150, 180, 200, 50);
        showMoney.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    
                new C_DepositShow(User);
            }
        });
        initPanel.add(showMoney);

        //"存款"标签
        JButton putMoney = new JButton("存款");
        putMoney.setForeground(Color.WHITE);
        putMoney.setBackground(Color.WHITE);
        putMoney.setOpaque(false);
        putMoney.setFont(new Font("黑体", 1, 50));
        //System.out.println(showInformation.getPreferredSize());
        putMoney.setBounds(430, 180, 200, 50);
        putMoney.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    
                new C_DepositPut(User);
            }
        });
        initPanel.add(putMoney);

        //"取款"标签
        JButton getMoney = new JButton("取款");
        getMoney.setForeground(Color.WHITE);
        getMoney.setBackground(Color.WHITE);
        getMoney.setOpaque(false);
        getMoney.setFont(new Font("黑体", 1, 50));
        //System.out.println(showInformation.getPreferredSize());
        getMoney.setBounds(150, 250, 200, 50);
        getMoney.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    
                new C_DepositGet(User);
            }
        });
        initPanel.add(getMoney);

        //"转账"标签
        JButton pushMoney = new JButton("转账");
        pushMoney.setForeground(Color.WHITE);
        pushMoney.setBackground(Color.WHITE);
        pushMoney.setOpaque(false);
        pushMoney.setFont(new Font("黑体", 1, 50));
        //System.out.println(showInformation.getPreferredSize());
        pushMoney.setBounds(430, 250, 200, 50);
        pushMoney.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    
                new C_DepositPush(User);
            }
        });
        initPanel.add(pushMoney);

        //"修改密码"标签
        JButton changePassword = new JButton("修改密码");
        changePassword.setForeground(Color.BLACK);
        changePassword.setBackground(Color.WHITE);
        //changePassword.setOpaque(false);
        changePassword.setFont(new Font("黑体", Font.BOLD, 40));
        //System.out.println(showInformation.getPreferredSize());
        changePassword.setBounds(270, 350, 240, 60);
        changePassword.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    
                new C_ChangePassword(User);
            }
        });
        initPanel.add(changePassword);

        //背景图
        ImageIcon picture = new ImageIcon(new ImageIcon("src\\com\\wangjunwei\\system\\P4.jpg").getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
        JLabel imageLabel = new JLabel(picture);
        imageLabel.setBounds(0, 0, getWidth(), getHeight());
        initPanel.add(imageLabel);

        this.setVisible(true);
    }
}

4.1.6 查询存款信息类

package com.wangjunwei.system;

import javax.swing.*;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class C_DepositShow extends JFrame {
    
    
    public C_DepositShow(String User) {
    
    

        //创建一个字典,用于存放存款信息
        Map<String, String> deposit = new HashMap<>();

        //初始化界面
        this.setTitle("查询");
        this.setSize(500, 400);
        this.setLayout(null);
        this.setAlwaysOnTop(true);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(2);
        this.setResizable(false);

        //创建一个容器
        JPanel initPanel = new JPanel();
        setContentPane(initPanel);
        initPanel.setLayout(null);

        //打开文件
        String depositsPath = "src\\com\\wangjunwei\\system\\Tdeposits.txt";
        try {
    
    
            FileReader fileReader = new FileReader(depositsPath);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
    
    
                String[] parts = line.split(":");
                if (parts.length >= 2) {
    
    
                    String key = parts[0].trim();
                    String value = parts[1].trim();
                    deposit.put(key, value);
                }
            }

            //"您的余额如下"标签
            JLabel myMoneyTitle = new JLabel("您的余额如下");
            myMoneyTitle.setFont(new Font("黑体", Font.BOLD, 50));
            //System.out.println(fixedMoney.getPreferredSize());
            myMoneyTitle.setForeground(Color.WHITE);
            myMoneyTitle.setBackground(Color.WHITE);
            myMoneyTitle.setBounds(85, 100, 377, 58);
            initPanel.add(myMoneyTitle);

            //"余额"标签
            JLabel myMoney = new JLabel(deposit.get(User) + "元");
            myMoney.setFont(new Font("黑体", Font.BOLD, 50));
            //System.out.println(fixedMoney.getPreferredSize());
            myMoney.setForeground(Color.WHITE);
            myMoney.setBackground(Color.WHITE);
            myMoney.setBounds(150, 200, 1000, 58);
            initPanel.add(myMoney);
            bufferedReader.close();
            fileReader.close();
        } catch (IOException ioException) {
    
    
            ioException.printStackTrace();
        }

        //背景图
        ImageIcon picture = new ImageIcon(new ImageIcon("src\\com\\wangjunwei\\system\\P4.jpg").getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
        JLabel imageLabel = new JLabel(picture);
        imageLabel.setBounds(0, 0, getWidth(), getHeight());
        initPanel.add(imageLabel);

        this.setVisible(true);
    }
}

4.1.7 存款类

package com.wangjunwei.system;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class C_DepositPut extends JFrame {
    
    
    public C_DepositPut(String User) {
    
    

        //创建一个字典,保存存款信息
        Map<String, String> deposit = new HashMap<>();

        //初始化界面
        this.setTitle("存款");
        this.setSize(500, 400);
        this.setLayout(null);
        this.setAlwaysOnTop(true);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(2);
        this.setResizable(false);

        //创建一个容器
        JPanel initPanel = new JPanel();
        setContentPane(initPanel);
        initPanel.setLayout(null);

        //打开文件
        String depositsPath = "src\\com\\wangjunwei\\system\\Tdeposits.txt";

        try {
    
    
            FileReader fileReader = new FileReader(depositsPath);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
    
    
                String[] parts = line.split(":");
                if (parts.length >= 2) {
    
    
                    String key = parts[0].trim();
                    String value = parts[1].trim();
                    deposit.put(key, value);
                }
            }

            //"存款"标签
            JLabel myMoney = new JLabel("存 款");
            myMoney.setFont(new Font("宋体", Font.BOLD, 50));
            myMoney.setForeground(Color.WHITE);
            myMoney.setBounds(180, 50, 377, 58);
            initPanel.add(myMoney);

            //"存款"文本框
            JFormattedTextField moneyText = new JFormattedTextField("请输入您要存入的金额");
            moneyText.setForeground(Color.WHITE);
            moneyText.setFont(new Font("宋体", Font.BOLD, 15));
            moneyText.setToolTipText("");
            moneyText.setOpaque(false);
            moneyText.setBounds(150, 150, 200, 40);
            MouseListener moneyAdd = new MouseListener() {
    
    
                @Override
                public void mouseClicked(MouseEvent e) {
    
    
                }

                @Override
                public void mousePressed(MouseEvent e) {
    
    
                    if (moneyText.getText().equals("请输入您要存入的金额")) {
    
    
                        moneyText.setFont(new Font("宋体", Font.BOLD, 30));
                        moneyText.setText(null);
                    }
                }

                @Override
                public void mouseReleased(MouseEvent e) {
    
    
                }

                @Override
                public void mouseEntered(MouseEvent e) {
    
    
                }

                @Override
                public void mouseExited(MouseEvent e) {
    
    
                }
            };
            moneyText.addMouseListener(moneyAdd);
            initPanel.add(moneyText);

            //"Put"按钮
            JButton put = new JButton("Put");
            put.setForeground(Color.WHITE);
            put.setFont(new Font("Comic Sans MS", 3, 50));
            put.setBackground(Color.BLACK);
            put.setOpaque(false);
            put.setBounds(175, 250, 150, 50);

            //"Put"事件
            put.addActionListener(new ActionListener() {
    
    
                @Override
                public void actionPerformed(ActionEvent e) {
    
    
                    try {
    
    
                        int addMoney = Integer.parseInt(moneyText.getText());
                        int oldMoney = Integer.parseInt(deposit.get(User));
                        if ((addMoney % 100) == 0 && addMoney != 0) {
    
    
                            String newMoney = Integer.toString(addMoney + oldMoney);
                            deposit.put(User, newMoney);
                            String depositsPath = "src\\com\\wangjunwei\\system\\Tdeposits.txt";
                            try {
    
    
                                File file = new File(depositsPath);
                                FileWriter fileWriter = new FileWriter(file.getAbsoluteFile());
                                BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                                for (Map.Entry<String, String> entry : deposit.entrySet()) {
    
    
                                    bufferedWriter.write(entry.getKey() + " : " + entry.getValue());
                                    bufferedWriter.newLine();
                                }
                                bufferedWriter.close();
                                fileWriter.close();
                                dispose();
                                JOptionPane.showMessageDialog(initPanel, "存入成功!");
                            } catch (IOException ioException) {
    
    
                                ioException.printStackTrace();
                            }
                        } else {
    
    
                            JOptionPane.showMessageDialog(initPanel, "请输入100的倍数!(非0)");
                        }
                    } catch (NumberFormatException numberFormatException) {
    
    
                        JOptionPane.showMessageDialog(initPanel, "非法输入!");
                    }
                }
            });
            initPanel.add(put);
            bufferedReader.close();
            fileReader.close();
        } catch (IOException ioException) {
    
    
            ioException.printStackTrace();
        }

        //背景图
        ImageIcon picture = new ImageIcon(new ImageIcon("src\\com\\wangjunwei\\system\\P4.jpg").getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
        JLabel imageLabel = new JLabel(picture);
        imageLabel.setBounds(0, 0, getWidth(), getHeight());
        initPanel.add(imageLabel);

        this.setVisible(true);
    }
}

4.1.8 取款类

package com.wangjunwei.system;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class C_DepositGet extends JFrame {
    
    
    public C_DepositGet(String User) {
    
    

        //创建一个字典,用于保存存款信息
        Map<String, String> deposit = new HashMap<>();

        //初始化界面
        this.setTitle("取款");
        this.setSize(500, 400);
        this.setLayout(null);
        this.setAlwaysOnTop(true);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(2);
        this.setResizable(false);

        //创建一个容器
        JPanel initPanel = new JPanel();
        setContentPane(initPanel);
        initPanel.setLayout(null);

        //打开文件
        String depositsPath = "src\\com\\wangjunwei\\system\\Tdeposits.txt";
        try {
    
    
            FileReader fileReader = new FileReader(depositsPath);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
    
    
                String[] parts = line.split(":");
                if (parts.length >= 2) {
    
    
                    String key = parts[0].trim();
                    String value = parts[1].trim();
                    deposit.put(key, value);
                }
            }

            //"取款"标签
            JLabel myMoney = new JLabel("取 款");
            myMoney.setFont(new Font("宋体", Font.BOLD, 50));
            myMoney.setForeground(Color.WHITE);
            myMoney.setBounds(180, 50, 377, 58);
            initPanel.add(myMoney);

            //"取款"文本框
            JFormattedTextField moneyText = new JFormattedTextField("请输入您要取出的金额");
            moneyText.setForeground(Color.WHITE);
            moneyText.setFont(new Font("宋体", Font.BOLD, 15));
            moneyText.setToolTipText("");
            moneyText.setOpaque(false);
            moneyText.setBounds(145, 150, 200, 40);
            MouseListener moneyAdd = new MouseListener() {
    
    
                @Override
                public void mouseClicked(MouseEvent e) {
    
    
                }

                @Override
                public void mousePressed(MouseEvent e) {
    
    
                    if (moneyText.getText().equals("请输入您要取出的金额")) {
    
    
                        moneyText.setFont(new Font("宋体", Font.BOLD, 30));
                        moneyText.setText(null);
                    }
                }

                @Override
                public void mouseReleased(MouseEvent e) {
    
    
                }

                @Override
                public void mouseEntered(MouseEvent e) {
    
    
                }

                @Override
                public void mouseExited(MouseEvent e) {
    
    
                }
            };
            moneyText.addMouseListener(moneyAdd);
            initPanel.add(moneyText);

            //"Get"按钮
            JButton get = new JButton("Get");
            get.setForeground(Color.WHITE);
            get.setFont(new Font("Comic Sans MS", 3, 50));
            get.setBackground(Color.BLACK);
            get.setOpaque(false);
            get.setBounds(170, 250, 150, 50);

            //"Get"事件
            get.addActionListener(new ActionListener() {
    
    
                @Override
                public void actionPerformed(ActionEvent e) {
    
    
                    try {
    
    
                        int deleteMoney = Integer.parseInt(moneyText.getText());
                        int oldMoney = Integer.parseInt(deposit.get(User));
                        if ((oldMoney - deleteMoney) < 0) {
    
    
                            JOptionPane.showMessageDialog(initPanel, "余额不足!请重新输入!");
                        } else if (deleteMoney % 100 != 0 || deleteMoney == 0) {
    
    
                            JOptionPane.showMessageDialog(initPanel, "请输入100的倍数!(非0)");
                        } else {
    
    
                            String newMoney = Integer.toString(oldMoney - deleteMoney);
                            deposit.put(User, newMoney);
                            String depositsPath = "src\\com\\wangjunwei\\system\\Tdeposits.txt";
                            try {
    
    
                                File file = new File(depositsPath);
                                FileWriter fileWriter = new FileWriter(file.getAbsoluteFile());
                                BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                                for (Map.Entry<String, String> entry : deposit.entrySet()) {
    
    
                                    bufferedWriter.write(entry.getKey() + " : " + entry.getValue());
                                    bufferedWriter.newLine();
                                }
                                bufferedWriter.close();
                                fileWriter.close();
                                dispose();
                                JOptionPane.showMessageDialog(initPanel, "取出成功!");
                            } catch (IOException ioException) {
    
    
                                ioException.printStackTrace();
                            }
                        }
                    } catch (NumberFormatException numberFormatException) {
    
    
                        JOptionPane.showMessageDialog(initPanel, "非法输入!");
                    }
                }
            });
            initPanel.add(get);
            bufferedReader.close();
            fileReader.close();
        } catch (IOException ioException) {
    
    
            ioException.printStackTrace();
        }

        //背景图
        ImageIcon picture = new ImageIcon(new ImageIcon("src\\com\\wangjunwei\\system\\P4.jpg").getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
        JLabel imageLabel = new JLabel(picture);
        imageLabel.setBounds(0, 0, getWidth(), getHeight());
        initPanel.add(imageLabel);

        this.setVisible(true);
    }
}

4.1.9 转账类

package com.wangjunwei.system;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class C_DepositPush extends JFrame {
    
    
    public C_DepositPush(String User) {
    
    

        //创建一个字典,保存存款信息
        Map<String, String> deposit = new HashMap<>();

        //初始化界面
        this.setTitle("转 账");
        this.setSize(500, 400);
        this.setLayout(null);
        this.setAlwaysOnTop(true);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(2);
        this.setResizable(false);

        //创建一个容器
        JPanel initPanel = new JPanel();
        setContentPane(initPanel);
        initPanel.setLayout(null);

        //打开文件
        String depositsPath = "src\\com\\wangjunwei\\system\\Tdeposits.txt";

        try {
    
    
            FileReader fileReader = new FileReader(depositsPath);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
    
    
                String[] parts = line.split(":");
                if (parts.length >= 2) {
    
    
                    String key = parts[0].trim();
                    String value = parts[1].trim();
                    deposit.put(key, value);
                }
            }

            //"转账"标签
            JLabel pushTitle = new JLabel("转 账");
            pushTitle.setFont(new Font("宋体", Font.BOLD, 50));
            pushTitle.setForeground(Color.WHITE);
            pushTitle.setBounds(180, 30, 377, 58);
            initPanel.add(pushTitle);

            //"账号"标签
            JLabel pushUser = new JLabel("账号:");
            pushUser.setFont(new Font("宋体", Font.BOLD, 40));
            pushUser.setForeground(Color.WHITE);
            pushUser.setBounds(50, 110, 377, 58);
            initPanel.add(pushUser);

            //"金额"标签
            JLabel pushMoney = new JLabel("金额:");
            pushMoney.setFont(new Font("宋体", Font.BOLD, 40));
            pushMoney.setForeground(Color.WHITE);
            pushMoney.setBounds(50, 180, 377, 58);
            initPanel.add(pushMoney);

            //"转账账号"文本框
            JFormattedTextField userText = new JFormattedTextField("请输入您要转给的账号");
            userText.setForeground(Color.WHITE);
            userText.setFont(new Font("宋体", Font.BOLD, 15));
            userText.setToolTipText("");
            userText.setOpaque(false);
            userText.setBounds(180, 120, 200, 40);
            MouseListener userAdd = new MouseListener() {
    
    
                @Override
                public void mouseClicked(MouseEvent e) {
    
    
                }

                @Override
                public void mousePressed(MouseEvent e) {
    
    
                    if (userText.getText().equals("请输入您要转给的账号")) {
    
    
                        userText.setFont(new Font("宋体", Font.BOLD, 30));
                        userText.setText(null);
                    }
                }

                @Override
                public void mouseReleased(MouseEvent e) {
    
    
                }

                @Override
                public void mouseEntered(MouseEvent e) {
    
    
                }

                @Override
                public void mouseExited(MouseEvent e) {
    
    
                }
            };
            userText.addMouseListener(userAdd);
            initPanel.add(userText);

            //"转账金额"文本框
            JFormattedTextField moneyText = new JFormattedTextField("请输入您要转账的金额");
            moneyText.setForeground(Color.WHITE);
            moneyText.setFont(new Font("宋体", Font.BOLD, 15));
            moneyText.setToolTipText("");
            moneyText.setOpaque(false);
            moneyText.setBounds(180, 190, 200, 40);
            MouseListener moneyAdd = new MouseListener() {
    
    
                @Override
                public void mouseClicked(MouseEvent e) {
    
    
                }

                @Override
                public void mousePressed(MouseEvent e) {
    
    
                    if (moneyText.getText().equals("请输入您要转账的金额")) {
    
    
                        moneyText.setFont(new Font("宋体", Font.BOLD, 30));
                        moneyText.setText(null);
                    }
                }

                @Override
                public void mouseReleased(MouseEvent e) {
    
    
                }

                @Override
                public void mouseEntered(MouseEvent e) {
    
    
                }

                @Override
                public void mouseExited(MouseEvent e) {
    
    
                }
            };
            moneyText.addMouseListener(moneyAdd);
            initPanel.add(moneyText);

            //"Push"按钮
            JButton push = new JButton("Push");
            push.setForeground(Color.WHITE);
            push.setFont(new Font("Comic Sans MS", 3, 50));
            push.setBackground(Color.BLACK);
            push.setOpaque(false);
            push.setBounds(175, 260, 150, 50);

            //"Push"事件
            push.addActionListener(new ActionListener() {
    
    
                @Override
                public void actionPerformed(ActionEvent e) {
    
    
                    try {
    
    
                        String user = userText.getText();
                        int pushMoney = Integer.parseInt(moneyText.getText());
                        int myMoney = Integer.parseInt(deposit.get(User));
                        int userMoney = Integer.parseInt(deposit.get(user));
                        System.out.println(userText.getText());
                        System.out.println(moneyText.getText());

                        myMoney = myMoney - pushMoney;
                        if (user.equals(User)) {
    
    
                            JOptionPane.showMessageDialog(initPanel, "不能转给自己!");
                        } else if ((user.equals("请输入您要转给的账号")) || (moneyText.getText().equals(""))) {
    
    
                            JOptionPane.showMessageDialog(initPanel, "请输入你要转给的账号和金额!");
                        } else if (myMoney < 0) {
    
    
                            JOptionPane.showMessageDialog(initPanel, "余额不足!请重新输入!");
                        } else if (pushMoney % 100 != 0 || pushMoney == 0) {
    
    
                            JOptionPane.showMessageDialog(initPanel, "请输入100的倍数!(非0)");
                        } else if (deposit.containsKey(user)) {
    
    
                            userMoney = userMoney + pushMoney;
                            String newMyMoney = Integer.toString(myMoney);
                            String newUserMoney = Integer.toString(userMoney);
                            deposit.put(User, newMyMoney);
                            deposit.put(user, newUserMoney);

                            String depositsPath = "src\\com\\wangjunwei\\system\\Tdeposits.txt";
                            try {
    
    
                                File file = new File(depositsPath);
                                FileWriter fileWriter = new FileWriter(file.getAbsoluteFile());
                                BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                                for (Map.Entry<String, String> entry : deposit.entrySet()) {
    
    
                                    bufferedWriter.write(entry.getKey() + " : " + entry.getValue());
                                    bufferedWriter.newLine();
                                }
                                bufferedWriter.close();
                                fileWriter.close();
                                dispose();
                                JOptionPane.showMessageDialog(initPanel, "转账成功!");
                            } catch (IOException ioException) {
    
    
                                ioException.printStackTrace();
                            }
                        }
                    } catch (NumberFormatException numberFormatException) {
    
    
                        JOptionPane.showMessageDialog(initPanel, "非法输入!");
                    }
                }
            });
            initPanel.add(push);
            bufferedReader.close();
            fileReader.close();
        } catch (IOException ioException) {
    
    
            ioException.printStackTrace();
        }

        //背景图
        ImageIcon picture = new ImageIcon(new ImageIcon("src\\com\\wangjunwei\\system\\P4.jpg").getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
        JLabel imageLabel = new JLabel(picture);
        imageLabel.setBounds(0, 0, getWidth(), getHeight());
        initPanel.add(imageLabel);

        this.setVisible(true);
    }
}

4.1.10 修改密码类

package com.wangjunwei.system;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class C_ChangePassword extends JFrame {
    
    
    public C_ChangePassword(String User) {
    
    

        //创建一个字典,用于保存账号和密码
        Map<String, String> users = new HashMap<>();

        //初始化界面
        this.setTitle("修改密码");
        this.setSize(500, 400);
        this.setLayout(null);
        this.setAlwaysOnTop(true);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(2);
        this.setResizable(false);

        //字体
        Font faceOne = new Font("宋体", Font.BOLD, 25);

        //创建一个容器
        JPanel initPanel = new JPanel();
        setContentPane(initPanel);
        initPanel.setLayout(null);

        //"修改密码"标签
        JLabel changeTitle = new JLabel("修改密码");
        changeTitle.setFont(new Font("黑体", 3, 40));
        changeTitle.setForeground(Color.WHITE);
        changeTitle.setBounds(150, 30, 200, 47);
        changeTitle.setOpaque(false);
        initPanel.add(changeTitle);

        //"原始密码"标签
        JLabel oldPassword = new JLabel("原始密码:");
        oldPassword.setFont(faceOne);
        oldPassword.setForeground(Color.WHITE);
        oldPassword.setBounds(50, 100, 148, 47);
        oldPassword.setOpaque(false);
        initPanel.add(oldPassword);

        //"新的密码"标签
        JLabel newPassword = new JLabel("新的密码:");
        newPassword.setFont(faceOne);
        newPassword.setForeground(Color.WHITE);
        newPassword.setBounds(50, 150, 148, 47);
        newPassword.setOpaque(false);
        initPanel.add(newPassword);

        //"确认密码"标签
        JLabel passWordAgain = new JLabel("确认密码:");
        passWordAgain.setFont(faceOne);
        passWordAgain.setForeground(Color.WHITE);
        passWordAgain.setBounds(50, 200, 148, 47);
        passWordAgain.setOpaque(false);
        initPanel.add(passWordAgain);

        //"原始密码"输入框
        JPasswordField oldPassText = new JPasswordField();
        oldPassText.setForeground(Color.WHITE);
        oldPassText.setOpaque(false);
        oldPassText.setBounds(200, 100, 200, 40);
        initPanel.add(oldPassText);

        //"新的密码"输入框
        JPasswordField newPassText = new JPasswordField();
        newPassText.setForeground(Color.WHITE);
        newPassText.setOpaque(false);
        newPassText.setBounds(200, 150, 200, 40);
        initPanel.add(newPassText);

        //"确认密码"输入框
        JPasswordField passAgainText = new JPasswordField();
        passAgainText.setForeground(Color.WHITE);
        passAgainText.setOpaque(false);
        passAgainText.setBounds(200, 200, 200, 40);
        initPanel.add(passAgainText);

        //"Change"按钮
        JButton changePassword = new JButton("Change");
        changePassword.setBackground(Color.BLACK);
        changePassword.setFont(new Font("Comic Sans MS", 3, 30));
        changePassword.setForeground(Color.WHITE);
        changePassword.setOpaque(false);
        changePassword.setBounds(150, 270, 200, 50);

        //"Change"事件
        changePassword.addActionListener(new ActionListener() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    
                String oldPassword = new String(oldPassText.getPassword());
                String newPassword = new String(newPassText.getPassword());
                String againPassword = new String(passAgainText.getPassword());

                String filePath = "src\\com\\wangjunwei\\system\\Tusers.txt";
                try {
    
    
                    FileReader fileReader = new FileReader(filePath);
                    BufferedReader bufferedReader = new BufferedReader(fileReader);
                    String line;
                    while ((line = bufferedReader.readLine()) != null) {
    
    
                        String[] parts = line.split(":");
                        if (parts.length >= 2) {
    
    
                            String key = parts[0].trim();
                            String value = parts[1].trim();
                            users.put(key, value);
                        }
                    }

                    if (oldPassword.equals(users.get(User))) {
    
    
                        if (newPassword.equals(againPassword)) {
    
    
                            users.put(User, newPassword);
                            try {
    
    
                                File file = new File(filePath);
                                FileWriter fileWriter = new FileWriter(file.getAbsoluteFile());
                                BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                                for (Map.Entry<String, String> entry : users.entrySet()) {
    
    
                                    bufferedWriter.write(entry.getKey() + " : " + entry.getValue());
                                    bufferedWriter.newLine();
                                }
                                bufferedWriter.close();
                                fileWriter.close();
                                dispose();
                                JOptionPane.showMessageDialog(initPanel, "修改成功!");
                            } catch (IOException ioException) {
    
    
                                ioException.printStackTrace();
                            }
                        } else {
    
    
                            JOptionPane.showMessageDialog(initPanel, "两次密码不一致!请重新输入!");
                        }
                    } else {
    
    
                        JOptionPane.showMessageDialog(initPanel, "原始密码错误!请重新输入!");
                    }


                    bufferedReader.close();
                    fileReader.close();
                } catch (IOException ioException) {
    
    
                    ioException.printStackTrace();
                }
            }
        });
        initPanel.add(changePassword);

        //背景图
        ImageIcon picture = new ImageIcon(new ImageIcon("src\\com\\wangjunwei\\system\\P4.jpg").getImage().getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT));
        JLabel imageLabel = new JLabel(picture);
        imageLabel.setBounds(0, 0, getWidth(), getHeight());
        initPanel.add(imageLabel);

        this.setVisible(true);
    }
}

4.2 TXT文件内容

① Tusers.txt
(账号:密码)
1 : 1
2 : 2
wjw : 1
lsr:1

② Tdeposits.txt
(账号:存款金额)
1 : 3100
2 : 3100
wjw : 1000
lsr : 10000000

4.3 运行结果

①初始化界面

1

②登录入口

2

③注册入口

3

④登录后进入的主界面

4

⑤查询界面

5

⑥存款界面

6

⑦取款界面

7

⑧转账界面

8

⑨修改密码界面

9

5. 课程设计心得

在Java课程的大作业中,我完成了一个ATM存款机的设计和实现。完成这个任务,不仅让我深刻认识到了Java编程的强大,同时也让我明白了ATM机器背后那个看不见的程序员的努力与艰辛。
我在Java课程设计中学到了很多知识和技能,并且对编程有了更深入的理解。首先,在这个项目中,我了解了Java的面向对象开发,掌握了基础语法和常用类的使用。其次,我学习了如何设计和实现一个简单的ATM自助取款系统,包括需求分析、设计方案、编码和测试,在这个过程中,我学会了如何使用各种编程工具来提高效率和减少错误。
首先,我了解了ATM存款机的基本功能和要求,比如身份验证、存款等。经过学习和思考,我一步步地实现了这些功能。注册登录模块,输入密码进行登陆,正确的密码才能登陆成功,同时页面的跳转有了清晰的设计,让整个系统变得更加人性化。然后我设计了查询余额,存款,取款,转账等功能,简单的实现了一个ATM自助取款系统的主要功能,最后我还设置了修改密码的功能,丰富了整个系统。
在整个项目中,我也遇到了很多挑战和难题。例如,在各种类的设计和使用中,我遇到了很多困难,但通过不断的尝试和学习,我最终解决了这些问题。此外,在实现各种功能时,我也经常遇到错误和bug,但我学会了如何通过调试和排查问题来解决这些问题。
总体而言,Java课程设计是一次非常有收获的学习经历。它不仅提高了我的编程能力,还使我更加了解软件开发的整个过程。我相信这些经验和技能将对我的未来学习和职业发展有很大帮助,在这个项目中,我收获了很多,它让我对Java编程语言的实际应用更加深入地了解。在独自完成这个项目的一瞬间,我充满了成就感,那一刻,我感觉自己的付出都是值得的,我会继续努力下去,争取完成更加出色的项目!

猜你喜欢

转载自blog.csdn.net/m0_68111267/article/details/131622446