import tkinter as tk import mysql.connector from tkinter import messagebox

class LoginWindow: def init(self, master): self.master = master master.title('Login') master.geometry('300x150')

    self.label_username = tk.Label(master, text='Username:')
    self.label_username.pack()

    self.entry_username = tk.Entry(master)
    self.entry_username.pack()

    self.label_password = tk.Label(master, text='Password:')
    self.label_password.pack()

    self.entry_password = tk.Entry(master, show='*')
    self.entry_password.pack()

    self.button_login = tk.Button(master, text='Login', command=self.login)
    self.button_login.pack()

def login(self):
    username = self.entry_username.get()
    password = self.entry_password.get()

    # 连接MySQL数据库
    try:
        self.conn = mysql.connector.connect(
            host='localhost',
            user='root',
            password='844133',
            database='oyy', auth_plugin='mysql_native_password'
        )
        self.master.destroy()
        MainWindow(self.conn)
    except:
        tk.messagebox.showerror('Error', 'Invalid username or password')

class MainWindow: def init(self, conn): self.conn = conn self.cursor = conn.cursor()

    self.master = tk.Tk()
    self.master.title('查询界面')
    self.master.geometry('400x300')

    self.label_name = tk.Label(self.master, text='Enter student name:')
    self.label_name.pack()

    self.entry_name = tk.Entry(self.master)
    self.entry_name.pack()

    self.button_search = tk.Button(self.master, text='Search', command=self.search)
    self.button_search.pack()

    self.label_result = tk.Label(self.master, text='')
    self.label_result.pack()

    # 菜单栏
    self.menu_bar = tk.Menu(self.master)
    self.file_menu = tk.Menu(self.menu_bar, tearoff=0)
    self.file_menu.add_command(label='录入信息', command=self.add_window)
    self.file_menu.add_command(label='删除信息', command=self.delete_window)
    self.file_menu.add_command(label='修改信息', command=self.update_window)
    self.menu_bar.add_cascade(label='菜单', menu=self.file_menu)
    self.master.config(menu=self.menu_bar)

def search(self):
    name = self.entry_name.get()

    # 查询学生信息
    query = 'SELECT * FROM student WHERE name=%s'
    self.cursor.execute(query, (name,))
    result = self.cursor.fetchone()

    if result:
        id, name, age, gender, score = result
        self.label_result.config(text=f'Name: {name}\Age: {age}\gender: {gender}\score: {score}')
    else:
        self.label_result.config(text='No result found')

def add_window(self):
    AddWindow(self.conn)

def delete_window(self):
    DeleteWindow(self.conn)

def update_window(self):
    UpdateWindow(self.conn)

class AddWindow: def init(self, conn): self.conn = conn self.cursor = conn.cursor()

    self.master = tk.Toplevel()
    self.master.title('增加界面')
    self.master.geometry('400x300')

    self.label_name = tk.Label(self.master, text='姓名:')
    self.label_name.pack()
    self.entry_name = tk.Entry(self.master)
    self.entry_name.pack()

    self.label_age = tk.Label(self.master, text='年龄:')
    self.label_age.pack()
    self.entry_age = tk.Entry(self.master)
    self.entry_age.pack()

    self.label_id = tk.Label(self.master, text='性别:')
    self.label_id.pack()
    self.entry_id = tk.Entry(self.master)
    self.entry_id.pack()

    self.label_math = tk.Label(self.master, text='成绩:')
    self.label_math.pack()
    self.entry_math = tk.Entry(self.master)
    self.entry_math.pack()

    self.button_add = tk.Button(self.master, text='add', command=self.add_student)
    self.button_add.pack()

def add_student(self):
    name = self.entry_name.get()
    age = self.entry_age.get()
    gender = self.entry_id.get()
    score = self.entry_math.get()

    # 插入学生信息到数据库
    add_student = 'INSERT INTO student (name, age, gender, score) VALUES (%s, %s, %s, %s)'
    data_student = (name, age, gender, score)
    self.cursor.execute(add_student, data_student)
    self.conn.commit()
    self.cursor.close()
    self.conn.close()
    tk.messagebox.showinfo('ok', '添加成功')

    # 清空用户输入的数据
    self.entry_name.delete(0, tk.END)
    self.entry_age.delete(0, tk.END)
    self.entry_id.delete(0, tk.END)
    self.entry_math.delete(0, tk.END)

def exit(self):
    self.master.destroy()

class DeleteWindow: def init(self, conn): self.conn = conn self.cursor = conn.cursor()

    self.master = tk.Toplevel()
    self.master.title('删除界面')
    self.master.geometry('400x300')

    self.label_name = tk.Label(self.master, text='姓名:')
    self.label_name.pack()
    self.entry_name = tk.Entry(self.master)
    self.entry_name.pack()

    self.button_delete = tk.Button(self.master, text='delete', command=self.delete_student)
    self.button_delete.pack()

def delete_student(self):
    name = self.entry_name.get()

    # 删除学生信息
    delete_student = 'DELETE FROM student WHERE name=%s'
    self.cursor.execute(delete_student, (name,))
    self.conn.commit()
    self.cursor.close()
    self.conn.close()
    tk.messagebox.showinfo('ok', '删除成功')

    # 清空用户输入的数据
    self.entry_name.delete(0, tk.END)

def exit(self):
    self.master.destroy()

class UpdateWindow: def init(self, conn): self.conn = conn self.cursor = conn.cursor()

    self.master = tk.Toplevel()
    self.master.title('修改界面')
    self.master.geometry('400x300')

    self.label_name = tk.Label(self.master, text='姓名:')
    self.label_name.pack()
    self.entry_name = tk.Entry(self.master)
    self.entry_name.pack()

    self.label_age = tk.Label(self.master, text='年龄:')
    self.label_age.pack()
    self.entry_age = tk.Entry(self.master)
    self.entry_age.pack()

    self.label_id = tk.Label(self.master, text='性别:')
    self.label_id.pack()
    self.entry_id = tk.Entry(self.master)
    self.entry_id.pack()

    self.label_math = tk.Label(self.master, text='成绩:')
    self.label_math.pack()
    self.entry_math = tk.Entry(self.master)
    self.entry_math.pack()

    self.button_update = tk.Button(self.master, text='update', command=self.update_student)
    self.button_update.pack()

def update_student(self):
    name = self.entry_name.get()
    age = self.entry_age.get()
    gender = self.entry_id.get()
    score = self.entry_math.get()

    # 更新学生信息
    update_student = 'UPDATE student SET age=%s, gender=%s, score=%s WHERE name=%s'
    data_student = (age, gender, score, name)
    self.cursor.execute(update_student, data_student)
    self.conn.commit()
    self.cursor.close()
    self.conn.close()
    tk.messagebox.showinfo('ok', '修改成功')

    # 清空用户输入的数据
    self.entry_name.delete(0, tk.END)
    self.entry_age.delete(0, tk.END)
    self.entry_id.delete(0, tk.END)
    self.entry_math.delete(0, tk.END)

def exit(self):
    self.master.destroy()

if name == 'main': root = tk.Tk() login_window = LoginWindow(root) root.mainloop()

Python Tkinter MySQL 学生信息管理系统

原文地址: https://www.cveoy.top/t/topic/ooVv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录