Python:简化的图书管理系统

①利用字典和列表来管理书籍、借阅者及借阅记录;

②每本书的属性包括:书名、作者、出版年份、是否被借出等;

③每个借阅者的属性包括:姓名、已借书籍列表;

④具备书籍添加、借阅和归还功能;

⑤保存每次借阅和归还的记录,包括借阅者、书籍和日期。

代码:

#图书管理系统
import datetime

books = [] #记录书的属性
readers = {} #记录借阅者的信息
records = [] #记录借阅记录

#函数功能:添加书籍
def add_book(book_name, author, year_publication):
    book = {
        'book_name': book_name,
        'author': author,
        'year_publication': year_publication,
        'is_borrowed': False,
        'borrower': []
    }
    books.append(book)
    print(f"书籍《{book_name}》已添加。")

#函数功能:借阅书籍
def borrow_book(reader_name, book_name):
    #查找书籍
    for book in books:
        if book['book_name'] == book_name:
            if book['is_borrowed']:
                print(f"书籍《{book_name}》已全部借出,无法借阅。")
                return

            #添加借阅者名字到图书信息
            if reader_name not in readers:
                readers[reader_name] = {"name": reader_name, 'borrowed_books': []}
            book['borrower'].append(reader_name)
            readers[reader_name]['borrowed_books'].append(book_name)
            records.append({'reader': reader_name, 'book': book_name,
                            'date':datetime.datetime.now(), 'action': 'borrow'})

            #检查是否已全部借出
            if len(book['borrower']) >= 4: #假设同一本书有4本
                book['is_borrowed'] = True

            print(f"借阅者 '{reader_name}' 已成功借阅书籍《{book_name}》。")
            return
    print(f"未找到书籍《{book_name}》。")

#函数功能:归还书籍
def return_book(reader_name, book_name):
    #查找书籍
    for book in books:
        if book['book_name'] == book_name:
            if reader_name not in book['borrower']:
                print(f"借阅者 '{reader_name}' 没有借阅书籍《{book_name}》。")
                return

            #从图书信息中移除借阅者名字
            book['borrower'].remove(reader_name)
            readers[reader_name]['borrowed_books'].remove(book_name)
            records.append({'reader': reader_name, 'book': book_name,
                            'date': datetime.datetime.now(), 'action': 'return'})

            book['is_borrowed'] = False

            print(f"借阅者 '{reader_name}' 已成功归还书籍《{book_name}》。")
            return
    print(f"未找到书籍《{book_name}》。")

#函数功能:显示指定书籍的状态
def show_book_status(book_name):
    found = False
    for book in books:
        if book['book_name'] == book_name:
            found = True
            status = '已全部借出' if book['is_borrowed'] else '可借'
            print(f"《{book['book_name']}》,作者:{book['author']},"
                  f"出版年份:{book['year_publication']},状态:{status}")
            break
    if not found:
        print(f"未找到书名为‘{book_name}'的书籍。")

# 函数功能:显示指定读者的借阅记录
def show_reader_records(reader_name):
    if reader_name not in readers:
        print(f"未找到名为‘{reader_name}'的读者。")
        return

    print(f"读者 '{reader_name}' 的借阅记录:")
    for record in records:
        if record['reader'] == reader_name:
            action = "借阅" if record['action'] == 'borrow' else "归还"
            print(f"于 {record['date'].strftime('%Y-%m-%d %H:%M:%S')}"
                  f"{action}《{record['book']}》.")

# 示例用法
add_book("活着", "余华", "1992")
add_book("围城", "钱钟书", "1947")
add_book("亲密关系","Rowland S. Miller", "2005")
borrow_book("小白粽", "围城")
borrow_book("小白", "亲密关系")
borrow_book("粽粽", "活着")
borrow_book("小粽", "围城")
borrow_book("大粽", "围城")
borrow_book("大白", "围城")
borrow_book("米宗", "围城")  # 超过已有书籍数量
show_book_status("围城")
return_book("小粽", "围城")
show_book_status("围城")
show_reader_records("小粽")

示例输出:

书籍《活着》已添加。
书籍《围城》已添加。
书籍《亲密关系》已添加。
借阅者 '小白粽' 已成功借阅书籍《围城》。
借阅者 '小白' 已成功借阅书籍《亲密关系》。
借阅者 '粽粽' 已成功借阅书籍《活着》。
借阅者 '小粽' 已成功借阅书籍《围城》。
借阅者 '大粽' 已成功借阅书籍《围城》。
借阅者 '大白' 已成功借阅书籍《围城》。
书籍《围城》已全部借出,无法借阅。
《围城》,作者:钱钟书,出版年份:1947,状态:已全部借出
借阅者 '小粽' 已成功归还书籍《围城》。
《围城》,作者:钱钟书,出版年份:1947,状态:可借
读者 '小粽' 的借阅记录:
于 2024-09-25 14:20:11借阅《围城》.
于 2024-09-25 14:20:11归还《围城》.

进程已结束,退出代码为 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值