AWS Cloud School 13기 4일차

Forever 김·2025년 12월 30일

AWS Cloud School

목록 보기
4/97

오늘은 거의 내내 파이썬만 붇잡고 코딩만 했습니다. 특히 과제를 했는데
과제 내용은 파이썬으로 Python CLI 도서관 관리 시스템 구현을 하는것이 과제였습니다.
혹시 나중에 내가 이런 과제를 수행했다라는 것이 필요해서 여기다가 README를 올려야겠슴돠

Python CLI 도서관 관리 시스템 구현 과제

본 과제는 Python 기초 과정을 이수한 여러분이 지금까지 배운 지식을 총동원하여 객체 지향적인 텍스트 기반 어플리케이션을 만드는 것을 목표로 합니다.

단순한 코드 작성이 아닌, 클래스 설계, 예외 처리, 모듈 분리에 중점을 두어 진행해 주세요.

과제 개요

  • 목표: 터미널(콘솔)에서 작동하는 도서관 책 대출/반납 관리 시스템 구현
  • 제출 방식: 본 저장소(Repository)를 Fork 한 후, 본인 이름의 브랜치를 생성하여 작업 후 Pull Request(PR) 로 제출
  • 기한: 2026년 01월 05일

제공되는 파일

과제 수행을 돕기 위해 초기 데이터 파일이 함께 제공됩니다.

  • books.csv: 테스트를 위한 도서 더미 데이터입니다. (제목, 저자, ISBN 정보 포함)
  • 필수: 프로그램이 시작될 때 이 파일을 읽어 도서관에 초기 도서 목록을 등록해야 합니다.

필수 요구 사항 (Requirements)

아래 기술된 기능과 문법적 요소를 반드시 포함해야 합니다.

1. 문법적 요구 사항

  1. 클래스 (Classes): 최소 3개 이상의 클래스를 정의하고 사용해야 합니다.
    • Book: 책 정보를 담는 클래스
    • Member: 도서관 회원 정보를 담는 클래스
    • Library: 전체 시스템을 관리하는 클래스 (도서/회원 목록 저장 및 메서드 구현)
  2. 자료형 (Collections): 도서와 회원을 관리하기 위해 list 혹은 dict를 적절히 사용하세요.
  3. 예외 처리 (Exception Handling):
    • 잘못된 입력(숫자가 들어와야 하는데 문자가 들어온 경우 등)에 대해 프로그램이 종료되지 않고 적절한 에러 메시지를 출력해야 합니다.
    • 존재하지 않는 책을 대출하려 하거나, 이미 대출 중인 책을 대출하려 할 때 적절한 예외 처리를 해야 합니다. (직접 Exception 클래스를 상속받아 사용자 정의 예외를 만들어도 좋습니다.)
  4. 모듈화 (Modules):
    • 모든 코드를 파일 하나에 작성하지 마세요.
    • 예: main.py (실행 파일), models.py (클래스 정의), utils.py (기타 함수) 등으로 파일을 분리하여 작성하세요.
  5. 파일 입출력 (File I/O):
    • csv 모듈 또는 기본 파일 입출력을 사용하여 books.csv를 읽어오는 기능을 구현해야 합니다.
  6. dataclass 등 배운 내용 외에 사용할 수 있는 기능은 자유롭게 사용해도 됩니다.

2. 기능적 요구 사항 (Features)

프로그램을 실행하면 가장 먼저 books.csv를 로드하고, 아래 메뉴가 반복해서 출력되어야 합니다. (while 반복문 사용)

  1. 초기화 (자동 수행): 프로그램 시작 시 제공된 books.csv 파일을 읽어 Library에 도서들을 저장합니다.
  2. 도서 등록: 제목, 저자, ISBN(책 고유 번호)을 입력받아 저장합니다.
  3. 도서 목록 출력: 현재 도서관에 있는 모든 책의 정보를 출력합니다. (대출 가능 여부 표시 필수)
  4. 회원 등록: 이름, 전화번호를 입력받아 회원을 저장합니다.
  5. 도서 대출:
    • 회원 이름과 ISBN을 입력받습니다.
    • 해당 회원이 존재하고, 책이 대출 가능한 상태라면 대출 처리합니다.
  6. 도서 반납:
    • 회원 이름과 ISBN을 입력받아 반납 처리합니다.
  7. 도서 검색: 책 제목의 일부를 입력하면 해당되는 책들을 출력합니다.
  8. 종료: 프로그램을 종료합니다.

