Account类

package ATM;
public class Account {//定义Account类
 private String accountID;//用于存储学生的用户账号(由八位数字组成)
 private String accountname;//用于存储账户的名称
 private String operatedate;//用于存储操作的时间,由十位字符组成,显示格式"XXXX-XX-XX"
 private int operatetype;//用于存储操作账户的类型
 private String accountpassword;//用于用户密码,由六位数字组成
 private int accountbalance;//用于存储账户余额
 private int amount;//操作流水金额
 //set函数,设置变量信息
public void setaccountID(String accountID) {this.accountID=accountID;}
public void setaccountname(String accountname) {this.accountname=accountname;}
public void setoperatedate(String operatedate) {this.operatedate=operatedate;}
public void setoperatedate(int operatetype) {this.operatetype=operatetype;}
public void setaccountpassword(String accountpassword) {this.accountpassword=accountpassword;}
public void setaccountbalance(int accountbalance) {this.accountbalance=accountbalance;}
public void setamount(int amount) {this.amount=amount;}
    //get函数,读取变量信息
public String getaccountID() {return accountID;}
public String getaccountname() {return accountname;}
public String getopertedate() {return operatedate;}
public int getoperatetype() {return operatetype;}
public String getaccountpassword(){return accountpassword;}
public int getaccountbalance() {return accountbalance;}
public int getamount() {return amount;}
}
AccountManage类
package ATM;
import java.util.*;
public class AccountManager {
//定义AccountManager类
 Account a=new Account();//定义Account类的一个对象
 static Scanner x=new Scanner(System.in);
 //模块一
 public void denglu() {//模拟输入账号功能
  System.out.println("***************************************************************");
  System.out.println("                欢迎使用中国工商银行自动柜员系统");
  System.out.println("***************************************************************");
  for(; ;) {
  System.out.println("                      请输入您的账号:");
  a.setaccountID(x.next());
  System.out.println("***************************************************************");
  if(a.getaccountID().length()!=8)System.out.println("该卡不是工行卡");//判断账号位数是否为8位,不为8位跳转到账号输入界面
  else {System.out.println("账号登陆成功");break;}//账号位数为8,跳出循环
  }
 }
 //模块二
    public void mima() {//模拟密码输入功能
     int j=1;
  System.out.println("***************************************************************");
  System.out.print("             欢迎");
  System.out.print(a.getaccountID());//输出账号信息
  System.out.println("使用中国工商银行自助柜员系统");
  System.out.println("***************************************************************");
  for(int i=1;i<=3;i++) {//模拟密码输入功能
  System.out.println("                      请输入您的密码:");
  a.setaccountpassword(x.next());
  System.out.println("***************************************************************");
  if(a.getaccountpassword().length()!=6) {
   System.out.println("密码录入错误");
      j++;
      if(j==4)System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");
      }//判断密码是否为6位,不为6位跳转到密码输入界面;密码录入三次错误,输出相应语句
  else {System.out.println("密码输入成功");break;}//密码位数为6,跳出循环
  }
    }
     //界面表头
    public void a() {
     System.out.println("***************************************************************");
   System.out.print("      欢迎");
   System.out.print(a.getaccountID());//输出账号信息
   System.out.println("使用中国工商银行自助柜员系统");
   System.out.println("***************************************************************");
    }
  //模块三
     public void menu() { //系统主界面
   a();
   System.out.println("             1、  存款;");
   System.out.println("             2、  取款;");
   System.out.println("             3、 转账汇款;");
   System.out.println("             4、 修改密码;");
   System.out.println("             5、 查询余额;");
   System.out.println("***************************************************************");
  }
     //模块四
     public void cunkuan() {//模拟存款过程
      a();
   System.out.println("               请输入存款金额;");
   a.setamount(x.nextInt());
   a();
   a.setaccountbalance(a.getamount()+a.getaccountbalance());
   System.out.println("               当前账户存款操作成功。");
   System.out.print("               当前账户余额为:"+a.getaccountbalance());
   System.out.println("元");
     }
     //模块五
     public void qukuan() {//模拟取款过程
      a();
     
      System.out.println("               请输入取款金额;");
   a.setamount(x.nextInt());
   System.out.println("***************************************************************");
   if(a.getamount()>a.getaccountbalance())System.out.println("账户余额不足");
   else {
    a();
    System.out.print("               当前账户取款操作");
    System.out.print(a.getamount());
    System.out.println("元成功。");
    a.setaccountbalance(a.getaccountbalance()-a.getamount());
    System.out.print("               当前账户余额为:"+a.getaccountbalance());
    System.out.println("元");
    System.out.println("***************************************************************");
   
   }
     }
    
