iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0

前言

今天來到鐵人賽的一半了!第15天!但剛好遇到9/28連假比較沒時間寫@@
到目前為止,我們已經學習了 變數、流程控制、方法、陣列、類別、物件、屬性、封裝、建構子、繼承、多型、泛型以及集合。
今天要來做一個小型的專案練習,讓我們把之前學過的知識串接起來,模擬一個「圖書館借書系統」的簡化版本。

這樣的練習不僅能幫助你加深對物件導向程式設計的理解,也能感受到 C# 在實際應用場景的威力。


using System;
using System.Collections.Generic;

class Book
{
    public string Title { get; }
    public string Author { get; }
    public bool IsBorrowed { get; private set; }

    public Book(string title, string author)
    {
        Title = title;
        Author = author;
        IsBorrowed = false;
    }

    public void Borrow()
    {
        if (!IsBorrowed)
        {
            IsBorrowed = true;
            Console.WriteLine($"《{Title}》 已成功借出!");
        }
        else
        {
            Console.WriteLine($"《{Title}》 已被借走,無法借出。");
        }
    }

    public void Return()
    {
        if (IsBorrowed)
        {
            IsBorrowed = false;
            Console.WriteLine($"《{Title}》 已歸還!");
        }
        else
        {
            Console.WriteLine($"《{Title}》 原本就未被借出。");
        }
    }
}

class Library
{
    private List<Book> books = new List<Book>();

    public void AddBook(Book book)
    {
        books.Add(book);
        Console.WriteLine($"成功新增書籍:《{book.Title}》 作者:{book.Author}");
    }

    public void ShowBooks()
    {
        Console.WriteLine("\n📚 圖書館藏書:");
        foreach (var book in books)
        {
            string status = book.IsBorrowed ? "已借出" : "可借閱";
            Console.WriteLine($"- {book.Title} by {book.Author} ({status})");
        }
    }
}

class Program
{
    static void Main()
    {
        Library library = new Library();

        // 新增書籍
        library.AddBook(new Book("C# 入門", "張小明"));
        library.AddBook(new Book("物件導向設計", "李大華"));

        // 顯示館藏
        library.ShowBooks();

        // 借書
        library.ShowBooks();
        Console.WriteLine();
        var borrowedBook = new Book("C# 入門", "張小明"); // ⚠️ 這裡只是示範,實際應該從館藏取書
        borrowedBook.Borrow();

        // 還書
        borrowedBook.Return();
    }
}

上一篇
Day14-集合 (Collections)
下一篇
Day16-C#異常和異常處理
系列文
30 天從 Python 轉職場 C# 新手入門22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言