ATM自助取款系统(Java)

news2024/11/15 4:59:14

ATM

文章目录

  • 完整程序
  • 1. 课程设计目的
  • 2. 课程设计任务与要求
  • 3. 课程设计说明书
    • 3.1 需求分析
      • 3.1.1 功能分析
      • 3.1.2 性能要求分析
    • 3.2 概要设计
      • 3.2.1 功能模块图,如图1。
    • 3.3 详细设计
      • 3.3.1 实体类的设计
      • 3.3.2 实现数据库处理
    • 3.4 主要程序功能流程图
  • 4. 课程设计成果
    • 4.1 主要代码
      • 4.1.1 测试类
      • 4.1.2 初始化界面类
      • 4.1.3 登录界面类
      • 4.1.4 注册界面类
      • 4.1.5 登录成功后,主界面类
      • 4.1.6 查询存款信息类
      • 4.1.7 存款类
      • 4.1.8 取款类
      • 4.1.9 转账类
      • 4.1.10 修改密码类
    • 4.2 TXT文件内容
    • 4.3 运行结果
  • 5. 课程设计心得

完整程序

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编程语言的实际应用更加深入地了解。在独自完成这个项目的一瞬间,我充满了成就感,那一刻,我感觉自己的付出都是值得的,我会继续努力下去,争取完成更加出色的项目!

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

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

相关文章

Linux——进程信号的发送

目录 一.信号发送的概念 首先来讲几个发送术语&#xff1a; 它有三种情况&#xff1a; 注意&#xff1a; 二.信号在内核中的表示示意图 三.信号捕捉 所以总结一下&#xff1a; 此时&#xff0c;会出现这样一个疑问&#xff1a;操作系统是如何得知现在被执行的进程是用户态…

DuDuTalk:4G录音工牌如何帮企业实现,线下服务的远程实时监督?

数字化时代&#xff0c;企业越来越重视客户体验。而线下服务是企业的员工跟客户直接互动最重要的环节&#xff0c;这直接关乎到客户对品牌、产品、服务的最直观评价和反馈&#xff0c;最终影响客户的购买和成交。 但企业的线下服务场景往往又是企业数字化最薄弱的一环&#xf…

Qt,day4

