Python实现图书借阅管理系统

yizhihongxing

Python实现图书借阅管理系统

1. 系统概述

本系统是基于Python语言实现的,用于管理图书借阅流程的软件。系统包括以下三个模块:

  1. 图书管理模块:用于管理图书信息,包括书名、作者、出版社等
  2. 读者管理模块:用于管理读者信息,包括姓名、性别、年龄等
  3. 借阅管理模块:用于管理借阅流程,包括借出图书、归还图书等

2. 实现过程

2.1 数据库设计

在开发系统前,我们需要设计数据库存储图书和读者信息,使用SQLite数据库进行存储。下面是数据库的结构设计:

-- 图书表
CREATE TABLE book (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    author TEXT NOT NULL,
    press TEXT NOT NULL,
    total INTEGER NOT NULL,
    stock INTEGER NOT NULL
);

-- 读者表
CREATE TABLE reader (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    gender TEXT NOT NULL,
    age INTEGER NOT NULL,
    phone TEXT NOT NULL
);

-- 借阅表
CREATE TABLE borrow (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    book_id INTEGER NOT NULL,
    reader_id INTEGER NOT NULL,
    borrow_date TEXT NOT NULL,
    return_date TEXT NOT NULL,
    FOREIGN KEY(book_id) REFERENCES book(id),
    FOREIGN KEY(reader_id) REFERENCES reader(id)
);

2.2 实现模块

2.2.1 图书管理模块

图书管理模块包括添加图书、删除图书、修改图书和查询图书信息等功能。

添加图书的实现:

def add_book(title, author, press, total):
    stock = total
    conn = sqlite3.connect('library.db')
    cur = conn.cursor()
    cur.execute('INSERT INTO book(title, author, press, total, stock) \
                 VALUES (?, ?, ?, ?, ?)', (title, author, press, total, stock))
    conn.commit()
    conn.close()
    print('Add book successfully!')

删除图书的实现:

def delete_book(book_id):
    conn = sqlite3.connect('library.db')
    cur = conn.cursor()
    cur.execute('DELETE FROM book WHERE id=?', (book_id,))
    conn.commit()
    conn.close()
    print('Delete book successfully!')

2.2.2 读者管理模块

读者管理模块包括添加读者、删除读者、修改读者和查询读者信息等功能。

添加读者的实现:

def add_reader(name, gender, age, phone):
    conn = sqlite3.connect('library.db')
    cur = conn.cursor()
    cur.execute('INSERT INTO reader(name, gender, age, phone) VALUES (?, ?, ?, ?)', (name, gender, age, phone))
    conn.commit()
    conn.close()
    print('Add reader successfully!')

修改读者的实现:

def update_reader(reader_id, name, gender, age, phone):
    conn = sqlite3.connect('library.db')
    cur = conn.cursor()
    cur.execute('UPDATE reader SET name=?, gender=?, age=?, phone=? WHERE id=?', (name, gender, age, phone, reader_id))
    conn.commit()
    conn.close()
    print('Update reader successfully!')

2.2.3 借阅管理模块

借阅管理模块包括借出图书、归还图书和查询借阅记录等功能。

借出图书的实现:

def borrow_book(book_id, reader_id, borrow_date):
    conn = sqlite3.connect('library.db')
    cur = conn.cursor()
    cur.execute('SELECT stock FROM book WHERE id=?', (book_id,))
    stock = cur.fetchone()[0]
    if stock == 0:
        print('The book is out of stock!')
    else:
        cur.execute('UPDATE book SET stock=? WHERE id=?', (stock - 1, book_id))
        cur.execute('INSERT INTO borrow(book_id, reader_id, borrow_date, return_date) VALUES (?, ?, ?, ?)',
                    (book_id, reader_id, borrow_date, ''))
        conn.commit()
        print('Borrow book successfully!')
    conn.close()

归还图书的实现:

def return_book(borrow_id, return_date):
    conn = sqlite3.connect('library.db')
    cur = conn.cursor()
    cur.execute('SELECT book_id FROM borrow WHERE id=?', (borrow_id,))
    book_id = cur.fetchone()[0]
    cur.execute('SELECT stock FROM book WHERE id=?', (book_id,))
    stock = cur.fetchone()[0]
    cur.execute('UPDATE book SET stock=? WHERE id=?', (stock + 1, book_id))
    cur.execute('UPDATE borrow SET return_date=? WHERE id=?', (return_date, borrow_id))
    conn.commit()
    conn.close()
    print('Return book successfully!')

2.3 示例说明

2.3.1 添加图书和查询图书

# 添加图书
add_book('Python从入门到精通', '张三', '清华大学出版社', 100)

# 查询图书
conn = sqlite3.connect('library.db')
cur = conn.cursor()
cur.execute('SELECT * FROM book')
row = cur.fetchall()
for book in row:
    print(f'{book[1]}, {book[2]}, {book[3]}, 库存:{book[5]}本')
conn.close()

2.3.2 借出图书和归还图书

# 借出图书
borrow_book(1, 1, '2021-03-01')

