Project
JAVA 자바 - 은행 관리 시스템 만들기
반응형
자바- 은행관리 시스템 만들기
계좌를 생성, 계좌 목록을 확인,
계좌 번호를 입력 받아 얼마를 예금하는지, 출금하는지 체크
출력문
소스 코드
BankApp - Class
import java.text.DecimalFormat;
import java.util.Scanner;
/* (Banking)
*/
public class BankApp {
private static Account[] accountArray = new Account[100];
private static Scanner sc = 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 = sc.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 = sc.next();//출금 계좌번호 입력
account = findAccount(ano);//입력받은 정보로 계좌조회
if(account==null)
System.out.println("계좌번호를 확인하세요");
else
break;//반복문 빠져나가기
}
//출금처리
System.out.print("출금할 금액을 입력하세요>");
int amount = sc.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 = sc.next();//계좌번호 입력
account = findAccount(ano);//입력된 값으로 계좌배열에서 해당하는 계좌정보를 찾아서 리턴받음
if(account==null)//해당하는 계좌가 없으면
System.out.println("계좌번호를 확인하세요>");
else
break;//계속 입력받다가 계좌번호가 맞아서 계좌정보를 얻어오면
}//반복문을 빠져나감.
System.out.print("입금할 금액을 입력하세요>");
int amount = sc.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 = sc.next();//소유주 입력
System.out.print("초기입금액>");
int amount = sc.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;
}
}
Account - Class
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;
}
}
}
반응형
'Project' 카테고리의 다른 글
자바 - 회원계정 관리 프로그램 (0) | 2020.12.05 |
---|---|
JAVA - 성적관리 프로그램 만들기 (0) | 2020.11.22 |
JAVA(자바) - 휴대폰 매장 계약서 작성 시스템 만들기 (0) | 2020.11.19 |
JAVA - 제품 관리 프로그램 (0) | 2020.11.19 |
JAVA - 학생 성적 관리 프로그램 / 장학금 여부 / 학점제 / 총합 평균 (0) | 2020.11.12 |
댓글