代码

import tkinter as tk
from tkinter import messagebox
import sqlite3

# 初始化数据库
def init_db():
    conn = sqlite3.connect("class.db")
    cur = conn.cursor()
    # 创建学生表:学号(主键)、班级、姓名
    cur.execute('''
    CREATE TABLE IF NOT EXISTS student (
        stu_id TEXT PRIMARY KEY,
        class_name TEXT NOT NULL,
        name TEXT NOT NULL
    )
    ''')
    conn.commit()
    conn.close()

# 录入学生信息
def add_student():
    sid = entry_id.get().strip()
    cls = entry_class.get().strip()
    name = entry_name.get().strip()

    if not sid or not cls or not name:
        messagebox.showwarning("提示", "学号、班级、姓名不能为空!")
        return

    try:
        conn = sqlite3.connect("class.db")
        cur = conn.cursor()
        cur.execute("INSERT INTO student (stu_id, class_name, name) VALUES (?,?,?)", (sid, cls, name))
        conn.commit()
        messagebox.showinfo("成功", "班级信息录入完成!")
        # 清空输入框
        entry_id.delete(0, tk.END)
        entry_class.delete(0, tk.END)
        entry_name.delete(0, tk.END)
    except sqlite3.IntegrityError:
        messagebox.showerror("错误", "该学号已存在,请勿重复录入!")
    finally:
        conn.close()

# 查询所有学生学号
def query_id():
    conn = sqlite3.connect("class.db")
    cur = conn.cursor()
    cur.execute("SELECT stu_id, name FROM student")
    res = cur.fetchall()
    conn.close()

    if not res:
        text_result.delete(1.0, tk.END)
        text_result.insert(tk.END, "暂无班级学生信息!")
        return

    text_result.delete(1.0, tk.END)
    text_result.insert(tk.END, "===== 班级学生学号列表 =====\n")
    for sid, name in res:
        text_result.insert(tk.END, f"姓名:{name}  学号:{sid}\n")

# 主程序入口
if __name__ == "__main__":
    # 初始化数据库
    init_db()

    # 创建主窗口
    root = tk.Tk()
    root.title("班级信息收集系统")
    root.geometry("500x400")  # 窗口大小

    # 标签+输入框:学号
    label_id = tk.Label(root, text="学    号:", font=("宋体", 11))
    label_id.place(x=60, y=30)
    entry_id = tk.Entry(root, width=30, font=("宋体", 11))
    entry_id.place(x=130, y=30)

    # 标签+输入框:班级
    label_class = tk.Label(root, text="班    级:", font=("宋体", 11))
    label_class.place(x=60, y=70)
    entry_class = tk.Entry(root, width=30, font=("宋体", 11))
    entry_class.place(x=130, y=70)

    # 标签+输入框:姓名
    label_name = tk.Label(root, text="姓    名:", font=("宋体", 11))
    label_name.place(x=60, y=110)
    entry_name = tk.Entry(root, width=30, font=("宋体", 11))
    entry_name.place(x=130, y=110)

    # 功能按钮
    btn_add = tk.Button(root, text="录入班级信息", command=add_student, width=12, font=("宋体", 10))
    btn_add.place(x=120, y=150)

    btn_query = tk.Button(root, text="查询全体学号", command=query_id, width=12, font=("宋体", 10))
    btn_query.place(x=260, y=150)

    # 结果展示文本框
    label_res = tk.Label(root, text="查询结果:", font=("宋体", 11))
    label_res.place(x=60, y=190)
    text_result = tk.Text(root, width=50, height=10, font=("宋体", 10))
    text_result.place(x=60, y=215)

    # 主循环
    root.mainloop()

输入输出

更多推荐