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


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


相关文章
|
1月前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
75 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
30 1
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
2月前
|
移动开发 前端开发 JavaScript
java家政系统成品源码的关键特点和技术应用
家政系统成品源码是已开发完成的家政服务管理软件,支持用户注册、登录、管理个人资料,家政人员信息管理,服务项目分类,订单与预约管理,支付集成,评价与反馈,地图定位等功能。适用于各种规模的家政服务公司,采用uniapp、SpringBoot、MySQL等技术栈,确保高效管理和优质用户体验。
|
2月前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
55 1
|
2月前
|
Java 关系型数据库 API
介绍一款Java开发的企业接口管理系统和开放平台
YesApi接口管理平台Java版,基于Spring Boot、Vue.js等技术,提供API接口的快速研发、管理、开放及收费等功能,支持多数据库、Docker部署,适用于企业级PaaS和SaaS平台的二次开发与搭建。
|
2月前
|
前端开发 Java 数据库连接
基于Java的校车管理系统(下)
基于Java的校车管理系统(下)
23 0
java中获取当前系统日期
java中获取当前系统日期
JAVA 获取系统日期时间
JAVA 获取系统日期时间
302 0
|
Java 应用服务中间件
JAVA 取系统当前日期 少8个小时
        Date now = new Date();          DateFormat data = newjava.text.
825 0