如何用Java编写模拟ATM取款机的程序

Python013

如何用Java编写模拟ATM取款机的程序,第1张

import java.io.IOException

/**

* ATM机类

*

* 查看余额

*

* 取款

*

* 存款

*

* 退出系统

*

*

*

*/

public class ATM {

static double yue = 1200.00

public static void main(String[] arg) {

ATM localTest1 = new ATM()

localTest1.ATM_Operate()

}

/**

* ATM机的操作

*/

private void ATM_Operate() {

System.out.println("欢迎使用中国工商银行ATM取款机")

System.out.println("1、查看余额 2、取款")

System.out.println("3、存款0、退出")

System.out.print("请输入您需要的服务:")

byte[] buffer = new byte[512]

try {

int count = System.in.read(buffer)// 返回实际读取的字节数

System.out.print("您输入的是:")

for (int i = 0i <counti++) {

System.out.print("" + (char) buffer[i])

}

if ((char) buffer[0] == '1') {

// 查看余额

System.out.println("您的余额是:¥" + yue + "元")

System.out.println()

ATM_Operate()

} else if ((char) buffer[0] == '2') {

// 取款

withdrawal()

System.out.println()

ATM_Operate()

} else if ((char) buffer[0] == '3') {

// 存款

deposit()

System.out.println()

ATM_Operate()

} else if ((char) buffer[0] == '0') {

// 退出

System.out.println("您已经成功退出系统,谢谢你的使用")

System.exit(0)

} else {

System.out.println("输入不合法,请重新输入")

System.out.println()

ATM_Operate()

}

} catch (IOException e) {

e.printStackTrace()

}

}

/**

* 取款

*

* @throws IOException

*/

private void withdrawal() throws IOException {

byte[] buffer = new byte[512]

System.out.print("请输入您要取出的金额:¥")

int count2 = System.in.read(buffer)// 返回实际读取的字节数

System.out.print("您输入的金额是:")

for (int i = 0i <count2 - 1i++) {

System.out.print("" + (char) buffer[i])

}

System.out.println()

// 字符0 ~ 9对应ASCII值48 ~ 57

boolean flag = false

for (int i = 0i <count2 - 1i++) {

if ((char) buffer[i] >47 &&(char) buffer[i] <58) {

if (i == count2 - 2) {

flag = true

}

} else {

// 输入的字符不是数值

System.out.println("输入不合法,请重新输入")

withdrawal()

break

}

}

System.out.println()

if (flag) {

System.out.print("您已成功取出¥:")

String num = ""

for (int i = 0i <count2 - 1i++) {

System.out.print("" + (char) buffer[i])

num += (char) buffer[i]

}

yue -= Double.valueOf(num)

System.out.print(",现在余额¥:" + yue)

}

}

/**

* 存款

*

* @throws IOException

*/

private void deposit() throws IOException {

byte[] buffer = new byte[512]

System.out.print("请输入您要存入的金额:¥")

int count2 = System.in.read(buffer)// 返回实际读取的字节数

System.out.print("您输入的金额是:")

for (int i = 0i <count2 - 1i++) {

System.out.print("" + (char) buffer[i])

}

System.out.println()

// 字符0 ~ 9对应ASCII值48 ~ 57

boolean flag = false

for (int i = 0i <count2 - 1i++) {

if ((char) buffer[i] >47 &&(char) buffer[i] <58) {

if (i == count2 - 2) {

flag = true

}

} else {

// 输入的字符不是数值

System.out.println("输入不合法,请重新输入")

withdrawal()

break

}

}

System.out.println()

if (flag) {

System.out.print("您已成功存入¥:")

String num = ""

for (int i = 0i <count2 - 1i++) {

System.out.print("" + (char) buffer[i])

num += (char) buffer[i]

}

yue += Double.valueOf(num)

System.out.print(",现在余额¥:" + yue)

}

}

}

Java编写的模拟ATM取款机程序/*** @version 1.0

* @author Devil_Angel

* 该程序的功能为实现模拟银行ATM自动取款机提款,查询等功能.

*

*/import java.io.*/*该类为实现客户信息及部分功能*/

class Account {

private String code =null //信用卡号

private String name =null //客户姓名

private String password=null //客户密码

private double money=0.0 //卡里金额

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

public Account(String code,String name,String password,double money)

{

this.code=code

this.name=name

this.password=password

this.money=money

}

protected String get_Code() {

return code

}

protected String get_Name() {

return name

}

protected String get_Password() {

return password

}

public double get_Money() {

return money

}

/*得到剩余的钱的数目*/

protected void set_Balance(double mon) {

money -= mon

}

}/**********实现具体取款机功能*********/

