Java——实现简单的ATM银行管理系统(很简单,无GUI)

简介: Java——实现简单的ATM银行管理系统(很简单,无GUI)

1.开篇


最近一直在准备2020年下半年的软考中级——软件设计师考试,不知不觉已经有10天没有学Java了,今天心血来潮,想着写点什么Java小程序练练手,只当是复习一下前段时间自学的有关Java类对象这块的知识!!!


下面,我主要是应用了Java中的类、对象、构造器、set和get方法、String类、控制台输入流这些相关内容,来模拟实现一个简单、简单、很简单的一个ATM银行管理系统。(大家不要慌,这里没有继承,没有多态,没有抽象类,也没有接口)


主要就是通过定义用户名、密码以及账户余额,来实现取钱、存钱、查询余额、转账、修改密码、重新登录、退出这些功能,用户名不能修改,密码可以进行修改。


如果大家觉得我写的太水了,也无妨,毕竟我也不是大佬呀(😆😆😆),我才自学JavaSE不到两个月,也差不多刚刚触摸到Java的冰山一角,好了,废话不多说,我们来看下面的代码吧!!!👇👇👇


2.程序代码:


2.1 ATMDemo类(主要就是set、get方法和类的构造器)


package ATMSystem;
public class ATMDemo {
  //用户名,密码,账户余额
  private String username="冷少";
  private String password="szh2656307671";
  private double money=20000;
  public ATMDemo() {
  }
  public ATMDemo(String username,String password,double money) {
    this.username=username;
    this.password=password;
    this.money=money;
  }
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username=username;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password=password;
  }
  public double getMoney() {
    return money;
  }
  public void setMoney(double money) {
    this.money=money;
  }
  @Override
  public String toString() {
    return "[username=" + username + ",password=" + password + ",money=" + money + "]";
  }
}


2.2 ATMTest类(实现具体功能的类)


package ATMSystem;
import java.util.*;
public class ATMTest {
  ATMDemo atm=new ATMDemo();//实例化一个类对象
  Scanner input=new Scanner(System.in);//控制台输入
  private int num=0;//记录输入密码的次数
  public void Select() {
    System.out.println("==========欢迎访问ATM银行管理系统==========");
    System.out.println("请输入用户名:");
    String username=input.next();//用户名、密码不包含空格,所以用next(),而不是nextLine()
    System.out.println("请输入密码:");
    String password=input.next();
    if(username.equals(atm.getUsername())&&password.equals(atm.getPassword()) ) {//用户名、密码输入正确
      System.out.println("登录成功!!!");
      while(true) {
        System.out.println("尊敬的用户您好:");
        System.out.println("请选择的项目:1.取钱   2.存钱   3.查询余额   4.转账   5.修改密码   6.重新登录   7.退出登录");
        switch(input.nextInt()) {
          case 1:
            takeMoney();//取钱
            break;
          case 2:
            saveMoney();//存钱
            break;
          case 3:
            selectMoney();//查询余额
            break;
          case 4:
            transferMoney();//转账
            break;
          case 5:
            updatePassword();//修改密码
            break;
          case 6:
            Select();//重新登录
            break;
          case 7:
            System.out.println("感谢您的本次使用,欢迎下次访问该系统!");
            System.exit(0);//退出
            break;
          default :
            System.out.println("你输入有误!请重新输入!!!");
            break;
        }
      }
    }else {//用户名或密码不正确
      System.out.println("用户名或密码错误,请重新输入!!!");
      Select();//重新输入
    }
  }
  public void takeMoney() {//取钱
    System.out.println("请输入取钱金额(元):");
    double rmb=input.nextDouble();//控制台获取取钱金额
    if(rmb<=atm.getMoney()) {//取钱金额小于等于当前账户余额
      rmb=atm.getMoney()-rmb;//减去取走的
      atm.setMoney(rmb);//调用set方法更新账户余额
      System.out.println("取款成功,请取走您的现金!!!");
    }else {//取钱金额大于当前账户余额
      System.out.println("抱歉,您的账户余额不足!!!");
    }
  }
  public void saveMoney() {//存钱
    System.out.println("请输入存钱金额(元):");
    double rmb=input.nextDouble();//控制台获取存钱金额
    rmb+=atm.getMoney();//加上存进去的
    atm.setMoney(rmb);//调用set方法更新账户余额
    System.out.println("恭喜您,存款成功!!!");
  }
  public void selectMoney() {//查询余额
    System.out.println("当前,您的帐户余额为:" + atm.getMoney() + "元");//调用get方法获取账户余额
  }
  public void transferMoney() {//转账
    System.out.println("请输入转账人的用户名:");
    String username=input.next();
    System.out.println("请输入转账金额:");
    double rmb=input.nextDouble();
    if(rmb<=atm.getMoney()) {//转账金额小于等于当前账户余额
      rmb=atm.getMoney()-rmb;//减去转走的
      atm.setMoney(rmb);//调用set方法更新当前账户余额
      System.out.println("转账成功!!!");
    }else {//转账金额大于当前账户余额
      System.out.println("转账金额不足,您确定您有那么多钱吗???");
    }
  }
  public void updatePassword() {//修改密码
    System.out.println("请输入原密码:");
    String password=input.next();//控制台获取原密码
    if(password.equals(atm.getPassword())) {//原密码正确,才可以继续修改密码
      System.out.println("请输入新密码:");
      String newpassword1=input.next();//新密码
      System.out.println("请再次输入新密码:");
      String newpassword2=input.next();//新密码一般需要输入两次(大家改过密码的一定都清楚)
      if(newpassword1.equals(newpassword2)) {//两次新密码匹配成功
        System.out.println("密码修改成功,即将重新登录!!!");
        atm.setPassword(newpassword1);//调用set方法将原密码更新为新密码
        Select();//重新登录
      }else {//两次新密码输入不相同
        System.out.println("您两次输入的新密码不相同,请重新操作!!!");
        updatePassword();
      }
    }else {//原密码输入错误
      num++;//记录次数
      if(num>=3) {//大于等于三次,系统自动退出
        System.out.println("您三次输入的密码都不正确!!!");
        System.out.println("输入次数超限,即将退出ATM系统!!!");
        System.exit(0);
      }
      System.out.println("您所输入的密码与原密码不相同,请重新输入:");
      updatePassword();//继续输入原密码
    }
  }
}


