1、需求说明
- 登录:请输入卡号,输入密码,登录判断,
- 功能:存款、取款、查看余额、转账、修改密码、退出系统
- 修改密码:请输入原始密码(核对)不正确请重新输入密码,输入新密码,确实输入新密码(比较)提示修改成功
- 张三-李四:转给谁,输入转账金额,去判断张三的余额够不够,提示,终止转账,
- 张三的余额-转账的钱。
- 李四的余额+转账的钱。
2、开户及登录
首先开户,需要输入用户的信息,姓名、身份证号码、卡号、密码和手机号码。然后定义相关变量。
代码如下:
import java.util.*;
/**
* user:liaoxinyue
**/
public class ATMDemo {
public static void main ( String[] args ) {
// 个人信息进行开户
// 用户1
Scanner scanner = new Scanner ( System.in );
String[] user1 = { "张三" , "510109200208070026" , "4321" , "1234" , "123456789" };
double money1 = 1000.0;
// 用户2
String[] user2 = { "李四" , "510109200208070027" , "34567" , "76543" , "123456789" };
// //为了调试简化,先定义简单一些
double money2 = 5000.0;
// 2、登录
String[] user;
System.out.println ( "欢迎登录中国银行ATM机,请输入你的卡号" );
String no = scanner.next ( );
System.out.println ( "请输入密码" );
String pwd = scanner.next ( );
// 必要操作,系统记录是那个用户登录了,使用什么进入?
if ( no.equals ( user1[ 2 ] ) && pwd.equals ( user1[ 3 ] ) ) {
System.out.println ( "登录成功" );
user = user1;
}
if ( no.equals ( user2[ 2 ] ) && pwd.equals ( user2[ 3 ] ) ) {
System.out.println ( "登录成功" );
user = user2;
}
}
}
运行结果如下:
3、菜单显示
存款、取款、查看余额、转账、修改密码、退出系统
代码如下:
String[] user = null;
System.out.println ( "欢迎登录中国银行ATM机,请输入你的卡号" );
String no = scanner.next ( );
System.out.println ( "请输入密码" );
String pwd = scanner.next ( );
// 必要操作,系统记录是那个用户登录了,使用什么进入?
if ( no.equals ( user1[ 2 ] ) && pwd.equals ( user1[ 3 ] ) ) {
System.out.println ( "登录成功" );
user = user1;
}
if ( no.equals ( user2[ 2 ] ) && pwd.equals ( user2[ 3 ] ) ) {
System.out.println ( "登录成功" );
user = user2;
}
System.out.println ( user[ 0 ] + "登录成功!" );
do {
System.out.println ( "===============中国银行ATM机自动存取系统=================" );
System.out.println ( "1.存款\t2.取款\t3.转账、4.查询余额\t5.修改密码\t6、退出系统" );
System.out.println ( "===================================================" );
System.out.println ( "请输入你需要办理的业务编号" );
String input = scanner.next ( );
switch ( input ) {
case "1":
System.out.println ( "执行存款操作" );
break;
case "2":
System.out.println ("执行取款操作" );
break;
case "3":
System.out.println ("执行转账操作" );
break;
case "4":
System.out.println ("查询余额" );
break;
case "5":
System.out.println ( "修改密码");
break;
case "6":
System.out.println ("谢谢使用,退出系统成功" );
System.exit ( -1 );
break;
}
}
while ( true );
4、实现取款操作
设置取款变量,判断取款金额是否大于余额,或者是小于余额。
case "2":
System.out.println ( "请输入需要取款金额" );
int OutputMoney = scanner.nextInt ( );
if ( OutputMoney < 0||OutputMoney>userMoney ) {
System.out.println ( "输入错误" );
}
else {
userMoney -= OutputMoney;
System.out.println ( "取款成功,当前余额为:" + userMoney );
}
break;
运行结果如下:
5、实现转账操作
case "4":
System.out.println ( "请输入收款方卡号" );
String SkfNo = scanner.next ( );
if ( user[ 2 ].equals ( SkfNo ) ) {
System.out.println ( "不能给自己转账!" );
continue;
}
System.out.println ( "请输入转账金额" );
double mount = scanner.nextDouble ( );
if ( mount < 0 ) {
System.out.println ( "输入错误" );
continue;
}
if ( user[ 3 ].equals ( "1234" ) ) {
money1 -= mount;
money2 += mount;
}
else if ( user[ 3 ].equals ( "76543" ) ) {
money2 -= mount;
money1 += mount;
}
break;
运行结果如下:
6、实现修改密码
代码如下:
case "5":
System.out.println ( "请输入原始密码" );
String OldPwd= scanner.next ( );
if ( !(user[3].equals ( OldPwd )) ){
System.out.println ("原始密码不一致" );
continue;
}
System.out.println ("请输入新的密码" );
String NewPwd= scanner.next ( );
if ( OldPwd.equals ( NewPwd ) ){
System.out.println ("密码相同请重新输入" );
NewPwd= scanner.next ( );
}
System.out.println ("请再次输入新的密码" );
String NewPwd2= scanner.next ( );
if ( !NewPwd.equals ( NewPwd2 ) ){
System.out.println ("两次密码不一致" );
continue;
}
if ( user[3].equals ( "1234" ) ){
user1[3]=NewPwd;
}
if ( user[3].equals ( "76543" ) ){
user2[3]=NewPwd;
}
System.out.println ("密码修改成功" );
break;
运行结果如下:
7、退出登录
代码如下:
case "6":
System.out.println ( "谢谢使用,退出系统成功" );
if ( input.equals ( "6" ) ) {
isFlag = false;
break;
}
运行结果:
8、完整代码
代码如下:
import java.util.*;
/**
* user:liaoxinyue
**/
public class ATMDemo {
public static void main ( String[] args ) {
// 个人信息进行开户
// 用户1
Scanner scanner = new Scanner ( System.in );
String[] user1 = { "张三" , "510109200208070026" , "4321" , "1234" , "123456789" };
double money1 = 1000.0;
// 用户2
String[] user2 = { "李四" , "510109200208070027" , "34567" , "76543" , "123456789" };
// //为了调试简化,先定义简单一些
double money2 = 5000.0;
boolean isFlag = true;
// 2、登录
do {
String[] user = null;
// double userMoney = 0;
System.out.println ( "欢迎登录中国银行ATM机,请输入你的卡号" );
String no = scanner.next ( );
System.out.println ( "请输入密码" );
String pwd = scanner.next ( );
// 必要操作,系统记录是那个用户登录了,使用什么进入?
if ( no.equals ( user1[ 2 ] ) && pwd.equals ( user1[ 3 ] ) ) {
System.out.println ( "登录成功" );
user = user1;
// userMoney = money1;
}
if ( no.equals ( user2[ 2 ] ) && pwd.equals ( user2[ 3 ] ) ) {
System.out.println ( "登录成功" );
user = user2;
// userMoney = money2;
}
System.out.println ( user[ 0 ] + "登录成功!" );
do {
System.out.println ( "===============中国银行ATM机自动存取系统=================" );
System.out.println ( "1.存款\t2.取款\t3.查询余额\t4.转账\t5.修改密码\t6.退出系统" );
System.out.println ( "===================================================" );
System.out.println ( "请输入你需要办理的业务编号" );
String input = scanner.next ( );
switch ( input ) {
case "1":
System.out.println ( "请输入存款金额" );
double InputMoney = scanner.nextDouble ( );
// if语句只有一行时,可以省略{}
if ( InputMoney < 0 ) {
System.out.println ( "输入错误" );
continue;
} else {
if ( user[ 3 ].equals ( "1234" ) ) {
money1 += InputMoney;
System.out.println ( "存款成功,当前余额为:" + money1 );
}
if ( user[ 3 ].equals ( "76543" ) ) {
money2 += InputMoney;
System.out.println ( "存款成功,当前余额为:" + money2 );
}
}
break;
case "2":
System.out.println ( "请输入需要取款金额" );
double OutputMoney = scanner.nextDouble ( );
if ( user[ 3 ].equals ( "1234" ) ) {
if ( OutputMoney < 0 ) {
System.out.println ( "输入错误" );
} else if ( OutputMoney > money1 ) {
System.out.println ( "余额不足" );
} else {
money1 -= OutputMoney;
System.out.println ( "取款成功,当前余额为:" + money1 );
}
} else if ( user[ 3 ].equals ( "76543" ) ) {
if ( OutputMoney < 0 ) {
System.out.println ( "输入错误" );
} else if ( OutputMoney > money2 ) {
System.out.println ( "余额不足" );
} else {
money2 -= OutputMoney;
System.out.println ( "取款成功,当前余额为:" + money2 );
}
}
break;
case "3":
if ( user[ 3 ].equals ( "1234" ) ) {
System.out.println ( "当前余额为:" + money1 );
} else if ( user[ 3 ].equals ( "76543" ) ) {
System.out.println ( "当前余额为:" + money2 );
}
break;
case "4":
System.out.println ( "请输入收款方卡号" );
String SkfNo = scanner.next ( );
if ( user[ 2 ].equals ( SkfNo ) ) {
System.out.println ( "不能给自己转账!" );
continue;
}
System.out.println ( "请输入转账金额" );
double mount = scanner.nextDouble ( );
if ( mount < 0 ) {
System.out.println ( "输入错误" );
continue;
}
if ( user[ 2 ].equals ( "4321" ) ) {
if ( mount > money1 ) {
System.out.println ( "转账失败,余额不足" );
continue;
}
if ( mount < money1 ) {
money1 -= mount;
money2 += mount;
System.out.println ( "转账成功,当前余额为:" + money1 );
}
} else if ( user[ 3 ].equals ( "34567" ) ) {
if ( mount > money2 ) {
System.out.println ( "转账失败,余额不足" );
continue;
}
if ( mount < money2 ) {
money2 -= mount;
money1 += mount;
System.out.println ( "转账成功,当前余额为:" + money2 );
}
}
break;
case "5":
System.out.println ( "请输入原始密码" );
String OldPwd = scanner.next ( );
if ( ! ( user[ 3 ].equals ( OldPwd ) ) ) {
System.out.println ( "原始密码不一致" );
continue;
}
System.out.println ( "请输入新的密码" );
String NewPwd = scanner.next ( );
if ( OldPwd.equals ( NewPwd ) ) {
System.out.println ( "密码相同请重新输入" );
NewPwd = scanner.next ( );
}
System.out.println ( "请再次输入新的密码" );
String NewPwd2 = scanner.next ( );
if ( ! NewPwd.equals ( NewPwd2 ) ) {
System.out.println ( "两次密码不一致" );
continue;
}
if ( user[ 3 ].equals ( "1234" ) ) {
user1[ 3 ] = NewPwd;
}
if ( user[ 3 ].equals ( "76543" ) ) {
user2[ 3 ] = NewPwd;
}
System.out.println ( "密码修改成功" );
break;
case "6":
System.out.println ( "谢谢使用,退出系统成功" );
if ( input.equals ( "6" ) ) {
isFlag = false;
break;
}
break;
}
}
while ( isFlag );
}
while ( true );
}
}