闹钟 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("闹钟");this->setWindowIcon(QIcon("D:\\HQYJRJ\\QT\\day1\\…

【Python爬虫开发基础⑫】requests库概述(文件上传、cookies处理、状态码处理、异常处理等)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;python网络爬虫从基础到实战 欢迎订阅&#xff01;后面的内容会越来越有意思~ &#x1f4a1;往期推荐&#xff1a; ⭐️前面比较重要的基础内容&#xff1a; 【Python爬…

数据平台之数仓模型设计

文章目录 前言一、维度建模基本概念1.1 事实表1.2 维度表 二、维度建模三种模式2.1 星型模型2.2 雪花模式2.3 星座模式 三、ChatGPT代替Sql Boy3.1 简单案例3.2 复杂案例 四、总结 前言 看到几篇不错的文章&#xff0c;自己总结合并了分享给小伙伴 金博尔和恩门共同开创的数仓…

vue项目 设置启动时自动运行到电脑默认浏览器中

相信大家很多参与企业开发会发现 别人搭建的vue项目都会自动启动在电脑的默认浏览器上 这个其实React项目自己就会有 但是 vue项目我们需要自己设置一下 在根目录的 vue.config.js 将devServer下 设置 open: true 参考代码如下 module.exports {devServer: {open: true} }这样…

机器学习30:《推荐系统-III》使用 TensorFlow 构建电影推荐系统

本文将介绍基于 MovieLens 数据集创建一个电影推荐系统的方法。具体而言&#xff0c;包括探索电影数据&#xff0c;训练矩阵分解模型&#xff0c;检查嵌入&#xff0c;矩阵分解中的正则化&#xff0c;Softmax 模型训练等内容。 目录 1.准备工作 1.1 导入依赖模块 1.2 加载数…

LeetCode 1107.每日新用户统计

数据准备 Create table If Not Exists Traffic (user_id int, activity ENUM(login, logout, jobs, groups, homepage), activity_date date); Truncate table Traffic; insert into Traffic (user_id, activity, activity_date) values (1, login, 2019-05-01); insert into …

Charles抓包map local后出现“failed: unacceptable content-type: text/plain“

Charles 抓包map local 修改 映射到本地数据 出现如下报错 返回ErrorUrlhttps://xxxx 返回ErrorError Domaincom.alamofire.error.serialization.response Code-1016 "Request failed: unacceptable content-type: text/plain" UserInfo{NSLocalizedDescriptionRequ…

邮票面值-2022年全国青少年信息素养大赛Python国赛第5题

[导读]&#xff1a;超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲&#xff0c;这是超平老师解读Python编程挑战赛真题系列的第7讲。 全国青少年信息素养大赛&#xff08;原全国青少年电子信息智能创新大赛&#xff09;是“世界机器人大会青少年机器人设计…

适配理想全系车型,OPPO首创手表无感蓝牙车钥匙系统

OPPO 宣布与理想汽车深度合作&#xff0c;首家推出系统级手表无感蓝牙车钥匙功能&#xff0c;适配理想全系列车型。此功能早已适配 OPPO 手机。仅支持 OPPO Watch 2、OPPO Watch 3 和 OPPO Watch SE 系列&#xff0c;可独立使用&#xff0c;无需手机即可控制车辆。 OPPO首发数字…

Python:创建一个满足高斯分布的立方体

算法说明&#xff1a; &#xff08;1&#xff09;首先定义一个中心点坐标 center&#xff0c;标准差 sigma 和峰值 amplitude。 &#xff08;2&#xff09;然后通过计算每个点到中心点的欧氏距离&#xff0c;并将欧氏距离应用于高斯分布的公式 amplitude * exp(-distances**2 /…

tcp转发服务桥(windows)

目的 目的是为了在网关上转发udp数据和tcp数据。对于网络里面隔离的内网来说&#xff0c;有一台可以上网的服务器&#xff0c;那么通过两块网卡就可以转发出去&#xff0c;在服务器上进行数据的转发&#xff0c;有tcp和udp两种&#xff0c;udp已经写过了&#xff0c;这次使用了…

MySQL 导出库和表信息导出成Excel

最近在写文档需要将数据库的表和对应的表信息做成EXCEL。 我不能一个一个表一个一个字段的敲下去吧&#xff01;&#xff01;&#xff01; 那有没有一个SQL搞定呢&#xff1f; 这个可以有有&#xff01; 数据库里有那些表&#xff08;包含表名和表介绍&#xff09; SELECT…

路径规划算法:基于野马优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于野马优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于野马优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法野马…

关于CEPH的简单畅谈

CEPH是什么 CEPH是一个先进的分布式存储系统&#xff0c;它具有高度可靠性、可扩展性和性能。CEPH旨在解决传统存储系统中存在的诸多挑战&#xff0c;如单点故障、难以扩展、数据丢失风险等。 CEPH的设计理念是将数据分布到一个由多个节点组成的集群中&#xff0c;并利用冗余…

ERROR: ORA-12560: TNS: 协议适配器错误

之前在Windows安装了Oracle&#xff0c;遇到了ORA-12560 TNS: protocol adapter error的错误。这个问题的原因很简单&#xff0c;就是没有配Oracle的环境变量。由于是去年遇到的问题&#xff0c;我现在已经忘了具体配置什么变量&#xff0c;但可以肯定的是这个问题就是环境变量…

24 | MySQL是怎么保证主备一致的?

以下内容出自《MySQL 实战 45 讲》 https://time.geekbang.org/column/article/76446 24 | MySQL是怎么保证主备一致的&#xff1f; MySQL 主备的基本原理 如图所示就是基本的主备切换流程。&#xff08;M-S结构&#xff09; 节点 A 到 B 这条线的内部流程是什么样的 &#x…

DEVICENET转ETHERNET/IP网关devicenet怎么读

远创智控YC-EIP-DNT&#xff0c;你听说过吗&#xff1f;这是一款自主研发的ETHERNET/IP从站功能的通讯网关&#xff0c;它能够连接DEVICENET总线和ETHERNET/IP网络&#xff0c;从而解决生产管理系统中协议不同造成的数据交换互通问题。 这款产品在工业自动化领域可谓是一大利…

微调预训练的 NLP 模型

动动发财的小手&#xff0c;点个赞吧&#xff01; 针对任何领域微调预训练 NLP 模型的分步指南 简介 在当今世界&#xff0c;预训练 NLP 模型的可用性极大地简化了使用深度学习技术对文本数据的解释。然而&#xff0c;虽然这些模型在一般任务中表现出色&#xff0c;但它们往往缺…