     //模块六
     public void zhuanzhang() {//模拟转账汇款功能
      a();
      System.out.println("               请输入转账账户;");
   a.setaccountID(x.next());
   System.out.println("***************************************************************");
      a();
      System.out.println("               请输入转账金额;");
   a.setamount(x.nextInt());
   System.out.println("***************************************************************");
   if(a.getamount()>a.getaccountbalance())System.out.println("账户余额不足");
   else {
    a();
    System.out.print("    请确认是否向");
    System.out.print(a.getaccountID());
    System.out.print("转账");
    System.out.print(a.getamount());
    System.out.println("元");
    System.out.println("***************************************************************");
    System.out.println("N 不转账 Y 确认转账");
    String n=x.next();
    if(n.equals("N")) menu();
    if(n.equals("Y")) {a();
    System.out.print("当前账户向");
    System.out.print(a.getaccountID());
    System.out.print("成功转账");
    System.out.print(a.getamount());
    System.out.println("元");
    a.setaccountbalance(a.getaccountbalance()-a.getamount());
    System.out.print("               当前账户余额为:"+a.getaccountbalance());
    System.out.println("元");
    System.out.println("***************************************************************");
    }
   }
     }
     //模块七
     public void xiumi() {
      a();
      System.out.println("请输入当前密码:");
      System.out.println("请输入修改密码:");
      System.out.println("请输入确认密码:");
      a();
      System.out.println("                     当前账户密码修改成功");
      System.out.println("***************************************************************");
     }
     //模块八
     public int yue() {
      return a.getaccountbalance(); 
     }
     public static void main(String[] args) {
  AccountManager A = new AccountManager();//定义AccountManager类的一个对象
  A.denglu();//输入账号功能
  A.mima();//密码输入功能
  for(; ;) {
  A.menu();
  int m=x.nextInt();
  switch(m) {
  case 1:A.cunkuan();break;
  case 2:A.qukuan();break;
  case 3:A.zhuanzhang();break;
  case 4:A.xiumi();break;
  case 5:A.yue();break;
  }
 }
  }
}
编后感想:
第一次使用java高级程序语言编写这样系统性的程序,最大的感受就是写不完!当然也有许多的收获:第一,要注意编写注释,即使是自己看自己的代码,经过几天之后都有可能会看不懂,所以一定要注意写注释,虽然你可能觉得会有一点浪费时间,但以后的好处就能显示出来,增加代码的可读性,也显得条理清晰,自己也有继续写下去的信心;第二,因为这种系统性的程序一般都会比较庞大,所以模块化就显得相当的重要;先通读题目要求然后在心里分成几个部分;逐步进行编写,这样既可以更容易地找出自己此部分中存在的bug,然后进行改正;也可以使得得分最大化。第三,可以合理构造函数,从而简化代码程序,比如该程序中的a()函数,因为在每个模块当中都有片头部分而且相同,所以我们就可以构造这样一个函数,不用在每回都把代码复制一遍,直接调用函数即可;第四,尽量简化主函数,实现类的封装;调用类中的函数,简便易懂,给人一种清晰地感觉。

