基于javaweb的Python学生学校教务管理系统(python+flask+javascript+html+bootstrap)

运行环境

Python>=10、MySQL≥5.7

开发工具

Pycharm(推荐)

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

151424572408

161424572408

171424572408

181424572408

191424572408

基于javaweb的Python学生学校教务管理系统(python+flask+javascript+html+bootstrap)

环境:python-3.10

登录:
admin 123456

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
	return r({},0,'重置成功')

#添加用户
@users.route('/userdata',methods=['POST'])
def add_user():
data = request.get_data()
j_data = json.loads(data)
user=db.session.query(Admin).filter_by(admin=j_data['admin']).first()
if user is not None:
return r({},0,'',{'admin':'账号已存在'})
# admin, password,salt,level,name,status
local_salt=app.config.get("SALT")
salt=hashlib.md5(str(time.time()).encode(encoding='UTF-8')).hexdigest()
temp=j_data['password']+local_salt+salt
pwd=hashlib.md5(temp.encode(encoding='UTF-8')).hexdigest()
admin = Admin(j_data['admin'], pwd,salt,2,j_data['name'],1)
db.session.add(admin)
db.session.flush()
j_data.setdefault('in_time',0)
j_data.setdefault('oa_time',0)
j_data.setdefault('out_time',0)
j_data.setdefault('info','')
tc = Teacher(admin.id, j_data['name'], j_data['cid'], j_data['in_time'], j_data['out_time'], j_data['oa_time'], j_data['info'])
db.session.add(tc)
db.session.commit()
return r({},0,'添加成功')
#修改用户
@users.route('/userdata/<int:uid>',methods=['PUT'])
def edit_user(uid):
data = request.get_data()
j_data = json.loads(data)
user=db.session.query(Admin).filter_by(admin=j_data['admin']).filter(Admin.id != uid).first()
if user is not None:
return r({},0,'',{'admin':'账号已存在'})
#修改账号表
user = db.session.query(Admin).filter_by(id=uid).first()
user.name = j_data['name']
if 'status' in j_data:
if j_data['status']:
user.status = 1
else:
user.status = 0
if 'password' in j_data and j_data['password'] != '':#提交了修改密码
local_salt=app.config.get("SALT")
salt=hashlib.md5(str(time.time()).encode(encoding='UTF-8')).hexdigest()
temp=j_data['password']+local_salt+salt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@score.route('/scorelist/<int:cid>',methods=['PUT'])
def edit_user(cid):
data = request.get_data()
j_data = json.loads(data)
tc = db.session.query(Score).filter_by(id=cid).first()
tc.score=j_data['score'],
db.session.commit()
return r({},0,'修改成功')

student=Blueprint('student',__name__)

@student.route('/student')
def index():
return render_template('/student.html')
@student.route('/student',methods=['POST'])
def add_class():
data = request.get_data()
j_data = json.loads(data)
user=db.session.query(Student).filter_by(cid=j_data['cid']).first()
if user is not None:
return r({},0,'',{'cid':'身份证已经存在'})

j_data.setdefault('l2_name','')
j_data.setdefault('l2_phone','')
j_data.setdefault('add','')
j_data.setdefault('code','')
j_data.setdefault('info','')
cl = Student(j_data['class_id'],j_data['name'],j_data['code'],j_data['cid'],j_data['in_time'],0,j_data['info'],j_data['l_name'],j_data['l_phone'],j_data['l2_name'],j_data['l2_phone'],j_data['add'])
db.session.add(cl)
db.session.commit()
set_class_count(j_data['class_id']);
return r({},0,'添加成功')
#获取用户
@student.route('/studentlist',methods=['GET'])
def get_student():
perPage=int(request.values.get('perPage'))
page=int(request.values.get('page'))
in_time=request.values.get('in_time')
search={}
search['name']=request.values.get('name')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
	search['l_phone']=request.values.get('l_phone')
search['l2_name']=request.values.get('l2_name')
search['l2_phone']=request.values.get('l2_phone')
search['add']=request.values.get('add')
orderBy=request.values.get('orderBy')
orderDir=request.values.get('orderDir')

count=db.session.query(Student).count()
db_tc=db.session.query(Student)
offset=((page-1)*perPage)
rt={}
ids=[]
temp=[]
order=Student.id.desc()
if orderBy and orderDir:#排序
temp1=getattr(Student,orderBy)
order=getattr(temp1,orderDir)()
where=[Student.id>0]
for k,v in search.items():
if v:
temp1=getattr(Student,k).like("%"+v+"%")
where.append(temp1)

if in_time :
temptime=in_time.split(',')
where.append(Student.in_time>=temptime[0])
where.append(Student.in_time<=temptime[1])
tc = db_tc.order_by(order).filter(*where).limit(perPage).offset(offset)#.all()
print(tc)
for t in tc:
temp.append({
'id':t.id,
'class_id':t.class_id,
'name':t.name,
'code':t.code,
'cid':t.cid,
'in_time':t.in_time,
'out_time':t.out_time,
'info':t.info,
'l_name':t.l_name,
'l_phone':t.l_phone,
'l2_name':t.l2_name,
'l2_phone':t.l2_phone,
'add':t.add
})