class ATM {

Account act

// private String name

// private String pwd

public ATM() {

act=new Account("000000","Devil","123456",50000)

}

/***********欢迎界面***********/

protected void Welcome()

{

String str="---------------------------------"

System.out.print(str+"\n"+

"欢迎使用Angel模拟自动取款机程序.\n"+str+"\n")

System.out.print(" 1.>取款."+"\n"+

" 2.>查询信息."+"\n"+

" 3.>密码设置."+"\n"+

" 4.>退出系统."+"\n")

}

/**********登陆系统**********/

protected void Load_Sys() throws Exception

{

String card,pwd

int counter=0

BufferedReader br=new BufferedReader(new InputStreamReader(System.in))

do {

System.out.println("请输入您的信用卡号:")

card=br.readLine()

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

pwd=br.readLine()

if(!isRight(card,pwd))

{

System.out.println("您的卡号或密码输入有误.")

counter++

}

else

SysOpter()

}while(counter<3)

Lock_Sys()

}

/**********系统操作**********/

protected void SysOpter() throws Exception

{

int num

BufferedReader br=new BufferedReader(new InputStreamReader(System.in))

System.out.println("请选择您要操作的项目(1-4):")

num=br.read() //num为ASICC码转换的整数

switch(num) {

case 49: BetBalance()break

case 50: Inqu_Info()break

case 51: Set_Password()break

case 52: Exit_Sys() break

}

System.exit(1)

}

/**********信息查询**********/

protected void Inqu_Info() {

System.out.print("---------------------\n"+

act.get_Code()+"\n"+

act.get_Name()+"\n"+

act.get_Money()+"\n"+

"-----------------------")

}

/**********取款**********/

public void BetBalance() throws Exception

{

String str=null,str1

BufferedReader br=new BufferedReader(new InputStreamReader(System.in))

do {

System.out.println("请输入您要取的数目:")

str=br.readLine()

str1=String.valueOf(act.get_Money())

if(str.compareTo(str1)>0) {

System.out.println("超过已有的钱数,请重新输入您要取的数目:")

}

else {

/*操作成功*/

// act.set_Balance(str)

System.out.println("取款成功,请收好您的钱.")

Welcome()

SysOpter()

}

}while(true)

}

/**********判断卡内是否有钱**********/

protected boolean isBalance() {

if(act.get_Money()<0) {

//System.out.println("对不起,您的钱数不够或卡已透支.")

return false

}

return true

}

/********卡号密码是否正确******/

protected boolean isRight(String card,String pwd)

{

if(act.get_Code().equals(card) &&act.get_Password().equals(pwd))

return true

else

return false

}

/**********密码修改**********/

protected void Set_Password() throws Exception

{

String pwd=null

int counter=0

BufferedReader br=new BufferedReader(new InputStreamReader(System.in))

do {

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

pwd=br.readLine()

if(act.get_Password().equals(pwd))

{

do {

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

String pwd1=br.readLine()

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

String pwd2=br.readLine()

if(!pwd1.equals(pwd2))

{

System.out.println("两次输入不一致,请再次输入.")

}

else

{

System.out.println("密码修改成功,请使用新密码.")

Welcome()

SysOpter()

}

}while(true)

}

}while(counter>3)

}

/**********锁定机器**********/

protected void Lock_Sys() {

System.out.println("对不起,您的操作有误,卡已被没收.")

System.exit(1)

}

/**********结束系统**********/

protected void Exit_Sys() {

System.out.println("感谢您使用本系统,欢迎下次在来,再见!")

System.exit(1)

}

}public class Text

{

public static void main(String[] args) throws Exception

{

ATM atm=new ATM()

atm.Welcome()

atm.Load_Sys()

// atm.Exit_Sys()

}

} //模拟ATM取款机工作流程 import java.util.Scannerpublic class Atm {

public Atm() {

}