模拟银行ATM系统(基础版)的更多相关文章

  1. 实验01——java模拟银行ATM系统

    用java写的一个模拟银行系统,比较初级. ATM.java package cn.tedu.yinhang; import java.util.Scanner; /** * @author 赵瑞鑫 ...

  2. 银行ATM存取款系统(C语言实现)

    这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...

  3. MySQL银行ATM存取款机系统(需求分析)

    银行ATM需求文档 一.E-R图形文 二.开发步骤 1.明确需求--数据库设计--编码实现功能--测试 2.绘制e-r图--绘制数据库模型图--使用三大方式规范数据库结构 三.开发思路 1. 模型图综 ...

  4. 银行ATM机工作流程模拟编程

    [编程内容] 编程,模拟一个ATM(Automatic Teller Machine,自动取款机)的工作流程.依据帐户信息:姓名.帐号.密码.余额,完成ATM机功能:登录.显示余额.取款.修改密码. ...

  5. Java基础面试操作题:线程同步代码块 两个客户往一个银行存钱,每人存三十次一次存一百。 模拟银行存钱功能,时时银行现金数。

    package com.swift; public class Bank_Customer_Test { public static void main(String[] args) { /* * 两 ...

  6. centos 6.x 系统基础优化简版

    Centos 6.x 系统基础优化 1.更换国内yum源 删除系统带的centos官方yum源 rm -rf /etc/yum.repos.d/* 使用国内阿里云源 curl -o /etc/yum. ...

  7. java线程基础巩固---采用多线程方式模拟银行排队叫号以及Runnable接口存在的必要性

    采用多线程模拟银行排队叫号: 关于银行拿排队号去叫号的过程我想不必过多解释了,就是有几个业务窗口,并行的处理业务,每处里完一个人,则会叫下一个排队的号去处理业务,一个人是不会被多个窗口工作人员叫号的, ...

  8. ATM系统开发(Java版)

    ATM系统开发 技术点分析 1.面向对象编程 每个用户的账户都是一个对象,所以需要设计账户类Accent用于创建账户对象封装账户信息. 2.使用集合容器 系统需要提供一个容器用于存储这些账户对象的信息 ...

  9. 高仿中国银行ATM系统

    温馨提示由于代码太多只是上传了ATM客户端部分,管理员和超级管理员还有数据库部分上传了工程包,可以直接点击https://i.cnblogs.com/Files.aspx去里面找.package At ...

随机推荐

  1. c/c++ 多态的实现原理分析

    多态的实现原理分析 当类里有一个函数被声明成虚函数后,创建这个类的对象的时候,就会自动加入一个__vfptr的指针, __vfptr维护虚函数列表.如果有三个虚函数,则__vfptr指向的是第一个虚函 ...

  2. JaveScript 中使用 XSLT转换XML文档

    我们经常将数据存储在XML 中,在展示的时候需要转换为其它的形式,这里介绍使用XSLT 对XML数据进行转换. 要学习XSLT对XML的转换,需要先了解三个文件. 第一个是存储数据的XML文件:emp ...

  3. 如何设置可以避免php代码中的中文在浏览器中成为乱码?

    其实很简单,只需要在代码开始的前面加上一条这样的语句就行: //这里面我的浏览器中的字符编码格式为utf-8,所以这里我设置为utf-8,如果你的浏览器中的默认编码不是这个,请选择浏览器默认的编码格式 ...

  4. Java入门(六):数组

    数组是一种数据结构,用于存储同一类型值的集合,也可以看做是数据类型一致的一组数据. 一.语法和声明数组 1.语法:数据类型[ ] array = new 数据类型[长度]: 注意: 使用长度创建数组的 ...

  5. spring boot +RabbitMQ +InfluxDB+Grafara监控实践

    本文需要有相关spring boot 或spring cloud 相关微服务框架的基础,如果您具备相关基础可以很容易的实现下述过程!!!!!!! 希望本文的所说对需要的您有所帮助 从这里我们开始进入闲 ...

  6. 聚类——K-means

    聚类——认识K-means算法 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.聚类与分类 聚类: 无监督学习.聚类是在预先不知道欲划分类的情况下, ...

  7. css滚动条样式自定义

    很简单的几行代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. nuxt框架Universal和Spa两种render mode的区别

    如下图,官网上对于Universal 和 Spa 两种render mode的区别,并没有加以说明,相信大多数人跟我一样有点懵,不知道选什么好.虽然两个模式创建的项目看不出区别. 先给出推荐选项: U ...

  9. Mysql 数据类型 以及约束

    数据类型 整型 默认有符号 无符号(unsigned) 和有符号 用 0 填充 zerofill 约束的作用: 保证数据的完整性 和一致性 tinyint[ -128 , 127 ] 小整数 无符号( ...

  10. WPF触发器(非数据库中的触发器)

    一.什么是触发器?触发器(Trigger)就是当某种条件满足后即完成相应逻辑功能的一部分程序组成.在当前的WPF中,Trigger一共有三种类型,它们分别是: (1)属性触发器:其对应的类是Trigg ...