作业作业:GUI程序设计--班级信息收集系

import tkinter as tk  
from tkinter import messagebox  
import sqlite3  
import pandas as pd  
  
# 连接到SQLite数据库  
def connect_to_db():  
    conn = sqlite3.connect('students.db')  
    cursor = conn.cursor()  
    return conn, cursor  
  
# 从Excel文件读取数据并导入到SQLite数据库  
def import_data_from_excel():  
    try:  
        df = pd.read_excel('students.xlsx', sheet_name='Sheet1')  
        conn, cursor = connect_to_db()  
        df.to_sql('students', conn, if_exists='append', index=False)  
        conn.commit()  
        messagebox.showinfo("Success", "Data imported successfully!")  
    except FileNotFoundError:  
        messagebox.showerror("Error", "The file students.xlsx does not exist.")  
    except Exception as e:  
        messagebox.showerror("Error", str(e))  
  
# 注册新学生  
def register_student():  
    student_id = student_id_entry.get()  
    name = name_entry.get()  
    class_name = class_name_entry.get()  
      
    if not all([student_id, name, class_name]):  
        messagebox.showerror("Error", "Please fill in all fields.")  
        return  
      
    conn, cursor = connect_to_db()  
    cursor.execute("INSERT INTO students (student_id, name, class_name) VALUES (?, ?, ?)",  
                   (student_id, name, class_name))  
    conn.commit()  
    messagebox.showinfo("Success", "Student registered successfully!")  
    clear_entries()  
  
# 查询学生学号  
def query_student_id():  
    student_id = query_entry.get()  
    conn, cursor = connect_to_db()  
    cursor.execute("SELECT name, class_name FROM students WHERE student_id=?", (student_id,))  
    result = cursor.fetchone()  
    if result:  
        messagebox.showinfo("Result", f"Name: {result[0]}, Class: {result[1]}")  
    else:  
        messagebox.showinfo("Result", "Student not found.")  
  
# 清除输入框  
def clear_entries():  
    student_id_entry.delete(0, tk.END)  
    name_entry.delete(0, tk.END)  
    class_name_entry.delete(0, tk.END)  
#  创建GUI界面    
root  =  tk.Tk()    
root.title("Student  Management  System")    
root.geometry("300x550")
    
#  导入数据按钮    
import_btn  =  tk.Button(root,  text="Import  from  Excel",  command=import_data_from_excel)    
import_btn.pack(pady=10)    
    

#  注册学生部分    
tk.Label(root,  text="想要加入我们吗?快快输入你的班级,姓名,学号吧!").pack(pady=10)    
student_id_entry  =  tk.Entry(root)    
student_id_entry.pack(pady=5)    
name_entry  =  tk.Entry(root)    
name_entry.pack(pady=5)    
class_name_entry  =  tk.Entry(root)    
class_name_entry.pack(pady=5)    
register_btn  =  tk.Button(root,  text="来了来了!GOGOGO",  command=register_student)    
register_btn.pack(pady=10)    


    
#  查询学生学号部分    
tk.Label(root,  text="想知道这个学号是谁吗?输入学号让我告诉你呀").pack(pady=10)    
query_entry  =  tk.Entry(root)    
query_entry.pack(pady=5)    
query_btn  =  tk.Button(root,  text="名字快显灵",  command=query_student_id)    
query_btn.pack(pady=10)    

    
#  通过名字查询学号    
def  query_student_by_name():    
        name  =  query_name_entry.get()    
        conn,  cursor  =  connect_to_db()    
        cursor.execute("SELECT  student_id,  class_name  FROM  students  WHERE  name=?",  (name,))    
        result  =  cursor.fetchone()    
        if  result:    
                messagebox.showinfo("Result",  f"Student  ID:  {result[0]},  Class:  {result[1]}")    
        else:    
                messagebox.showinfo("Result",  "Student  not  found.")    
    
#  查询学生名字部分    
tk.Label(root,  text="让我看看TA的学号是多少").pack(pady=10)    
query_name_entry  =  tk.Entry(root)    
query_name_entry.pack(pady=5)    
query_by_name_btn  =  tk.Button(root,  text="出现学号吧",  command=query_student_by_name)    
query_by_name_btn.pack(pady=10)    
      
#  关闭窗口事件    
def  on_closing():    
        if  messagebox.askokcancel("Quit",  "真的要把我关掉吗"):
                root.destroy()    
root.protocol("WM_DELETE_WINDOW",  on_closing)    
    
#  运行GUI    
root.mainloop()

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值