[내일배움캠프 Spring_3기] Flowchart 8일차

jiiim_ni·2026년 1월 28일

도서관 대출 관리 시스템

문제 설명:
간단한 도서관 대출 관리 시스템을 설계하세요. 사용자는 도서를 대출하거나 반납할 수 있으며, 최대 대출 권수 제한과 연체료 계산 기능이 있습니다.
학습 포인트:
메뉴 기반 선택 구조
상태 관리 및 조건부 처리
계산 로직
예외 상황 처리

입력/출력 정리

1) 입력:

  • 메뉴선택 menu
  • 도서 대출
  • 도서 반납
  • 연체(연체료) 확인
  • 0: 종료
  • (대출, 반납 시) bookID
  • 반납일 returnDay

2) 출력:

  • 메뉴 화면 출력
  • 대출, 반납 성공/실패 메시지
  • 현재 대출 권수, 최대 권수
  • 대출/반납 후 현재 대출 목록 간단 출력
  • 연체 여부, 연체일수, 연체료
  • 예외 메시지

3) 상태(계속 들고 있어야 하는 값) :

  • menu 메뉴 선택 값
  • borrowedBooks 대출 도서 목록{bookId, title, Day}
  • borrowedCount 빌린 책 개수
  • totalFee 연체료 총합

조건 정리

1) 종료 조건(끝나는 시점):
menu == 0 선택 시 종료

2) 분기 조건(갈라지는 기준):

  • menu == 1/2/3/0
  • 대출 가능 여부
    • 이미 빌린 책 < 최대 대출 권수 인가?
  • 연체 여부
    • 반납 날짜 > 반납 기한 날짜
  • 반납
    • 대출 목록에 해당 책이 존재하는가?

3) 예외/에러 조건 (정상 범위):

  • 메뉴 입력이 0~3가 아닌 경우
  • bookID에 다른 입력이 들어왔을 경우(숫자 입력해야 하는데 문자 입력, 빈 값 등)
  • 대출: 최대 권수 초과
  • 반납: 반납일이 대출일보다 빠른 경우, 대출 목록에 없는 책을 반납하려는 경우

흐름 설계

1) 시작할 때 한 번만:

  • 빌린 책 목록 초기화
  • 빌린 책 개수 0으로 설정
  • 연체료 0으로 설정

2) 반복(흐름)
1. 메뉴 화면 출력
2. 메뉴 번호 입력 받기
a. menu == 0 -> 프로그램을 종료
b. menu == 1 -> 대출 처리
- bookID 입력
- 최대 권수 초과 검사
- 대출 목록에 추가, 개수 + 1
- 결과 메시지 출력(대출 성공 실패 여부, 현재 대출 권수(간단 목록) 출력
c. menu == 2 -> 반납 처리
- bookID 입력
- 대출 목록에 있는지 확인
- returnDay 입력
- returnDay >= borrowDay 확인
- 연체일 경우 연체료 계산 후 누적
- 대출 목록에서 제거, 개수 -1
- 결과 메시지 출력(반납 성공 실패 여부, 현재 대출 권수(간단 목록) 출력
d. menu == 3 -> 연체료 확인
- 누적 연체료(totalFee) 출력
3. 그 외는 잘못된 입력입니다 출력
4. 다시 메뉴 화면으로 돌아감

3) 종료할 때
프로그램을 종료한다.

예외처리 부분에서 미흡한 것 같다. 또한 플로우차트가 너무 보기 어렵게 되어 있는 거 같아서 좀 더 깔끔하게 하는 방법을 연습해야 할 것 같다.

0개의 댓글