package com.atm;

import java.util.Scanner;

/**

* ATM类实现

*

* @author 向往的生活

*/

public class ATM {

public static void main(String[] args) {

String[] user = new String[];

String[] password = new String[];

double[] amount = new double[];

loginSelect(user, password, amount);

}

/**

* 登录业务的菜单选择

*

* @param user

* @param password

*/

public static void loginSelect(String[] user, String[] password,

double[] amount) {

System.out.println("#####欢迎#####");

int n = ;

while (true) {

System.out.println("A.开户");

System.out.println("B.登录");

System.out.println("C.退出");

System.out.println("D.修改密码");

Scanner scanner = new Scanner(System.in);

System.out.println("选择菜单:");

String number = scanner.nextLine();

number = number.toUpperCase();

char[] chr = number.toCharArray();

switch (chr[]) {

case 'A':

openAnAccount(user, password);

loginSelect(user, password, amount);

break;

case 'B':

int index = login(user, password);// 记录登录人的下标

if (index != -) {

select(user, password, amount, index);

} else {

n++;// 登录3次失败,则退出

if (n == ) {

break;

}

}

break;

case 'C':

System.out.println("退出ATM");

System.exit(-);

break;

case 'D':

updatePassword(user, password);

System.out.println("修改密码");

break;

default:

System.out.println("录入的操作错误!");

break;

}

}

}

/**

* 核心业务菜单选择

*

* @param user

* @param password

*/

public static void select(String[] user, String[] password,

double[] amount, int index) {

while (true) {

System.out.println("###########您好:" + user[index] + "#########");

System.out.println("A.存款");

System.out.println("B.取款");

System.out.println("C.转账");

System.out.println("D.查询账户余额");

System.out.println("E.返回主菜单");

Scanner scanner = new Scanner(System.in);

System.out.println("选择菜单:");

String input = scanner.nextLine();

input = input.toUpperCase();

char chr = input.toCharArray()[];

switch (chr) {

case 'A':

saveMoney(user, amount, index);

break;

case 'B':

getMoney(user, amount, index);

break;

case 'C':

transferAccounts(user, amount, index);

break;

case 'D':

query(user, amount, index);

break;

case 'E':

loginSelect(user, password, amount);

break;

default:

System.out.println("操作错误请重新输入!");

break;

}

}

}

/**

* 登录

*

* @return

*/

public static int login(String[] user, String[] password) {

Scanner input = new Scanner(System.in);

System.out.println("请输入用户名:");

String userName = input.nextLine();

System.out.println("请输入密码:");

String pwd = input.nextLine();

// 通过userName数据,找到user下标,

int index = -;

for (int i = ; i < user.length; i++) {

if (user[i] == null) {

System.out.println("请去开户,您没有注册卡号!");

loginSelect(user, password, null);

return -;

} else {

if (user[i].equals(userName)) {

index = i;

break;

}

}

}

// 然后通过user下标找到password中相应的密码。

if (password[index].equals(pwd)) {

return index;

} else {

System.out.println("用户名或者密码输入错误,请从新输入!");

}

return -;// 因为密码不匹配因此返回-1

}

/**

* 开户

*

* @return

*/

public static void openAnAccount(String[] user, String[] password) {

int index = -;

// 搜索下标

for (int i = ; i < user.length; i++) {

if (user[i] == null) {

index = i;

break;

}

}

if (index == -) {// 如果存储空间满了,则提示联系管理员处理

System.out.println("系统存储已经满了,请联系管理员处理!");

return;

}

// 新增用于与密码

Scanner scanner = new Scanner(System.in);

System.out.println("输入登录名:");

String loginName = scanner.nextLine();

user[index] = loginName;

System.out.println("输入密码:");

String pwdValue = scanner.nextLine();

password[index] = pwdValue;

}

/***************************************************************************

* 查询账户余额

*

* @return

*/

public static void query(String[] user, double[] amount, int index) {

System.out.println(user[index] + "您的余额为:" + amount[index]);

}

/**

* 取款

*

* @return

*/

public static void getMoney(String[] user, double[] amount, int index) {

System.out.println("A 100 B 200 ");

System.out.println("C 300 D 500 ");

System.out.println("E 1000 F 2000 ");

System.out.println("G 其他金额 ");

Scanner scanner = new Scanner(System.in);

System.out.println("选择取款金额:");

String money = scanner.nextLine();

money = money.toUpperCase();

double number = 0.0;

char chr = money.toCharArray()[];

switch (chr) {

case 'A':

number = ;

break;

case 'B':

number = ;

break;

case 'C':

number = ;

break;

case 'D':

number = ;

break;

case 'E':

number = ;

break;

case 'F':

number = ;

break;

case 'G':

Scanner input = new Scanner(System.in);

System.out.println("输入取款金额:");

number = input.nextDouble();

break;

default:

System.out.println("您输入的金额错误!");

break;

}

// 检查存款的金额校验

if (!checkMoney(number)) {

return;

}

if(amount[index] < number) {

System.out.println("您账户余额不足,不能取款!");

return;

}

amount[index] = amount[index] - number;

System.out.println("取款成功,余额为:" + amount[index]);// 显示余额

return;

}

/**

* 检查存款的金额校验

*

* @param number

* @return

*/

public static boolean checkMoney(double number) {

if (number < ) {

System.out.println("取款失败:只能取出大于等100的金额!");

return false;

}

// 只能存入100的整数

if (number % != ) {

System.out.println("取款失败:只能取出100的整数!");

return false;

}

return true;

}

/**

* 存款

*/

public static void saveMoney(String[] user, double[] amount, int index) {

Scanner scanner = new Scanner(System.in);

System.out.println("输入存款金额:");

double number = scanner.nextDouble();

// 检查存款的金额校验

if (!checkMoney(number)) {

return;

}

amount[index] = amount[index] + number;

System.out.println("存款成功,余额为:" + amount[index]);// 显示余额

return;

}

/**

* 转账

*

* @return

*/

public static void transferAccounts(String[] user, double[] amount,

int index) {

int tragetIndex = -;

for (int i = ; i < ; i++) {

tragetIndex = ifHaveUser(user);

if (tragetIndex != -) {

break;

} else {// 没找到相应的用户

System.out.println("第" + (i + ) + "次,您输入的用户不存在!");

}

}

if (tragetIndex == -) {

System.out.println("超过3次返回上级菜单!");

return;

}

if (tragetIndex == index) {// 如果下标相等提示您不能给自己转账

System.out.println("您不能给自己转账");

} else {

for (int i = ; i < amount.length; i++) {

Scanner scanner = new Scanner(System.in);

System.out.println("输入您的转账金额:");

double tranAmount = scanner.nextDouble();

// 检查存款的金额校验

if (!checkMoney(tranAmount)) {

return;

}

if (tranAmount > amount[index]) {// 如果转账金额大于,账户余额提示

System.out.println("您余额不足!");

break;

} else {

amount[index] = amount[index] - tranAmount;

amount[tragetIndex] = tranAmount;

break;

}

}

}

System.out.println("您的余额为:" + amount[index]);

}

/***************************************************************************

*

* @return

*/

public static int ifHaveUser(String[] user) {

Scanner scanner = new Scanner(System.in);

System.out.println("输入转账用户:");

String userName = scanner.nextLine();

int index = -;

for (int i = ; i < user.length; i++) {

if (userName.equals(user[i])) {

index = i;

}

}

return index;

}

/***************************************************************************

* 修改密码

*

* @return

*/

public static void updatePassword(String[] user, String[] password) {

Scanner input = new Scanner(System.in);

System.out.println("请输入用户名:");

String userName = input.nextLine();

while (true) {

int index = -;

String oldPwd = null;

for (int i = ; i < user.length; i++) {//首先要找到当前用户

if (userName.equals(user[i])) {

index = i;

oldPwd = password[i];

}

}

if(index == -) {

System.out.println("还没有开户,请开户后再来修改密码!");

return ;

}

System.out.println("请输入旧密码:");

String inputOldPwd = input.nextLine();

System.out.println("请输入新密码:");

String newpwd = input.nextLine();

System.out.println("请输入确认密码:");

String confimpwd = input.nextLine();

if(!inputOldPwd.equals(oldPwd)) {//如果输入的旧密码不等于新密码,则重新输入

System.out.println("您输入的旧密码不正确!");

continue;

}

if(!newpwd.equals(confimpwd)) {//新密码与确认密码不匹配

System.out.println("新密码与确认密码不匹配!");

continue;

}

password[index] = newpwd;

System.out.println("密码修改成功!");

break;

}

}

}

