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;
} }
}

java基础:模拟ATM取款机的更多相关文章

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

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

  2. java基础模拟考试三套试卷

    卷1: 一.单选题(15道,共30分) //1.下列关于JDK.JRE.JVM关系描述正确的是 (A) A:JDK是开发工具,包含了JRE.JRE是运行环境,包含了JVM.JVM是虚拟机,可以保证跨平 ...

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

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

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

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

  5. Java 模拟ATM(修正)

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

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

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

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

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

  8. 模拟ATM机银行系统

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

  9. Java基础知识【下】( 转载)

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

随机推荐

  1. js架构设计模式——MVC,MVP 和 MVVM 的图示及简单明了的区别说明

    MVC,MVP 和 MVVM 的图示 复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理 ...

  2. WPF DataPager控件

    最近在项目中遇到远程加载数据的问题,由于服务器采用分页方式返回数据,因此客户端也相应的制作了一个分页控件.代码相对简单,算做入门级的源码. 效果如图: 初步分析,分页功能只需要3个核心变量:PageI ...

  3. Git学习之路(1)-Git简介

    ▓▓▓▓▓▓ 大致介绍 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds ...

  4. window下redis的安装

    1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本2.根据PHP版本号,编译器版本号和CPU架构,选择php_redis-2.2.5-5.5-ts-vc11-x86.zip和ph ...

  5. 使用Typescript来写javascript

    使用Typescript来写javascript 前几天尝试使用haxejs来写javascript,以获得静态类型带来的益处.虽然成功了,但很快发现将它与angularjs一起使用,有一些不太顺畅的 ...

  6. BZOJ-2768: [JLOI2010]冠军调查(超级裸的最小割)

    2768: [JLOI2010]冠军调查 Time Limit: 10 Sec  Memory Limit: 128 MB Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着 ...

  7. 蓝桥网试题 java 基础练习 数列特征

    ----------------------------------- Collections.sort(list);是个好东西 但是要学会排列 然后你才能浪 -------------------- ...

  8. ArcGIS制图技巧系列(1)还原真实的植被

    ArcGIS制图技巧系列(1)还原真实的植被 by 李远祥 在GIS数据中,植被一般都是面装要素的形式存在.很多人在使用植被渲染的时候,一般会采用填充符号去渲染.而在ArcGIS中,填充符号要么就是纯 ...

  9. Convex Hull 实现理论+自制Python代码

    Convex Hull 概述 计算n维欧式空间散点集的凸包,有很多的方法.但是如果要实现快速运算则其难点在于:如何快速判断散点集的成员是否是在凸集的内部.如果可以简化判断的运算过程,则可以极大简化迭代 ...

  10. 1.1XAF框架开发视频教程-简单的订单管理实现过程,视频,提纲,及教程源码

    下面是视频教程的提纲: PPT版本的提纲下载 本节源码下载 XAF框架开发教程 快速实现企业级信息系统开发的利器 XAF简介 ´  开发公司:www.devexpress.com,老牌控件公司 ´  ...