🔵 도서관 도서 관리 시스템

F# 예제

중급 난이도
예제 타입
10/22 등록일

도서관 도서 관리 시스템

중급
태그
예제 실습 프로젝트 도서관 관리시스템
## 프로젝트 개요
도서관에서 책을 효율적으로 관리하기 위한 함수형 프로그래밍 기반 시스템. 책 추가, 검색, 대출 상태 확인 등의 기능을 제공합니다.

## 주요 기능
- 도서 정보 입력 및 저장
- 제목/저자 기반 검색
- 대출 가능 여부 확인
- 파일 기반 데이터 저장
- 사용자 입력 오류 처리

## 사용 방법
1. F# 환경에서 파일 실행
2. 명령어로 책 추가(ADD), 검색(SEARCH), 상태 확인(CHECK) 수행
3. 도서관 데이터가 'books.json' 파일에 저장됨

## 확장 가능성
- 사용자 인증 기능 추가
- DB 연동을 통한 실시간 데이터 처리
- 대출 기간 관리 기능 구현
코드 예제
// 책 정보 타입 정의
type Book = {
    Title: string
    Author: string
    Available: bool
}

// 파일에서 도서 목록 로드
let loadBooks () =
    try
        let json = System.IO.File.ReadAllText "books.json"
        Newtonsoft.Json.JsonConvert.DeserializeObject<Book list> json
    with
        | _ -> [] // 파일 없을 시 빈 리스트 반환

// 도서 저장
let saveBooks books =
    try
        let json = Newtonsoft.Json.JsonConvert.SerializeObject books
        System.IO.File.WriteAllText("books.json", json)
    with
        | ex -> printfn "저장 중 오류: %s" ex.Message

// 책 추가 함수
let addBook title author =
    let newBook = { Title=title; Author=author; Available=true }
    let books = loadBooks() @ [newBook]
    saveBooks books
    printfn "도서 '%s'가 성공적으로 등록되었습니다." title

// 책 검색 함수
let searchBooks query =
    let books = loadBooks()
    books |> List.filter (fun book ->
        book.Title.Contains(query) || book.Author.Contains(query))
    |> List.map (fun book ->
        sprintf "[%s] %s - 대출 가능: %b" book.Title book.Author book.Available)
    |> List.iter printfn

// 메인 함수
[<EntryPoint>]
let main _ =
    printfn "=== 도서관 관리 시스템 ==="
    printf "추가할 책 제목: ";
    let title = System.Console.ReadLine() |> Option.ofObj
    printf "저자 이름: ";
    let author = System.Console.ReadLine() |> Option.ofObj

    match (title, author) with
    | Some t, Some a -> addBook t a
    | _ -> printfn "잘못된 입력입니다."

    // 검색 기능 테스트
    searchBooks "파이썬"
    System.Console.ReadLine() |> ignore
    0
등록일: 2025년 10월 22일 02:38
언어 정보
언어
F#
카테고리
Functional
인기도
#27
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요