구현 가이드 (힌트)

클래스 구조 예시 (참고용)

Book 클래스

  • 속성: title, author, isbn, is_borrowed (대출 여부, 기본값 False)
  • 메서드: __str__ (책 정보 문자열 반환)

Member 클래스

  • 속성: name, phone, borrowed_books (현재 대출 중인 책 목록)

Library 클래스

  • 속성: books (Book 객체 리스트), members (Member 객체 딕셔너리)
  • 메서드: add_book, add_member, borrow_book, return_book

실행 예시

[System] books.csv 에서 도서 데이터를 불러왔습니다.

=== 도서관 관리 시스템 ===
1. 도서 등록
2. 도서 목록
3. 회원 등록
4. 대출
5. 반납
6. 검색
7. 종료
메뉴를 선택하세요: 4

[대출 시스템]
사용자 이름을 입력하세요: 홍길동
대출할 책의 ISBN을 입력하세요: 12345

>> '홍길동'님이 '파이썬 정복' (12345)을 대출했습니다.

심화 과제 (선택 사항)

필수는 아니지만, 실력 향상을 위해 도전을 권장합니다.

  1. 연체 관리: datetime 모듈을 사용하여 대출 시점의 시간을 기록하고, 반납 시 7일이 지났다면 연체 메시지를 출력해보세요.
  2. 데이터 영구 저장: 프로그램이 종료되어도 데이터가 날아가지 않도록, 텍스트 파일(.txt)이나 JSON, CSV 파일로 데이터를 저장하고 불러오는 기능을 추가해보세요. (회원 정보 및 대출 상태 저장)

제출 방법 (필독)

[!IMPORTANT]
주의사항 (필독)

여러분의 PR은 여러 코드가 섞이는 것을 방지하기 위해 main 브랜치에 Merge 되지 않습니다.
PR을 제출하면 코드리뷰 후 최종 통과여부를 판단합니다.

제프 최종 확인이 끝나면 PR은 Closed 되며 이 경우 통과입니다.
보완을 요청한 경우 해당 부분을 보완한 후 재제출 해주셔야 합니다!

👩‍🎓

브랜치 전략을 사용하여 제출해야 합니다. 아래 순서를 정확히 지켜주세요.

  1. 이 Repository 우측 상단의 Fork 버튼을 클릭하여 본인의 계정으로 복사합니다.

  2. 로컬로 Clone 받습니다.

    git clone <본인 레포 주소>
    
  3. [중요] 본인의 이름으로 브랜치를 생성하고 이동합니다.

    • 브랜치명 규칙: aws13th-본인이름 (예: aws13th-홍길동)
    git checkout -b aws13th-홍길동
    
  4. 과제 코드를 작성하고 커밋합니다.

  5. 본인의 원격 저장소(Fork 뜬 곳)에 해당 브랜치를 Push 합니다.

    git push origin aws13th-홍길동
    
  6. 원본 레포지토리(이곳)로 Pull Request (PR) 를 보냅니다.

    • Base(도착지): main ⬅️ Compare(출발지): aws13th-홍길동
    • PR 제목: [이름] 도서관 관리 시스템 과제 제출
    • PR 내용: 구현한 기능 간략 설명 및 어려웠던 점

이런 내용을 구현했고 https://github.com/gimyw/aws13th-ywkim-library-system.git
여기다가 push했습니다

출처 : https://github.com/ej31

profile
나를 한줄로

0개의 댓글