Full-Stack 개발자가 되려는 작은 개발자의 블로그
가계부 프로그램 본문
가계부 출력 부분
private static void printData() { //데이터 출력을 위한 메소드
System.out.println("======================================");
System.out.println("1.전체 출력, 2.수입내역출력 3.지출내역출력");
System.out.println("======================================");
System.out.print("선택 > ");
int menu = Integer.parseInt(scan.nextLine());
//출력의 성공 여부를 저장하는 boolean타입의 변수(성공 시 false로 변환)
flag=true;
while(flag) { //출력이 성공하면 출력 무한반복 종료
switch(menu) {
case 1:
printAllContent(); //전체 내역 출력
break;
case 2:
printInContent(); //수입 내역 출력
break;
case 3:
printOutContent(); //지출 내역 출력
break;
default :
System.out.println("다시 입력해주세요");
break;
}
}
}
private static void printAllContent() {
//등록 데이터 여부를 확인하는 메소드 호출 후
//반환 값을 받는다.(데이터가 있다면 true값 반환)
boolean end=printNoneData();
//등록 데이터가 있다면
if(end) {
//객체 배열 atmArr의 길이만큼 반복문을 실행
for(int i=0;i<atmArr.size();i++) {
//배열에서 i번째 객체를 가져와 ATM 객체 atm에 저장
ATM atm=atmArr.get(i);
//메소드를 호출한다.(객체와 총 금액을 전달)
//총 금액은 수입/지출 내역에서만 사용
printGetData(atm,0);
}
System.out.println(">>>>>> 잔액 : "+money);
//출력 메뉴의 무한 루프를 종료
flag=false;
}
}
private static void printInContent() {
ATM atm;
int total=0;
//등록 데이터 여부를 확인하는 메소드 호출 후
//반환 값을 받는다.(데이터가 있다면 true값 반환)
boolean end=printNoneData();
//등록 데이터가 있다면
if(end) {
//객체 배열 atmArr의 길이만큼 반복문을 실행
for(int i=0;i<atmArr.size();i++) {
//배열에서 i번째 객체를 가져와 ATM 객체 atm에 저장
atm=atmArr.get(i);
//객체의 getter메소드를 통해 종류가 "수입"인 경우
if(atm.getSort().equals("수입")) {
//atm 객체와 현재까지의 총 합을 전달
total=printGetData(atm,total);
}
}
//객체 배열에서 마지막 위치(마지막 저장)의 데이터를 가져온다.
atm=atmArr.get(atmArr.size()-1);
//최종 계산 된 총 합을 출력
System.out.println("수입 총 액 : +"+total);
//마지막 객체의 잔액을 getter메소드를 통해 가져와 출력한다.
System.out.println("잔액 : "+atm.getMoney());
flag=false;
}
}
private static void printOutContent() {
ATM atm;
int total=0;
//등록 데이터 여부를 확인하는 메소드 호출 후
//반환 값을 받는다.(데이터가 있다면 true값 반환)
boolean end=printNoneData();
//등록 데이터가 있다면
if(end) {
//객체 배열 atmArr의 길이만큼 반복문을 실행
for(int i=0;i<atmArr.size();i++) {
//배열에서 i번째 객체를 가져와 ATM 객체 atm에 저장
atm=atmArr.get(i);
//객체의 getter메소드를 통해 종류가 "지출"인 경우
if(atm.getSort().equals("지출")) {
//atm 객체와 현재까지의 지출 총 합을 전달
total=printGetData(atm,total);
}
}
//객체 배열에서 마지막 위치(마지막 저장)의 데이터를 가져온다.
atm=atmArr.get(atmArr.size()-1);
//최종 계산 된 지출 총 합을 출력
System.out.println("지출 총 액 : -"+total);
//마지막 객체의 잔액을 getter메소드를 통해 가져와 출력한다.
System.out.println("잔액 : "+atm.getMoney());
flag=false;
}
}
private static boolean printNoneData() {
//객체 배열 atmArr의 값이 없을 경우
if(atmArr.size()==0) {
System.out.println("등록된 내역이 없습니다.");
//출력 메뉴를 종료하는 flag를 false로 저장한다.
flag=false;
//데이터의 등록 여부를 반환한다.(false는 데이터가 없는 경우)
return false;
}
//데이터가 등록 되어 있는 경우
return true;
}
private static int printGetData(ATM atm,int total) {
System.out.println("번호 : "+atm.getNumber());
System.out.println("날짜 : "+atm.getDate());
System.out.println("금액 : "+atm.getInOutMoney());
System.out.println("구분 : "+atm.getSort());
System.out.println("내역 : "+atm.getContent());
System.out.println("============================================================");
//이전 합산 금액 total과 현 객체의 수입/지출 금액을 합산하여 totalMon에 저장
int totalMon=total+Integer.parseInt(atm.getInOutMoney());
//다시 합산한 돈을 반환한다.
return totalMon;
}
'강의 정리 > Java' 카테고리의 다른 글
객체 지향 실습2 (0) | 2020.04.01 |
---|---|
물품 관리 프로그램(Homeminus) (1) | 2020.04.01 |
객체 지향 실습3 (0) | 2020.03.19 |
객체 지향 실습1 (0) | 2020.03.16 |
Java 기초를 이용한 로또 프로그램/야구 게임 (0) | 2020.03.15 |
Comments