Python毕业设计-基于卷积神经网络的学情分析系统项目实战(附源码+论文)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。
💞当前专栏:Python毕业设计
精彩专栏推荐👇🏻👇🏻👇🏻
开发环境
- 开发语言:Python
- 框架:django
- Python版本:python3.7.7
- 数据库:mysql 5.7(一定要5.7版本)
- 数据库工具:Navicat11
- 开发软件:PyCharm
- 浏览器:谷歌浏览器
演示视频
python222基于卷积神经网络的学情分析系统演示
论文目录
【如需全文或源码请按文末获取联系】

一、项目简介
该系统利用卷积神经网络技术,结合Python语言开发和Django框架,以最大程度地提高学习情况数据的准确性和实时性。通过MySQL数据库存储大量学生学习数据和模型参数,同时利用OpenCV技术处理图像数据,通过对学生学习行为的深入分析和学习数据的挖掘,可以更准确地评估学生的学习情况,并提供个性化的学习推荐。
二、系统设计
2.1软件功能模块设计
该系统的总体设计旨在基于Python语言、Django框架和MySQL数据库构建一个功能完备的后台管理系统,用于管理大学学生的学情和课程信息。系统涵盖了管理员、教师和学生三个用户角色,实现了各自的功能需求,包括用户信息管理、课程信息管理、学生成绩分析与反馈、学业预警以及疲劳监控等功能。通过使用人脸识别技术和OpenCV实时图像处理等技术,系统能够提供精准的学生疲劳识别和闭眼时长统计。同时,系统还具备安全性和隐私保护的机制,确保用户数据的安全性和合规性。整体上,该系统的设计旨在提供高效、可靠、易用和安全的后台管理解决方案,提升教学管理效率,改善学生学习体验。系统的架构如下图4.1所示。
2.2数据库设计
本系统采用MySQL数据库作为数据存储。并根据相应的实体设计以下的E-R图:


三、系统项目部分截图
3.1注册登录功能
该系统的注册管理功能旨在提供用户注册和管理的功能模块,包括管理员、教师和学生的注册与信息管理。用户可以通过注册功能创建新账号,并填写必要的个人信息。管理员可以对所有用户进行管理,包括审核教师和学生的注册申请、重置密码、更新联系方式等操作。教师和学生可以通过注册后的账号登录系统,查看个人信息并进行相关操作。如下图5.1所示。
3.2个人信息管理
个人信息管理功能旨在让用户(包括管理员、教师和学生)能够方便地查看和编辑其个人信息,包括姓名、联系方式、密码等。用户可以通过该功能修改个人信息并确保其及时更新,提高系统的安全性和用户信息的准确性,同时增强用户体验,满足用户个性化需求。如下图5.2所示。
3.3课程表管理
帮助管理员、教师和学生有效管理和查看课程信息,确保教学安排的准确性和实时性。管理员可以创建和设置课程表,在特定时间段内安排课程,并分配教师负责授课。教师和学生可以通过该功能查看自己的课程表,了解每天的课程安排和教师信息。该功能可以提供个性化的课程提醒通知,帮助用户按时参与课程,提高教学效率和学习效果。如下图5.3所示。
四、部分核心代码
import os
import time
from django.contrib.auth import authenticate, login
from django.shortcuts import render
from .models import User, Teacher, Student, Course, ClassCourse, ClassName
from django.http import JsonResponse, HttpResponseRedirect
from django.core.paginator import Paginator
from utils.common import login_request
from utils import common
workdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def verif_has_username(id, name):
# 判断是否用重复的用户名
user = User.objects.exclude(id=id).filter(username=name)
return True if len(user) > 0 else False
def collect_face(request):
print("开始采集人脸")
time.sleep(3)
face_id = request.POST.get('face_id')
name = request.POST.get('name')
from .recognize_face.workAttendanceSystem import WAS
frame = WAS()
result = frame.register_cap(name, face_id)
return JsonResponse({'msg': 'ok', 'face_id': face_id})
def save_file(file):
"""
保存文件
"""
if file is not None:
file_dir = os.path.join(workdir, 'static', 'uploadImg')
if not os.path.exists(file_dir):
os.mkdir(file_dir)
file_name = os.path.join(file_dir, file.name)
with open(file_name, 'wb')as f:
# chunks()每次读取数据默认 我64k
for chunk in file.chunks():
f.write(chunk)
f.close()
return file_name
else:
return None
def edit_teacher(request):
t_id = request.POST.get('id')
username = request.POST.get('username')
phone = request.POST.get('phone')
Teacher.objects.filter(id=t_id).update(
usernmae=username,
phone=phone
)
return JsonResponse({'msg': 'ok'})
def detection(request):
from .recognize_face.workAttendanceSystem import WAS
frame = WAS()
image = request.FILES.get('image')
file_name = save_file(image)
face_id = frame.punchcard_cap(file_name)
print(face_id)
if not face_id:
return JsonResponse({'msg': '未识别到人脸!', 'statusCode': '500'})
flag = False
user_list = Student.objects.all()
for i in user_list:
if i.face_id == face_id:
flag = True
break
if flag:
user_obj = Student.objects.filter(face_id=face_id).first()
if user_obj.status == '已审核':
request.session['username'] = user_obj.username
request.session['role'] = '学生'
return JsonResponse({'msg': '验证成功!', 'statusCode': '200'})
else:
return JsonResponse({'msg': '当前账户未审核,请稍后联系老师后重试!', 'statusCode': '500'})
else:
return JsonResponse({'msg': '系统中未匹配到人脸!', 'statusCode': '500'})
def register(request):
"""
注册账号
:return:
"""
username = request.POST.get('username')
sign = verif_has_username(None, username)
password = request.POST.get('password')
face_id = request.POST.get('face_id')
age = request.POST.get('age')
sex = request.POST.get('sex', '1@qq.com')
if sign:
return JsonResponse({"statusCode": '500', "msg": "用户名重复!"})
response_data = {
"statusCode": '200',
"msg": "用户" + request.POST["username"] + "新增成功!",
}
if password == "" or username == "":
response_data["statusCode"] = '403'
response_data["msg"] = "用户名或密码为空,注册失败!"
# 新增用户
try:
Student.objects.create(
username=username,
password=password,
age=age,
sex=sex,
status='未审核',
face_id=face_id,
)
common.create_log(request, '新增', '创建用户', username, 1)
except Exception as e:
print(e)
common.create_log(request, '新增', '创建用户失败', '', 0)
response_data["statusCode"] = '500'
response_data["msg"] = "用户新增失败"
return JsonResponse(response_data)
@login_request
def password(request):
return render(request, 'modify_password.html', locals())
def get_user(request):
"""
获取用户列表信息 | 模糊查询
:param request:
:return:
"""
page = request.GET.get("page", '')
keyword = request.GET.get("name", '')
limit = request.GET.get("limit", '')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = User.objects.all()
else:
results_obj = User.objects.filter(username__contains=keyword).all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for result in results:
record = {
"id": result.id,
"name": result.username,
"password": result.password,
"email": result.email,
"phone": result.phone,
'create_time': result.date_joined.strftime('%Y-%m-%d %H:%m:%S'),
"desc": result.description,
}
data.append(record)
response_data['count'] = len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
@login_request
def user(request):
"""
跳转用户页面
"""
return render(request, 'user.html', locals())
def login_check_teacher(request):
"""
登录校验
"""
response_data = {}
username = request.POST.get('username')
password = request.POST.get('password')
user_obj = Teacher.objects.filter(username=username, password=password).first()
if user_obj:
# 将用户名存入session中
response_data['msg'] = '登录成功'
response_data['statusCode'] = '200'
common.create_log(request, '登录', '登录系统', '', 1)
request.session['username'] = username
request.session['role'] = '教师'
return JsonResponse(response_data, status=201)
else:
common.create_log(request, '登录', '登录系统', username, 0)
return JsonResponse({'msg': '用户名或者密码不正确', 'statusCode': '500'}, status=401)
def login_check_student(request):
response_data = {}
username = request.POST.get('username')
password = request.POST.get('password')
user_obj = Student.objects.filter(username=username, password=password, status='已审核').first()
if user_obj:
# 将用户名存入session中
response_data['msg'] = '登录成功'
response_data['statusCode'] = '200'
common.create_log(request, '登录', '登录系统', '', 1)
request.session['username'] = username
request.session['image'] = user_obj.image
request.session['role'] = '学生'
return JsonResponse(response_data, status=201)
else:
common.create_log(request, '登录', '登录系统', username, 0)
return JsonResponse({'msg': '用户名或者密码不正确', 'statusCode': '500'}, status=401)
def login_check(request):
"""
登录校验
"""
response_data = {}
username = request.POST.get('username')
password = request.POST.get('password')
user_obj = authenticate(username=username, password=password)
if user_obj:
# 将用户名存入session中
response_data['msg'] = '登录成功'
response_data['statusCode'] = '200'
common.create_log(request, '登录', '登录系统', '', 1)
login(request, user_obj)
return JsonResponse(response_data, status=201)
else:
common.create_log(request, '登录', '登录系统', username, 0)
return JsonResponse({'msg': '用户名或者密码不正确', 'statusCode': '500'}, status=401)
def edit_user(request):
"""
修改用户
"""
response_data = {}
user_id = request.POST.get('user_id')
username = request.POST.get('username', '')
age = request.POST.get('age', '')
image = request.POST.get('image', '')
hobby = request.POST.get('hobby')
try:
image = request.FILES.get('image')
save_file(image)
image_path = '../static/uploadImg/' + image.name
print(image_path)
Student.objects.filter(id=user_id).update(
image=image_path,
hobby=hobby,
age=age)
request.session['image'] = image_path
except Exception as e:
print(e)
Student.objects.filter(id=user_id).update(
username=username,
hobby=hobby,
age=age)
print(hobby, user_id)
response_data['msg'] = '编辑成功!'
response_data['error'] = 0
common.create_log(request, '修改', '修改用户', username, 1)
return JsonResponse(response_data, status=201)
def del_user(request):
"""
删除用户
"""
user_id = request.POST.get('id')
result = User.objects.filter(id=user_id).first()
try:
if not result:
response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}
return JsonResponse(response_data, status=403)
common.create_log(request, '删除', '删除用户', result.username, 1)
result.delete()
response_data = {'message': '删除成功!'}
return JsonResponse(response_data, status=201)
except Exception as e:
common.create_log(request, '删除', '删除用户', result.username, 0)
response_data = {'message': '删除失败!'}
return JsonResponse(response_data, status=403)
def change_password(request):
"""
修改密码
"""
current_user = Student.objects.get(id=request.POST.get("id"))
if current_user.password == request.POST.get('password1'):
# 修改的密码与原密码重复不予修改
return JsonResponse({"msg": "修改密码与原密码重复"}), 406
else:
# 不重复,予以修改
current_user.password = request.POST.get('password2')
current_user.save()
# 清除session回到login界面
return JsonResponse({"msg": "success"})
def change_password2(request):
"""
修改密码
"""
current_user = Teacher.objects.get(id=request.POST.get("id"))
if current_user.password == request.POST.get('password1'):
# 修改的密码与原密码重复不予修改
return JsonResponse({"msg": "修改密码与原密码重复"}), 406
else:
# 不重复,予以修改
current_user.password = request.POST.get('password2')
current_user.save()
# 清除session回到login界面
return JsonResponse({"msg": "success"})
获取源码或论文
如需对应的论文或源码,以及其他定制需求,也可以下方微❤联系。
更多推荐
所有评论(0)