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

 先引用库函数

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()

猜你喜欢

转载自blog.csdn.net/m0_74776728/article/details/130958322