要求:使用字符用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
1、查询余额:初始余额为10000元
2、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
3、ATM存款:不能出现负存款。
4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
(卡号密码余额放到文件中)
*/
public class Test {
private static int account
private static int password
private static int money
private static boolean isLogin
static{
account = 123456
password = 123456
money = 10000
isLogin = false
}
//存款
public void cun(int cunKuan){
if(cunKuan>=0){
this.money += cunKuan
}else{
System.out.println("存款不能为负!")
}
}
//取款
public void qu(int quKuan){
if(this.money - quKuan < 0){
System.out.println("余额不足!")
return
}
if(isValid(quKuan)){
this.money -= quKuan
}else{
System.out.println("取款不能为负,且应为100的倍数!")
}
}
//判断是否为有效的金额
private boolean isValid(int money){
if(money >= 0 && money % 100 == 0){
return true
}
return false
}
//登陆
public void login(){
System.out.println("请输入账号和密码【格式为:账号/密码】")
String login = new Scanner(System.in).next()
if(login.equalsIgnoreCase("123456/123456")){
this.isLogin = true
}else{
System.out.println("账号或者密码错误,请重新输入!")
login()
}
}
//主菜单
public void show(){
System.out.println("[1]存款")
System.out.println("[2]取款")
System.out.println("[3]退出")
System.out.println("请输入:")
int key = new Scanner(System.in).nextInt()
switch (key) {
case 1:
cun(new Scanner(System.in).nextInt())
break
case 2:
qu(new Scanner(System.in).nextInt())
break
case 3:
System.exit(0)
default:
break
}
}
public static void main(String[] args) {
Test t = new Test()
t.login()
if(t.isLogin){
for(){
t.show()
System.out.println("您当前的余额为:" + t.money)
}
}
}
}
package demoimport java.util.Scanner
public class Test3 {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in)
int cnt=3
String username = null
String password = null
double money = 1000
String targetName = "admin33"
double targetMoney = 1000
while(true){
if(username!=null&&password!=null){
if("admin".equals(username) &&"123".equals(password)){
System.out.println("欢迎光临")
while(true){
System.out.println("请选择您的 *** 作 1 取钱 2 存钱 3 转账 4 查询 5 退出 ")
int n = scanner.nextInt()
if(n==1){//取钱
System.out.println("请输入金额")
int getter = scanner.nextInt()
if(getter>=0){
if(getter<=5000){
if(getter<=money){
money-=getter
}else{
System.out.println("余额不足")
}
}else{
System.out.println("单笔只能取5000及以下")
}
}else{
System.out.println("银行不到给")
}
}else if(n==2){//存钱
System.out.println("请输入金额")
int save = scanner.nextInt()
if(save>=0){
money+=save
}
}else if(n==3){//转账
System.out.println("请输入目标账户")
String target = scanner.next()
if(target.equals(targetName)){
System.out.println("请输入金额")
int getter = scanner.nextInt()
if(getter>=0){
if(getter<=5000){
if(getter<=money){
money-=getter
targetMoney+=getter
}else{
System.out.println("余额不足")
}
}else{
System.out.println("单笔只能取5000及以下")
}
}else{
System.out.println("银行不到给")
}
}
}else if(n==4){//查询
System.out.println(money)
}else if(n==5){//退出
System.exit(0)
}else{
System.out.println("没有该项服务")
}
}
}else{
cnt--
System.out.println("输入错误,您还有"+cnt+"次机会")
username=null
password=null
if(cnt<=0){
System.out.println("对不起,您的账号被冻结,请到最近的营业厅解除冻结")
System.exit(0)
}
}
}else{
System.out.println("请输入您的账号")
username = scanner.next()
System.out.println("请输入您的密码")
password = scanner.next()
}
}
}
}
很简单的例子,我把代码贴出来吧import java.util.Scanner
public class ATM {
/**
* @param args
*/
public static void main(String[] args) {
Scanner in = null
int result
double drawMoney
double depositMoney
Account account = new Account()
while (true) {
System.out.println("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(ABC)中国农业银行ATM自动存取款机☆☆☆☆☆☆☆☆☆☆☆☆☆")
System.out.println("\n\t\t\t\t1.存款业务")
System.out.println("\n\t\t\t\t2.取款业务")
System.out.println("\n\t\t\t\t3.查询余额")
System.out.println("\n\t\t\t\t4.退出ATM系统")
System.out.println("\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆中国农业银行欢迎您的使用☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆")
in = new Scanner(System.in)
switch (in.nextInt()) {
case 1:
System.out.println("请输入您的存款数额!")
depositMoney = in.nextDouble()
if(depositMoney <0)
System.out.println("您的输入无效,请重新输入!")
result = account.deposit(depositMoney)
if(result == 0){
System.out.println("存款业务完成,是否显示余额?Y/N")
if("Y".equalsIgnoreCase(in.next())){
System.out.println("您当前的余额为:"+account.checkCurrent())
}else {
break
}
}else {
System.out.println("无法完成交易!")
break
}
break
case 2:
System.out.println("请输入您的取款数额!")
drawMoney = in.nextDouble()
if (drawMoney <0) {
System.out.println("您的输入无效,请重新输入!")
}
result = account.withDraw(drawMoney)
if (result == 0) {
System.out.println("存款业务完成,是否显示余额?Y/N")
if("Y".equalsIgnoreCase(in.next())){
System.out.println("您当前的余额为:"+account.checkCurrent())
}else {
break
}
} else {
System.out.println("无法完成交易!")
break
}
case 3:
System.out.println("您当前的余额为:"+account.checkCurrent())
break
case 4:
break
default:
break
}
}
}
}
public class Account {
private double currentMoney//当前余额
public double getCurrentMoney() {
return currentMoney
}
public void setCurrentMoney(double currentMoney) {
if (currentMoney >0) {
this.currentMoney = currentMoney
}
}
/**
* 取款业务
* @param drawMoney
* @return 0代表成功,1代表失败
*/
public int withDraw(double drawMoney) {
if (currentMoney >0 &&drawMoney <= currentMoney) {
currentMoney -= drawMoney
} else {
System.out.println("您的余额已不足!")
return 1
}
return 0
}
/**
* 存款业务
* @param depositMoney
* @return 0代表成功,1代表失败
*/
public int deposit(double depositMoney) {
if (depositMoney >0) {
currentMoney += depositMoney
return 0
}else {
System.out.println("您提交的存款为负数,无法完成存款交易")
return -1
}
}
/**
* 查询余额业务
* @return
*/
public double checkCurrent() {
return currentMoney
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)