wxpython+sqlite3图书管理系统的全部代码
时间: 2024-01-13 16:03:28 浏览: 23
抱歉,由于代码篇幅较长,无法在此处完整展示。以下是一个简单的图书管理系统的 wxpython+sqlite3 代码示例,仅供参考:
```python
import wx
import sqlite3
class Book:
def __init__(self, id, title, author, publisher, year):
self.id = id
self.title = title
self.author = author
self.publisher = publisher
self.year = year
class BookDatabase:
def __init__(self):
self.conn = sqlite3.connect('books.db')
self.cur = self.conn.cursor()
self.cur.execute("CREATE TABLE IF NOT EXISTS books (id INTEGER PRIMARY KEY, title TEXT, author TEXT, publisher TEXT, year INTEGER)")
self.conn.commit()
def add_book(self, book):
self.cur.execute("INSERT INTO books VALUES (?, ?, ?, ?, ?)", (book.id, book.title, book.author, book.publisher, book.year))
self.conn.commit()
def get_books(self):
self.cur.execute("SELECT * FROM books")
rows = self.cur.fetchall()
books = []
for row in rows:
books.append(Book(row[0], row[1], row[2], row[3], row[4]))
return books
def search_books(self, title):
self.cur.execute("SELECT * FROM books WHERE title LIKE ?", ('%'+title+'%',))
rows = self.cur.fetchall()
books = []
for row in rows:
books.append(Book(row[0], row[1], row[2], row[3], row[4]))
return books
class BookPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.db = BookDatabase()
self.book_list = wx.ListCtrl(self, style=wx.LC_REPORT)
self.book_list.InsertColumn(0, 'ID')
self.book_list.InsertColumn(1, 'Title')
self.book_list.InsertColumn(2, 'Author')
self.book_list.InsertColumn(3, 'Publisher')
self.book_list.InsertColumn(4, 'Year')
self.search_text = wx.TextCtrl(self)
self.search_button = wx.Button(self, label='Search')
self.search_button.Bind(wx.EVT_BUTTON, self.on_search)
self.add_button = wx.Button(self, label='Add')
self.add_button.Bind(wx.EVT_BUTTON, self.on_add)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.book_list, 1, wx.EXPAND|wx.ALL, 5)
self.sizer.Add(wx.StaticLine(self), 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5)
search_box = wx.BoxSizer(wx.HORIZONTAL)
search_box.Add(self.search_text, 1, wx.EXPAND|wx.RIGHT, 5)
search_box.Add(self.search_button, 0, wx.RIGHT, 5)
self.sizer.Add(search_box, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM, 5)
button_box = wx.BoxSizer(wx.HORIZONTAL)
button_box.Add(self.add_button, 0, wx.RIGHT, 5)
self.sizer.Add(button_box, 0, wx.ALIGN_RIGHT|wx.RIGHT|wx.BOTTOM, 5)
self.SetSizer(self.sizer)
self.refresh_list()
def refresh_list(self):
self.book_list.DeleteAllItems()
books = self.db.get_books()
for book in books:
index = self.book_list.InsertItem(self.book_list.GetItemCount(), str(book.id))
self.book_list.SetItem(index, 1, book.title)
self.book_list.SetItem(index, 2, book.author)
self.book_list.SetItem(index, 3, book.publisher)
self.book_list.SetItem(index, 4, str(book.year))
def on_search(self, event):
title = self.search_text.GetValue()
books = self.db.search_books(title)
self.book_list.DeleteAllItems()
for book in books:
index = self.book_list.InsertItem(self.book_list.GetItemCount(), str(book.id))
self.book_list.SetItem(index, 1, book.title)
self.book_list.SetItem(index, 2, book.author)
self.book_list.SetItem(index, 3, book.publisher)
self.book_list.SetItem(index, 4, str(book.year))
def on_add(self, event):
dlg = wx.TextEntryDialog(self, 'Enter book title:')
if dlg.ShowModal() == wx.ID_OK:
title = dlg.GetValue()
dlg = wx.TextEntryDialog(self, 'Enter book author:')
if dlg.ShowModal() == wx.ID_OK:
author = dlg.GetValue()
dlg = wx.TextEntryDialog(self, 'Enter book publisher:')
if dlg.ShowModal() == wx.ID_OK:
publisher = dlg.GetValue()
dlg = wx.TextEntryDialog(self, 'Enter book year:')
if dlg.ShowModal() == wx.ID_OK:
year = dlg.GetValue()
book = Book(None, title, author, publisher, year)
self.db.add_book(book)
self.refresh_list()
class BookFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='Book Manager', size=(500, 400))
panel = BookPanel(self)
self.Show()
if __name__ == '__main__':
app = wx.App()
frame = BookFrame()
app.MainLoop()
```
该代码使用 wxpython 创建了一个简单的图书管理系统,用户可以添加、搜索和查看图书信息。该系统使用 sqlite3 数据库保存图书信息。请注意,该代码仅供参考,具体实现可能因需求不同而有所不同。