rt['count']=count
rt['rows']=temp
# rt['hasNext']=1
return r(rt)
pass
#删除
@student.route('/studentlist/<int:cid>',methods=['DELETE'])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
	salt=hashlib.md5(str(time.time()).encode(encoding='UTF-8')).hexdigest()
temp=j_data['password']+local_salt+salt
pwd=hashlib.md5(temp.encode(encoding='UTF-8')).hexdigest()
admin = Admin(j_data['admin'], pwd,salt,2,j_data['name'],1)
db.session.add(admin)
db.session.flush()
j_data.setdefault('in_time',0)
j_data.setdefault('oa_time',0)
j_data.setdefault('out_time',0)
j_data.setdefault('info','')
tc = Teacher(admin.id, j_data['name'], j_data['cid'], j_data['in_time'], j_data['out_time'], j_data['oa_time'], j_data['info'])
db.session.add(tc)
db.session.commit()
return r({},0,'添加成功')
#修改用户
@users.route('/userdata/<int:uid>',methods=['PUT'])
def edit_user(uid):
data = request.get_data()
j_data = json.loads(data)
user=db.session.query(Admin).filter_by(admin=j_data['admin']).filter(Admin.id != uid).first()
if user is not None:
return r({},0,'',{'admin':'账号已存在'})
#修改账号表
user = db.session.query(Admin).filter_by(id=uid).first()
user.name = j_data['name']
if 'status' in j_data:
if j_data['status']:
user.status = 1
else:
user.status = 0
if 'password' in j_data and j_data['password'] != '':#提交了修改密码
local_salt=app.config.get("SALT")
salt=hashlib.md5(str(time.time()).encode(encoding='UTF-8')).hexdigest()
temp=j_data['password']+local_salt+salt
user.password=hashlib.md5(temp.encode(encoding='UTF-8')).hexdigest()
user.salt=salt
#修改教师表
tc = db.session.query(Teacher).filter_by(a_id=uid).first()
tc.name=j_data['name']
tc.cid=j_data['cid']
tc.in_time=j_data['in_time']
tc.out_time=j_data['out_time']
tc.oa_time=j_data['oa_time']
tc.info=j_data['info']
db.session.commit()
return r({},0,'修改成功')
#获取id名字,用于前端选择
@users.route('/userdata/minlist',methods=['GET'])
def get_minlist():
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
perPage=int(request.values.get('perPage'))
page=int(request.values.get('page'))
k_time=request.values.get('k_time')
score=request.values.get('score')
stu_search={}
stu_search['name']=request.values.get('name')
stu_search['code']=request.values.get('code')
stu_search['c_id']=request.values.get('c_id')
sco_search={}
sco_search['kskc']=request.values.get('kskc')
class_id=request.values.get('class_id')

orderBy=request.values.get('orderBy')
orderDir=request.values.get('orderDir')

count=db.session.query(Score).count()
offset=((page-1)*perPage)
rt={}
ids=[]
temp=[]
order=Score.id.desc()
if orderBy and orderDir:#排序
temp1=getattr(Score,orderBy)
order=getattr(temp1,orderDir)()
where=[Score.id>0]
for k,v in sco_search.items():
if v:
temp1=getattr(Score,k).like("%"+v+"%")
where.append(temp1)
#搜索了学生 start
stu_where=[]
for k,v in stu_search.items():
if v:
temp1=getattr(Student,k).like("%"+v+"%")
stu_where.append(temp1)
if len(stu_where)>0:
sids = db.session.query(Student.id).filter(*stu_where).all()
tempsid=[]
for x in sids:
tempsid.append(x[0])
pass
where.append(Score.uid.in_(tempsid))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
		'code':t.code,
'cid':t.cid,
'in_time':t.in_time,
'out_time':t.out_time,
'info':t.info,
'l_name':t.l_name,
'l_phone':t.l_phone,
'l2_name':t.l2_name,
'l2_phone':t.l2_phone,
'add':t.add
})

rt['count']=count
rt['rows']=temp
# rt['hasNext']=1
return r(rt)
pass
#删除
@student.route('/studentlist/<int:cid>',methods=['DELETE'])
def delete_user(cid):
tc = db.session.query(Student).filter_by(id=cid).first()
sql2=db.session.query(Student).filter_by(id=cid).delete()
db.session.commit()
set_class_count(tc.class_id);
return r({},0,'删除成功')
#修改
@student.route('/studentlist/<int:cid>',methods=['PUT'])
def edit_user(cid):
data = request.get_data()
j_data = json.loads(data)
user=db.session.query(Student).filter_by(cid=j_data['cid']).filter(Student.id != cid).first()
if user is not None:
return r({},0,'',{'cid':'身份证已经存在'})
tc = db.session.query(Student).filter_by(id=cid).first()
old_class_id=0
flag=False
if tc.class_id != j_data['class_id']:
old_class_id=tc.class_id
flag=True
pass
tc.name=j_data['name'],
tc.class_id=j_data['class_id'],
tc.code=j_data['code'],
tc.cid=j_data['cid'],
tc.in_time=j_data['in_time'],


项目链接:
https://javayms.github.io?id=141424572408201mn
https://javayms.pages.dev?id=141424572408201mn