Python实现图书借阅管理系统

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在MySQL中使用分组查询?

    在MySQL中,分组查询是一种将数据分组并对每个组执行聚合函数的查询。在Python中,可以使用MySQL连接来执行分组查询。以下是在Python中分组查询的完整攻略,包分组查询的基本语法、使用分组查询的示例以及如何在Python中使用分组查询。 分组查询的基本语法 分组查询的基本语法如下: SELECT column_name(s) FROM table_…

    python 2023年5月12日
    00
  • Python中re.findall()用法详解

    下面是详细的攻略: Python中re.findall()用法详解 在Python中,我们可以使用re.findall()函数来搜索字符串中所有匹配正则表达式的字符串,并返回一个列表。本文将介绍re.findall()函数的用法,并提供两个示例说明。 re.findall()函数的语法 re.findall()函数的语法如下: re.findall(patt…

    python 2023年5月14日
    00
  • Python实战之实现简易的学生选课系统

    Python实战之实现简易的学生选课系统攻略 简介 学生选课系统是学生和教师必备的工具之一,本文将介绍如何使用Python实现一个简易的学生选课系统。 系统功能 该系统包含以下功能: 学生注册 学生登录 学生选课 学生退课 教师添加课程 教师删除课程 教师查看选课情况 实现步骤 1. 创建学生和课程的列表 使用Python的列表数据结构来存储学生和课程的信息…

    python 2023年5月19日
    00
  • Python实现购物车购物小程序

    下面是“Python实现购物车购物小程序”的完整攻略: 1.确认需求和功能 在实现购物车购物小程序之前,首先需要清楚自己的需求和实现的功能,并做好规划。例如,需要实现以下功能: 展示商品列表 选择商品加入购物车 显示购物车商品列表 删除购物车商品 计算购物车商品总价 2.搭建环境 在编写代码之前,需要在本机安装Python开发环境。可以使用Anaconda或…

    python 2023年5月23日
    00
  • JS调用页面表格导出excel示例代码

    下面是关于”JS调用页面表格导出excel示例代码”的完整实例教程: 1. 前置知识 在开始本教程之前,需要先了解以下几点: JavaScript基础语法和DOM操作; 如何使用jQuery等库工具来快速操作DOM; 后端语言的基础知识,了解如何向服务器发送POST请求。 2. 实例介绍 本实例所要实现的功能是:在页面中展示一张表格,并提供一个按钮,在用户点…

    python 2023年5月13日
    00
  • python批量修改ssh密码的实现

    下面是“Python批量修改SSH密码”的详细实现教程: 目录 准备工作 代码实现 示例说明 3.1 示例一 3.2 示例二 1. 准备工作 在开始之前,需要准备以下工作: 安装Paramiko库:用于操作SSH连接。 pip install paramiko 获取要修改的SSH主机地址、用户名和原始密码信息。 host_ips = ["10.0.…

    python 2023年5月13日
    00
  • linux系统下pip升级报错的解决方法

    下面是详细讲解“linux系统下pip升级报错的解决方法”的完整攻略。 1. 问题描述 在 Linux 系统中,我们使用 pip 命令来进行 Python 包的安装和升级。某些情况下,可能会遇到升级 pip 报错的问题: ERROR: Exception: Traceback (most recent call last): … pkg_resource…

    python 2023年5月13日
    00
  • Python自动创建Excel并获取内容

    下面我将为您详细讲解Python自动创建Excel并获取内容的完整实例教程。 1.使用Python库xlwt创建Excel文件 通过Python库xlwt,可以自动创建Excel表格并对其进行编辑和填充。以下是创建一个包含3行3列的Excel表格的Python代码示例: # 引入xlwt库 import xlwt # 创建一个workbook对象,相当于创建…

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