python图书管理系统基于sqlite实现增删查改并且用tk做一个循环的交互式界面

时间: 2023-07-18 11:21:39 浏览: 54
好的,这是一个比较全面的需求,下面是一个 Python 图书管理系统基于 SQLite 实现增删查改的代码实现,以及一个基于 Tk 的交互式界面: ```python import sqlite3 import tkinter as tk from tkinter import messagebox # 连接 SQLite 数据库 conn = sqlite3.connect('books.db') c = conn.cursor() # 创建图书表 c.execute('''CREATE TABLE IF NOT EXISTS books (id INTEGER PRIMARY KEY, title TEXT, author TEXT, year INTEGER, isbn INTEGER)''') # 添加图书函数 def add_book(): title = title_entry.get() author = author_entry.get() year = year_entry.get() isbn = isbn_entry.get() c.execute("INSERT INTO books VALUES (NULL,?,?,?,?)", (title, author, year, isbn)) conn.commit() messagebox.showinfo("Success", "Book added successfully!") clear_entries() # 删除图书函数 def delete_book(): selected = tree.selection() if not selected: messagebox.showerror("Error", "Please select a book to delete!") else: confirmation = messagebox.askyesno("Confirmation", "Are you sure you want to delete the selected book?") if confirmation: for item in selected: c.execute("DELETE FROM books WHERE id=?", (tree.item(item)["text"],)) conn.commit() messagebox.showinfo("Success", "Book deleted successfully!") clear_entries() # 更新图书函数 def update_book(): selected = tree.selection() if not selected: messagebox.showerror("Error", "Please select a book to update!") else: title = title_entry.get() author = author_entry.get() year = year_entry.get() isbn = isbn_entry.get() confirmation = messagebox.askyesno("Confirmation", "Are you sure you want to update the selected book?") if confirmation: for item in selected: c.execute("UPDATE books SET title=?, author=?, year=?, isbn=? WHERE id=?", (title, author, year, isbn, tree.item(item)["text"])) conn.commit() messagebox.showinfo("Success", "Book updated successfully!") clear_entries() # 查询图书函数 def search_book(): title = title_entry.get() author = author_entry.get() year = year_entry.get() isbn = isbn_entry.get() c.execute("SELECT * FROM books WHERE title=? OR author=? OR year=? OR isbn=?", (title, author, year, isbn)) rows = c.fetchall() if rows: for item in tree.get_children(): tree.delete(item) for row in rows: tree.insert("", tk.END, text=row[0], values=(row[1], row[2], row[3], row[4])) else: messagebox.showwarning("Not Found", "No matching books found!") # 清空输入框函数 def clear_entries(): title_entry.delete(0, tk.END) author_entry.delete(0, tk.END) year_entry.delete(0, tk.END) isbn_entry.delete(0, tk.END) # 创建 Tk 窗口 root = tk.Tk() root.title("Book Manager") # 创建标签和输入框 title_label = tk.Label(root, text="Title") title_label.grid(row=0, column=0, padx=10, pady=10) title_entry = tk.Entry(root) title_entry.grid(row=0, column=1) author_label = tk.Label(root, text="Author") author_label.grid(row=1, column=0, padx=10, pady=10) author_entry = tk.Entry(root) author_entry.grid(row=1, column=1) year_label = tk.Label(root, text="Year") year_label.grid(row=2, column=0, padx=10, pady=10) year_entry = tk.Entry(root) year_entry.grid(row=2, column=1) isbn_label = tk.Label(root, text="ISBN") isbn_label.grid(row=3, column=0, padx=10, pady=10) isbn_entry = tk.Entry(root) isbn_entry.grid(row=3, column=1) # 创建按钮 add_button = tk.Button(root, text="Add Book", command=add_book) add_button.grid(row=0, column=2, padx=10) delete_button = tk.Button(root, text="Delete Book", command=delete_book) delete_button.grid(row=1, column=2, padx=10) update_button = tk.Button(root, text="Update Book", command=update_book) update_button.grid(row=2, column=2, padx=10) search_button = tk.Button(root, text="Search Book", command=search_book) search_button.grid(row=3, column=2, padx=10) clear_button = tk.Button(root, text="Clear Entries", command=clear_entries) clear_button.grid(row=4, column=2, padx=10) # 创建表格 tree = tk.ttk.Treeview(root, columns=("title", "author", "year", "isbn")) tree.column("#0", width=50, minwidth=50) tree.column("title", width=200, minwidth=200) tree.column("author", width=150, minwidth=150) tree.column("year", width=100, minwidth=100) tree.column("isbn", width=100, minwidth=100) tree.heading("#0", text="ID", anchor=tk.W) tree.heading("title", text="Title", anchor=tk.W) tree.heading("author", text="Author", anchor=tk.W) tree.heading("year", text="Year", anchor=tk.W) tree.heading("isbn", text="ISBN", anchor=tk.W) tree.grid(row=5, column=0, columnspan=3, padx=10, pady=10) # 加载图书列表 c.execute("SELECT * FROM books") rows = c.fetchall() for row in rows: tree.insert("", tk.END, text=row[0], values=(row[1], row[2], row[3], row[4])) # 循环运行 Tk 窗口 root.mainloop() # 关闭 SQLite 连接 conn.close() ``` 这个代码实现了图书管理系统的基本功能,包括添加、删除、更新、查询和清空输入框。它还使用了 Tkinter 库创建了一个交互式界面,其中包括标签、输入框、按钮和表格。您可以将此代码保存为 `book_manager.py` 并在终端中运行,或使用 PyCharm 进行编辑和运行。 请注意,此代码仅作为示例和指导,您可以根据自己的需求和喜好进行修改和扩展。

相关推荐

最新推荐

recommend-type

android之sqlite实现增删改查

这是学习及开发SQlite的一个很好的例子,含有其增删改查的所有功能 附有完整的代码 可以直接运行
recommend-type

Python实现读取TXT文件数据并存进内置数据库SQLite3的方法

主要介绍了Python实现读取TXT文件数据并存进内置数据库SQLite3的方法,涉及Python针对txt文件的读取及sqlite3数据库的创建、插入、查询等相关操作技巧,需要的朋友可以参考下
recommend-type

Python实现将sqlite数据库导出转成Excel(xls)表的方法

主要介绍了Python实现将sqlite数据库导出转成Excel(xls)表的方法,结合实例形式分析了Python针对sqlite数据库的连接、读取及使用写操作包(xlwt)生成Excel表的相关实现技巧,需要的朋友可以参考下
recommend-type

Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例

主要介绍了Python实现读写sqlite3数据库并将统计数据写入Excel的方法,涉及Python针对sqlite3数据库的读取及Excel文件相关操作技巧,需要的朋友可以参考下
recommend-type

Python标准库之sqlite3使用实例

主要介绍了Python标准库之sqlite3使用实例,本文讲解了创建数据库、插入数据、查询数据、更新与删除数据操作实例,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。