Java实现ATM系统超全面步骤解读建议收藏

yizhihongxing

Java实现ATM系统超全面步骤解读

1. 前言

ATM系统是日常生活中经常使用的自助银行系统,本文将介绍如何使用Java完成ATM系统的开发。该系统主要包括用户登录、查询账户信息、存款、取款、转账等基本功能。

2. 数据库设计

在开发ATM系统之前,需要先进行数据库设计。具体步骤如下:

2.1. 创建数据库

首先需要在MySQL数据库中创建一个名为ATM的数据库。

CREATE DATABASE ATM;

2.2. 创建数据表

ATM数据库中创建一个名为user的数据表。

CREATE TABLE user (
 id INT(11) NOT NULL AUTO_INCREMENT,
 name VARCHAR(255) NOT NULL,
 password VARCHAR(255) NOT NULL,
 balance DOUBLE NOT NULL,
 PRIMARY KEY (id)
);

其中,字段id为自增主键,name为用户名,password为密码,balance为账户余额。

3. Java代码实现

3.1. 连接数据库

使用Java程序连接MySQL数据库需要使用JDBC驱动,需要先将JDBC驱动包添加到工程中。

Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ATM", "root", "123456");

其中,com.mysql.jdbc.Driver是MySQL的JDBC驱动类,localhost:3306为MySQL服务器地址和端口号,ATM为数据库名,root为数据库用户名,123456为数据库密码。

3.2. 用户登录

用户登录需要用户输入用户名和密码,并将其与数据库中的用户信息进行比对。

Scanner input = new Scanner(System.in);
System.out.print("请输入用户名:");
String name = input.nextLine();
System.out.print("请输入密码:");
String password = input.nextLine();

PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE name=? AND password=?");
ps.setString(1, name);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();

if(rs.next()) {
    System.out.println("登录成功!");
} else {
    System.out.println("用户名或密码错误!");
}

3.3. 查询账户信息

查询账户信息需要根据用户输入的用户名,在数据库中查询该用户的相关信息。

System.out.print("请输入用户名:");
String name = input.nextLine();

PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE name=?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();

if(rs.next()) {
    System.out.println("账户余额:" + rs.getDouble("balance"));
} else {
    System.out.println("用户名不存在!");
}

3.4. 存款

存款需要用户输入存款金额,并将其加入到用户在数据库中的账户余额中。

System.out.print("请输入存款金额:");
double amount = input.nextDouble();

PreparedStatement ps = conn.prepareStatement("UPDATE user SET balance=balance+? WHERE name=?");
ps.setDouble(1, amount);
ps.setString(2, name);
int result = ps.executeUpdate();

if(result > 0) {
    System.out.println("存款成功!");
} else {
    System.out.println("存款失败!");
}

3.5. 取款

取款需要用户输入取款金额,并将其从用户在数据库中的账户余额中扣除。

System.out.print("请输入取款金额:");
double amount = input.nextDouble();

PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE name=?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();

if(rs.next()) {
    double balance = rs.getDouble("balance");
    if(balance >= amount) {
        ps = conn.prepareStatement("UPDATE user SET balance=balance-? WHERE name=?");
        ps.setDouble(1, amount);
        ps.setString(2, name);
        int result = ps.executeUpdate();
        if(result > 0) {
            System.out.println("取款成功!");
        } else {
            System.out.println("取款失败!");
        }
    } else {
        System.out.println("余额不足!");
    }
} else {
    System.out.println("用户名不存在!");
}

3.6. 转账

转账需要用户输入转账金额和目标账户名,并将转账金额从用户账户余额中扣除,并将转账金额加入目标账户的余额中。

System.out.print("请输入转账金额:");
double amount = input.nextDouble();
input.nextLine();
System.out.print("请输入目标账户名:");
String targetName = input.nextLine();

PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE name=?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();

if(rs.next()) {
    double balance = rs.getDouble("balance");
    if(balance >= amount) {
        ps = conn.prepareStatement("SELECT * FROM user WHERE name=?");
        ps.setString(1, targetName);
        rs = ps.executeQuery();
        if(rs.next()) {
            ps = conn.prepareStatement("UPDATE user SET balance=balance-? WHERE name=?");
            ps.setDouble(1, amount);
            ps.setString(2, name);
            ps.executeUpdate();

            ps = conn.prepareStatement("UPDATE user SET balance=balance+? WHERE name=?");
            ps.setDouble(1, amount);
            ps.setString(2, targetName);
            int result = ps.executeUpdate();
            if(result > 0) {
                System.out.println("转账成功!");
            } else {
                System.out.println("转账失败!");
            }
        } else {
            System.out.println("目标账户不存在!");
        }
    } else {
        System.out.println("余额不足!");
    }
} else {
    System.out.println("用户名不存在!");
}

