使用python中的tk和sql语句,开发一个点名系统,数据来自选择本门课的全部同学,存储在数据库roll book.db中。触发点名事件为按键,每按一次抽签键,随机出现一条学生信息,并显示该学生的编号,学号,姓名。
时间: 2024-10-20 14:10:04 浏览: 18
使用Python的Tkinter库创建用户界面,结合SQLAlchemy处理数据库操作,可以开发一个简单的点名系统。以下是步骤概述:
1. **安装必要的库**:
首先需要安装`tkinter`、`sqlite3`用于GUI和数据库交互,以及`random`库用于生成随机数。
```shell
pip install tkinter sqlite3
```
2. **设置数据库连接**:
创建一个名为`roll_book.db`的SQLite数据库文件,然后通过`sqlite3`模块建立连接。
```python
import sqlite3
conn = sqlite3.connect('roll_book.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS students
(id INTEGER PRIMARY KEY, name TEXT, student_number TEXT)''')
# 检查并添加数据
c.execute("SELECT * FROM students")
rows = c.fetchall()
if not rows:
# 添加示例数据,这里仅做演示,实际应用应从课程管理系统获取
c.execute("INSERT INTO students VALUES (?, ?, ?)", ('1', '张三', '001'))
conn.commit()
```
3. **设计主窗口和功能按钮**:
使用Tkinter创建一个窗口,其中包含一个按钮供用户点击进行抽签。
```python
import tkinter as tk
def draw_student():
selected_id = random.choice([row[0] for row in rows])
# 查询对应的学生信息并显示
c.execute(f"SELECT * FROM students WHERE id={selected_id}")
student_info = c.fetchone()
tk.Label(window, text=f"学生编号:{student_info[0]}, 学号:{student_info[1]}, 姓名:{student_info[2]}").pack()
window = tk.Tk()
button = tk.Button(window, text="抽签", command=draw_student)
button.pack()
```
4. **运行主循环**:
启动Tkinter的主循环,等待用户按下抽签按钮。
```python
window.mainloop()
```
5. **清理资源**:
在程序结束时,记得关闭数据库连接。
```python
conn.close()
```
阅读全文