|
|
|
|
import os
|
|
|
|
|
import tkinter
|
|
|
|
|
|
|
|
|
|
import psutil,time,threading
|
|
|
|
|
import ttkbootstrap
|
|
|
|
|
from tkinter import *
|
|
|
|
|
from tkinter import ttk, messagebox
|
|
|
|
|
import zipfile
|
|
|
|
|
|
|
|
|
|
import tkinter as tk
|
|
|
|
|
import _sqlite3
|
|
|
|
|
|
|
|
|
|
# 数据库
|
|
|
|
|
conn = _sqlite3.connect("data.db")
|
|
|
|
|
c = conn.cursor()
|
|
|
|
|
# c.execute("create table score(itemName char(20),importPrice char(20),"
|
|
|
|
|
# "sellPrice char(20),deductPrice char(20))")
|
|
|
|
|
def Serchone(sellPrice):
|
|
|
|
|
c.execute("select itemName,deductPrice from score where score.sellPrice = '%s'" % sellPrice)
|
|
|
|
|
return c.fetchall()
|
|
|
|
|
def Serchone2():
|
|
|
|
|
c.execute("select itemName,deductPrice from score order by deductPrice desc")
|
|
|
|
|
return c.fetchall()
|
|
|
|
|
#根据id查询教师个人信息sql语句
|
|
|
|
|
def SerchMy(name):
|
|
|
|
|
c.execute("select * from students where students.name = '%s'" % name)
|
|
|
|
|
return c.fetchall()
|
|
|
|
|
#修改密码sql语句
|
|
|
|
|
def UpdatePassWord(id, name):
|
|
|
|
|
c.execute('update students set id = (?) where name = (?)',
|
|
|
|
|
(id, name))
|
|
|
|
|
# 提交事务
|
|
|
|
|
conn.commit()
|
|
|
|
|
|
|
|
|
|
#主窗体
|
|
|
|
|
class InputFrame(Frame): # 继承Frame类
|
|
|
|
|
def __init__(self, master=None):
|
|
|
|
|
Frame.__init__(self, master)
|
|
|
|
|
self.root = master # 定义内部变量root
|
|
|
|
|
self.createPage()
|
|
|
|
|
|
|
|
|
|
def createPage(self):
|
|
|
|
|
Label(self, text='欢迎登录信息管理系统!!!', font=('华文行楷', 20), fg='purple').pack()
|
|
|
|
|
# #实现测网速
|
|
|
|
|
# def _():
|
|
|
|
|
# meter = ttkbootstrap.Meter(
|
|
|
|
|
# metersize=180,
|
|
|
|
|
# padding=50,
|
|
|
|
|
# amountused=0,
|
|
|
|
|
# metertype="semi",
|
|
|
|
|
# subtext="当前网速(kB/s)",
|
|
|
|
|
# subtextstyle="warning",
|
|
|
|
|
# interactive=False,
|
|
|
|
|
# bootstyle='primary',
|
|
|
|
|
# )
|
|
|
|
|
# meter.pack(side=ttkbootstrap.LEFT, padx=5)
|
|
|
|
|
# while True:
|
|
|
|
|
# meter.configure(amountused=round(getNet(), 2))
|
|
|
|
|
# def getNet():
|
|
|
|
|
# recv_before = psutil.net_io_counters().bytes_recv
|
|
|
|
|
# time.sleep(1)
|
|
|
|
|
# recv_now = psutil.net_io_counters().bytes_recv
|
|
|
|
|
# recv = (recv_now - recv_before) / 1024
|
|
|
|
|
# return recv
|
|
|
|
|
# t = threading.Thread(target=_)
|
|
|
|
|
# t.setDaemon(True)
|
|
|
|
|
# t.start()
|
|
|
|
|
|
|
|
|
|
#我的信息
|
|
|
|
|
class MyFrame(Frame):
|
|
|
|
|
def __init__(self, name, master=None):
|
|
|
|
|
Frame.__init__(self, master)
|
|
|
|
|
self.root = master # 定义内部变量root
|
|
|
|
|
self.name = name
|
|
|
|
|
self.createPage()
|
|
|
|
|
|
|
|
|
|
def createPage(self):
|
|
|
|
|
Button(self, text='个人信息', command=self.My_Page).pack()
|
|
|
|
|
def My_Page(self):
|
|
|
|
|
li = SerchMy(self.name)
|
|
|
|
|
pth = li[0]
|
|
|
|
|
print(pth)
|
|
|
|
|
Label(self, text='工号: ').pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='%s' % pth[0]).pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='姓名: ').pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='%s' % pth[1]).pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='性别: ').pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='%s' % pth[2]).pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='专业: ').pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='%s' % pth[3]).pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='职称: ').pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='%s' % pth[4]).pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='入职年月: ').pack(side=LEFT,ipady=10)
|
|
|
|
|
Label(self, text='%s' % pth[5]).pack(side=LEFT,ipady=10)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#修改密码
|
|
|
|
|
class UpdatepwdFrame(Frame):
|
|
|
|
|
def __init__(self, name, master=None):
|
|
|
|
|
Frame.__init__(self, master)
|
|
|
|
|
self.root = master # 定义内部变量root
|
|
|
|
|
self.name = name
|
|
|
|
|
self.id = StringVar()
|
|
|
|
|
self.createPage()
|
|
|
|
|
|
|
|
|
|
def createPage(self):
|
|
|
|
|
Button(self, text='修改密码', command=self.My_Page).grid()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def My_Page(self):
|
|
|
|
|
li = SerchMy(self.name)
|
|
|
|
|
pth = li[0]
|
|
|
|
|
print(pth)
|
|
|
|
|
self.id = tkinter.StringVar()
|
|
|
|
|
self.ids = tkinter.StringVar()
|
|
|
|
|
Label(self).grid(row=0, stick=W, pady=10)
|
|
|
|
|
Label(self, text='请输入新密码: ').grid(row=1, stick=W, pady=10)
|
|
|
|
|
Entry(self, textvariable=self.id).grid(row=1, column=1, stick=E)
|
|
|
|
|
Label(self, text='确认密码: ').grid(row=2, stick=W, pady=10)
|
|
|
|
|
Entry(self, textvariable=self.ids).grid(row=2, column=1, stick=E)
|
|
|
|
|
Button(self, text='确认修改', width=8, height=2, command=self.UpdateDate).grid(row=3, column=1, stick=E)
|
|
|
|
|
self.id.set('')
|
|
|
|
|
self.ids.set('')
|
|
|
|
|
|
|
|
|
|
def UpdateDate(self):
|
|
|
|
|
UpdatePassWord(self.id.get(),self.name)
|
|
|
|
|
tkinter.messagebox.showerror("成功", "修改成功")
|
|
|
|
|
|
|
|
|
|
#查看成绩类
|
|
|
|
|
class QueryFrame(Frame): # 继承Frame类
|
|
|
|
|
def __init__(self, master=None):
|
|
|
|
|
Frame.__init__(self, master)
|
|
|
|
|
self.root = master # 定义内部变量root
|
|
|
|
|
self.itemName = StringVar()
|
|
|
|
|
self.sellPrice = StringVar()
|
|
|
|
|
self.createPage()
|
|
|
|
|
|
|
|
|
|
def createPage(self):
|
|
|
|
|
Label(self, text='我的成绩', font=('华文行楷', 20), fg='purple').pack()
|
|
|
|
|
columns = ("itemName", "deductPrice")
|
|
|
|
|
columns_values = ("课程名称", "成绩")
|
|
|
|
|
self.tree_view = ttk.Treeview(self, show='headings', columns=columns)
|
|
|
|
|
self.tree_view.column('itemName', width=80, anchor='center')
|
|
|
|
|
self.tree_view.column('deductPrice', width=80, anchor='center')
|
|
|
|
|
self.tree_view.heading('itemName', text='课程名称')
|
|
|
|
|
self.tree_view.heading('deductPrice', text='成绩')
|
|
|
|
|
self.tree_view.pack(fill=tk.BOTH, expand=True)
|
|
|
|
|
scores = Serchone2()
|
|
|
|
|
print(scores)
|
|
|
|
|
index = 0
|
|
|
|
|
for s in scores:
|
|
|
|
|
print(s)
|
|
|
|
|
self.tree_view.insert('', index + 1, values=(
|
|
|
|
|
s[0], s[1],
|
|
|
|
|
))
|
|
|
|
|
#意见反馈类
|
|
|
|
|
class CountFrame(Frame): # 继承Frame类
|
|
|
|
|
def __init__(self, master=None):
|
|
|
|
|
Frame.__init__(self, master)
|
|
|
|
|
self.root = master # 定义内部变量root
|
|
|
|
|
self.createPage()
|
|
|
|
|
|
|
|
|
|
def createPage(self):
|
|
|
|
|
Label(self, text='请说出你的想法', font=('华文行楷', 20), fg='purple').pack()
|
|
|
|
|
text = tk.Text(self, width=100, height=20)
|
|
|
|
|
text.pack()
|
|
|
|
|
text.insert("insert", "")
|
|
|
|
|
text.insert('end', '\n')
|
|
|
|
|
mytxtfile = "mytxtfile.txt"
|
|
|
|
|
# 读取TXT文件,显示在tkinter的Text
|
|
|
|
|
def in_f_txt():
|
|
|
|
|
if os.path.exists(mytxtfile):
|
|
|
|
|
a = open(mytxtfile, 'r', encoding='utf-8')
|
|
|
|
|
for id_names in a:
|
|
|
|
|
text.insert('insert', id_names)
|
|
|
|
|
a.close()
|
|
|
|
|
|
|
|
|
|
text.insert('end', '\n')
|
|
|
|
|
# 输入文本框
|
|
|
|
|
input_txt = tk.Entry(self, width=20)
|
|
|
|
|
input_txt.pack()
|
|
|
|
|
|
|
|
|
|
def add():
|
|
|
|
|
# 通过get()函数获得Text(input_txt)的输入内容
|
|
|
|
|
var_id = input_txt.get()
|
|
|
|
|
h = open(mytxtfile, 'a+', encoding='utf-8')
|
|
|
|
|
h.write(var_id + '\n') # 添加到文件夹中的txt
|
|
|
|
|
h.close()
|
|
|
|
|
|
|
|
|
|
b2 = tk.Button(text, text="提交意见", command=add)
|
|
|
|
|
text.window_create("insert", window=b2)
|
|
|
|
|
text.insert('end', '\n')
|
|
|
|
|
|
|
|
|
|
#提交作业
|
|
|
|
|
class SubmitFrame(Frame): # 继承Frame类
|
|
|
|
|
def __init__(self, master=None):
|
|
|
|
|
Frame.__init__(self, master)
|
|
|
|
|
self.root = master # 定义内部变量root
|
|
|
|
|
self.createPage()
|
|
|
|
|
|
|
|
|
|
def createPage(self):
|
|
|
|
|
Button(self, text='提交作业', font=('华文行楷', 20), command=self.show_submit_frame).pack(anchor='center', pady=5)
|
|
|
|
|
#提交作业
|
|
|
|
|
def show_submit_frame(self):
|
|
|
|
|
window = tk.Tk()
|
|
|
|
|
window.title("提交作业")
|
|
|
|
|
window.geometry("800x600") # 窗口设置
|
|
|
|
|
window.resizable(0, 0) # 固定窗口大小
|
|
|
|
|
|
|
|
|
|
var = tk.StringVar() # 输入框内容
|
|
|
|
|
self.num = 1 # 已生成的作业数量+1
|
|
|
|
|
source = str() # 单个源代码的内容
|
|
|
|
|
self.path = str() # 打包相对路径
|
|
|
|
|
# __Labels
|
|
|
|
|
head = tk.Label(window, text=" 请将第{num}题源代码复制到框中:".format(num=self.num),
|
|
|
|
|
font=('Arial', 15), width=20, height=1)
|
|
|
|
|
# 这里的长宽以字符为单位
|
|
|
|
|
head.place(x=40, y=100, anchor='nw')
|
|
|
|
|
|
|
|
|
|
name = tk.Label(window, text="请输入姓名:", font=('Arial', 15), )
|
|
|
|
|
name.place(x=3, y=5, anchor='nw')
|
|
|
|
|
|
|
|
|
|
xuehao = tk.Label(window, text="请输入学号:", font=('Arial', 15), )
|
|
|
|
|
xuehao.place(x=3, y=35, anchor='nw')
|
|
|
|
|
|
|
|
|
|
ok_txt = tk.Label(window, text="点击确定即可\n以框中内容\n生成一个.py文件:", font=('Arial', 15))
|
|
|
|
|
ok_txt.place(x=600, y=20, anchor='nw')
|
|
|
|
|
|
|
|
|
|
# __Entrys
|
|
|
|
|
name_en = tk.Entry(window)
|
|
|
|
|
name_en.place(x=145, y=8, anchor='nw')
|
|
|
|
|
|
|
|
|
|
xuehao_en = tk.Entry(window)
|
|
|
|
|
xuehao_en.place(x=145, y=38, anchor='nw')
|
|
|
|
|
|
|
|
|
|
# __Buttons
|
|
|
|
|
def make_zip(floder, backupfilename): # floder:要打包的文件夹;backupfilename:指定文件名
|
|
|
|
|
backupfilename = backupfilename + '.zip'
|
|
|
|
|
f = zipfile.ZipFile(backupfilename, 'w') # c创建一个zip对象
|
|
|
|
|
|
|
|
|
|
for floderName, subFolders, fileNames in os.walk(floder):
|
|
|
|
|
f.write(floderName)
|
|
|
|
|
for subFolder in subFolders:
|
|
|
|
|
f.write(os.path.join(floderName, subFolder))
|
|
|
|
|
for fileName in fileNames:
|
|
|
|
|
f.write(os.path.join(floderName, fileName))
|
|
|
|
|
f.close()
|
|
|
|
|
|
|
|
|
|
def ok_hit(): ##确认 键的功能
|
|
|
|
|
# global path
|
|
|
|
|
self.path = "./{xuehao}_{name}".format(xuehao=xuehao_en.get(), name=name_en.get())
|
|
|
|
|
folder = os.path.exists(self.path)
|
|
|
|
|
if not folder:
|
|
|
|
|
os.makedirs(self.path)
|
|
|
|
|
source = content.get("0.0", "end")
|
|
|
|
|
|
|
|
|
|
with open(self.path + '/' + "第{num}题.py".format(num=self.num), 'w') as f:
|
|
|
|
|
f.write(source)
|
|
|
|
|
self.num += 1
|
|
|
|
|
head.config(text="请将第{num}题源代码复制到框中:".format(num=self.num))
|
|
|
|
|
content.delete("0.0", 'end')
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def zip_them_hit(): ##打包键功能
|
|
|
|
|
make_zip(self.path, "{xuehao}_{name}".format
|
|
|
|
|
(xuehao=xuehao_en.get(), name=name_en.get()))
|
|
|
|
|
messagebox.showinfo(message="你的 {num} 个.py语言源代码\n已经打包入zip压缩包中\n在当前目录即可找到".format(num=self.num-1), title="Packing has been complished!")
|
|
|
|
|
os.system("explorer " + os.getcwd())
|
|
|
|
|
window.destroy() ##结束程序
|
|
|
|
|
pass
|
|
|
|
|
#创建Buttons
|
|
|
|
|
ok = tk.Button(window, text="确 定", command=ok_hit, width=10, height=2, font=40)
|
|
|
|
|
ok.place(x=650, y=120, anchor='nw')
|
|
|
|
|
|
|
|
|
|
zip_them = tk.Button(window, text="打包成zip", command=zip_them_hit, width=10,height=2, font=40)
|
|
|
|
|
zip_them.place(x=650, y=250, anchor='nw')
|
|
|
|
|
# __Texts
|
|
|
|
|
content = tk.Text(window, width=65, height=30)
|
|
|
|
|
content.place(x=20, y=130, anchor='nw')
|
|
|
|
|
window.mainloop()
|