4. 总结

本文详细讲解了Java实现ATM系统的步骤,包括数据库设计以及Java代码实现。通过本文的学习,读者可以掌握如何使用Java开发一个简单的ATM系统。

5. 示例说明

5.1. 用户登录

请输入用户名:admin
请输入密码:123456
登录成功!

5.2. 查询账户信息

请输入用户名:admin
账户余额:1000.0

5.3. 存款

请输入用户名:admin
请输入存款金额:500
存款成功!

5.4. 取款

请输入用户名:admin
请输入取款金额:800
余额不足!

5.5. 转账

请输入用户名:admin
请输入转账金额:500
请输入目标账户名:test
转账成功!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现ATM系统超全面步骤解读建议收藏 - Python技术站

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

相关文章

  • Maven 生成打包可执行jar包的方法步骤

    Maven 是一款优秀的项目管理工具,也是开发 Java 项目的标准工具之一,本文将介绍使用 Maven 生成打包可执行 jar 包的方法步骤,具体如下: 步骤一:创建 Maven 项目 在开始之前,先要确保安装了 JDK 和 Maven,然后执行以下命令: mvn archetype:generate -DgroupId=com.mycompany.app…

    Java 2023年5月26日
    00
  • JSP自定义标签Taglib实现过程重点总结

    JSP自定义标签Taglib实现过程重点总结 什么是Taglib JSP自定义标签库是JSP的一种扩展机制,它允许开发人员创建自己的自定义标记,并将其作为标记库打包,供其他人在Web应用程序中使用。 Taglib实现过程重点总结 1. 创建标签处理器 创建一个标签处理器类,这个类应该继承TagSupport或者BodyTagSupport,其中TagSupp…

    Java 2023年5月20日
    00
  • springboot集成@DS注解实现数据源切换的方法示例

    下面是针对“springboot集成@DS注解实现数据源切换的方法示例”的详细讲解,包括两个示例。 一、简介 在Spring Boot中,实现数据源切换最常用的方式是使用@DS注解。它可以在运行时动态地切换数据源。这个注解是基于MyBatis-Plus的,需要引入MyBatis-Plus的核心依赖。 二、操作步骤 1. 引入相关依赖 在pom.xml文件中加…

    Java 2023年5月20日
    00
  • JSP指令元素(page指令/include指令/taglib指令)复习整理

    JSP指令元素是用于指定JSP页面的配置信息,包括页面的编码方式、引入的Java类库和定义自定义标签库等。常见的JSP指令元素包括page指令、include指令和taglib指令。 page指令元素 page指令元素是最常用的JSP指令元素之一,用于指定JSP页面的各种配置信息,它通常包含在JSP页面的头部位置,并以%@开&#…

    Java 2023年6月15日
    00
  • Spring boot配置绑定和配置属性校验的方式详解

    以下是关于“Spring boot配置绑定和配置属性校验的方式详解”的完整攻略,包含两个示例说明。 Spring boot配置绑定和配置属性校验的方式详解 背景 在开发 Spring Boot 应用时,我们经常需要配置一些参数,比如数据库连接信息、服务端口等等。而在应用部署时,这些参数也需要灵活地根据不同的环境进行配置,比如开发环境、测试环境、生产环境等等。…

    Java 2023年6月15日
    00
  • 详解Java的JDBC API的存储过程与SQL转义语法的使用

    详解Java的JDBC API的存储过程与SQL转义语法的使用 什么是存储过程? 存储过程是一种预定义在数据库中的过程,通过一条语句的执行,可以调用存储过程来完成一系列操作。存储过程通常用于执行重复性的任务。 在Java中,我们可以使用JDBC API来访问数据库,并执行存储过程。 JDBC API中调用存储过程的方法 在Java中,我们可以使用JDBC的C…

    Java 2023年5月20日
    00
  • 解决spring @ControllerAdvice处理异常无法正确匹配自定义异常

    解决Spring @ControllerAdvice处理异常无法正确匹配自定义异常的攻略如下: 1. 检查自定义异常 首先,需要检查自定义异常是否正确地继承了标准的Exception类。如果自定义异常没有正确地继承标准的Exception类,则@ControllerAdvice将无法捕获该自定义异常。确保自定义异常正确继承标准的Exception类可以通过以…

    Java 2023年5月27日
    00
  • Java MyBatis之Mapper代理详解

    Java MyBatis之Mapper代理详解 在MyBatis中,Mapper代理是一种方便且易于使用的方式来执行数据库操作。Mapper代理充当了DAO层与MyBatis框架之间的接口,从而将SQL语句执行的逻辑与业务逻辑分开。 1. Mapper代理的创建 Mapper代理是通过MyBatis框架自动生成的。MyBatis通过读取我们配置的Mapper…

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