Java 模拟银行自助终端系统

yizhihongxing

Java 模拟银行自助终端系统

系统概述

本系统是一个基于 Java 语言开发的银行自助终端系统,具有账户管理、存取款、转账等基本银行操作功能。用户可以通过自助终端完成这些操作,无需前往银行柜台。

功能模块

1. 账户管理模块

银行系统管理员可以通过该模块添加账户、删除账户、查询账户信息等。每个账户拥有唯一的账号和用户名。

2. 存取款模块

用户可以通过该模块进行存款和取款操作。用户需要输入自己的账号和密码才能进行操作。每次存取款操作都会更新账户余额。

3. 转账模块

用户可以通过该模块进行转账操作,将自己账户中的余额转入其他账户。用户需要输入对方的账号和转账金额。每次转账操作都会更新账户余额。

系统设计

1. 数据库设计

系统使用 MySQL 数据库存储用户信息和账户余额。(如下代码块)

CREATE TABLE user (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(32) NOT NULL UNIQUE,
    password VARCHAR(32) NOT NULL,
);

CREATE TABLE account (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    account VARCHAR(32) NOT NULL UNIQUE,
    balance DOUBLE DEFAULT 0
);

2. 界面设计

系统使用 Java Swing 编写界面。界面布局包括账户登录页面、账户主页、账户管理页面、存取款页面、转账页面等。

3. 后端设计

系统使用 Java Servlet 和 JSP 进行后端数据处理和视图渲染。使用 JDBC 完成与 MySQL 数据库的交互。

操作示例

1. 添加账户

管理员在账户管理页面点击“添加账户”按钮,通过表单输入账户信息并提交。系统将信息存储到 MySQL 数据库,并提示添加成功。(如下代码块)

try {
    Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://localhost/bank";
    String username = "root";
    String password = "123456";
    Connection connection = DriverManager.getConnection(url, username, password);
    PreparedStatement statement = connection.prepareStatement("INSERT INTO user (username, password) VALUES (?, ?)");
    statement.setString(1, username);
    statement.setString(2, password);
    statement.executeUpdate();
    statement.close();
    connection.close();
    response.sendRedirect("user_manager.jsp?msg=add_success");
} catch (SQLException e) {
    e.printStackTrace();
    response.sendRedirect("user_manager.jsp?msg=add_failed");
}

2. 存款操作

用户在存款页面输入账号和密码后,输入存款金额,点击“确定”按钮完成存款。系统将操作记录存储到 MySQL 数据库,同时更新账户余额。(如下代码块)

