2013-10-20 117 views
0
import java.text.SimpleDateFormat; 
import java.util.*; 
import java.io.*; 
public class ATM { 
String names []= {"Nikhil", "Sam", "Raj", "Saron", "Abi", "Adi"}; 
int card[]={1806978,1244668,5769124,7658301,6571354,5155499}; 
int pin[]={4444, 3333, 2222, 1111, 6666, 7988}; 
int balance []={10000, 23345, 24673, 37532, 43637, 37356}; 
Scanner s=new Scanner(System.in); 
int f,ch, z=0; 
static int opt=0; 

public static void main(String args []) { 
    int enter=0; 
    ATM k=new ATM(); 
    k.info(); 
    k.login(enter); 
    int temp=k.login(enter); 
    if(enter==1){ 
     k.menu(temp); 
    }else{ 
     System.out.println("Wrong card no. or pincode"); 
    } 

} 


    void info(){ 
    Calendar calender = Calendar.getInstance(); 
    SimpleDateFormat dateformatter = new SimpleDateFormat(" dd EEEEEEEEE',' yyyy "); 
    SimpleDateFormat timeformatter = new SimpleDateFormat(" hh:mm:ss a"); 
    System.out.println(""); 
    System.out.println("     ****************************************************************  "); 
    System.out.println("     ***       HSBC's ATM      ***   "); 
    System.out.println("     ****************************************************************  "); 
    System.out.println("     Date - "+ dateformatter.format(calender.getTime())); 
    System.out.println("     Time - "+timeformatter.format(calender.getTime())); 
    System.out.println("     ****************************************************************  "); 
    System.out.println(""); 
    } 

