拥有登录、身份验证、注册、存钱、取钱查询余额、查询记录的功能。

每次的程序结束都会重写个人信息文件。将客户的操作写入文件中。下次运行程序会读取文件,进行身份验证和相关的属性初始化。

1、用于保存个人信息。

package ATM;import java.io.Serializable;//个人信息
public class database implements Serializable {private String account;//账户private String password;//密码private long balance;//余额String []s=new String[10];//记录操做public database() {}public database(String account, String password, long balance) {this.account = account;this.password=password;this.balance = balance;}public void setRecording(String R){//记录每一次的操作。以便于查询。从数组最后开始写入(保存10条信息)if (s.length>=10){for (int x=0;x<9;x++){s[x]=s[x+1];s[x+1]=R;}}}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public long getBalance() {return balance;}public void setBalance(long balance) {this.balance = balance;}@Overridepublic String toString() {return "database{" +"账户名='" + account + '\'' +", 余额=" + balance +'}';}public void print(){//输出保存的历史记录。(把数组遍历一遍)for (String s:s){System.out.println(s);}}
}

2、对ATM机业务的实现。(存取钱等)

package ATM;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;//业务
public class business {//获取当前时间便于查询记录LocalDateTime dateTime = LocalDateTime.now(); //dd-MM-yyyyDateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//时间表示年月日时分秒String date= dateTime.format(formatter);Scanner input = new Scanner(System.in);//查询余额public void Inquire(database database){System.out.println("余额:"+database.getBalance());database.setRecording( "查询余额、"+"时间:"+date+"。");//将操作记录放到个人信息类中、}//存钱public void Saving(database database) {System.out.println("输入存钱的数目");long l = input.nextInt();if (l >= 0) {database.setBalance(l + database.getBalance());System.out.println("操作成功");database.setRecording( "存钱、"+"时间:"+date+"。");//将操作记录放到个人信息类中、}else {System.out.println("钱不能为负数");database.setRecording( "存钱、"+"时间:"+date+"。");//将操作记录放到个人信息类中、}}//取钱public void take(database database){System.out.println("输入要取钱的数目");long l = input.nextInt();if (l >= 0 && database.getBalance()-l>=0) {database.setBalance(database.getBalance()-l);System.out.println("操作成功");database.setRecording( "取钱、"+"时间:"+date+"。");//将操作记录放到个人信息类中、}else {System.out.println("余额不足");database.setRecording( "取钱、"+"时间:"+date+"。");//将操作记录放到个人信息类中、}}//查询操作记录public void history(database database){//查询操作只需遍历database类中的s数组(保存操作记录的)database.print();}}

3、登录,注册,身份验证。

package ATM;import java.io.*;
import java.util.Scanner;//登录
public class login {
environment environment=new environment();//实例化配置类
//登录public void login1(){Scanner input = new Scanner(System.in);System.out.println("输入账户名");String account = input.next();System.out.println("输入密码(没有规律的6位数字)");String password =input.next();File file=new File(environment.getPath()+account+".atm");//在path路径下以客户账户名字命名的文件if (file.exists() && file.isFile()){//路径存在且是是文件database database= null;try {//读取对应的客户文件InputStream outputStream=new FileInputStream(file);ObjectInputStream objectOutputStream=new ObjectInputStream(outputStream);database = (database) objectOutputStream.readObject();objectOutputStream.close();} catch (IOException e) {e.printStackTrace();System.out.println("用户不存在");} catch (ClassNotFoundException e) {e.printStackTrace();}if (password.equals(database.getPassword())){//比较密码是否正确while (true){//在第一个操作完成后可以进行选择退出还是其他操作。System.out.println("请按对应的操作:1、查询余额。2、存钱。3、取钱。4、查询历史记录.5、退出");int l=input.nextInt();if (l>0 && l<6){business business=new business();switch (l){case 1:business.Inquire(database);break;case 2:business.Saving(database);break;case 3:business.take(database);break;case 4:business.history(database);break;case 5:return;//按5退出这死循环}try {//将客户的操作存储的对应文件中。方便下次读取。OutputStream outputStream=new FileOutputStream(file);ObjectOutputStream objectOutputStream=new ObjectOutputStream(outputStream);objectOutputStream.writeObject(database);objectOutputStream.close();} catch (IOException e) {e.printStackTrace();System.out.println("未知错误请联系管理员");}}else {System.out.println("输入错误");}}}else {System.out.println("密码错误");}}else {System.out.println("用户不存在");}}//注册public void enroll() {Scanner input = new Scanner(System.in);System.out.println("输入账户名");String account = input.next();System.out.println("输入密码(没有规律的6位数字)");String password =input.next();long balance=0;//初始化余额File file=new File(environment.getPath()+account+".atm");//在指定路径下以账户命名的文件if (account !=null && account.length()<12)//判断账户是否合规if (password.length()==6){//判断密码是否合规database database=new database(account,password,balance);//将个人信息存入database类中;//客户注册时生成对应的文件方便下次读取客户个人信息try {OutputStream outputStream=new FileOutputStream(file);ObjectOutputStream objectOutputStream=new ObjectOutputStream(outputStream);objectOutputStream.writeObject(database);//将database类序列化objectOutputStream.close();login1();System.out.println("注册成功,请登录");} catch (IOException e) {e.printStackTrace();System.out.println("未知错误请联系管理员");}}}}

4、配置环境生成相关的文件。(需要更改文件位置的只需更改次类中的path属性)

package ATM;import java.io.File;//环境
public class environment {private   String path="F:\\ATM\\database\\";public void remodel(){File file=new File(path);if (!file.exists()){System.out.println(file.mkdirs());}}public String getPath() {return path;}
}

5、程序的调用(主方法内的使用)

package ATM;import java.util.Scanner;/*
1、登录省份验证
2、每个不同的人登录会有不同的余额
3、进行不同的操作(查询,存钱,取钱)* */
public class ATM {public static void main(String[] args) {environment environment=new environment();environment.remodel();Scanner input=new Scanner(System.in);System.out.println("1、已有账号登录 2、没有账户注册");int i= 0;try {//这里的异常是防止输出的数据类型不是inti = input.nextInt();} catch (Exception e) {e.printStackTrace();}if (i>0 && i<3) {login login=new login();try {switch (i) {case 1:login.login1();break;//调用登录case 2:login.enroll();break;//调用注册}} catch (Exception e) {e.printStackTrace();System.out.println("未知错误");}}else {System.out.println("输入错误,请检查。同时联系管理员");}

简单的ATM机代码实现相关推荐