# 查询借阅记录
conn = sqlite3.connect('library.db')
cur = conn.cursor()
cur.execute('SELECT borrow.id, book.title, reader.name, borrow.borrow_date, borrow.return_date \
             FROM borrow INNER JOIN book ON borrow.book_id=book.id \
             INNER JOIN reader ON borrow.reader_id=reader.id')
row = cur.fetchall()
for borrow in row:
    print(f'{borrow[0]}, {borrow[1]}, {borrow[2]}, 借出日期:{borrow[3]}')
conn.close()

# 归还图书
return_book(1, '2021-03-05')

# 查询借阅记录
conn = sqlite3.connect('library.db')
cur = conn.cursor()
cur.execute('SELECT borrow.id, book.title, reader.name, borrow.borrow_date, borrow.return_date \
             FROM borrow INNER JOIN book ON borrow.book_id=book.id \
             INNER JOIN reader ON borrow.reader_id=reader.id')
row = cur.fetchall()
for borrow in row:
    print(f'{borrow[0]}, {borrow[1]}, {borrow[2]}, 借出日期:{borrow[3]}, 归还日期:{borrow[4]}')
conn.close()

3. 总结

本系统实现了基本的图书借阅管理功能,涉及到的知识点包括SQLite数据库操作和Python函数实现。在实现过程中,我们需要仔细设计数据库结构,同时编写代码时也需要注意异常处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现图书借阅管理系统 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Python实现简单的用户交互方法详解

    Python实现简单的用户交互方法详解 在Python中,实现用户交互是很常见的需求。Python提供了多种方式来实现用户交互,本文将详细讲解如何使用Python实现简单的用户交互。 使用input函数实现用户交互 最常见的实现用户交互的方式是使用input函数。input函数用于接收用户从控制台输入的值。下面是使用input函数实现用户交互的示例代码: n…

    python 2023年5月19日
    00
  • Python使用tkinter库实现文本显示用户输入功能示例

    使用tkinter库实现文本显示用户输入功能是一个比较基础的应用,在Python中可以很方便地实现。下面是实现这个功能的完整攻略: 第一步:导入所需库 import tkinter as tk 第二步:创建窗口 首先需要创建一个窗口,代码如下: window = tk.Tk() window.title("Text Display and Inpu…

    python 2023年6月13日
    00
  • python逆序打印各位数字的方法

    要想逆序打印各位数字,可以通过使用Python内置的字符串切片功能来实现。具体实现的步骤如下: 将数字转换为字符串 使用Python内置的str()函数将数字转换为字符串,如下所示: num = 123456 num_str = str(num) 使用字符串切片操作逆序打印 使用字符串切片操作的语法为[start:stop:step],其中: start表示…

    python 2023年6月5日
    00
  • python中pip的安装与使用教程

    下面是 Python 中 pip 的安装与使用教程的完整攻略。 安装 pip 首先确认你已经安装了 Python。在命令行输入以下命令查看 Python 版本: python –version 如果显示版本号,则说明你已经安装了 Python。如果没有,则需要先安装 Python。 下载 pip 安装脚本。可以在官方网站下载(https://bootstr…

    python 2023年5月14日
    00
  • python读取json数据还原表格批量转换成html

    Python读取JSON数据还原表格批量转换成HTML是一种常见的数据处理技术,可以用于将JSON数据转换为HTML表格。以下是Python读取JSON数据还原表格批量转换成HTML的完整攻略,包含两个示例。 方法1:使用pandas库将JSON数据转换为HTML表格 pandas是一个Python库,可以将JSON数据转换为HTML表格。以下是一个示例,可…

    python 2023年5月15日
    00
  • Python进程间通信Queue消息队列用法分析

    Python进程间通信Queue消息队列用法分析 本文主要讲解Python中进程间通信的一种方式——消息队列(Queue)的用法。通过配置Queue,不同的Python进程之间可以进行信息的传递和共享,达到进程间通信的目的。 什么是Queue Queue是Python内置的一个类,它顾名思义是队列,具有FIFO(先进先出)的特性。主要包含以下方法: put(…

    python 2023年5月19日
    00
  • Python -m参数原理及使用方法解析

    本攻略将提供一个Python-m参数原理及使用方法解析,包括-m参数的含义和使用方法。攻略将包含两个示例,分别演示如何使用-m参数。 -m参数的含义 -m参数是Python解释器的一个命令行选项,用于指定要执行的模块。使用-m参数时,Python解释器将加载指定的模块,并执行其中的代码。 -m参数的使用方法 以下是一个示例,演示如何使用-m参数来执行指定的模…

    python 2023年5月15日
    00
  • Python3中.whl文件创建及使用

    下面是关于“Python3中.whl文件创建及使用”的完整攻略,内容主要包括如何创建.whl文件和如何使用.whl文件。 1. 什么是.whl文件 .wheel文件(缩写为.whl)是Python软件包的一种新格式,也是.dist-info和.egg-info两种格式的继承和统一。.whl文件是一个ZIP格式的压缩包,里面包含了Python模块的代码,以及其…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部