引言
在本文中,我们将通过一个实际的项目——构建一个简单的图书管理系统,来展示Python在实际开发中的应用。这个系统将允许用户添加、删除、搜索和列出图书信息。
环境准备
在开始之前,请确保你的Python环境已经搭建好,并且安装了以下库:
sqlite3
:Python标准库中的SQLite数据库接口,我们将用它来存储图书数据。
项目结构
我们的图书管理系统将包含以下几个部分:
- 数据库操作:用于存储和检索图书信息。
- 用户界面:提供命令行界面供用户进行操作。
- 业务逻辑:处理用户请求,如添加、删除、搜索图书。
第一步:创建数据库
我们将使用SQLite数据库来存储图书信息。首先,我们需要创建一个数据库和表。
import sqlite3
# 连接到SQLite数据库
# 如果文件不存在,会自动在当前目录创建一个数据库文件
conn = sqlite3.connect('library.db')
cursor = conn.cursor()
# 创建一个表
cursor.execute('''
CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT NOT NULL,
year INTEGER
)
''')
# 提交事务
conn.commit()
# 关闭连接
conn.close()
第二步:实现业务逻辑
我们将定义一些函数来处理添加、删除、搜索和列出图书的逻辑。
def add_book(title, author, year):
conn = sqlite3.connect('library.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO books (title, author, year) VALUES (?, ?, ?)', (title, author, year))
conn.commit()
conn.close()
def remove_book(book_id):
conn = sqlite3.connect('library.db')
cursor = conn.cursor()
cursor.execute('DELETE FROM books WHERE id = ?', (book_id,))
conn.commit()
conn.close()
def search_books(title):
conn = sqlite3.connect('library.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM books WHERE title LIKE ?', ('%' + title + '%',))
books = cursor.fetchall()
conn.close()
return books
def list_books():
conn = sqlite3.connect('library.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM books')
books = cursor.fetchall()
conn.close()
return books
第三步:用户界面
我们将创建一个简单的命令行界面,让用户可以与我们的系统交互。
def main_menu():
while True:
print("\n图书管理系统")
print("1. 添加图书")
print("2. 删除图书")
print("3. 搜索图书")
print("4. 列出所有图书")
print("5. 退出")
choice = input("请选择一个选项: ")
if choice == '1':
title = input("输入图书标题: ")
author = input("输入作者: ")
year = input("输入出版年份: ")
add_book(title, author, year)
print("图书添加成功!")
elif choice == '2':
book_id = input("输入要删除的图书ID: ")
remove_book(book_id)
print("图书删除成功!")
elif choice == '3':
title = input("输入搜索的图书标题: ")
books = search_books(title)
for book in books:
print(f"ID: {book[0]}, 标题: {book[1]}, 作者: {book[2]}, 年份: {book[3]}")
if not books:
print("没有找到图书。")
elif choice == '4':
books = list_books()
for book in books:
print(f"ID: {book[0]}, 标题: {book[1]}, 作者: {book[2]}, 年份: {book[3]}")
elif choice == '5':
break
else:
print("无效的选项,请重新输入。")
if __name__ == '__main__':
main_menu()