[JAVA] 은행관리프로그램 만들기 (1.계좌생성|2.계좌목록|3.예금|4.출금|5.종료)
1.계좌생성|2.계좌목록|3.예금|4.출금|5.종료
2018-11-17
메뉴를 작성하고 각 기능을 부여하기.
주안점) 객체의 null여부를 확인해야 합니다.
계좌번호가 맞는 것이 있으면 account를 넘겨줍니다.
accountList();
배열의 길이만큼 돌면서 계좌의 정보를 출력합니다.
PREFIX로 상수입니다.
DecimalFormat로 공백에 '0'을 균일하게 부여함.
ctrl+shift+"O"필요
ex) 0001,0010
아래의 코드는 Test1103 패키지에 작성합니다.
이클립스 상에서 Ctrl & Shift & "O" 의 키를 눌러서 아래의 내용을 자동으로 추가함.
import java.text.DecimalFormat;
import java.util.Scanner;
package Test1103;
import java.text.DecimalFormat;
import java.util.Scanner;
public class BankApp {
private static Account[] accountArray = new Account[100];
private static Scanner scanner = new Scanner(System.in);
private static final String PREFIX = "Bank-";
private static int seq=0;//계좌번호 자동발번
private static boolean isCreated=false;//계좌등록여부
public static void main(String[] args) {
boolean run =true;
while(run) {
System.out.println("-------------------------------------");
System.out.println("1.계좌생성|2.계좌목록|3.예금|4.출금|5.종료");
System.out.println("-------------------------------------");
System.out.print("선택>");
int selectNo = scanner.nextInt();
switch(selectNo) {
case 1: createAccount(); break;
case 2: accountList(); break;
case 3: deposit(); break;
case 4: withdraw(); break;
case 5: run=false; break;
}
}
System.out.println("프로그램 종료");
}
//출금 메소드
private static void withdraw() {
if(!isRegistered()) {
System.out.println("먼저 계좌등록을 하세요");
return;//메소드 실행 종료.
}
//계좌번호 출력
accountList();
//계좌번호 선택
System.out.println("출금할 계좌번호를 선택하세요>");
//출금(잔액<출금액)
Account account;
while(true) {
String ano = scanner.next();//출금 계좌번호 입력
account = findAccount(ano);//입력받은 정보로 계좌조회
if(account==null)
System.out.println("계좌번호를 확인하세요");
else
break;//반복문 빠져나가기
}
//출금처리
System.out.print("출금할 금액을 입력하세요>");
int amount = scanner.nextInt();
int result;
try {
result = account.withdraw(amount);//잔액 >출금액보다 큰 경우
System.out.println("출금액:"+result);
}catch(Exception e) {//잔액 <출금액보다 작은경우
System.out.println(e.getMessage());
}
}//출금 메소드 끝.
private static void deposit() {
if(!isRegistered()) {// if(!isCreated)
System.out.println("먼저 계좌등록을 하세요");
return;//return;-더이상 진행을 하지 않고 메소드 호출한곳으로 되돌아감.
}
//계좌번호 출력
accountList();
//계좌번호 선택
System.out.println("입금할 계좌번호를 선택하세요>");
//입금
Account account;
while(true) {
String ano = scanner.next();//계좌번호 입력
account = findAccount(ano);//입력된 값으로 계좌배열에서 해당하는 계좌정보를 찾아서 리턴받음
if(account==null)//해당하는 계좌가 없으면
System.out.println("계좌번호를 확인하세요>");
else
break;//계속 입력받다가 계좌번호가 맞아서 계좌정보를 얻어오면
}//반복문을 빠져나감.
System.out.print("입금할 금액을 입력하세요>");
int amount = scanner.nextInt();
account.deposit(amount);//입금 처리
System.out.println("예금 성공");
}
private static void accountList() {
if(!isRegistered()) {// if(!isCreated)
System.out.println("먼저 계좌등록을 하세요");
return;//return;-더이상 진행을 하지 않고 메소드 호출한곳으로 되돌아감.
}
for(int i=0;i<accountArray.length;i++) {
if(accountArray[i]!=null) {
System.out.println(accountArray[i].getAno()+accountArray[i].getOwner()+accountArray[i].getBalance());
}
}
}//계좌 리스트 메소드 끝.
private static void createAccount() {
//Bank-0001, 홍길동, 100000
//계좌번호 자동발번
String ano
= PREFIX+String.format(new DecimalFormat("0000").format(++seq));
System.out.print("소유주명>");
String owner = scanner.next();//소유주 입력
System.out.print("초기입금액>");
int amount = scanner.nextInt();//초기입금액 입력
for(int i=0;i<accountArray.length;i++) {
if(accountArray[i]==null) {
accountArray[i]
=new Account(ano,owner,amount);
System.out.println("계좌 등록 성공");
isCreated=true;
//isCreated변수는 static이라서 최종값을 가지고있음
break;
}
//반복문 빠져나가기
}
}//메소드끝.
//계좌등록 여부 확인
private static boolean isRegistered() {
return isCreated;//최종상태값을 리턴
//초기값은 false이고, 계좌를 등록하면 true
}
//입력된 계좌번호로 계좌정보 조회
private static Account findAccount(String ano) {
Account account=null;
for(int i =0;i<accountArray.length;i++) {
if(accountArray[i]!=null)
if(accountArray[i].getAno().equals(ano)) {
//문자열의 내용비교: 문자열1.equals(문자열2)
account = accountArray[i];
}
}
return account;
}
}
package Test1103;
public class Account {
//필드
private String ano;//계좌번호
private String owner;//소유자
private int balance;//잔고
//생성자
public Account(String ano, String owner, int balance) {
//super();//=> Account extends Object
this.ano = ano;
this.owner = owner;
this.balance = balance;
}
//메소드
protected String getAno() { return ano; }
protected void setAno(String ano) { this.ano = ano; }
protected String getOwner() { return owner; }
protected void setOwner(String owner) { this.owner = owner; }
protected int getBalance() { return balance; }
protected void setBalance(int balance) {this.balance = balance; }
public void deposit(int amount) {
this.balance+=amount;
}
public int withdraw(int amount) throws Exception {//예외 처리를 호출한 곳으로 떠넘김
if(this.balance<amount) { //강제 예외 처리
throw new Exception("잔액이 모자랍니다.");
//new Exception() 예외객체 생성
//throw:생성한 예외 객체를 호출한 쪽을 넘김
//메소드의 매개변수 옆에 있는 throws Exception은 호출한 쪽으로 예외를 넘기는 문장
//이 문장이 있으면 호출한 곳에서도 예외 처리를 해줘야함.
}else { //this.balance>=amount
this.balance-=amount;
return amount;
}
}
}
'IT 정보기술, 전자, 통신' 카테고리의 다른 글
(무료) SAS 유니버시티 다운로드 (0) | 2019.05.18 |
---|---|
(Google) Docswave 소개 및 영상 (0) | 2018.12.04 |
정부24 어플로 주민등록등본 및 초본을 인쇄할 수 있을까? (0) | 2017.09.23 |
[노트8 개봉샷] 사전 구매로 구매한 갤럭시 노트8-강남역lg직영점,s9 (0) | 2017.09.14 |
IPHONE 5 WHITE 16GB (0) | 2014.04.18 |
댓글