도서 관리 시스템
프로그램 소개
주요 기능
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: 대출자 IDMember 클래스
- 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