GUI
import tkinter as tk
from tkinter import ttk, messagebox
import sqlite3
class ClassInfoSystem:
def init(self, root):
self.root = root
self.root.title("班级信息收集系统(学号尾号:9)")
self.root.geometry("500x400")
初始化数据库
self.conn = sqlite3.connect("class_info.db")
self.cursor = self.conn.cursor()
self.cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id TEXT UNIQUE NOT NULL,
class TEXT NOT NULL,
name TEXT NOT NULL
)
''')
self.conn.commit()
创建GUI界面
self.create_widgets()
def create_widgets(self):
# 标题
title_label = tk.Label(self.root, text="班级信息收集系统", font=("微软雅黑", 16, "bold"))
title_label.pack(pady=10)
输入框架
input_frame = tk.Frame(self.root)
input_frame.pack(pady=10)
学号输入
tk.Label(input_frame, text="学号:").grid(row=0, column=0, padx=5, pady=5, sticky="e")
self.student_id_entry = ttk.Entry(input_frame)
self.student_id_entry.grid(row=0, column=1, padx=5, pady=5)
班级输入
tk.Label(input_frame, text="班级:").grid(row=1, column=0, padx=5, pady=5, sticky="e")
self.class_entry = ttk.Entry(input_frame)
self.class_entry.grid(row=1, column=1, padx=5, pady=5)
姓名输入(请填写你的真实姓名,截图时会显示)
tk.Label(input_frame, text="姓名:").grid(row=2, column=0, padx=5, pady=5, sticky="e")
self.name_entry = ttk.Entry(input_frame)
self.name_entry.grid(row=2, column=1, padx=5, pady=5)
按钮框架
btn_frame = tk.Frame(self.root)
btn_frame.pack(pady=10)
注册按钮
register_btn = ttk.Button(btn_frame, text="注册信息", command=self.register_student)
register_btn.grid(row=0, column=0, padx=10)
查询按钮
query_btn = ttk.Button(btn_frame, text="查询学号", command=self.query_student)
query_btn.grid(row=0, column=1, padx=10)
结果显示
self.result_text = tk.Text(self.root, height=8, width=50)
self.result_text.pack(pady=10)
def register_student(self):
"""注册学生信息到数据库"""
student_id = self.student_id_entry.get().strip()
class_name = self.class_entry.get().strip()
name = self.name_entry.get().strip()
if not student_id or not class_name or not name:
messagebox.showwarning("警告", "请填写完整信息!")
return
try:
self.cursor.execute('''
INSERT INTO students (student_id, class, name)
VALUES (?, ?, ?)
''', (student_id, class_name, name))
self.conn.commit()
messagebox.showinfo("成功", "信息注册成功!")
self.clear_entries()
except sqlite3.IntegrityError:
messagebox.showerror("错误", "该学号已存在!")
def query_student(self):
"""根据姓名/班级查询学号"""
class_name = self.class_entry.get().strip()
name = self.name_entry.get().strip()
if not class_name or not name:
messagebox.showwarning("警告", "请输入班级和姓名进行查询!")
return
self.cursor.execute('''
SELECT student_id FROM students
WHERE class = ? AND name = ?
''', (class_name, name))
result = self.cursor.fetchone()
self.result_text.delete(1.0, tk.END)
if result:
self.result_text.insert(tk.END, f"查询结果:\n")
self.result_text.insert(tk.END, f"姓名:{name}\n")
self.result_text.insert(tk.END, f"班级:{class_name}\n")
self.result_text.insert(tk.END, f"学号:{result[0]}\n")
else:
self.result_text.insert(tk.END, "未找到该学生信息!")
def clear_entries(self):
"""清空输入框"""
self.student_id_entry.delete(0, tk.END)
self.class_entry.delete(0, tk.END)
self.name_entry.delete(0, tk.END)
def close(self):
"""关闭数据库连接"""
self.conn.close()
if name == "main":
root = tk.Tk()
app = ClassInfoSystem(root)
root.mainloop()
app.close()
浙公网安备 33010602011771号