实验报告——学生管理系统(python)

该代码段展示了一个使用Python的TKinter库创建的学生管理系统。它包括一个登录界面,用户需输入用户名和密码,以及一个主窗口,用于显示和操作学生成绩。登录成功后,用户可以进行添加、修改、删除学生成绩的操作。
摘要由CSDN通过智能技术生成

 先引用库函数

import os

import xlrd
import tkinter as tk
from tkinter import messagebox, ttk
from PIL import ImageTk, Image
import matplotlib
from matplotlib import pyplot as plt
from numpy import arange, sin, pi
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from xlutils.copy import copy

定义登录界面

def loginWindow():
    window.title('登入界面')
    window.geometry('800x600+300+150')
    window.resizable(False, False)
    canvas = tk.Canvas(window, width=800, height=600)
    image_root = get_image("background.png", 800, 600)
    canvas.create_image(400, 300, image=image_root)
    canvas.place(x=0, y=0, relwidth=1, relheight=1)
    l = tk.Label(window, text="Student Management System", fg="#06a099", font=("Sylfaen", 30))
    l2 = tk.Label(window, text='您好,请您先输入账号密码登入', fg="#06a099", font=('Arial', 12), width=30, height=2)
    l.grid(row=0, columnspan=4, padx=(160, 100), pady=(30, 0))
    # l.grid(row=1, columnspan=4, padx=(160, 100), pady=(30, 0))
    nameLabel = tk.Label(window, text="Enter your username", width=15, anchor='w',
                         font=("Sylfaen", 12)).grid(row=2, column=0, padx=(160, 0),
                                                    pady=(30, 0))
    passwordLabel = tk.Label(window, text="Enter your password", width=15, anchor='w',
                             font=("Sylfaen", 12)).grid(row=3, column=0, padx=(160, 0))
    username_text = tk.Entry(window, show=None, font=('Arial', 14))  # 显示成明文形式
    password_text = tk.Entry(window, show='*', font=('Arial', 14))  # 显示成密文形式
    username_text.insert(0, '请在此输入用户名')
    username_text.grid(row=2, column=1, padx=(0, 10), pady=(30, 0))
    password_text.grid(row=3, column=1, padx=(0, 10), pady=20)
    button = tk.Button(window, text="登 入", fg="#06a099", font=('Arial', 15), width=10,
                       command=lambda: login(username_text, password_text), takefocus=True)
    button.grid(row=4, columnspan=4, padx=(50, 10), pady=(10, 0))
    window.mainloop()
def login(username_text, password_text):
    """判断用户名密码"""
    uname = username_text.get()
    upwd = password_text.get()
    for i in range(0, 3):
        u1 = username[i]
        p1 = password[i]
        print("Username: {0} Password: {1}".format(u1, p1))
        print("uname: {0} upwd: {1}".format(uname, upwd))
        if (uname == u1) & (upwd == p1):
            """登入成功"""
            tk.messagebox.showinfo(title='登入成功', message='成功登入!欢迎,{0}。'.format(username[i]))
            window.destroy()
            """数据显示"""
            mainWindow()
            return
        else:
            if (uname == u1) & (upwd != p1):
                tk.messagebox.showinfo(title='登入失败', message='密码错误!'.format(username[i]))
            if (uname != u1) & (upwd == p1):
                tk.messagebox.showinfo(title='登入失败', message='用户名错误!'.format(username[i]))
    tk.messagebox.showinfo(title='登入失败', message='用户名和密码输入不正确!'.format(username[i]))

主窗口页面

