python实现图书馆借阅系统

yizhihongxing

Python实现图书馆借阅系统

本文介绍如何使用Python实现图书馆借阅系统,包括如何设计数据表、编写代码实现借阅操作、归还操作等。

设计数据库

根据图书馆借阅系统的需求,我们可以设计如下的数据库表:

读者表

字段名 类型 描述
id INTEGER 读者的ID
name VARCHAR(32) 读者姓名
password VARCHAR(32) 读者登录密码

图书表

字段名 类型 描述
id INTEGER 图书的ID
name VARCHAR(64) 图书名称
author VARCHAR(64) 图书作者
publisher VARCHAR(64) 图书出版社
pub_date DATE 图书出版日期
ISBN VARCHAR(32) 图书ISBN号码
stock_count INTEGER 图书库存数量
borrow_num INTEGER 图书被借阅的次数
cover_url VARCHAR(64) 图书封面图片的URL

借阅记录表

字段名 类型 描述
id INTEGER 借阅记录的ID
book_id INTEGER 图书的ID
reader_id INTEGER 读者的ID
borrow_date DATE 借阅日期
due_date DATE 应归还日期

编写程序

实现借阅操作

import sqlite3
from datetime import datetime,timedelta

# 建立与数据库的连接
conn = sqlite3.connect('library.db')

# 定义借阅函数
def borrow_book(reader_id, book_id):
    # 获取当前日期
    borrow_date = datetime.now().strftime('%Y-%m-%d')
    # 计算应归还日期(借阅日期+30天)
    due_date = (datetime.now()+timedelta(days=30)).strftime('%Y-%m-%d')
    # 查询图书库存数量
    cursor = conn.execute('SELECT stock_count FROM book WHERE id=?', (book_id, ))
    book = cursor.fetchone()
    stock_count = book[0]
    # 判断图书库存数量是否大于0
    if stock_count == 0:
        print('此图书库存不足,无法借阅')
        return
    else:
        # 更新图书库存数量
        cursor = conn.execute('UPDATE book SET stock_count=stock_count-1 WHERE id=?', (book_id, ))
        if cursor.rowcount != 1:
            print('借阅失败,请重试')
            return
        # 插入借阅记录
        conn.execute('INSERT INTO borrow (book_id, reader_id, borrow_date, due_date) VALUES (?, ?, ?, ?)', (book_id, reader_id, borrow_date, due_date))
        conn.commit()
        print('借阅成功')

示例一:借阅流程

borrow_book(reader_id=1, book_id=1001)

实现归还操作

# 定义归还函数
def return_book(reader_id, book_id):
    # 查询是否存在该借阅记录
    cursor = conn.execute('SELECT * FROM borrow WHERE reader_id=? AND book_id=?', (reader_id, book_id))
    borrow_record = cursor.fetchone()
    if borrow_record is None:
        print('未找到该借阅记录')
        return
    else:
        # 更新图书库存数量
        cursor = conn.execute('UPDATE book SET stock_count=stock_count+1 WHERE id=?', (book_id, ))
        if cursor.rowcount != 1:
            print('归还失败,请重试')
            return
        # 删除借阅记录
        conn.execute('DELETE FROM borrow WHERE id=?', (borrow_record[0], ))
        conn.commit()
        print('归还成功')

示例二:归还流程

return_book(reader_id=1, book_id=1001)

其他操作

通过类似以上代码,还可以实现其他的图书馆借阅系统常用操作,例如:查询借阅记录、修改个人信息、修改图书信息等。

注:本文程序并未完整实现所有功能及细节,仅供参考。

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

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

相关文章

  • 利用django如何解析用户上传的excel文件

    当用户上传一个excel文件时,我们可以使用Django框架内置的插件 – pandas 来解析这个文件。下面是一个详细的实例教程: Step 1: 创建Django项目和app 首先,我们要创建一个Django项目和一个app。假设我们的项目名为 myproject ,app 名为 myapp,可以使用以下命令: django-admin startpro…

    python 2023年5月13日
    00
  • python实现用户管理系统

    Python实现用户管理系统攻略 1. 确定需求 在实现用户管理系统之前,我们需要明确该系统的功能需求,包括但不限于: 用户的增删改查 用户信息的修改和查看 用户信息的存储 2. 构建数据库 在确定了需求之后,我们需要考虑如何存储和管理用户信息。通常情况下,我们会使用数据库来存储和管理这些信息。在Python中,我们可以使用SQLite作为轻量级的关系型数据…

    python 2023年5月19日
    00
  • 详解Python lambda函数

    下面是Python lambda函数的完整攻略。 Python lambda函数 Python中的lambda函数是一种匿名函数,它通常用于简单的函数定义,可以用于需要函数对象的任何地方。lambda函数的主要特点是它是匿名的,即没有具体的名称。 基本语法 lambda函数的基本语法如下: lambda arguments: expression 其中,ar…

    python-answer 2023年3月25日
    00
  • python调用新浪微博API项目实践

    下面我将为你详细讲解“Python调用新浪微博API项目实践”的完整攻略。 前置要求 已注册新浪微博开发者账号,获取开发者权限 已创建新浪微博开发者应用,并获取到app_key和app_secret 已安装Python开发环境,并安装requests和json模块 步骤1:获取access_token 为了能够调用新浪微博API,首先需要获取access_t…

    python 2023年6月3日
    00
  • Python多线程应用于自动化测试操作示例

    对于Python多线程应用于自动化测试操作示例的完整攻略,我们可以从以下几个部分来进行讲解: 理解Python的多线程模块: 在Python中,使用多线程进行并发操作可以大大加快程序的运行速度。我们可以使用Python内置的threading模块来进行多线程编程。该模块提供了一个Thread类,我们可以通过对该类进行实例化来创建一个线程。 例如: impor…

    python 2023年5月19日
    00
  • 使用Py2Exe for Python3创建自己的exe程序示例

    在这里,我将为大家介绍如何使用 Py2Exe for Python3 (一个 Python 的打包工具)来制作可执行文件的方法。这里将分为以下几个步骤: 安装 Py2Exe 在命令行中输入以下命令进行安装: pip install py2exe 编写 Python 代码 这里以一个简单的 Python 应用程序为例: # 文件名:hello.py print…

    python 2023年5月23日
    00
  • Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】

    下面是关于Python HTML解析器BeautifulSoup用法实例详解的攻略: 简介 解析HTML是Python爬虫中非常重要的一步,因为HTML文本中包含着我们需要的数据。而Python HTML解析器BeautifulSoup就是一个实现HTML文本解析的工具库,在爬虫中被广泛使用。 BeautifulSoup可以从多个维度去解析HTML文本,比如…

    python 2023年5月13日
    00
  • 如何在C#中使用只读的 Collections

    接下来我将为你详细讲解如何在 C# 中使用只读的 Collections。 什么是只读的 Collection 在 .NET 中,有许多不同类型的集合类。其中,只读的 Collection 是指一种不可修改的集合,即集合的“只读”方法中只存在读取操作,没有修改操作。这样做的好处是保证了一旦集合被创建后,它的内容将不会被修改。这在一些情况下是非常有用的,比如当…

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