python使用数据库实现名片管理系统,并增加一个可视化界面
时间: 2024-03-19 13:43:15 浏览: 149
好的,我可以为您提供一些相关的信息和建议。
首先,Python提供了多种数据库操作模块,比较常用的有MySQL、SQLite、PostgreSQL等。您可以根据自己的需求选择合适的数据库。
对于名片管理系统,您可以创建一个名为“cards”的表,包含以下字段:
- id:名片编号,自增长
- name:姓名
- phone:电话
- email:邮箱
- company:公司
- address:地址
在Python中,您可以使用相应的模块连接数据库并进行增删改查操作。例如,使用MySQLdb模块连接MySQL数据库:
```python
import MySQLdb
# 连接数据库
db = MySQLdb.connect(host="localhost", user="root", passwd="password", db="test", charset="utf8")
# 创建游标
cursor = db.cursor()
# 查询数据
sql = "SELECT * FROM cards"
cursor.execute(sql)
results = cursor.fetchall()
# 插入数据
sql = "INSERT INTO cards(name, phone, email, company, address) VALUES ('Tom', '123456789', 'tom@example.com', 'ABC Company', '123 Main St')"
cursor.execute(sql)
db.commit()
# 更新数据
sql = "UPDATE cards SET phone='987654321' WHERE name='Tom'"
cursor.execute(sql)
db.commit()
# 删除数据
sql = "DELETE FROM cards WHERE id=1"
cursor.execute(sql)
db.commit()
# 关闭连接
db.close()
```
对于可视化界面,您可以使用Python的GUI库,比较常用的有Tkinter、PyQt、wxPython等。其中,Tkinter是Python自带的GUI库,使用比较方便。您可以使用Tkinter设计一个简单的名片管理界面,包括查询、添加、修改和删除等功能。
下面是一个使用Tkinter实现名片管理系统的示例代码:
```python
from tkinter import *
import MySQLdb
# 连接数据库
db = MySQLdb.connect(host="localhost", user="root", passwd="password", db="test", charset="utf8")
# 创建游标
cursor = db.cursor()
# 查询数据
def query():
sql = "SELECT * FROM cards"
cursor.execute(sql)
results = cursor.fetchall()
for i, result in enumerate(results):
text.insert(END, f"{i+1}. {result[1]} {result[2]} {result[3]} {result[4]} {result[5]}\n")
# 插入数据
def insert():
name = entry_name.get()
phone = entry_phone.get()
email = entry_email.get()
company = entry_company.get()
address = entry_address.get()
sql = f"INSERT INTO cards(name, phone, email, company, address) VALUES ('{name}', '{phone}', '{email}', '{company}', '{address}')"
cursor.execute(sql)
db.commit()
text.insert(END, f"Added: {name} {phone} {email} {company} {address}\n")
# 更新数据
def update():
name = entry_name.get()
phone = entry_phone.get()
sql = f"UPDATE cards SET phone='{phone}' WHERE name='{name}'"
cursor.execute(sql)
db.commit()
text.insert(END, f"Updated: {name} {phone}\n")
# 删除数据
def delete():
name = entry_name.get()
sql = f"DELETE FROM cards WHERE name='{name}'"
cursor.execute(sql)
db.commit()
text.insert(END, f"Deleted: {name}\n")
# 创建窗口
root = Tk()
root.title("Card Management System")
# 创建标签和输入框
label_name = Label(root, text="Name:")
label_name.grid(row=0, column=0)
entry_name = Entry(root)
entry_name.grid(row=0, column=1)
label_phone = Label(root, text="Phone:")
label_phone.grid(row=1, column=0)
entry_phone = Entry(root)
entry_phone.grid(row=1, column=1)
label_email = Label(root, text="Email:")
label_email.grid(row=2, column=0)
entry_email = Entry(root)
entry_email.grid(row=2, column=1)
label_company = Label(root, text="Company:")
label_company.grid(row=3, column=0)
entry_company = Entry(root)
entry_company.grid(row=3, column=1)
label_address = Label(root, text="Address:")
label_address.grid(row=4, column=0)
entry_address = Entry(root)
entry_address.grid(row=4, column=1)
# 创建按钮
button_query = Button(root, text="Query", command=query)
button_query.grid(row=5, column=0)
button_insert = Button(root, text="Insert", command=insert)
button_insert.grid(row=5, column=1)
button_update = Button(root, text="Update", command=update)
button_update.grid(row=5, column=2)
button_delete = Button(root, text="Delete", command=delete)
button_delete.grid(row=5, column=3)
# 创建文本框
text = Text(root)
text.grid(row=6, column=0, columnspan=4)
# 进入消息循环
root.mainloop()
# 关闭连接
db.close()
```
这段代码创建了一个简单的名片管理界面,包括查询、添加、修改和删除等功能。您可以根据自己的需求进行修改和扩展。
阅读全文