import tkinter as tk import tkinter.ttk as ttk import pymysql from tkinter import messagebox # 连接数据库 conn = pymysql.connect( host='localhost', user='root', password='zxq120zxq@', database='column') # 创建游标 cursor = conn.cursor() cursor.execute("DROP TABLE IF EXISTS courses") sql_create_table = """ CREATE TABLE courses ( course_id INT PRIMARY KEY AUTO_INCREMENT, course_name VARCHAR(255), time DATETIME, location VARCHAR(255) ) """ cursor.execute(sql_create_table) # 添加数据 data = [ ('Python 课程', '2024-06-25 09:00:00', '弘毅-103'), ('Java 课程', '2024-06-26 10:00:00', '明德-236'), ('C++ 课程', '2024-06-27 11:00:00', '明德-206') ] sql_insert = "INSERT INTO courses (course_name, time, location) VALUES (%s, %s, %s)" cursor.executemany(sql_insert, data) conn.commit() #test def login(): username = entry_username.get() password = entry_password.get() # 假设用户名和密码都为'test'进行验证 if username == 'test' and password == 'test': login_frame.pack_forget() main_frame.pack() else: messagebox.showwarning("错误", "用户名或密码错误") def insert_course(): insert_window = tk.Toplevel(root) insert_window.title("插入课程") label_insert_course_name = ttk.Label(insert_window, text="课程名称:") entry_insert_course_name = ttk.Entry(insert_window) label_insert_time = ttk.Label(insert_window, text="时间:") entry_insert_time = ttk.Entry(insert_window) label_insert_location = ttk.Label(insert_window, text="地点:") entry_insert_location = ttk.Entry(insert_window) button_insert = ttk.Button(insert_window, text="插入", command=lambda: perform_insert(entry_insert_course_name.get(), entry_insert_time.get(), entry_insert_location.get())) label_insert_course_name.pack() entry_insert_course_name.pack() label_insert_time.pack() entry_insert_time.pack() label_insert_location.pack() entry_insert_location.pack() button_insert.pack() def perform_insert(course_name, time, location): sql = "INSERT INTO courses (course_name, time, location) VALUES (%s, %s, %s)" try: cursor.execute(sql, (course_name, time, location)) conn.commit() messagebox.showinfo("成功", "课程插入成功") show_courses() insert_window.destroy() except pymysql.Error as e: messagebox.showerror("错误", f"插入课程时出错: {e}") def delete_course(): delete_window = tk.Toplevel(root) delete_window.title("删除课程") label_delete_course_id = ttk.Label(delete_window, text="课程 ID:") entry_delete_course_id = ttk.Entry(delete_window) button_delete = ttk.Button(delete_window, text="删除", command=lambda: perform_delete(entry_delete_course_id.get())) label_delete_course_id.pack() entry_delete_course_id.pack() button_delete.pack() def perform_delete(course_id): sql = "DELETE FROM courses WHERE course_id = %s" try: cursor.execute(sql, (course_id)) conn.commit() messagebox.showinfo("成功", "课程删除成功") show_courses() delete_window.destroy() except pymysql.Error as e: messagebox.showerror("错误", f"删除课程时出错: {e}") def update_course(): update_window = tk.Toplevel(root) update_window.title("更新课程") label_update_course_id = ttk.Label(update_window, text="课程 ID:") entry_update_course_id = ttk.Entry(update_window) label_update_course_name = ttk.Label(update_window, text="课程名称:") entry_update_course_name = ttk.Entry(update_window) label_update_time = ttk.Label(update_window, text="时间:") entry_update_time = ttk.Entry(update_window) label_update_location = ttk.Label(update_window, text="地点:") entry_update_location = ttk.Entry(update_window) button_update = ttk.Button(update_window, text="更新", command=lambda: perform_update(entry_update_course_id.get(), entry_update_course_name.get(), entry_update_time.get(), entry_update_location.get())) label_update_course_id.pack() entry_update_course_id.pack() label_update_course_name.pack() entry_update_course_name.pack() label_update_time.pack() entry_update_time.pack() label_update_location.pack() entry_update_location.pack() button_update.pack() def perform_update(course_id, course_name, time, location): sql = "UPDATE courses SET course_name = %s, time = %s, location = %s WHERE course_id = %s" try: cursor.execute(sql, (course_name, time, location, course_id)) conn.commit() messagebox.showinfo("成功", "课程更新成功") show_courses() update_window.destroy() except pymysql.Error as e: messagebox.showerror("错误", f"更新课程时出错: {e}") def show_courses(): sql = "SELECT * FROM courses" try: cursor.execute(sql) results = cursor.fetchall() treeview.delete(*treeview.get_children()) for row in results: treeview.insert('', 'end', values=(row[0], row[1], row[2], row[3])) except pymysql.Error as e: messagebox.showerror("错误", f"获取课程列表时出错: {e}") root = tk.Tk() root.title("课程管理系统") root.geometry("800x600") # 设置窗口大小 # 登录页面 login_frame = ttk.Frame(root, padding="20") login_frame.pack(side=tk.TOP, fill=tk.BOTH) label_username = ttk.Label(login_frame, text="用户名:") entry_username = ttk.Entry(login_frame) label_password = ttk.Label(login_frame, text="密码:") entry_password = ttk.Entry(login_frame, show="*") button_login = ttk.Button(login_frame, text="登录", command=login) label_username.grid(row=0, column=0, sticky=tk.W, padx=10, pady=10) entry_username.grid(row=0, column=1, sticky=tk.EW, padx=10, pady=10) label_password.grid(row=1, column=0, sticky=tk.W, padx=10, pady=10) entry_password.grid(row=1, column=1, sticky=tk.EW, padx=10, pady=10) button_login.grid(row=2, column=1, sticky=tk.E, padx=10, pady=10) # 主页面 main_frame = ttk.Frame(root, padding="20") button_insert = ttk.Button(main_frame, text="插入课程", command=insert_course) button_delete = ttk.Button(main_frame, text="删除课程", command=delete_course) button_update = ttk.Button(main_frame, text="更新课程", command=update_course) button_show = ttk.Button(main_frame, text="显示课程", command=show_courses) button_insert.pack() button_delete.pack() button_update.pack() button_show.pack() # 课程列表 treeview = ttk.Treeview(main_frame) treeview["columns"] = ("courses_id", "course_name", "time", "location") treeview.column("#0", width=0, stretch=tk.NO) treeview.column("courses_id", anchor=tk.CENTER, width=80) treeview.column("course_name", anchor=tk.CENTER, width=150) treeview.column("time", anchor=tk.CENTER, width=150) treeview.column("location", anchor=tk.CENTER, width=100) treeview.heading("#0", text="", anchor=tk.CENTER) treeview.heading("courses_id", text="课程 ID", anchor=tk.CENTER) treeview.heading("course_name", text="课程名称", anchor=tk.CENTER) treeview.heading("time", text="时间", anchor=tk.CENTER) treeview.heading("location", text="地点", anchor=tk.CENTER) treeview.pack(fill=tk.BOTH, expand=True) root.mainloop() cursor.close() conn.close()
python+mysql+tkinter课程表管理系统
最新推荐文章于 2024-07-17 21:05:05 发布