import tkinter as tk
from tkinter import ttk
from custom_widget import spacex, spacey, message_box, multipleList
import pymysql
import json
try:
config_file = open('config.json')
except:
print('未找到数据库配置文件,请先运行config.py')
print('python config.py')
exit()
config = json.load(config_file)
config_file.close()
db = pymysql.connect(
host=config['host'],
user=config['user'],
password=config['password'],
database=config['database'])
cursor = db.cursor()
pwd_admin = '123' #管理员密码
def isnum(s):
l = s.split('.')
if len(l) > 2:
return 0
elif len(l) == 1:
if l[0].isdigit():
return 1
else:
return 0
elif len(l) == 2:
if l[0].isdigit() and l[1].isdigit():
return 2
else:
return 0
def sql(s):
global cursor
cursor.execute(s)
try:
data = cursor.fetchall()
result = []
for item in data:
result.append(list(item))
for i in range(len(result)):
for j in range(len(result[i])):
if isinstance(result[i][j], str):
result[i][j] = result[i][j].rstrip()
return result
except Exception:
return
class help_page:
def __init__(self):
self.root = tk.Tk()
self.root.title('帮助')
sw = self.root.winfo_screenwidth()//2
sh = self.root.winfo_screenheight()//2
self.root.geometry('250x150+{}+{}'.format(sw-200, sh-200))
self.frame = tk.Frame(self.root)
self.frame.pack()
spacey(self.frame, 10)
name_label = tk.Label(
self.frame,
text='学生成绩管理系统')
name_label.pack()
spacey(self.frame, 10)
class_label = tk.Label(
self.frame,
text='作者')
class_label.pack()
spacey(self.frame, 10)
author_label = tk.Label(
self.frame,
text='L-ING')
author_label.pack()
spacey(self.frame, 10)
exit = tk.Button(
self.frame,
text='退出',
command=self.exit)
exit.pack()
def exit(self):
self.root.destroy()
class query_page:
def __init__(self, master): # 需要重定义self.get_sql(),self.get_area(),self.root.title(),self.exit()
self.area = self.get_area()
self.sql = self.get_sql()
self.data = self.get_data()
self.root = master
self.root.geometry('500x400')
self.frame = tk.Frame(self.root)
self.frame.pack()
spacey(self.frame, 10)
top_sub_frame = tk.Frame(self.frame)
top_sub_frame.pack(fill='x')
help = tk.Button(
top_sub_frame,
text='帮助',
command=self.help)
help.pack(side='left')
spacex(top_sub_frame, 10, side='left')
exit = tk.Button(
top_sub_frame,
text='退出',
command=self.exit)
exit.pack(side='left')
tk.Frame(top_sub_frame).pack(side='left', fill='x')
spacey(self.frame, 10)
id_sub_frame = tk.Frame(self.frame)
id_sub_frame.pack()
id_label = tk.Label(
id_sub_frame,
text='学号')
id_label.pack(side='left')
spacex(id_sub_frame, 5, side='left')
self.search_entry = tk.Entry(id_sub_frame)
self.search_entry.pack(side='left')
spacex(id_sub_frame, 5, side='left')
search = tk.Button(
id_sub_frame,
text='查询',
command=self.search)
search.pack(side='left')
spacex(id_sub_frame, 5, side='left')
reset = tk.Button(
id_sub_frame,
text='复位',
command=self.load)
reset.pack(side='left')
spacey(self.frame, 10)
self.details_list = self.get_list()
self.details_list.pack()
self.load()
def get_list(self):
_list = multipleList(
self.frame,
area=self.area,
command=self.search_double_click,
height=15)
return _list
def get_area(self):
return 0
def get_sql(self):
return 0
def clear(self):
for item in self.details_list.get_children():
self.details_list.delete(item)
def get_data(self):
return sql(self.sql)
def load(self):
self.clear()
for item in self.data:
self.details_list.insert('', 'end', values=item)
def search(self):
_id = self.search_entry.get()
self.load()
if isnum(_id) == 1:
result = sql(self.sql+' where sno=%s' % _id)
if _id not in [item[0] for item in result]:
message_box('学号不存在,请重新输入!')
else:
self.clear()
for item in result:
self.details_list.insert('', 'end', values=item)
elif _id == '':
message_box('学号不能为空!')
else:
message_box('请输入数字!')
def search_double_click(self, event):
_id = self.details_list.item(self.details_list.focus(), 'values')[0]
self.search_entry.delete(0, 'end')
self.search_entry.insert(0, _id)
self.search()
def help(self):
help_page()
def exit(self):
return 0
class course_details_student_page(query_page):
def __init__(self, master):
super(course_details_student_page, self).__init__(master)
self.root.title('开课情况查询')
def get_area(self):
return ('学号', '课程号', '课程名', '学分')
def get_sql(self):
return 'select * from xskkqk'
def exit(self):
self.frame.destroy()
student_menu_page(self.root)
class each_grade_query_student_page(query_page):
def __init__(self, master):
super(each_grade_query_student_page, self).__init__(master)
self.root.geometry('550x400')
self.root.title('单科成绩查询')
def get_area(self):
return ('学号', '姓名', '班级', '科目', '成绩')
def get_sql(self):
return 'select * from xsdkcj'
def exit(self):
self.frame.destroy()
grade_query_mode_student_page(self.root)
class sum_grade_query_student_page(query_page):
def __init__(self, master):
super(sum_grade_query_student_page, self).__init__(master)
self.root.title('总成绩查询')
def get_area(self):
return ('学号', '姓名', '班级', '总成绩')
def get_sql(self):
return 'select * from xszcj'
def search_double_click(self, event):
_id = self.details_list.item(self.details_list.focus(), 'values')[0]
self.search_entry.delete(0, 'end')
self.search_entry.insert(0, _id)
def exit(self):
self.frame.destroy()
grade_query_mode_student_page(self.root)
class grade_query_mode_student_page:
def __init__(self, master):
self.root = master
self.root.title('学生成绩查询模式')
self.root.geometry('200x110')
self.frame = tk.Frame(self.root)
self.frame.pack()
spacey(self.frame, 10)
top_sub_frame = tk.Frame(self.frame)
top_sub_frame.pack()
help = tk.Button(
top_sub_frame,
text='帮助',
command=self.help)
help.pack(side='left')
spacex(top_sub_frame, 10, side='left')
exit = tk.Button(
top_sub_frame,
text='退出',
command=self.exit)
exit.pack(side='left')
spacey(self.frame, 10)
each_grade = tk.Button(
self.frame,
text='单科成绩',
command=self.each_grade)
each_grade.pack()
spacey(self.frame, 10)
sum_grade = tk.Button(
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 课程大作业-基于tkinter的学生成绩管理系统python源码.zip课程大作业-基于tkinter的学生成绩管理系统python源码.zip课程大作业-基于tkinter的学生成绩管理系统python源码.zip课程大作业-基于tkinter的学生成绩管理系统python源码.zip课程大作业-基于tkinter的学生成绩管理系统python源码.zip课程大作业-基于tkinter的学生成绩管理系统python源码.zip课程大作业-基于tkinter的学生成绩管理系统python源码.zip 课程大作业-基于tkinter的学生成绩管理系统python源码.zip 课程大作业-基于tkinter的学生成绩管理系统python源码.zip 基于python Tkinter 默认使用mysql数据库 需要自备数据 可参照代码自主创建 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
课程大作业-基于tkinter的学生成绩管理系统python源码.zip (5个子文件)
pages.py 32KB
介绍.md 131B
custom_widget.py 8KB
.gitignore 39B
config.py 385B
共 5 条
- 1
资源评论
- m0_744171542023-12-27感谢大佬,让我及时解决了当下的问题,解燃眉之急,必须支持!
FL1623863125
- 粉丝: 8760
- 资源: 4507
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功