try {
    Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://localhost/bank";
    String username = "root";
    String password = "123456";
    Connection connection = DriverManager.getConnection(url, username, password);
    PreparedStatement statement = connection.prepareStatement("SELECT balance FROM account WHERE account = ?");
    statement.setString(1, account);
    ResultSet resultSet = statement.executeQuery();
    if (resultSet.next()) {
        double balance = resultSet.getDouble("balance");
        balance += deposit;
        statement = connection.prepareStatement("UPDATE account SET balance = ? WHERE account = ?");
        statement.setDouble(1, balance);
        statement.setString(2, account);
        statement.executeUpdate();
        statement = connection.prepareStatement("INSERT INTO transaction (account, type, amount) VALUES (?, ?, ?)");
        statement.setString(1, account);
        statement.setString(2, "deposit");
        statement.setDouble(3, deposit);
        statement.executeUpdate();
        response.sendRedirect("index.jsp?msg=deposit_success");
    } else {
        response.sendRedirect("index.jsp?msg=account_not_found");
    }
    statement.close();
    connection.close();
} catch (SQLException e) {
    e.printStackTrace();
    response.sendRedirect("index.jsp?msg=deposit_failed");
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 模拟银行自助终端系统 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • 微信小程序 免费SSL证书https、TLS版本问题的解决办法

    针对“微信小程序 免费SSL证书https、TLS版本问题的解决办法”,我提供如下完整攻略。 什么是SSL证书和TLS版本 SSL证书可以理解为电子商务网站的身份证,用于证明网站的身份,并通过加密通讯来保护信息不被窃取。而TLS是SSL的升级版本,用于加密网络连接,并确保数据的完整性和机密性。 微信小程序使用SSL证书和TLS版本的必要性 微信小程序要求所有…

    Java 2023年5月23日
    00
  • Java数组声明、创建、初始化基础

    下面我们来详细讲解一下Java数组声明、创建、初始化基础的攻略。 什么是Java数组 数组是一种数据结构,可以用来将一系列相同类型的数据存储在同一变量名下。在Java中,数组是一个固定大小的连续内存块,每个元素可以是任何Java数据类型,包括对象和基本类型。 Java数组的声明 Java数组的声明需要明确指定数组的类型、数组名和数组大小。其基本语法如下: t…

    Java 2023年5月26日
    00
  • Spring 配置文件XML头部文件模板实例详解

    讲解“Spring 配置文件XML头部文件模板实例详解”的完整攻略,包含以下内容: 标题 1. 介绍 本文将详细讲解Spring配置文件XML头部文件模板的实例用法,包括如何设置XML头部文件的信息,以及如何对XML文件进行约束和验证。 2. XML头部文件模板实例 一般情况下,在编写Spring的XML配置文件时,需要添加一个XML头部文件,包含XML声明…

    Java 2023年6月15日
    00
  • Java对象的内存布局详细介绍

    Java对象的内存布局是指一个Java对象在内存中的存储方式,通常指的是其在堆内存中的存储方式。它分为三部分:对象头、实例变量和填充字节。接下来我将对Java对象内存布局进行详细的介绍。 对象头 对象头是Java对象的头部分,占据了对象的8到12个字节。对象头存储了对象的元数据信息,包含两部分:对象的Mark Word和对象的Class Pointer。在3…

    Java 2023年5月26日
    00
  • springboot~关于md5签名引发的问题

    事实是这样的,我有个接口,这个接口不能被篡改,于是想到了比较简单的md5对url地址参数进行加密,把这个密码当成是sign,然后服务端收到请求后,使用相同算法也生成sign,两个sign相同就正常没有被篡改过。 问题的出现 接口中的参数包括userId,extUserId,时间,其中extUserId字符编码,中间会有+这种符号 有些用户使用签名接口正常 有…

    Java 2023年4月23日
    00
  • Java实战之医院管理系统的实现

    Java实战之医院管理系统的实现 系统介绍 医院管理系统是一个综合性管理平台,它能够帮助医院管理各个方面的业务。该系统主要包含以下几个模块: 患者管理模块 患者管理模块用于管理患者的档案信息、病历信息以及病历预约信息等。 医生管理模块 医生管理模块用于管理医生的信息、排班信息以及医生的病历信息等。 药品管理模块 药品管理模块用于管理医院的药品信息、出库信息以…

    Java 2023年5月23日
    00
  • Android实现简易计算器小程序

    下面是实现简易计算器小程序的完整攻略,主要分以下四个部分: 项目准备 UI设计 逻辑实现 测试与发布 1. 项目准备 选择开发工具 推荐使用Android Studio,是当前Android开发的主流IDE,功能强大,使用方便。 创建Android项目 在Android Studio中创建一个新的Android项目,选择Empty Activity或者Bas…

    Java 2023年5月23日
    00
  • Java 超详细讲解字符流

    Java 超详细讲解字符流 什么是字符流 在Java中,字节流常常用来处理二进制数据(如图片、音频等),而字符流则使用在处理文本数据(如txt文件等)。不同于字节流,字符流是基于16位Unicode编码的字符来处理数据的。 Java中提供了两类字符流:Reader和Writer。Reader用于读取字符流,Writer用于写入字符流。 字符流的工作方式 字符…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部