学生成绩管理系统,带权限
作者:wf 版本:终版
面向对象,带日志,带异常处理的,带密码加密
初始数据库带100条数据
第一次执行会生成数据库和日志文件,以后添加的数据会自动保存到里面
删除数据库再次执行程序。会初始化数据库
管理员(具有最大权限)
账户:admin 密码:admin
账户:1 密码:1
普通用户
账户:zhangsan 密码:123456
#学生成绩管理系统,带权限
#作者:wf 版本:终版
#面向对象,带日志,带异常处理的,带密码加密
import logging
import hashlib
import shelve
from random import randint
#定义学生类
class student():
def __init__(self,id,yw,sx,en):
self.id=id
self.yw=yw
self.sx=sx
self.en=en
def __str__(self):
return f"学号:{self.id}\n总分:{self.total()}\n"
def total(self):
return self.yw+self.sx+self.en
def pm(self,alist):
return len(list(filter(lambda i:i.total()>self.total(),alist)))+1
#定义全局变量默认值
user=''
datas=[]
accouts={"admin":{"pwd":"21232f297a57a5a743894a0e4a801fc3","role":"1234567890"},"zhangsan":{"pwd":"e10adc3949ba59abbe56e057f20f883e","role":"12360"},"1":{"pwd":"c4ca4238a0b923820dcc509a6f75849b","role":"1234567890"}}
funcdic={"1":"打印出原始数据",
"2":"打印出成绩排名",
"3":"打印出成绩统计",
"4":"列出补考名单",
"5":"增加学生记录",
"6":"查询学生记录",
"7":"修改学生记录",
"8":"删除学生记录",
"9":"用户管理",
"0":"退出!"}
subjectdic={"语文":0,"数学":1,"英语":2}
logging.basicConfig(level= logging.DEBUG,
filename = "xxgl.log",
format = "%(asctime)s %(filename)s : %(levelname)s %(message)s",
datefmt = "%Y-%m-%d %H:%M:%S",
filemode = "a")
for i in range(100):
datas.append(student(f"15{i+1:03d}",randint(30,100),randint(40,100),randint(50,100)))
#数据初始化
def init():
global datas,accouts
with shelve.open("mydb") as f:
try:
datas=f["data"]
accouts=f["user