  1. c语言模拟自动饮料机,C语言--小程序--简单模拟ATM机

    原标题:C语言--小程序--简单模拟ATM机 ATM.H #ifndef ATM_h #define ATM_h #include #include #include typedef struct _ ...

  2. .假设一个简单的ATM机的取款过程是这样的:首先提示用户输入密码(password),最多只能输入三次,超过三次则提示用户“密码错误,请取卡”结束交易。

    假设一个简单的ATM机的取款过程是这样的:首先提示用户输入密码(password),最多只能输入三次,超过三次则提示用户"密码错误,请取卡"结束交易.如果用户密码正确,再提示用户输 ...

  3. c语言简单的atm机编程,C语言ATM机的简单模拟.doc

    PAGE PAGE 10 程序设计实习 -ATM机的简单模拟 院系:信息科学与技术学院 专业:计算机科学与技术 班级:A0611 学号:33号 姓名:石晓珍 ATM机的简单模拟 程序的具体功能: 用C ...

  4. python写一个很简单的Atm机系统,使用pickle模块和json模块来保存数据

    我做的是一个很简单的Atm系统,很多都没约束条件 目的: 用面向对象思维来处理 运用文件的读写 文件的读写用pickle模块和json模块来处理 pickle模块: pickle模块处理数据功能很强大 ...

  5. java编写一个简单的ATM机

    学习java的一点记录01 简单ATM机的实现(黑马程序员课程有具体讲解) Acount类 package com.yzh.atm;public class Account {private Stri ...

  6. atm java代码_用JAVA制作简单的ATM的代码 求教

    展开全部 ok,稍等 呵呵,已经给你拆分成了两个独立的类了. 我再吧注释加起吧. 哪儿e68a8462616964757a686964616f31333262363734不清楚的可以给我留言嘛,刚开始 ...

  7. 利用JavaScript制作简单的ATM机

    大概过程如上图所示. <script>var money =parseInt(100); while(true){ //alert('请输入您要的操作:'+'\n'+'1.存钱'+'\n' ...

  8. python atm银行取款系统_python ATM机 案例代码

    利用目前学的流程控制写的 ''' ATM机 需求: 1.登陆 输入账号输入密码 每日只有3次登陆密码错误的机会,超过3次禁止登陆 2.查询余额 3.存款 4.取款 5.转帐 6.退出 ''' info ...

  9. java程序模拟atm机_Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...

最新文章

  1. 基因组序列及注释数据下载
  2. python之 启动一个子进程并等待其结束
  3. python如何更新包_python如何更新包 python更新包代码示例
  4. 反光衣识别算法冠军方案总结(附源码)|极市打榜
  5. 详解.NET Core 依赖注入生命周期
  6. NetworkOnMNetworkOnMainThreadException
  7. ASP.NET -- WebForm -- Cookie的使用 应用程序权限设计 权限设计文章汇总 asp.net后台管理系统-登陆模块-是否自动登陆 C# 读写文件摘要...
  8. Android RecyclerView使用详解(一)
  9. Mycat监控_监控平台安装zookeeper_作为配置中心注册发现用---MyCat分布式数据库集群架构工作笔记0036
  10. 远看像乱序执行,近看是内存屏障的BUG是如何解决的?
  11. Linux基础 权限与用户管理命令
  12. 微信公众平台开发(41)一键关注微信公众平台账号
  13. 分布式配置管理平台XXL-CONF
  14. 14.看板方法---运营回顾
  15. LINUX下载编译libssh2
  16. 华硕电脑的触摸板关闭
  17. 聚类法 人脸识别 matlab,声纹识别 快速概览 + 详细了解N:N聚类算法是如何应用的...
  18. ckplayer x2去logo,改右键
  19. php jquery 时间轴,jquery时间轴
  20. 阿里云免费SSL证书申请详细流程

热门文章

  1. 7620a路由mysql,7620A路由求助 - 新手入门及其它(软件) - 恩山无线论坛 - Powered by Discuz!...
  2. SpringBoot在K8s下实现优雅停机
  3. 【运维面试】面试官:你们公司的docker主要用来做啥?
  4. 如何升级Jenkins版本
  5. 法雷奥ScaLa核心人物加入:如何带领速腾聚创踏上车规激光雷达量产之路?...
  6. app运行时签名校验
  7. Simpsons’ Hidden Talents(KMP ,两个串的前后缀匹配)
  8. powerdesigner导出mysql脚本,PowerDesigner导出SQL的方法
  9. 计算机仿真终审超期,机械类审稿时间短的北大核心期刊有哪些
  10. 近视了也没关系,以后可以做手术修复,真的对吗?