【C】——C模拟atm取款机

功能描述:1:开户:2:销户:3:存钱:4:取钱:5:查询:6:转账: 主要用的技术: 一:消息队列: 1)key_t key = ftok(".",100); //获取key 2 ...

ATM取款机的数据库模拟开发和实战总结

一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现高端的业务.有兴趣的可以看看,希望对同胞 ...

语言模拟ATM自动取款机系统

C语言实验报告       题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...

Java 模拟ATM(修正)

ATM机的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,操作日期(Date),操作类型,账户密码(六位的数字,可以用0开头),当前的余额(可以为0). 模拟AT ...

ATM取款机模拟——数据结构课设

今天帮人写的第二篇课设 . ;-) 机智的窝 要求:大概说一下吧,就是要创建一个用户(初始化一账户),模拟ATM的业务(取款,100的整数倍,改密               码,查剩余金额.等等,各 ...

Oracle实战训练——ATM取款机业务

ATM取款机的数据库模拟开发和实战总结 一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现 ...

模拟ATM机银行系统

淄博汉企Java基础考核项目 模拟银行自助终端系统 一. 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 说明: 1. 对于数据输入异常,可使用java异常处 ...

Java基础知识【下】&lpar; 转载&rpar;

http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

Java基础知识【上】&lpar;转载&rpar;

http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

随机推荐

inupt textarea提示文字(点击消失,不输入恢复)及限制字数

效果: input: textarea: 限100字 源码: input:

~&sol;&period;ssh目录找不到解决方法

执行 cd ~/.ssh发现ssh目录找不到 [root@ocdp2 ~]# cd ~/.ssh -bash: cd: /root/.ssh: No such file or directory 原因 ...

php学习代码杂记

16/2/22 字符串连接 (1)连接运算符(“.”):它返回将右参数附加到左参数后面所得的字符串. (2)连接赋值运算符(“.=”):它将右边参数附加到左边的参数后. 相当于JS里面的 += . $ ...

&lbrack;原创&rsqb; JavaScript实现简单的颜色类标签云

效果预览: 源码分享:

PHP填补数字前后的0

PHP数字填补0 经常会遇到这样的问题: 自然数字是0,1,2,3...而我们需要的却是满足多少多少位数的数字,如:001,002. 在ID,编号,学号中我们会经常用到补全前面或者后面的空位(一般为前 ...

window cmd-常用命令

1.常用命令 dir 文件列表 cd 改变目录md 创建目录 rd 删除目录 type 显示文件内容 fc 比较目录 attrib 修改文件属性 copy 复制文件 del 删除文件 ren 文件改名 ...

Spring学习笔记(一):快速入门

Spring简介:        Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完 ...

通过jdbc使用PreparedStatement,提升性能,防止sql注入

为什么要使用PreparedStatement? 一.通过PreparedStatement提升性能 Statement主要用于执行静态SQL语句,即内容固定不变的SQL语句.Statement每执行 ...

EasyUI:所有的图标

EasyUI:所有的图标 所有的图标在 jquery-easyui-1.2.6/themes/icons 目录下: jquery-easyui-1.2.6/themes/icon.css .icon- ...

java初级atm取款机,java基础:模拟ATM取款机相关推荐

  1. java web atm机_java笔记——模拟ATM机例子

    模拟ATM机,实现用户登录.查询.取款.存款和退出. 假定一个银行卡账户,程序执行的时候提示用户输入账号,然后输入密码,如果输入内容不符合规范,则程序会给出相应提示,连续3次输入有误,则退出系统.登录 ...

  2. java 初级编程题_java基础经典编程题

    java基础经典编程题 Monkey_peach代码 package com.sailor.game; /** * 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第 ...

  3. 最新java初级高级,python基础进阶,机器学习视频资料

    我是在校口碑,现在整理了一些编程,java,python,框架,大数据资料,适用于小白和大牛!! 转载于:https://blog.51cto.com/13135855/2342878

  4. java模拟atm 课程设计_java课程设计ATM机(图形用户)代码

    [实例简介] 这是我在大二的时候学java时自己写的一个模拟ATM机的小程序,用了图形用户界面,数据库,绝对原创 [实例截图] [核心代码] atm └── atm ├── bin │   └── c ...

  5. java培训首选沙大计教育,长沙县十大JAVA培训班排名(Java初级水平)

    长沙县十大JAVA培训班排名,最近很多人咨询长沙JAVA培训,下面Java编程工具,Java初级水平,Java编程规范是小编整理的相关知识. Java编程工具 Java是一个编程开发语言,随着互联网的 ...

  6. atm机编程java_如何用Java编写模拟ATM取款机的程序

    /** * @version 1.0 * @author Devil_Angel * 该程序的功能为实现模拟银行ATM自动取款机提款,查询等功能. * */ import Java.io.*; /*该 ...

  7. JAVA基础作业练习—自定义异常之模拟ATM

    <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: r ...

  8. java模拟atm_Java第一课——模拟ATM机

    Java第一课--模拟ATM机 开学第一节Java课,跟之前老师强调的一样--上课简单说了两句就直接开始了考试. 总结一下第一次做Java遇到的问题: 第一个是老师一直在强调要先考虑整体的思路,先把整 ...

  9. Java模拟ATM运行过程(第一版)

    该版本只有一个银行且没有并发,没有数据库,也没有GUI--主要是能力不够,而且飞哥说这个版本还是面向过程的,牛人给指点下. 1 /*想了想这个数组还是放在ATM里会比较好,直接放在主类里不行 2 * ...

最新文章

  1. CVPR2021|基于双边扩充和自适应融合方法的点云语义分割网络
  2. CircleLoss
  3. oracle表空间处理操作
  4. linux文件描述符设置
  5. 轻量级锁的加锁和解锁逻辑-自旋锁
  6. java list数组排序_浅谈对象数组或list排序及Collections排序原理
  7. Django其他(站点、列表、上传
  8. 如何用c语言从txt文件中读取数据
  9. oracle分区存储过程示例,Oracle 存储过程示例
  10. mysql group by top_Mysql group by top N的问题 | 学步园
  11. logstash grok切分nginx日志
  12. hive 日誌怎麼查看_Hive日志调试 | 学步园
  13. MATLAB模糊控制算法,驾驶员制动意图识别,Fuzzy模糊控制算法
  14. 陈新河:软件定义世界,数据驱动未来
  15. 领域驱动实践总结(基本理论总结与分析+架构分析与代码设计V+具体应用设计分析)
  16. 网络公司网站源码介绍Version1.0
  17. 1、马克思主义哲学是科学的世界观和方法论
  18. poi创建excel表打不开——文件格式与扩展名不匹配
  19. 获取手机mac地址和串号IMEI
  20. 聊聊编程中的 “魔数”

热门文章

  1. 声明:声明:声明:声明
  2. 读李彦宏《硅谷商战》有感
  3. Stacked Autoencoder
  4. 解决IE主页被www.13721.net劫持。
  5. zabbix遇到的坑
  6. 计算机设置音乐和主题教案,幼儿园主题音乐教案
  7. Android图片加载出现色带
  8. 在VSCode中使用LaTex,语法检测插件grammarly
  9. Go语言爱好者周刊:第 144 期 — 一道切片的题目
  10. JavaFX实例:简单日历的实现