Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Full-Stack 개발자가 되려는 작은 개발자의 블로그

가계부 프로그램 본문

강의 정리/Java

가계부 프로그램

jhjin 2020. 3. 26. 14:40

가계부 출력 부분

	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