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 运行该程序的简单输出结果


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


相关文章
|
10月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
672 8
|
10月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
731 24
|
10月前
|
安全 前端开发 Java
使用Java编写UDP协议的简易群聊系统
通过这个基础框架,你可以进一步增加更多的功能,例如用户认证、消息格式化、更复杂的客户端界面等,来丰富你的群聊系统。
340 11
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
Java与生成式AI:构建内容生成与创意辅助系统
生成式AI正在重塑内容创作、软件开发和创意设计的方式。本文深入探讨如何在Java生态中构建支持文本、图像、代码等多种生成任务的创意辅助系统。我们将完整展示集成大型生成模型(如GPT、Stable Diffusion)、处理生成任务队列、优化生成结果以及构建企业级生成式AI应用的全流程,为Java开发者提供构建下一代创意辅助系统的完整技术方案。
452 10
|
10月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
1134 4
|
10月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
772 0
|
11月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
10月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
441 1
|
10月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
411 1
|
11月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案