You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

281 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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()函数获得Textinput_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()