2.3 Main方法(Java程序的入口)

package ATMSystem;
public class Main {
  public static void main(String[] args) {
  ATMTest atmtest=new ATMTest();
  atmtest.Select();
  }
}

2.4 运行该程序的简单输出结果


这里只是做一个有关取钱、存钱、查询余额功能的简单输出测试,大家可以进行其他功能的测试!!!


相关文章
|
24天前
|
安全 Cloud Native Java
Java 模块化系统(JPMS)技术详解与实践指南
本文档全面介绍 Java 平台模块系统(JPMS)的核心概念、架构设计和实践应用。作为 Java 9 引入的最重要特性之一,JPMS 为 Java 应用程序提供了强大的模块化支持,解决了长期存在的 JAR 地狱问题,并改善了应用的安全性和可维护性。本文将深入探讨模块声明、模块路径、访问控制、服务绑定等核心机制,帮助开发者构建更加健壮和可维护的 Java 应用。
132 0
|
1月前
|
NoSQL Java 关系型数据库
超全 Java 学习路线,帮你系统掌握编程的超详细 Java 学习路线
本文为超全Java学习路线,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架(如Spring Boot)、数据库(MySQL、Redis)及项目实战等内容,助力从零基础到企业级开发高手的进阶之路。
141 1
|
2月前
|
Java 数据库 前端开发
分享44个java系统,总有一款适合您
分享44个微信小程序,总有一款适合您
47 0
|
2月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
176 7
|
2月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
205 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
3月前
|
存储 Java 数据库连接
java 初学者必看的系统知识结构图详解
本文详解Java知识结构图,涵盖Java语言基础、JVM原理、集合框架、并发编程、网络通信及主流框架(如Spring Boot、MyBatis),并结合学生信息管理系统实例,帮助初学者构建完整知识体系,提升实战开发能力。
101 0
|
3月前
|
存储 Java 关系型数据库
Java Swing 开发的五星级酒店客房预订与管理系统源码
本文介绍了基于Java Swing的酒店管理系统开发方案。系统采用Java Swing构建GUI界面,结合MySQL数据库,实现预订管理、前台服务、客房管理、客户关系维护等功能模块。文章详细展示了登录界面、开房操作等核心功能的代码实现,包括数据验证和业务逻辑处理。该系统具有跨平台性,能有效提升酒店运营效率,为开发者提供GUI设计和数据库开发的实践案例。技术方案涵盖IntelliJ IDEA开发环境、Jform Designer插件辅助设计等工具链,适合中小型酒店管理需求。
165 0
|
4月前
|
NoSQL Java Shell
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
189 8
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
|
4月前
|
Java
银行转账p图软件,对公转账截图生成器,java版开发银行模拟器【仅供学习参考】
这是一套简单的银行账户管理系统代码,包含`BankAccount`和`BankSystem`两个核心类。`BankAccount`负责单个账户的管理
|
4月前
|
存储 Java 数据库
银行流水生成器在线制作,银行转账p图在线生成,java实现最牛的生成器【仅供学习用途】
本示例展示了一个基于Java的银行交易记录管理系统基础架构,涵盖交易记录生成、数字签名加密及账本存储功能。核心内容包括:1) TransactionRecord类

热门文章

最新文章