利用python与金仓数据库实现图书馆借还书系统:图书信息表支持购入同一个ISBN的书籍多本,支持按ISBN、图书名、出版社、作者、图书分类、出版年份进行书籍登记,可查询和删除(这是基本界面功能),给出详细代码
时间: 2023-12-24 18:06:14 浏览: 33
好的,下面是一个简单的Python代码示例,可以实现图书馆借还书系统的基本功能。这个示例使用的是Python的pymysql模块连接金仓数据库。请注意,这个示例只是一个简单的示例,您需要根据具体情况进行修改和完善。
```python
import pymysql
# 连接数据库
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='library')
cursor = db.cursor()
# 定义函数:图书登记
def add_book():
isbn = input("请输入图书ISBN:")
name = input("请输入图书名称:")
publisher = input("请输入出版社:")
author = input("请输入作者:")
category = input("请输入图书分类:")
year = input("请输入出版年份:")
count = int(input("请输入购入数量:"))
# 查询是否已经有这本书
sql = "SELECT * FROM book WHERE isbn='{}'".format(isbn)
cursor.execute(sql)
result = cursor.fetchone()
if result:
# 如果已经存在这本书,更新库存数量
sql = "UPDATE book SET count=count+{} WHERE isbn='{}'".format(count, isbn)
cursor.execute(sql)
db.commit()
print("图书信息已更新")
else:
# 如果不存在这本书,插入新数据
sql = "INSERT INTO book (isbn, name, publisher, author, category, year, count) VALUES ('{}', '{}', '{}', '{}', '{}', '{}', {})".format(isbn, name, publisher, author, category, year, count)
cursor.execute(sql)
db.commit()
print("图书信息已登记")
# 定义函数:图书查询
def search_book():
keyword = input("请输入关键字:")
sql = "SELECT * FROM book WHERE isbn='{}' OR name='{}' OR publisher='{}' OR author='{}' OR category='{}' OR year='{}'".format(keyword, keyword, keyword, keyword, keyword, keyword)
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
print("ISBN:{},名称:{},出版社:{},作者:{},分类:{},出版年份:{},库存数量:{}".format(row[0], row[1], row[2], row[3], row[4], row[5], row[6]))
# 定义函数:图书删除
def delete_book():
isbn = input("请输入要删除的图书ISBN:")
sql = "DELETE FROM book WHERE isbn='{}'".format(isbn)
cursor.execute(sql)
db.commit()
print("图书信息已删除")
# 定义函数:图书借阅
def borrow_book():
reader_id = input("请输入读者ID:")
isbn = input("请输入要借阅的图书ISBN:")
sql = "SELECT * FROM book WHERE isbn='{}'".format(isbn)
cursor.execute(sql)
result = cursor.fetchone()
if result:
count = result[6]
if count > 0:
# 如果库存数量大于0,更新库存数量并插入借阅记录
sql = "UPDATE book SET count=count-1 WHERE isbn='{}'".format(isbn)
cursor.execute(sql)
db.commit()
sql = "INSERT INTO borrow (reader_id, isbn, borrow_time) VALUES ('{}', '{}', NOW())".format(reader_id, isbn)
cursor.execute(sql)
db.commit()
print("图书已借阅")
else:
print("库存不足,无法借阅")
else:
print("图书不存在")
# 定义函数:图书归还
def return_book():
reader_id = input("请输入读者ID:")
isbn = input("请输入要归还的图书ISBN:")
sql = "SELECT * FROM borrow WHERE reader_id='{}' AND isbn='{}' AND return_time IS NULL".format(reader_id, isbn)
cursor.execute(sql)
result = cursor.fetchone()
if result:
# 如果存在未归还的借阅记录,更新归还时间并更新库存数量
sql = "UPDATE borrow SET return_time=NOW() WHERE reader_id='{}' AND isbn='{}' AND return_time IS NULL".format(reader_id, isbn)
cursor.execute(sql)
db.commit()
sql = "UPDATE book SET count=count+1 WHERE isbn='{}'".format(isbn)
cursor.execute(sql)
db.commit()
print("图书已归还")
else:
print("借阅记录不存在或已归还")
# 主程序
while True:
print("请选择操作:")
print("1. 图书登记")
print("2. 图书查询")
print("3. 图书删除")
print("4. 图书借阅")
print("5. 图书归还")
print("6. 退出系统")
choice = input("请输入操作编号:")
if choice == '1':
add_book()
elif choice == '2':
search_book()
elif choice == '3':
delete_book()
elif choice == '4':
borrow_book()
elif choice == '5':
return_book()
elif choice == '6':
break
else:
print("输入错误,请重新输入")
# 关闭数据库连接
db.close()
```
请注意,这个示例代码只是一个简单的示例,您需要根据具体情况进行修改和完善。比如,您可能需要添加输入检查、异常处理等代码。另外,如果您需要使用其他数据库,比如MySQL、PostgreSQL等,您需要根据具体情况修改连接语句和SQL语句。