java初级atm取款机,java基础:模拟ATM取款机

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- ...

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值