public static void main(String[] args) {

// TODO code application logic here

Scanner sc = new Scanner(System.in)

int password = 0

int count = 0

int choice = 0

int type = 0

int input = 0

int acount = 1000

boolean exit = false

int flag = 0

do{

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

password = sc.nextInt()

count++

}while(password != 12345 &&count<3)

if(password == 12345){

//密码正确继续后面的操作。

do{

System.out.println("请选择您的操作,1.查询 2.取款")

choice = sc.nextInt()

switch(choice){

case 1:

do{

System.out.println("请选择帐户类型:1. 美元 2. 人民币")

type = sc.nextInt()

if(type == 1){

System.out.println("You have $"+acount+"!")

}else if(type == 2){

System.out.println("您有"+acount+"圆!")

}else{

System.out.println("类型选择错误,请重新选择!")

}

System.out.println("1.继续 2.离开")

flag = sc.nextInt()

if(flag == 1){

exit = false

}else{

exit = true

}

}while(type!=1 &&type!=2)

break

case 2: do{

System.out.println("请选择帐户类型:1. 美元 2. 人民币")

if(type == 1){

System.out.println("Please input number of your money!")

input = sc.nextInt()

if(input >acount){

System.out.println("You have not enough money!")

}else{

System.out.println("You take care of your money!")

}

System.out.println("1.continue 2.exit")

flag = sc.nextInt()

if(flag == 1){

exit = false

}else{

exit = true

}

}else if(type == 2){

System.out.println("请输入您要取的金额!")

input = sc.nextInt()

if(input >acount){

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

}else{

System.out.println("请妥善保管您的钱!")

acount = acount - input

}

System.out.println("1.继续 2.离开")

flag = sc.nextInt()

if(flag == 1){

exit = false

}else{

exit = true

}

}else{

System.out.println("类型选择错误,请重新选择!")

}

}while(type!=1 &&type!=2)

break

default: System.out.println("类型选择错误,请重新选择!")

}

}while(choice!=1 &&choice!=2 || exit == false)

}else{

//密码错误,退出。

System.out.println("三次密码错误,吞卡!")

}

}

}

我现写的: import java.util.Scannerpublic class ATM {

private static String theName = "admin"

private static String thePassword = "123456"

private static int balance = 10000

public static void getBalance(){

System.out.println("当前余额:" + balance)

}

public static void drawMoney(Scanner sc){

int money = 0

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

money = sc.nextInt()

String type = ""

if (balance >0) {

if (balance >= money) {

if (money <= 5000) {

balance = balance - money

type = "请在30秒内提取现金...\n剩余余额:"+balance

} else if (money <= 0) {

type = "金额错误"

} else {

type = "超出最大限制金额"

}

} else {

type = "超出最大余额"

}

} else {

type = "余额不足"

}

System.out.println(type)

}

public static void bankMoney(Scanner sc){

int money = 0

System.out.println("请输入存储金额:")

money = sc.nextInt()

String type = ""

if (money >0) {

balance = balance + money

type = "存储成功,现有余额:" + balance

} else {

type = "存储金额不能为负"

}

System.out.println(type)

}

public static void updatePass(Scanner sc){

String oldPass = ""

String newPass1 = ""

String newPass2 = ""

while(true){

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

oldPass = sc.next()

if (oldPass.equals(thePassword)) {

break

} else {

System.out.println("密码错误,请重新输入")

}

}

while(true){

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

newPass1 = sc.next()

System.out.println("再次输入")

newPass2 = sc.next()

if (newPass1.equals(newPass2)) {

if (!isSame(newPass1)) {

thePassword = newPass1

System.out.println("修改成功")

break

} else {

System.out.println("所有字符不能相同,重新输入")

}

} else {

System.out.println("两次输入不一致,重新输入")

}

}

}

public static boolean isSame(String string){

boolean bool = false

for (int i = 0i <string.length() - 1i++) {

char char1 = string.charAt(i)

for (int j = i + 1j <string.length()j++) {

char char2 = string.charAt(j)

if (char1 == char2) {

bool = true

break

}

}

}

return bool

}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in)

while(true){

String name = ""

String password = ""

System.out.println("请输入账号:")

name = sc.next()

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

password = sc.next()

if (name.equals(theName) &&password.equals(thePassword)) {

break

} else {

System.out.println("账号或密码错误,请重新输入!")

}

}

while(true){

int operate = 0

System.out.println("请选择你要进行的操作:\n1、查询 2、取款 3、存款 4、修改密码 0、退出")

operate = sc.nextInt()

if (0 == operate) {

System.out.println("谢谢使用!")

break

} else if (1 == operate) {

getBalance()

} else if (2 == operate) {

drawMoney(sc)

} else if (3 == operate) {

bankMoney(sc)

} else if (4 == operate) {

updatePass(sc)

}

}

}

}