def mainWindow():
    secondWindow = tk.Tk()
    secondWindow.geometry('1400x800')
    secondWindow.title("Display results")
    menuBar(secondWindow)
    appLabel = tk.Label(secondWindow, text="Student Management System",
                        fg="#06a099", width=40)
    appLabel.config(font=("Sylfaen", 30))
    appLabel.pack(side='top', fill='x')
    tree = showTable(secondWindow)

    """左侧窗口(添加/修改/删除学生成绩)"""
    frameLeft = tk.Frame(secondWindow, relief='groove')
    frameLeft.pack(side='left', expand='no', fill='y')
    tk.Label(frameLeft, text='输入学生学号', bg='pink').grid(row=0, column=0, padx=(0, 20), pady=(0, 0))
    no = tk.Entry(frameLeft, highlightcolor='blue', state='normal', relief='flat')
    no.grid(row=0, column=1, padx=(0, 0),
            pady=(0, 0))
    no.insert(1, '例: 00001')
    tk.Label(frameLeft, text='输入学生姓名', bg='pink').grid(row=1, column=0, padx=(0, 20), pady=(0, 0))
    name = tk.Entry(frameLeft, highlightcolor='blue', state='normal', relief='flat')
    name.grid(row=1, column=1, padx=(0, 0), pady=(0, 0))
    name.insert(1, '张三')
    tk.Label(frameLeft, text='输入学生班级', bg='pink').grid(row=2, column=0, padx=(0, 20), pady=(0, 0))
    Class = tk.Entry(frameLeft, highlightcolor='blue', state='normal', relief='flat')
    Class.grid(row=2, column=1, padx=(0, 0), pady=(0, 0))
    Class.insert(1, '2020-1')
    tk.Label(frameLeft, text='输入数学成绩', bg='pink').grid(row=3, column=0, padx=(0, 20), pady=(0, 0))
    math = tk.Entry(frameLeft, highlightcolor='blue', state='normal', relief='flat')
    math.grid(row=3, column=1, padx=(0, 0), pady=(0, 0))
    math.insert(1, '0.0')
    tk.Label(frameLeft, text='输入语文成绩', bg='pink').grid(row=4, column=0, padx=(0, 20), pady=(0, 0))
    Chinese = tk.Entry(frameLeft, highlightcolor='blue', state='normal', relief='flat')
    Chinese.grid(row=4, column=1, padx=(0, 0), pady=(0, 0))
    Chinese.insert(1, '0.0')
    tk.Label(frameLeft, text='输入英语成绩', bg='pink').grid(row=5, column=0, padx=(0, 20), pady=(0, 0))
    English = tk.Entry(frameLeft, highlightcolor='blue', state='normal', relief='flat')
    English.grid(row=5, column=1, padx=(0, 0), pady=(0, 0))
    English.insert(1, '0.0')

    append = tk \
        .Button(frameLeft, text="Append增加",
                command=lambda: studentAppend(no, name, Class, math, Chinese, English), padx=20,
                pady=0, relief='flat', fg='pink',
                activeforeground='blue') \
        .grid(row=6, column=0, padx=(0, 0), pady=(20, 0))
    delete = tk. \
        Button(frameLeft, text="Delete删除", command=lambda: studentDelete(no, name, Class, math, Chinese, English),
               padx=20, pady=0, relief='flat', fg='pink',
               activeforeground='blue') \
        .grid(row=6, column=1, padx=(0, 0), pady=(20, 0))
    update = tk. \
        Button(frameLeft, text="Update修改", command=lambda: studentUpdate(no, name, Class, math, Chinese, English),
               padx=20, pady=0, relief='flat', fg='pink',
               activeforeground='blue') \
        .grid(row=6, column=2, padx=(0, 0), pady=(20, 0))
    tk.Label(frameLeft, text='输入所需查询的学号').grid(row=7, column=0, padx=(0, 20), pady=(20, 0))
    IDSearch = tk.Entry(frameLeft, highlightcolor='blue', state='normal', relief='flat')
    IDSearch.grid(row=7, column=1, padx=(0, 0), pady=(20, 0))
    Search = tk. \
        Button(frameLeft, text="查找学生", command=lambda: StudentSearch(IDSearch), padx=20, pady=0, fg='gray',
               activeforeground='blue') \
        .grid(row=7, column=2, padx=(0, 0), pady=(20, 0))
    refresh = tk. \
        Button(frameLeft, text="Refresh 刷新表格", command=lambda: Refresh(secondWindow, tree), padx=20, pady=0, fg='gray',
               activeforeground='blue') \
        .grid(row=8, column=1, padx=(0, 0), pady=(20, 0))
    DataInfomation = tk. \
        Button(frameLeft, text="显示数据信息", command=lambda: DataInfo(), padx=20, pady=0, fg='gray',
               activeforeground='blue') \
        .grid(row=9, column=1, padx=(0, 0), pady=(20, 0))
    secondWindow.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值