    int login(int enter){ 
    System.out.println("     >> Enter card number - "); 
    int card_no=s.nextInt(); 
    System.out.println("     >> Enter pin number - "); 
    int pin_no= s.nextInt(); 
    for (int i=0;i<=5;i++){ 

    if (card [i]==card_no && pin[i]==pin_no) 
      enter=1; 
      z=i; 

    } 
    return z; 
    } 
void menu (int temp){ 
    System.out.println("     Welcome "+names[temp]); 
    System.out.println("     Your Card no: is " + card[temp]); 
    System.out.println("     ###############################################  "); 
    System.out.println("     >>> [1]. Cash Withdrawal "); 
    System.out.println(""); 
    System.out.println("     >>> [2]. Fast Cash "); 
    System.out.println(""); 
    System.out.println("     >>> [3]. Cash Deposit "); 

    opt=s.nextInt(); 

    switch (opt){ 
    case 1: 
     Calendar calender = Calendar.getInstance(); 
     SimpleDateFormat dateformatter = new SimpleDateFormat(" dd'/'MM "); 
     SimpleDateFormat timeformatter = new SimpleDateFormat(" HH:mm "); 
     ATM k=new ATM(); 
     int ammount; 
     System.out.println("     ========================== "); 
     System.out.println("     CASH WITHDRAWAL "); 
     System.out.println("     ========================== "); 
     System.out.print("     Enter amount to withdraw - Rs."); 
     ammount=s.nextInt(); 
     System.out.println("     ::::::::::::::::::::::::::::::::::::::::::::::"); 
     System.out.println("     Please wait while we process your request..."); 

if (ammount>balance[z]){ 
     System.out.println("     You do not have sufficient balance in your account."); 
     k.menu(temp); 
     for(z=1;z<=1000000000;z++) 
     System.out.print("\f"); 
}else if (ammount>25000){ 
     System.out.println("     The daily limit for cash withdrawal is Rs.25000 ."); 
     k.menu(temp); 
}else{ 
     balance[z]=balance[z]-ammount; 

     System.out.println(""); 
     System.out.println("     You have withdrawn Rs."+ammount+" from your account."); 
     System.out.println("     Please collect the cash."); 
     System.out.println("     Current Balance - Rs."+balance[z]); 
     System.out.println("     ::::::::::::::::::::::::::::::::::::::::::::::"); 
     } 
     break; 
    case 2: 
     int fast[]={100,500,1000,5000}; 
     System.out.println("     ========================== "); 
     System.out.println("     FAST CASH WITHDRAWAL "); 
     System.out.println("     ========================== "); 
     System.out.println("     Please select a desired amount."); 
     System.out.println("     (1) Rs. 100 "); 
     System.out.println("     (2) Rs. 500 "); 
     System.out.println("     (3) Rs. 1000 "); 
     System.out.println("     (4) Rs. 5000 "); 
     System.out.print("      Your choice ? "); 
     ch=s.nextInt(); 
     if (fast[ch-1]>balance[z]) 
     { 
     System.out.println("     You do not have sufficient balance in your account."); 
     }else{ 
      switch(ch) 
      { 
      case 1: 
      balance[z]=balance[z]-fast[ch-1]; 
      break; 
      case 2: 
      balance[z]=balance[z]-fast[ch-1]; 
      break; 
      case 3: 
      balance[z]=balance[z]-fast[ch-1]; 
      break; 
      case 4: 
      balance[z]=balance[z]-fast[ch-1]; 
      break; 
      } 
     } 
     System.out.println(""); 
     System.out.println("     You have withdrawn Rs. "+fast[ch-1]+" from your account."); 
     System.out.println("     Please collect the cash."); 
     System.out.println("     Current Balance - Rs."+balance[z]); 
     System.out.println("     ::::::::::::::::::::::::::::::::::::::::::::::"); 
     break; 
    case 3: 
     System.out.println("     ========================== "); 
     System.out.println("     CASH DEPOSIT "); 
     System.out.println("     ========================== "); 
     System.out.print("     Enter amount to deposit - Rs."); 
     int deposite =s.nextInt(); 
     System.out.println("     ::::::::::::::::::::::::::::::::::::::::::::::"); 
     System.out.println("     Please wait while we process your request..."); 
     System.out.println(""); 
     System.out.println("     You have deposited Rs."+deposite+" to your account."); 
     System.out.println("     The amount will be credited shortly."); 
     System.out.println("     Current Balance - Rs."+balance[z]+" + Rs."+deposite); 
     System.out.println("     ::::::::::::::::::::::::::::::::::::::::::::::"); 
     break; 
    case 4: 
     System.out.println("     ========================== "); 
     System.out.println("     BALANCE ENQUIRY "); 
     System.out.println("     ========================== "); 
     System.out.println("     Account Number - "+card[z]); 
     System.out.println("     Available Balance - Rs."+balance[z]); 
     System.out.println("     ::::::::::::::::::::::::::::::::::::::::::::::"); 
     System.out.println("     Please collect the reciept..."); 
    } 
} 
} 

无论我输入什么作为PIN号码或卡号(即使它是正确的),我都会收到消息“错误的卡号或pincode”并且它还要求我提供卡号和密码两次。任何有关改进代码的建议将不胜感激。ATM项目,逻辑错误

+1

1)使用一致的和逻辑的缩进代码块。代码的缩进旨在帮助人们理解程序流程。 2)'int enter = 0; .. if(enter == 1){'我在这两者之间的语句中看不到任何地方,'enter'的值在哪里变化。你为什么期望它进入'else'? –

回答

0

这里有相当多的问题:

  1. 没有更改这个enter没有地方所以这将是始终为0,你的if条件将永远假的int enter=0;值。
  2. 每你的代码流我假设你是从k.login(enter);方法返回10这样。
  3. 您正在将该值分配给int temp=k.login(enter);,但您正在与enter进行比较,这在逻辑上是错误的,您需要将其与temp进行比较。

同时显示您的login方法的代码,基于此我将修改答案。

+0

我不太确定我在“enter”变量的主函数中究竟要做些什么。 – user2711784

0

问题不在于在登录方法中的for循环,您传递的输入值是问题所在。 在登录方法设置的输入值被设置为本地值,输入始终为0。请检查并纠正它应该工作的罚款