场景设定:两位技术人员小李和小张正在讨论如何为一所中学构建数字化校园系统。
小李:小张,咱们学校现在还是传统的管理模式,老师手工记录学生成绩,学生信息也散落在各个地方。我觉得咱们应该引入数字化校园的概念,你觉得怎么样?
小张:完全同意!数字化校园不仅能提高效率,还能让数据更安全。我们可以先从数据库开始,把学生信息、成绩等集中存储起来。
小李:好主意!那我们用什么语言来实现这个系统呢?
小张:Python是个不错的选择,它有丰富的库支持数据库操作。我们可以用SQLite作为我们的数据库。
小李:那我们怎么创建数据库表呢?
小张:首先,我们需要定义一些基本的数据结构。比如学生表、课程表和成绩表。这是学生表的SQL语句:
CREATE TABLE students (
student_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
grade TEXT
);
小李:明白了,接着是成绩表吗?
小张:对,成绩表需要关联到学生表和课程表。这是成绩表的SQL语句:
CREATE TABLE grades (
grade_id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id INTEGER,
course TEXT,
score REAL,
FOREIGN KEY(student_id) REFERENCES students(student_id)
);
小李:听起来很清晰了。那么,我们怎么在Python中操作这些表呢?
小张:我们可以使用Python的sqlite3模块。例如,插入一条学生记录:
import sqlite3
conn = sqlite3.connect('school.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO students (name, age, grade) VALUES (?, ?, ?)", ("张三", 15, "初三"))
conn.commit()
conn.close()
小李:这样就能将数据存入数据库了。最后,我们还需要一个界面来展示这些数据吧?
小张:没错,我们可以用Tkinter做一个简单的GUI界面。例如显示所有学生的功能:
import tkinter as tk
from tkinter import ttk
def show_students():
conn = sqlite3.connect('school.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM students")
rows = cursor.fetchall()
for row in rows:
tree.insert("", tk.END, values=row)
conn.close()
root = tk.Tk()
tree = ttk.Treeview(root, columns=("ID", "Name", "Age", "Grade"), show="headings")
tree.heading("ID", text="ID")
tree.heading("Name", text="Name")
tree.heading("Age", text="Age")
tree.heading("Grade", text="Grade")
tree.pack()
btn = tk.Button(root, text="Show Students", command=show_students)
btn.pack()
root.mainloop()
小李:太棒了!这样我们就有了一个基础的数字化校园系统。
]]>