import tkinter as tk
from tkinter import messagebox
import sqlite3
# 连接到SQLite数据库(如果不存在则会自动创建)
conn = sqlite3.connect('class_info.db')
# 创建游标对象
c = conn.cursor()
# 创建班级信息表格(如果不存在)
c.execute('''CREATE TABLE IF NOT EXISTS students (
student_id INTEGER PRIMARY KEY,
student_name TEXT NOT NULL,
student_age INTEGER,
student_gender TEXT
)''')
# 提交更改
conn.commit()
# 创建主界面
root = tk.Tk()
root.title("班级信息管理系统")
# 函数:插入学生信息到数据库
def insert_student():
name = name_entry.get()
age = age_entry.get()
gender = gender_entry.get()
if name == '' or age == '' or gender == '':
messagebox.showerror("错误", "请填写完整的学生信息")
return
try:
age = int(age)
except ValueError:
messagebox.showerror("错误", "年龄必须是整数")
return
c.execute('''INSERT INTO students (student_name, student_age, student_gender)
VALUES (?, ?, ?)''', (name, age, gender))
conn.commit()
messagebox.showinfo("成功", "学生信息已添加")
name_entry.delete(0, tk.END)
age_entry.delete(0, tk.END)
gender_entry.delete(0, tk.END)
# 函数:显示所有学生信息
def show_students():
c.execute('''SELECT * FROM students''')
rows = c.fetchall()
if not rows:
messagebox.showinfo("提示", "数据库中没有学生信息")
else:
for row in rows:
print(row)
# 标签和输入框
tk.Label(root, text="姓名:").grid(row=0, column=0)
name_entry = tk.Entry(root)
name_entry.grid(row=0, column=1)
tk.Label(root, text="年龄:").grid(row=1, column=0)
age_entry = tk.Entry(root)
age_entry.grid(row=1, column=1)
tk.Label(root, text="性别:").grid(row=2, column=0)
gender_entry = tk.Entry(root)
gender_entry.grid(row=2, column=1)
# 按钮:插入学生信息
insert_button = tk.Button(root, text="添加学生", command=insert_student)
insert_button.grid(row=3, column=0, columnspan=2, pady=10)
# 按钮:显示所有学生信息(测试用)
show_button = tk.Button(root, text="显示所有学生", command=show_students)
show_button.grid(row=4, column=0, columnspan=2, pady=10)
# 运行主循环
root.mainloop()
# 关闭数据库连接
conn.close()