刚开始学python,不足请多包涵。下面是运行的一些截图。

    

教师登录界面

学生登录界面:




from tkinter import*
import tkinter.font
import tkinter.messagebox
from tkinter import ttk
root = tkinter.Tk()
root.title('用户登录注册界面')
#定义窗口大小
root['height'] = 300
root['width'] = 380
#在窗体上创建标签
labelname = tkinter.Label(root, text='用户名:', justify=tkinter.RIGHT, anchor='e', width=80)
labelname.place(x=40, y=20, width=80, height=20)
#创建字符串变量和文本框组件,同时设置关联的变量
varname = tkinter.StringVar(root, value='')
entryname = tkinter.Entry(root, width=80, textvariable=varname)
entryname.place(x=130, y=20, width=150, height=20)labelpwd = tkinter.Label(root, text='密码:', justify=tkinter.RIGHT, anchor='e', width=80)
labelpwd.place(x=40, y=60, width=80, height=20)
varpwd = tkinter.StringVar(root, value='')
entrypwd = tkinter.Entry(root, width=80, textvariable=varpwd)
entrypwd.place(x=130, y=60, width=150, height=20)#登录人员选择
labelpeople = tkinter.Label(root, text='登录人员:', justify=tkinter.RIGHT, anchor='e', width=80)
labelpeople.place(x=40, y=100, width=80, height=20)
var = tkinter.StringVar()
combobox = tkinter.ttk.Combobox(root, textvariable=var, width=80)
combobox['value'] = ('学生', '教师')
combobox.current(0)
combobox.place(x=130, y=100, width=150, height=20)#尝试自动填写用户名和密码
try:with open('filename.txt') as fp:n, p, v = fp.read().strip().split(',')varname.set(n)varpwd.set(p)combobox.current(v)
except:pass#复选框rememberme
rememberme = tkinter.IntVar(root, value=1)
# 选中时变量值为1,未选中时变量值为0
checkremember = tkinter.Checkbutton(root, text='记住密码', variable=rememberme, onvalue=1, offvalue=0)
checkremember.place(x=130, y=160, width=80, height=20)#注册按钮事件响应函数
def login():k = {}name = entryname.get()pwd = entrypwd.get()vv = combobox.current()k[name] = [pwd, vv]try:a = ''with open('zhuce.txt', 'r') as f:for i in f:a = a + iexcept:passif name == '' or pwd == '':tkinter.messagebox.showerror('警告', message='用户名和密码不能为空!')elif name in a:tkinter.messagebox.showerror('警告', message='用户名已存在!')else:with open('zhuce.txt', 'a+') as use:use.write(str(k))tkinter.messagebox.showinfo(title='恭喜', message='注册成功!')#创建注册按钮组件,同时设置注册事件处理函数
buttonlogin = tkinter.Button(root, text='注册', command=login)
buttonlogin.place(x=160, y=200, width=80, height=20)def deng_1():teacher = tkinter.Tk()teacher['height'] = 450teacher['width'] = 700# 不允许改变窗体大小teacher.resizable(False,False)# 创建标签并且设置字体大小f1 = tkinter.font.Font(size=20, slant=tkinter.font.ITALIC)alabel = tkinter.Label(teacher, text='成绩管理', font=f1)alabel.place(x=330, y=20, width=120, height=30)# 创建学号标签f2 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)blabel = tkinter.Label(teacher, text='学号:', font=f2)blabel.place(x=230, y=90, width=120, height=30)# 创建学号文本框varnumber = tkinter.StringVar(teacher, value='')entrynumber = tkinter.Entry(teacher, width=120, textvariable=varnumber)entrynumber.place(x=330, y=90, width=200, height=30)# 创建表格tree = ttk.Treeview(teacher, show='headings')tree['columns'] = ('学号', '姓名', '数据库', '微机原理', 'python', '算法')tree.column('学号', width=130)  # 设置列tree.column('姓名', width=100)tree.column('数据库', width=60)tree.column('微机原理', width=60)tree.column('python', width=60)tree.column('算法', width=60)tree.heading('姓名', text='姓名')  # 设置显示的表头名tree.heading('学号', text='学号')tree.heading('数据库', text='数据库')tree.heading('微机原理', text='微机原理')tree.heading('python', text='python')tree.heading('算法', text='算法')tree.place(x=200, y=150)def cha():for item in tree.get_children():tree.delete(item)no_3=entrynumber.get()with open('xinxi.txt','r') as f:e1=f.read()e2=eval(e1)e3=e2['学号']if no_3=='':tkinter.messagebox.showerror('警告',message='请输入学号!')elif no_3 not in e3:tkinter.messagebox.showerror('警告',message='无此学生!')else:j=0for i in e3:if no_3!=i:j=j+1else:breaktree.insert('',0,values=((e2['学号'])[j],(e2['姓名'])[j],(e2['数据库'])[j],(e2['微机原理'])[j],(e2['python'])[j],(e2['算法'])[j]))# 创建查询按钮chaButton = tkinter.Button(teacher, text='查询',command=cha)chaButton.place(x=570, y=90, width=80, height=30)#增添按钮响应事件def add():#按钮按下出现新界面add_window=tkinter.Tk()add_window['width']=400add_window['height']=360def add_1():no=noentry.get()name=name_entry.get()ku=ku_entry.get()wei=wei_entry.get()py=py_entry.get()suan=suan_entry.get()with open('xinxi.txt','r') as f:d1=f.read()d2=eval(d1)d3=d2['学号']if no==''or name=='' or ku=='' or wei=='' or py=='' or suan=='':tkinter.messagebox.showerror('警告',message='不能有一项为空!')add_window.destroy()#关闭小窗口elif no in d3:tkinter.messagebox.showerror('警告',message='此学生信息已在!')add_window.destroy()#关闭小窗口else:d2['学号'].append(no)d2['姓名'].append(name)d2['数据库'].append(ku)d2['微机原理'].append(wei)d2['python'].append(py)d2['算法'].append(suan)shuju=str(d2)with open('xinxi.txt','w') as f:f.write(shuju)tkinter.messagebox.showinfo(title='恭喜',message='增添成功')add_window.destroy()#关闭小窗口#创建学号标签f3 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)nolabel=tkinter.Label(add_window,text='学号:',font=f3)nolabel.place(x=40,y=30,width=120,height=30)#创建学号文本框varno=tkinter.StringVar(add_window,value='')noentry=tkinter.Entry(add_window,width=120, textvariable=varno)noentry.place(x=150,y=30,width=200,heigh=30)#创建姓名标签f4 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)name_label=tkinter.Label(add_window,text='姓名:',font=f4)name_label.place(x=40,y=70,width=120,height=30)#创建姓名文本对话框var_name=tkinter.StringVar(add_window,value='')name_entry=tkinter.Entry(add_window,width=120, textvariable=var_name)name_entry.place(x=150,y=70,width=200,heigh=30)#创建数据库标签f5 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)ku_label=tkinter.Label(add_window,text='数据库:',font=f5)ku_label.place(x=40,y=110,width=120,height=30)#创建数据库文本对话框var_ku=tkinter.StringVar(add_window,value='')ku_entry=tkinter.Entry(add_window,width=120, textvariable=var_ku)ku_entry.place(x=150,y=110,width=200,heigh=30)#创建微机原理标签f6 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)wei_label=tkinter.Label(add_window,text='微机原理:',font=f6)wei_label.place(x=40,y=150,width=120,height=30)#创建微机原理文本对话框var_wei=tkinter.StringVar(add_window,value='')wei_entry=tkinter.Entry(add_window,width=120, textvariable=var_wei)wei_entry.place(x=150,y=150,width=200,heigh=30)#创建python标签f7 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)py_label=tkinter.Label(add_window,text='python:',font=f7)py_label.place(x=40,y=190,width=120,height=30)#创建python文本对话框var_py=tkinter.StringVar(add_window,value='')py_entry=tkinter.Entry(add_window,width=120, textvariable=var_py)py_entry.place(x=150,y=190,width=200,heigh=30)#创建算法标f8 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)suan_label=tkinter.Label(add_window,text='算法:',font=f8)suan_label.place(x=40,y=240,width=120,height=30)#创建算法文本框var_suan=tkinter.StringVar(add_window,value='')suan_entry=tkinter.Entry(add_window,width=120, textvariable=var_suan)suan_entry.place(x=150,y=240,width=200,heigh=30)#创建添加按钮add_Button=tkinter.Button(add_window,text='添加',command=add_1)add_Button.place(x=190,y=290,width=80,height=30)# 创建增添按钮addButton = tkinter.Button(teacher, text='增添',command=add)addButton.place(x=65, y=150, width=80, height=30)def gai():gai_win = tkinter.Tk()gai_win['width']=400gai_win['height']=400#创建学号标签f9 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)no_1_label=tkinter.Label(gai_win,text='请输入需修改学生的学号:(必填)',font=f9)no_1_label.place(x=40,y=30,width=300,height=30)#创建学号文本框var_1_no=tkinter.StringVar(gai_win,value='')no_1_entry=tkinter.Entry(gai_win,width=120, textvariable=var_1_no)no_1_entry.place(x=150,y=70,width=200,heigh=30)#创建数据库标签f11 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)ku_1_label=tkinter.Label(gai_win,text='数据库:',font=f11)ku_1_label.place(x=40,y=110,width=120,height=30)#创建数据库文本框var_1_ku=tkinter.StringVar(gai_win,value='')ku_1_entry=tkinter.Entry(gai_win,width=120, textvariable=var_1_ku)ku_1_entry.place(x=150,y=110,width=200,heigh=30)#创建微机原理标签f12 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)wei_1_label=tkinter.Label(gai_win,text='微机原理:',font=f12)wei_1_label.place(x=40,y=150,width=120,height=30)#创建微机原理文本框var_1_wei=tkinter.StringVar(gai_win,value='')wei_1_entry=tkinter.Entry(gai_win,width=120, textvariable=var_1_wei)wei_1_entry.place(x=150,y=150,width=200,heigh=30)#创建python标签f13 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)py_1_label=tkinter.Label(gai_win,text='python:',font=f13)py_1_label.place(x=40,y=190,width=120,height=30)#创建python文本对话框var_1_py=tkinter.StringVar(gai_win,value='')py_1_entry=tkinter.Entry(gai_win,width=120, textvariable=var_1_py)py_1_entry.place(x=150,y=190,width=200,heigh=30)#创建算法标f14 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)suan_1_label=tkinter.Label(gai_win,text='算法:',font=f14)suan_1_label.place(x=40,y=230,width=120,height=30)#创建算法文本框var_1_suan=tkinter.StringVar(gai_win,value='')suan_1_entry=tkinter.Entry(gai_win,width=120, textvariable=var_1_suan)suan_1_entry.place(x=150,y=230,width=200,heigh=30)#小窗口修改按钮响应函数def gai_1():no_1=no_1_entry.get()ku_1=ku_1_entry.get()wei_1=wei_1_entry.get()py_1=py_1_entry.get()suan_1=suan_1_entry.get()with open('xinxi.txt','r')as f:a=f.read()a1=eval(a)a2=a1['学号']if no_1=='':tkinter.messagebox.showerror('警告',message='请输入学号!')gai_win.destroy()#关闭小窗口elif no_1 not in a2:tkinter.messagebox.showerror('警告',message='无此学生!')gai_win.destroy()#关闭小窗口elif ku_1==''and wei_1==''and py_1==''and suan_1=='':tkinter.messagebox.showerror('警告',message='请输入要修改的信息!')gai_win.destroy()#关闭小窗口elif no_1 in a2 :j=0for i in a2:if no_1!=i:j=j+1else:breakif ku_1!='':(a1['数据库'])[j]=ku_1else:passif wei_1!='':(a1['微机原理'])[j]=wei_1else:passif py_1!='':(a1['python'])[j]=py_1else:passif suan_1!='':(a1['算法'])[j]=suan_1else:passa3=str(a1)with open('xinxi.txt','w') as p:p.write(a3)tkinter.messagebox.showinfo(title='恭喜',message='修改成功')gai_win.destroy()#关闭小窗口else:passgai_Button = tkinter.Button(gai_win, text='修改',command=gai_1)gai_Button.place(x=180, y=280, width=100, height=40)# 创建修改按钮alterButton = tkinter.Button(teacher, text='修改',command=gai)alterButton.place(x=65, y=200, width=80, height=30)#显示按钮事件响应函数def show():for item in tree.get_children():tree.delete(item)with open('xinxi.txt','r')as f:b=f.read()b1=eval(b)i=0j=1while j==1:try:tree.insert('',i,values=((b1['学号'])[i],(b1['姓名'])[i],(b1['数据库'])[i],(b1['微机原理'])[i],(b1['python'])[i],(b1['算法'])[i]))i=i+1except:j=0# 创建显示按钮showButton = tkinter.Button(teacher, text='显示',command=show)showButton.place(x=65, y=250, width=80, height=30)#创建删除按钮事件响应def delete():no_2=entrynumber.get()with open('xinxi.txt','r')as f:c=f.read()c1=eval(c)c2=c1['学号']x=0if type(no_2)==int:no_2=str(no_2)else:no_2=no_2if no_2=='':    tkinter.messagebox.showerror('警告',message='请输入学号!')elif no_2 in c2:for i in c2:if no_2==i:breakelse:x=x+1del (c1['学号'])[x]del (c1['姓名'])[x]del (c1['数据库'])[x]del (c1['微机原理'])[x]del (c1['python'])[x]del (c1['算法'])[x]c3=str(c1)with open('xinxi.txt','w')as fd:fd.write(c3)tkinter.messagebox.showinfo(title='恭喜',message='删除成功')else:tkinter.messagebox.showerror('警告',message='无该信息!')# 创建删除按钮deleteButton = tkinter.Button(teacher, text='删除',command=delete)deleteButton.place(x=65, y=300, width=80, height=30)def deng_0():student = tkinter.Tk()student['height'] = 450student['width'] = 550# 不允许改变窗体大小student.resizable(False,False)# 创建标签并且设置字体大小f1 = tkinter.font.Font(size=20, slant=tkinter.font.ITALIC)alabel = tkinter.Label(student, text='成绩查询', font=f1)alabel.place(x=260, y=20, width=120, height=30)# 创建学号标签f2 = tkinter.font.Font(size=15, slant=tkinter.font.ITALIC)blabel = tkinter.Label(student, text='学号:', font=f2)blabel.place(x=50, y=90, width=120, height=30)# 创建学号文本框var_x_number = tkinter.StringVar(student, value='')entry_x_number = tkinter.Entry(student, width=120, textvariable=var_x_number)entry_x_number.place(x=160, y=90, width=200, height=30)# 创建表格tree = ttk.Treeview(student, show='headings')tree['columns'] = ('学号', '姓名', '数据库', '微机原理', 'python', '算法')tree.column('学号', width=130)  # 设置列tree.column('姓名', width=100)tree.column('数据库', width=60)tree.column('微机原理', width=60)tree.column('python', width=60)tree.column('算法', width=60)tree.heading('姓名', text='姓名')  # 设置显示的表头名tree.heading('学号', text='学号')tree.heading('数据库', text='数据库')tree.heading('微机原理', text='微机原理')tree.heading('python', text='python')tree.heading('算法', text='算法')tree.place(x=30, y=130)def cha_xun():for y in tree.get_children():tree.delete(y)no_4=entry_x_number.get()with open('xinxi.txt','r') as f:h1=f.read()h2=eval(h1)h3=h2['学号']if no_4=='':tkinter.messagebox.showerror('警告',message='请输入学号!')elif no_4 not in h3:tkinter.messagebox.showerror('警告',message='无此学生!')else:j=0for i in h3:if no_4!=i:j=j+1else:breaktree.insert('',0,values=((h2['学号'])[j],(h2['姓名'])[j],(h2['数据库'])[j],(h2['微机原理'])[j],(h2['python'])[j],(h2['算法'])[j]))# 创建查询按钮chaButton = tkinter.Button(student, text='查询',command=cha_xun)chaButton.place(x=390, y=90, width=80, height=30)#登录按钮事件处理函数
def ok():# 获取已注册的用户名和密码with open('zhuce.txt','r') as f:d =f.read()d1 = d.replace('}{', ',')d2 = eval(d1)n = list(d2.keys())l = len(n)w = list(d2.values())p = [i[0] for i in w]v = [i[-1] for i in w]#获取用户输入的用户名和密码name = entryname.get()pwd = entrypwd.get()combo = combobox.current()b = str(combo)if name == '' or pwd == '':tkinter.messagebox.showerror('警告', message='用户名和密码不能为空!')elif name in n and pwd in p:for i in range(0, l):if pwd == p[i]and name==n[i]and combo == v[i]:tkinter.messagebox.showinfo(title='恭喜', message='登录成功!')if combo==1:root.destroy()#关闭小窗口deng_1()else:root.destroy()#关闭小窗口deng_0()elif pwd == p[i]and name==n[i]and combo != v[i]:tkinter.messagebox.showerror('警告', message='登录人员错误!')else:passif rememberme.get() == 1:with open('filename.txt', 'w') as fp:fp.write(','.join((name, pwd, b)))else:with open('filename.txt', 'a+') as f:f.truncate(0)else:tkinter.messagebox.showerror('警告', message='用户名或密码错误!')#创建登录按钮组件,同时设置按钮事件处理函数
buttonok = tkinter.Button(root, text='登录', command=ok)
buttonok.place(x=40, y=200, width=80, height=20)

