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基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
Java基础知识【上】(转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
随机推荐
inupt textarea提示文字(点击消失,不输入恢复)及限制字数
效果: input: textarea: 限100字 源码: input:
~/.ssh目录找不到解决方法
执行 cd ~/.ssh发现ssh目录找不到 [root@ocdp2 ~]# cd ~/.ssh -bash: cd: /root/.ssh: No such file or directory 原因 ...
php学习代码杂记
16/2/22 字符串连接 (1)连接运算符(“.”):它返回将右参数附加到左参数后面所得的字符串. (2)连接赋值运算符(“.=”):它将右边参数附加到左边的参数后. 相当于JS里面的 += . $ ...
[原创] 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取款机相关推荐
- java web atm机_java笔记——模拟ATM机例子
模拟ATM机,实现用户登录.查询.取款.存款和退出. 假定一个银行卡账户,程序执行的时候提示用户输入账号,然后输入密码,如果输入内容不符合规范,则程序会给出相应提示,连续3次输入有误,则退出系统.登录 ...
- java 初级编程题_java基础经典编程题
java基础经典编程题 Monkey_peach代码 package com.sailor.game; /** * 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第 ...
- 最新java初级高级,python基础进阶,机器学习视频资料
我是在校口碑,现在整理了一些编程,java,python,框架,大数据资料,适用于小白和大牛!! 转载于:https://blog.51cto.com/13135855/2342878
- java模拟atm 课程设计_java课程设计ATM机(图形用户)代码
[实例简介] 这是我在大二的时候学java时自己写的一个模拟ATM机的小程序,用了图形用户界面,数据库,绝对原创 [实例截图] [核心代码] atm └── atm ├── bin │ └── c ...
- java培训首选沙大计教育,长沙县十大JAVA培训班排名(Java初级水平)
长沙县十大JAVA培训班排名,最近很多人咨询长沙JAVA培训,下面Java编程工具,Java初级水平,Java编程规范是小编整理的相关知识. Java编程工具 Java是一个编程开发语言,随着互联网的 ...
- atm机编程java_如何用Java编写模拟ATM取款机的程序
/** * @version 1.0 * @author Devil_Angel * 该程序的功能为实现模拟银行ATM自动取款机提款,查询等功能. * */ import Java.io.*; /*该 ...
- JAVA基础作业练习—自定义异常之模拟ATM
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: r ...
- java模拟atm_Java第一课——模拟ATM机
Java第一课--模拟ATM机 开学第一节Java课,跟之前老师强调的一样--上课简单说了两句就直接开始了考试. 总结一下第一次做Java遇到的问题: 第一个是老师一直在强调要先考虑整体的思路,先把整 ...
- Java模拟ATM运行过程(第一版)
该版本只有一个银行且没有并发,没有数据库,也没有GUI--主要是能力不够,而且飞哥说这个版本还是面向过程的,牛人给指点下. 1 /*想了想这个数组还是放在ATM里会比较好,直接放在主类里不行 2 * ...
最新文章
- CVPR2021|基于双边扩充和自适应融合方法的点云语义分割网络
- CircleLoss
- oracle表空间处理操作
- linux文件描述符设置
- 轻量级锁的加锁和解锁逻辑-自旋锁
- java list数组排序_浅谈对象数组或list排序及Collections排序原理
- Django其他(站点、列表、上传
- 如何用c语言从txt文件中读取数据
- oracle分区存储过程示例,Oracle 存储过程示例
- mysql group by top_Mysql group by top N的问题 | 学步园
- logstash grok切分nginx日志
- hive 日誌怎麼查看_Hive日志调试 | 学步园
- MATLAB模糊控制算法,驾驶员制动意图识别,Fuzzy模糊控制算法
- 陈新河:软件定义世界,数据驱动未来
- 领域驱动实践总结(基本理论总结与分析+架构分析与代码设计V+具体应用设计分析)
- 网络公司网站源码介绍Version1.0
- 1、马克思主义哲学是科学的世界观和方法论
- poi创建excel表打不开——文件格式与扩展名不匹配
- 获取手机mac地址和串号IMEI
- 聊聊编程中的 “魔数”