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技术站