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

做一个班级信息收集的GUI程序,要求建立一个包含学号,班级,姓名的数据库表。通过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')  #打开excel文件的表格1
        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", "你真的想把我关掉吗(o.O?)"):  
        root.destroy()   
root.protocol("WM_DELETE_WINDOW", on_closing)  
# 运行GUI  
root.mainloop() 

运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值