python简单成绩录入,python实现简单成绩录入系统
学了一个多月的python,做了一个小程序:python实现简单成绩录入系统,实验一下
menu部分
from tkinter import*#这是一个python模块,python3中都有
import tkinter.messagebox#这也是一个模块
from file_read import read
from file_write import write
class student_main():#定义一个学生类
def __init__(self):
self.name =''
self.ID=''
self.lessons={}
self.sum=''
self.average=''
stulist=read()
stu=student_main()
#登录页面--------------------------------------------------------------------
def seacharID(stulist,ID):#这是一个对是否重复id的检验
for x in stulist:
if x.ID==ID:
return True
#这是一个成绩录入时的主要函数
def next():
root_next=Tk()
root_next.title('成绩录入')
root_next.geometry('200x200+230+330')
var_lesson=StringVar()
var_score=StringVar()
Label(root_next,text='课程名').place(x=20,y=50)
Label(root_next,text='成绩').place(x=20,y=90)
enter_lesson=Entry(root_next,textvariable=var_lesson,width=15)
enter_lesson.place(x=70,y=50)
enter_score=Entry(root_next,textvariable=var_score,width=15)
enter_score.place(x=70,y=90)
def btn3_login():
x=var_lesson.get()
y=var_score.get()
if y.isdigit()==True:
if int(y)>100:
tkinter.messagebox.showerror('错误','请输入正确的成绩!!!')
var_score.set('')
elif int(y)<0:
tkinter.messagebox.showerror('错误','请输入正确的成绩!!!')
var_score.set('')
else:
stu.lessons[x]=y
root_next.destroy()
next()
else:
tkinter.messagebox.showwarning('提示','请输入数字')
def btn4_login():
x=var_lesson.get()
y=var_score.get()
stu.lessons[x]=y
tkinter.messagebox.showinfo('录入成功')
root_next.destroy()
btn3=Button(root_next,text='录入新学科',bg='#5EAEFF',bd=0,command=btn3_login)
btn3.place(y=130,width=99,height=20)
btn4=Button(root_next,text='完成',bg='#FF6868',bd=0,command=btn4_login)
btn4.place(x=101,y=130,width=99,height=20)
#页面循环
root_next.mainloop()
#核心函数
def entry():
root_e=Tk()
root_e.title("增")
root_e.geometry('200x200+230+330')
var_user=StringVar()
var_ID=StringVar()
Label(root_e,text='姓名').place(x=20,y=50)
Label(root_e,text='ID').place(x=20,y=90)
enter_user=Entry(root_e,textvariable=var_user,width=15)
enter_user.place(x=70,y=50)
enter_user.focus()
enter_ID=Entry(root_e,textvariable=var_ID,width=15)
enter_ID.place(x=70,y=90)
def btn1_login():
x=var_user.get()
y=var_ID.get()
pop=seacharID(stulist,y)
if pop==True:
tkinter.messagebox.showwarning('错误','该学号已存在')
var_ID.set("")
var_user.set("")
else:
if y.isdigit()==True:
conunt=0
sum_opp=0
stu.name=x
stu.ID=y
root_e.destroy()
next()
for x in stu.lessons.values():
sum_opp=sum_opp+int(x)
conunt+=1
stu.sum=str(sum_opp)
average_opp=int(stu.sum)/conunt
stu.average=str(average_opp)
stulist.append(stu)
write(stulist)
menu()
else:
tkinter.messagebox.showwarning('提示','您输入了非数字的内容')
var_ID.set(" ")
def btn2_login():
root_e.destroy()
menu()
btn1=Button(root_e,text='下一步',command=btn1_login,bd=0,bg='Silver')
btn1.place(y=140,width=99,height=20)
btn2=Button(root_e,text='取消',command=btn2_login,bd=0,bg='Silver')
btn2.place(x=100,y=140,width=99,height=20)
root_e.mainloop()
#删除页面------------------------------------------------------------------
def deling():
root=Tk()
root.title('删')
root.geometry('200x200+230+330')
Label(root,text='学号').place(x=40,y=50)
def btn_ok():
x=var_del.get()
if x.isdigit()==True:
count=0
for i in stulist:
if i.ID==x:
stulist.remove(i)
write(stulist)
tkinter.messagebox.showinfo("提示",'成功删除该学生信息')
root.destroy()
menu()
else:
count+=1
if count==len(stulist):
tkinter.messagebox.showinfo(title='错误',message='不存在该账户!')
var_del.set('')
else:
tkinter.messagebox.showerror('警告','请输入数字')
def btn_cancel():
x=tkinter.messagebox.askokcancel('提示','确定离开?')
if x==True:
root.destroy()
menu()
var_del=StringVar()
entry_del=Entry(root,textvariable=var_del,width=10)
entry_del.place(x=80,y=50)
btn1=Button(root,bd=0,bg='Silver',command=btn_ok,text='确定')
btn1.place(y=110,width=99,height=20)
btn2=Button(root,bd=0,bg='Silver',command=btn_cancel,text='取消')
btn2.place(x=101,y=110,width=99,height=20)
root.mainloop()
#修改页面---------------------------------------------------------------
def change():
root=Tk()
root.title("改")
root.geometry('200x200+230+330')
Label(root,text='学号').place(x=40,y=50)
var_change=StringVar()
entry_change=Entry(root,textvariable=var_change,width=10)
entry_change.place(x=80,y=50)
def var_ok():
x=var_change.get()
if x.isdigit()==True:
counton=0
for i in stulist:
if x==i.ID:
stulist.remove(i)
write(stulist)
root.destroy()
entry()
else:
counton+=1
if counton==len(stulist):
tkinter.messagebox.showerror('错误','不存在该账户!')
else:
tkinter.messagebox.showerror('警告','输入数字ID')
def var_cancel():
x=tkinter.messagebox.askokcancel('提示','确定离开')
if x==True:
root.destroy()
btn1=Button(root,bd=0,bg='Silver',command=var_ok,text='确定')
btn1.place(y=110,width=99,height=20)
btn2=Button(root,bd=0,bg='Silver',command=var_cancel,text='取消')
btn2.place(x=101,y=110,width=99,height=20)
root.mainloop()
#查询页面------------------------------------------------------------------
def next_i(x):
window=Tk()
window.title('显示信息')
window.geometry('400x200')
counton=0
for i in stulist:
if i.ID==x:
ai_name=i.name
ai_ID=i.ID
ai_lesson=str(i.lessons)
ai_sum=i.sum
ai_ave=i.average
else:
ai_name=' '
ai_ID=' '
ai_lesson='该学号不存在'
ai_sum=' '
ai_ave=' '
Label(window,height=2,width=8,text=ai_name).pack()
Label(window,height=2,width=8,text=ai_ID).pack()
Label(window,height=2,width=100,text=ai_lesson).pack()
Label(window,height=2,width=8,text=ai_sum).pack()
Label(window,height=2,width=8,text=ai_ave).pack()
window.mainloop()
def search():
root=Tk()
root.title('')
root.geometry('200x200+230+330')
Label(root,text='学号').place(x=40,y=50)
def btn_ok():
x=var_display.get()
if x.isdigit()==True:
next_i(x)
else:
tkinter.messagebox.showerror('警告','请输入数字ID')
def btn_cancel():
root.destroy()
menu()
var_display=StringVar()
entry_display=Entry(root,textvariable=var_display,width=10)
entry_display.place(x=80,y=50)
btn1=Button(root,bd=0,bg='Silver',command=btn_ok,text='确定')
btn1.place(y=110,width=99,height=20)
btn2=Button(root,bd=0,bg='Silver',command=btn_cancel,text='返回主菜单')
btn2.place(x=101,y=110,width=99,height=20)
root.mainloop()
#排序页面--------------------------------------------------------------
def display(x):
window=Tk()
window.title()
contunt=0
for i in x:
contunt+=1
all_list=['第'+str(contunt)+'名:']
all_list.append('姓名:'+i.name+'\\')
all_list.append('学号:'+i.ID+'\\')
for m,n in i.lessons.items():
all_list.append(m+":")
all_list.append(n)
all_list.append('\\')
all_list.append('总分:'+i.sum+'\\')
all_list.append('平均分:'+i.average)
Label(window,bd=20,text=all_list).pack()
window.mainloop()
def sorting():
for i in range(len(stulist)-1):
for j in range(i+1,len(stulist)):
temp=student_main()
if stulist[i].average
file_read模块部分
(file_read主要是将我储存在txt文件中的数据转化成stulist列表,来进行检验,防止录入同一个id)
class student_main():
def __init__(self):
self.name =''
self.ID=''
self.lessons={}
self.sum=''
self.average=''
def read():
stulist=[]
x=[]
f=open('all_student.txt','r')
t=open('all_lesson.txt','r')
line=f.readlines()
lene=t.readlines()
for i in range(len(line)):
if (i+1)%2==1:#这里主要是读取和储存是出现了莫名的空行,我只好多录入一个空行好方便读取
y=student_main()
x=line[i].split(" ")
y.name=x[0]
y.ID=x[1]
j=int((i+1)/2)
z=eval(lene[j])
y.lessons=z
y.sum=x[2]
y.average=x[3]
stulist.append(y)
return stulist
file_write模块部分
(主要是将menu中获得的数据进行储存)
class student_main():
def __init__(self):
self.name =''
self.ID=''
self.lessons={}
self.sum=''
self.average=''
def write(stulist):
f=open('all_student.txt','w')
for i in stulist:
f.write(i.name+' '+i.ID+' '+i.sum+' '+i.average)
f.write('\n')
f.close()
t=open('all_lesson.txt','w')
for i in stulist:
t.write(str(i.lessons))
t.write('\n')
t.close()
还要自己建立两个TXT文本,一个叫all_lesson.txt,另一个叫all_student.txt。
因为student类中的lesson是用字典储存的,我实在找不到怎么把他完整的读出来的语句只好分开存储了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
python简单成绩录入,python实现简单成绩录入系统相关推荐
- python成绩统计_python统计考试成绩代码参考
统计一个班级学生的考试成绩,首先需要录入学生及其考试成绩.选出最高分,平均分,分数由高到低进行排序.评出学霸和学渣! 我的代码如下: #!/usr/bin/env python #coding:utf ...
- Python Train_机器学习--基于Python的简单线性回归
一.概念 线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析. 这种函数是一个或多个称为回归系数的模型参数的线性 ...
- python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)
有朋友会问,刚学了一周,什么是面向对象都还不清楚就可以写程序?还有Python不是写"爬虫"吗? Python是面向对象的语言,函数.模块.数字.字符串都是对象,并且完全支持继承. ...
- python制作购物网站_django搭建简单购物网站(功能不完整)
简介:自学django,从搭建简单的购物网站开始,网站的功能不完整,目前完成:用户注册,用户登录和注销,商品展示,商品详情,购物车(不完整,没创建模型,但是已完成表单获取和session记录,没什么大 ...
- c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法
c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...
- python简单还是c简单_Python与C的简单比较(Python3.0)
Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言.本萌新也刚开 ...
- python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...
原标题:10分钟学会用python写游戏!Python其实很简单! Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程 ...
- 基于python的界面自动化测试-Python实现性能自动化测试竟然如此简单
一.思考❓❔ 1.什么是性能自动化测试? 性能系统负载能力超负荷运行下的稳定性系统瓶颈自动化测试使用程序代替手工提升测试效率性能自动化使用代码模拟大批量用户让用户并发请求多页面多用户并发请求采集参数, ...
- python简单编程-编程中最简单的语言Python,这样学或许更容易
最近微信小程序上面出了一个跳一跳的小游戏 大家有没有玩呀? 编程中最简单的语言Python,这样学或许更容易 分享之前我还是要推荐下我自己建的Python开发学习群:628979297,群里都是学Py ...
- 使用python用什么软件-Python读写Excel表格,就是这么简单粗暴又好用
Python读写Excel表格,就是这么简单粗暴又好用 2019-04-18 13:45:31 11点赞 107收藏 1评论 最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开 ...
最新文章
- JSP HTML区别
- 得到弹出菜单QMenu的高度
- ASP.NET Core 新核心对象WebHost(一)
- 社交游戏Zynga之死
- MFC三大dll使用总结
- 解决Linux系统下磁盘IO紧张的一种方法
- 【语音去噪】基于matlab改进谱减法语音去噪【含Matlab源码 569期】
- 写英文论文时,翻译网站的推荐
- 6.27java斗地主
- Table View Programming Guide for iOS 官方文档翻译
- 苹果与宝马和奔驰关于自动驾驶汽车的谈判告吹,退而求其次选择与大众汽车合作
- Word毕业论文排版 公式居中 编号右对齐 及交叉引用(使用MathType公式编辑器实现)
- CodeForces 669A Little Artem and Presents
- 微信公众号本地环境搭建(解决微信接口需要公网地址,但是只有本地环境的问题)
- 基于矩阵分解模型的协同过滤理论概述(涉及到SVD,SVD++,TimeSVD++)
- 阿里 java 开发手册
- 一文读懂:股权激励的“三重境界”
- python二级选择题与分析(10)
- 转自Avan_Lau
- 专业订制|软件开发|系统开发|网页设计|做网站|企业建站|网站建设