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()

posted @ 2026-06-12 12:32  7_loveee  阅读(2)  评论(0)    收藏  举报