import tkinter as tk/nimport mysql.connector/nfrom tkinter import messagebox/n/n/nclass LoginWindow:/n def init(self, master):/n self.master = master/n master.title('Login')/n master.geometry('300x150')/n/n self.label_username = tk.Label(master, text='Username:')/n self.label_username.pack()/n/n self.entry_username = tk.Entry(master)/n self.entry_username.pack()/n/n self.label_password = tk.Label(master, text='Password:')/n self.label_password.pack()/n/n self.entry_password = tk.Entry(master, show='*')/n self.entry_password.pack()/n/n self.button_login = tk.Button(master, text='Login', command=self.login)/n self.button_login.pack()/n/n def login(self):/n username = self.entry_username.get()/n password = self.entry_password.get()/n/n # 连接MySQL数据库/n try:/n self.conn = mysql.connector.connect(/n host='localhost',/n user='root',/n password='844133',/n database='oyy', auth_plugin='mysql_native_password'/n )/n self.master.destroy()/n MainWindow(self.conn)/n except:/n tk.messagebox.showerror('Error', 'Invalid username or password')/n/n/nclass MainWindow:/n def init(self, conn):/n self.conn = conn/n self.cursor = conn.cursor()/n/n self.master = tk.Tk()/n self.master.title('查询界面')/n self.master.geometry('400x300')/n/n self.label_name = tk.Label(self.master, text='Enter student name:')/n self.label_name.pack()/n/n self.entry_name = tk.Entry(self.master)/n self.entry_name.pack()/n/n self.button_search = tk.Button(self.master, text='Search', command=self.search)/n self.button_search.pack()/n/n self.label_result = tk.Label(self.master, text='')/n self.label_result.pack()/n/n # 菜单栏/n self.menu_bar = tk.Menu(self.master)/n self.file_menu = tk.Menu(self.menu_bar, tearoff=0)/n self.file_menu.add_command(label='录入信息', command=self.add_window)/n self.file_menu.add_command(label='删除信息', command=self.delete_window)/n self.file_menu.add_command(label='修改信息', command=self.update_window)/n self.menu_bar.add_cascade(label='菜单', menu=self.file_menu)/n self.master.config(menu=self.menu_bar)/n/n def search(self):/n name = self.entry_name.get()/n/n # 查询学生信息/n query = 'SELECT * FROM student WHERE name=%s'/n self.cursor.execute(query, (name,))/n result = self.cursor.fetchone()/n/n if result:/n id, name, age, gender, score = result/n self.label_result.config(text=f'Name: {name}/Age: {age}/gender: {gender}/score: {score}')/n else:/n self.label_result.config(text='No result found')/n/n def add_window(self):/n AddWindow(self.conn)/n/n def delete_window(self):/n DeleteWindow(self.conn)/n/n def update_window(self):/n UpdateWindow(self.conn)/n/n/nclass AddWindow:/n def init(self, conn):/n self.conn = conn/n self.cursor = conn.cursor()/n/n self.master = tk.Tk()/n self.master.title('增加界面')/n self.master.geometry('400x300')/n/n self.label_name = tk.Label(self.master, text='姓名:')/n self.label_name.pack()/n self.entry_name = tk.Entry(self.master)/n self.entry_name.pack()/n/n self.label_age = tk.Label(self.master, text='年龄:')/n self.label_age.pack()/n self.entry_age = tk.Entry(self.master)/n self.entry_age.pack()/n/n self.label_id = tk.Label(self.master, text='性别:')/n self.label_id.pack()/n self.entry_id = tk.Entry(self.master)/n self.entry_id.pack()/n/n self.label_math = tk.Label(self.master, text='成绩:')/n self.label_math.pack()/n self.entry_math = tk.Entry(self.master)/n self.entry_math.pack()/n/n self.button_add = tk.Button(self.master, text='add', command=self.add_student)/n self.button_add.pack()/n/n def add_student(self):/n name = self.entry_name.get()/n age = self.entry_age.get()/n gender = self.entry_id.get()/n score = self.entry_math.get()/n/n # 插入学生信息到数据库/n add_student = 'INSERT INTO student (name, age, gender, score) VALUES (%s, %s, %s, %s)'/n data_student = (name, age, gender, score)/n self.cursor.execute(add_student, data_student)/n self.conn.commit()/n tk.messagebox.showinfo('ok', '添加成功')/n/n # 清空用户输入的数据/n self.entry_name.delete(0, tk.END)/n self.entry_age.delete(0, tk.END)/n self.entry_id.delete(0, tk.END)/n self.entry_math.delete(0, tk.END)/n/n def exit(self):/n self.master.destroy()/n/n/nclass DeleteWindow:/n def init(self, conn):/n self.conn = conn/n self.cursor = conn.cursor()/n/n self.master = tk.Tk()/n self.master.title('删除界面')/n self.master.geometry('400x300')/n/n self.label_name = tk.Label(self.master, text='姓名:')/n self.label_name.pack()/n self.entry_name = tk.Entry(self.master)/n self.entry_name.pack()/n/n self.button_delete = tk.Button(self.master, text='delete', command=self.delete_student)/n self.button_delete.pack()/n/n def delete_student(self):/n name = self.entry_name.get()/n/n # 删除学生信息/n delete_student = 'DELETE FROM student WHERE name=%s'/n self.cursor.execute(delete_student, (name,))/n self.conn.commit()/n tk.messagebox.showinfo('ok', '删除成功')/n/n # 清空用户输入的数据/n self.entry_name.delete(0, tk.END)/n/n def exit(self):/n self.master.destroy()/n/n/nclass UpdateWindow:/n def init(self, conn):/n self.conn = conn/n self.cursor = conn.cursor()/n/n self.master = tk.Tk()/n self.master.title('修改界面')/n self.master.geometry('400x300')/n/n self.label_name = tk.Label(self.master, text='姓名:')/n self.label_name.pack()/n self.entry_name = tk.Entry(self.master)/n self.entry_name.pack()/n/n self.label_age = tk.Label(self.master, text='年龄:')/n self.label_age.pack()/n self.entry_age = tk.Entry(self.master)/n self.entry_age.pack()/n/n self.label_id = tk.Label(self.master, text='性别:')/n self.label_id.pack()/n self.entry_id = tk.Entry(self.master)/n self.entry_id.pack()/n/n self.label_math = tk.Label(self.master, text='成绩:')/n self.label_math.pack()/n self.entry_math = tk.Entry(self.master)/n self.entry_math.pack()/n/n self.button_update = tk.Button(self.master, text='update', command=self.update_student)/n self.button_update.pack()/n/n def update_student(self):/n name = self.entry_name.get()/n age = self.entry_age.get()/n gender = self.entry_id.get()/n score = self.entry_math.get()/n/n # 更新学生信息/n update_student = 'UPDATE student SET age=%s, gender=%s, score=%s WHERE name=%s'/n data_student = (age, gender, score, name)/n self.cursor.execute(update_student, data_student)/n self.conn.commit()/n tk.messagebox.showinfo('ok', '修改成功')/n/n # 清空用户输入的数据/n self.entry_name.delete(0, tk.END)/n self.entry_age.delete(0, tk.END)/n self.entry_id.delete(0, tk.END)/n self.entry_math.delete(0, tk.END)/n/n def exit(self):/n self.master.destroy()/n/n/nif name == 'main':/n root = tk.Tk()/n login_window = LoginWindow(root)/n root.mainloop()

Python Tkinter 学生信息管理系统(MySQL 数据库连接)

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

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