使用python中的tk和sql语句,开发一个点名系统,数据来自选择本门课的全部同学,存储在数据库roll book.db中。触发点名事件为按键,每按一次抽签键,出现一个点名信息,点名界面显示数据的前三项(编号,学号,姓名)
时间: 2024-10-20 08:08:31 浏览: 15
在Python中,我们可以结合Tkinter库创建用户界面,SQLite库处理SQL操作来构建一个简单的点名系统。以下是简要步骤:
1. **环境准备**:
- 安装必要的库:首先需要安装`tkinter`(用于GUI)、`sqlite3`(处理SQLite数据库)以及可能的数据可视化库如`pandas`。
```bash
pip install tkinter sqlite3 pandas
```
2. **数据库操作**:
- 创建或连接到`roll_book.db`数据库,并创建一个表,例如`students`,包含字段:id (编号), student_id (学号), name (姓名)。
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('roll_book.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS students
(id INTEGER PRIMARY KEY, student_id TEXT, name TEXT)''')
```
3. **主窗口与UI设计**:
- 使用Tkinter创建主窗口并设置基本布局,包括一个按键区域和展示学生的部分。
```python
import tkinter as tk
class AttendanceSystem(tk.Tk):
def __init__(self):
super().__init__()
self.title("点名系统")
# 按键区域
draw_button = tk.Button(self, text="抽取点名", command=self.draw_lottery)
draw_button.pack()
# 显示学生信息区域
self.student_listbox = tk.Listbox(self)
self.student_listbox.pack()
def draw_lottery(self):
# 抽取数据并更新显示
pass
if __name__ == "__main__":
app = AttendanceSystem()
app.mainloop()
```
4. **随机抽选功能**:
- 使用`random.choice()`从数据库中选取一条记录,然后将前三项添加到列表框。
```python
def draw_lottery(self):
c.execute("SELECT * FROM students LIMIT 3") # 取出前3条记录
selected_students = c.fetchall()
# 清空列表框并填充新数据
self.student_listbox.delete(0, tk.END)
for i, student in enumerate(selected_students):
self.student_listbox.insert(i, f"{i+1}. {student[1]} ({student[2]})")
```
5. **整合与运行**:
- 将上述所有内容整合到`AttendanceSystem`类中,确保关闭数据库连接。
完整的点名系统会是一个交互式的程序,在按下"抽取点名"按钮后,会随机选取并显示数据库中的前三名学生的信息。记得最后别忘了在适当的位置关闭数据库连接:
```python
app = AttendanceSystem()
app.draw_lottery() # 首次启动就抽一次
conn.close()
app.mainloop()
```
阅读全文