由于还没有学数据库,所以我把信息存到了txt文件里,所以还需要在源文件目录下建立3个txt文件

在xinxi.txt文件里需要建立这样的字典

【无标题】学生成绩管理系统相关推荐

  1. Python 基于tkinter模块的GUI可视化学生成绩管理系统实现(含文件保存)

    学生成绩管理系统 1. 标准模块导入 2.完整代码 3.文件保存模块 作者:潇 版本:1.0 面向对象,带日志,带异常处理的,带密码加密 第一次执行会生成数据库和csv文件,以后添加的数据会自动保存到 ...

  2. C语言实现学生成绩管理系统(EasyX图形界面)

    本文首发于2021年7月18日19:21:06. 注意:直接复制代码会无法运行,因为没有资源文件(图片.文本文件),从下面的github链接或交流群中下载代码或注释指定代码,有关此问题,例如:无法运行 ...

  3. asp.net学生成绩管理系统VS开发sqlserver数据库web结构

    一.源码特点         ASP.NET C# 学生成绩管理系统是一套完善的web设计管理系统,系统主要采用B/S模式开发,开发环境为vs2010,数据库为sqlserver2008 计算机毕业设 ...

  4. PHP+学生成绩管理系统 毕业设计-附源码201829

    php学生成绩管理系统的设计与实现 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开 ...

  5. 学生成绩管理系统(简易本地版)

    学生成绩管理系统(简易本地版) 一.概述 平台:Windows 10 ,Microsoft Visual Studio 2017 语言:C++,面向过程 完成日期:2018/12/27 主要功能: 1 ...

  6. C语言——学生成绩管理系统

    最近正在学习C语言,搞了一个学生成绩管理系统的小程序,代码粗陋,大佬勿喷.求各位看官随手甩个赞~谢谢 _ 先上图: 整个程序采用链表来管理学生成绩,保存学生成绩用的是 文件处理函数,使用 fopen( ...

  7. 用c语言编写图书成绩管理系统,学生成绩管理系统(c语言编写).doc

    学生成绩管理系统(c语言编写) C程序 学生管理系统 /* Note:Your choice is C IDE */ #include "stdio.h" #include&quo ...

  8. C语言不使用结构体实现链表,不用指针链表和结构体数组怎么编学生成绩管理系统啊...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include struct stu { int num;//学号 char name[10];//姓名 float cj[3];// ...

  9. java计算并显示学生的成绩_Java开学测试-学生成绩管理系统

    题目: 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishiscore,networkscore ...

  10. 学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计

    记一次课程设计作业 学生成绩管理系统#include #include #include #include /* 学生成绩管理系统介绍 2017C语言课程设计  202160936 1.支持将数据保存 ...

最新文章

  1. 2021年第十六届全国大学生智能汽车竞赛赛道铺设规范
  2. python3.6.5安装教程-Centos7 安装Python3.6.5步骤
  3. 电脑小白学python_零基础的小白怎么学python?
  4. Struts2异常处理机制
  5. codeforces VK Cup 2018 - Wild-card Round 1 (unofficial unrated mirror)
  6. Clion:undefined reference to `cv::noArray()解决方案
  7. html、sqlserver、java基础总结
  8. tomcat(supplement)HttpConnector.initialize() 和 start() 方法 以及 StandardContext.start()方法的分析
  9. [UE4] 动画蓝图的 Beginplay 事件不激活的解决办法:换用 Initialize 事件
  10. ap心理可以用计算机吗,AP考试哪些科目需要使用计算器
  11. git commit --amend用法(摘抄)
  12. 公司应该鼓励怎样的内斗
  13. python正则表达式基础
  14. 2005中国千强镇名单
  15. bugku-web-留言板
  16. 2.1 內积与欧几里得空间
  17. Ethyl 2-azidoacetate,637-81-0,叠氮乙酸乙酯MDL: MFCD00190177的分子量是129.117
  18. 安装win和xp双系统 若干问题
  19. 战略转型加速推进,中软国际2018年中期净利增长46.2%
  20. 为了搞明白统计套利,从两组序列之间的关系说起

热门文章

  1. 10年软件测试行业经验教你如何写简历【绝对靠谱】
  2. C++银行账户管理程序1
  3. python爬虫 - 爬取堆糖图片
  4. Windows取证一
  5. 怎样才能够修改PDF文件中的文字大小
  6. 老人与老浏览器-李开复与成熟度最高的VRML浏览器SGI Cosmo
  7. 一文快速了解Docker和Kubernetes
  8. asp、php、asp.net、jsp介绍及优缺点比较
  9. DCT和IDCT原始公式计算
  10. IP地址分类(A类 B类 C类 D类 E类)