python实现图书馆借阅系统

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日

相关文章

  • python制作英语翻译小工具代码实例

    下面我将为您详细讲解 Python 制作英语翻译小工具的完整攻略。 1. 准备工作 1.1 安装 requests 库 由于本例中需要使用 requests 库来完成翻译请求,因此需要先进行其安装。可以通过 pip 命令进行安装,具体命令为: pip install requests 1.2 获取 API Key 在可以使用有道智云 API 进行翻译之前,需…

    python 2023年6月5日
    00
  • 用python写一个定时提醒程序的实现代码

    下面我就来为您详细讲解如何用Python写一个定时提醒程序的实现代码。 1. 确定提醒方式 首先,我们需要确定提醒的方式。一般来说,有两种常用的提醒方式,一种是弹窗提示,一种是使用语音播报提醒。 弹窗提示:将提示信息以弹窗的形式展现在屏幕上,需要使用Python的GUI界面库来实现。常用的GUI库有Tkinter、PyQt、wxPython等。其中,Tkin…

    python 2023年5月19日
    00
  • 解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required…

    当你在Windows系统上尝试安装Scrapy时,有可能会遇到以下错误提示:Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”。 这是由于Scrapy依赖于Microsoft Visual C++ 14.0来完成编译,而Windows系统默…

    python 2023年5月13日
    00
  • python 获取字典键值对的实现

    获取字典键值对,在Python中是一项常见的操作。以下是这个问题的解决方案: 一、使用items()方法 Python 字典(Dictionary) items()方法以列表返回可遍历的(键, 值) 元组数组。示例代码如下所示: # 创建字典 dict1 = {‘name’: ‘Tom’, ‘Age’: 15, ‘country’: ‘China’} # 获…

    python 2023年5月13日
    00
  • Django笔记二十九之中间件介绍

    本文首发于公众号:Hunter后端原文链接:Django笔记二十九之中间件介绍 这一节介绍一下 Django 的中间件。 关于中间件,官方文档的解释为:中间件是一个嵌入 Django 系统的 request 和 response 的钩子框架,是一个能够全局改变 Django 输入/输出的系统。 我们可以这样理解,一个 request 请求发送到 Django…

    python 2023年4月24日
    00
  • Python中解析JSON并同时进行自定义编码处理实例

    下面是关于Python中解析JSON并同时进行自定义编码处理的完整攻略。 什么是JSON JSON是JavaScript对象表示法的缩写,是一种轻量级的数据交换格式。与XML类似,JSON也是一种纯文本格式,可以方便地在各种编程语言之间传递数据。目前,在Web应用中,JSON已经远远超过XML的使用量。 Python中解析JSON Python内置的json…

    python 2023年6月3日
    00
  • Python解析xml中dom元素的方法

    在Python中,可以使用xml.dom.minidom模块解析XML文件中的DOM元素。以下是Python解析XML中DOM元素的方法的详细攻略: 加载XML文件 要解析XML文件,需要先加载XML文件。以下是加载XML文件的示例: import xml.dom.minidom dom = xml.dom.minidom.parse(‘example.xm…

    python 2023年5月14日
    00
  • python的一些加密方法及python 加密模块

    Python的一些加密方法及Python加密模块 在Python编程语言中,有多种加密方式和方法可以对数据和信息进行加密,保护信息安全。本文将讲解Python中一些常用的加密方法和加密模块。 常用的加密方法 哈希 哈希是将明文数据转换为一串由数字和字母组成的固定长度的代码,也称为摘要。哈希算法是不可逆的,也就是说,无法从哈希值中还原出原始明文数据。Pytho…

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