Python Programming
  • Home
  • Intro
    • History & Background
    • Python Setup
  • QPB
    • Part I: Chapter 1-3
    • Part II
    • 5. Lists, Tuples, Sets
  • Exercises
    • Chapter 5: Lists, Tuples, Sets
    • Chapter 6: Strings
    • Chapter 7: Dictionaries
    • Chapter 8: Control flow
    • Chapter 9: Functions
    • Chapter 14: Exceptions
    • Chapter 15: Classes
  • Exploring Data
    • NumPy & pandas
    • Visualization
  • Library System
  • Netflix Movie Analysis
    • Notes
    • Project-Native
    • Project-pandas
  • References
    • QPB Part 1
    • QPB Part 2
    • QPB Part 3
    • QPB Part 4

On this page

  • 프로그램 소개
    • 주요 기능
      • 1. 도서 관리
      • 2. 회원 관리
      • 3. 대출/반납
      • 4. 통계
      • 5. 데이터 관리
    • 파일 구조
    • 실행 방법
      • 1. 프로그램 실행
      • 2. 메뉴 사용
    • 사용 예시
      • 도서 추가
      • 회원 등록
      • 도서 대출
    • 클래스 설계
      • Book 클래스
      • Member 클래스
      • Library 클래스
    • 주요 개념들
  • 패키지 설치

도서 관리 시스템

프로그램 소개

주요 기능

1. 도서 관리

  • 도서 추가, 삭제
  • 도서 검색 (제목)
  • 전체 도서 목록 조회

2. 회원 관리

  • 회원 등록, 삭제
  • 전체 회원 목록 조회

3. 대출/반납

  • 도서 대출 (최대 3권 제한)
  • 도서 반납

4. 통계

  • 도서관 기본 통계 정보

5. 데이터 관리

  • JSON 파일로 데이터 저장/로드

파일 구조

프로젝트 폴더 다운로드

library_system/
├── __init__.py          # 패키지 초기화
├── main.py              # 메인 프로그램 (실행 파일)
├── library.py           # Library 클래스 (핵심 로직)
├── models.py            # Book, Member 클래스
├── utils.py             # 유틸리티 함수들
├── exceptions.py        # 커스텀 예외 클래스
├── config.py            # 설정 파일
└── data/
    └── library_data.json  # 데이터 저장 파일 (자동 생성)

실행 방법

1. 프로그램 실행

다음과 같이 모듈로 실행해야 함(library_system 폴더가 있는 디렉토리에서).

# main.py 모듈 실행
python -m library_system.main

다음과 같이 패키지 경로를 상대 경로로 참조하는 경우 스트립트를 직접 실행하면 모듈을 import 할 수 없음.

main.py
import os
from .library import Library
from .utils import (
    clear_screen, print_header, print_books_table, print_members_table,
    get_user_input, confirm_action, pause
)
from .exceptions import LibraryException
from .config import DATA_FILE, MAIN_MENU, CATEGORIES

...

2. 메뉴 사용

프로그램을 실행하면 메인 메뉴가 표시됩니다:

╔════════════════════════════════════════════╗
║        📚 도서 관리 시스템 v1.0            ║
╚════════════════════════════════════════════╝

[도서 관리]
  1. 도서 추가
  2. 도서 삭제
  3. 도서 검색
  4. 전체 도서 목록

[회원 관리]
  5. 회원 등록
  6. 회원 삭제
  7. 전체 회원 목록

[대출/반납]
  8. 도서 대출
  9. 도서 반납

[통계]
  10. 도서관 통계

[시스템]
  11. 데이터 저장
  12. 데이터 불러오기
  0. 종료

사용 예시

도서 추가

1번 선택 → 도서 정보 입력
- 제목: 클린 코드
- 저자: 로버트 C. 마틴
- 카테고리: 컴퓨터/IT

회원 등록

5번 선택 → 회원 정보 입력
- 이름: 홍길동
- 전화번호: 010-1234-5678

도서 대출

8번 선택 → ID 입력
- 회원 ID: 1
- 도서 ID: 1
→ 대출 완료

클래스 설계

Book 클래스

- book_id: 도서 고유 ID
- title: 제목
- author: 저자
- category: 카테고리
- is_available: 대출 가능 여부
- borrowed_by: 대출자 ID

Member 클래스

- member_id: 회원 고유 ID
- name: 이름
- phone: 전화번호
- join_date: 가입일
- borrowed_books: 대출 중인 도서 목록

Library 클래스

# 도서 관리 메서드
- add_book(title, author, category)
- remove_book(book_id)
- search_books(keyword)
- get_all_books()

# 회원 관리 메서드
- add_member(name, phone)
- remove_member(member_id)
- get_all_members()

# 대출/반납 메서드
- borrow_book(member_id, book_id)
- return_book(member_id, book_id)

# 통계 메서드
- get_statistics()

# 파일 I/O 메서드
- save_to_file(filename)
- load_from_file(filename)

주요 개념들

  • 클래스와 객체지향 프로그래밍 (Book, Member, Library 클래스)
  • 메서드 (인스턴스 메서드, 클래스 메서드)
  • 파일 입출력 (JSON 파일 읽기/쓰기)
  • 예외 처리 (커스텀 예외 클래스)
  • 딕셔너리와 리스트 (데이터 저장 및 관리)
  • 함수 (유틸리티 함수들)
  • 모듈화 (여러 파일로 코드 분리)
  • 문자열 처리 (포맷팅)
  • 날짜/시간 처리 (datetime 모듈)

패키지 설치

└── project-library-system
    ├── library_system  # 패키지 모듈
    │   ├── __init__.py
    │   ├── config.py
    │   ├── exceptions.py
    │   ├── library.py
    │   ├── main.py
    │   ├── models.py
    │   └── utils.py
    └── pyproject.toml  # 패키지 설정 파일

pyproject.toml 파일 추가

pyproject.toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "library-system"
version = "1.0.0"
description = "터미널 기반 도서관 관리 시스템"

[project.scripts]
library-system = "library_system.main:main"

패키지 에디터 모드로 설치

pip install -e .

패키지를 빌드해서 설치할 수도 있음.

python -m build  # build 모듈을 실행; 외부 패키지이므로 설치 필요

# dist 하위 폴더가 생성되고 그 안에 배포 파일이 생성됨
pip install dist/library_system-1.0.0-py3-none-any.whl
Notes

This work © 2025 by Sungkyun Cho is licensed under CC BY-NC-SA 4.0