Python+Django的毕业设计-高校学生学业预警系统项目开发实战(源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。

🎀当前专栏: Python毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

💞Java毕业设计
🌎微信小程序毕业设计

开发环境

  • 开发语言:Python
  • 数据库:mysql 5.7
  • 数据库工具:Navicat12
  • 开发软件:pycharm
  • 浏览器:谷歌浏览器

源码下载地址:

https://download.csdn.net/download/2301_76953549/87951202

论文目录

【如需全文请按文末获取联系】
在这里插入图片描述
在这里插入图片描述

一、项目简介

管理员承担着教师的角色,管理员在该管理系统中能够对学生的信息进行维护和管理、对于学生的成绩进行查看和预警分析,能够对管理员自身的信息进行管理。

二、系统设计

2.1软件功能模块设计

此次围绕着高校学生的学业预警管理,设计了学生的个人信息管理、成绩查看、预警分析等模块,从而更好地为学生和管理员提供预警分析管理功能的使用,具体的功能结构图设计如下:
在这里插入图片描述

2.2数据库设计

管理员的实体中,内容相对简单,管理员主要能够对自己的个人密码进行修改,其实体图如下所示:
在这里插入图片描述
学生用户在此次的设计也需要管理员在后台增加学生的信息,在学生信息的内容设计上,其数据库的实体图如下所示:
在这里插入图片描述

三、系统项目部分截图

3.1管理员功能模块的实现

管理员登录首页
当管理员登录到该网站后可以看到该网站的主页面显示如下,在主页面中有该系统的名称介绍,有着菜单模块,根据此次的需求设定有预警分析、学生信息管理、学生成绩管理以及用户管理等模块。整个页面展示如下图所示
在这里插入图片描述
预警分析管理界面
当管理员点击预警分析,在预警分析中可以看到有蓝色、黄色、橙色以及红色的预警信息,四个预警框中会有对应的学生姓名以及学生的编号。以蓝色预警为例,点击“王五”后可以进入到蓝色预警的详细界面中,在详细的界面中可以看到该学生的具体情况,包括了姓名、成绩、入学年份、学籍状态以及预警的类型,在最下方有通知家长的选项。如图4.2所示。
在这里插入图片描述
在这里插入图片描述

3.2学生管理界面

在学生管理界面中管理员可以看到所有的学生情况,学生情况以列表的方式进行呈现,有学生的学号、姓名、考试分数、学分、学期等要素,管理员可以对系统内的信息进行修改和删除,界面如下图所示。
在这里插入图片描述

3.3学生成绩管理界面

在学生成绩的管理界面中,管理员能够查看到学生的具体成绩信息,可以新增学生的成绩信息以及对存量的成绩信息进行修改,如下图所示:
在这里插入图片描述

3.4用户功能模块的实现

学生可以在个人信息的管理中进行个人信息的管理维护,在管理中能够通过制定学习计划来对个人出现的预警情况进行学习计划的改进安排,如图4.5所示。
在这里插入图片描述

四、部分核心代码

from django.core.paginator import Paginator
from django.http import JsonResponse, HttpResponseRedirect
from django.shortcuts import render
from user.models import Student
from .models import Achievement


# Create your views here.
def login_out(req):
    del req.session['username']
    return HttpResponseRedirect('/')
def index(req):
    username= req.session['username']
    role_id = req.session['role']

    return render(req, 'index.html',locals())

def add_plan(req):
    plan = req.POST.get('plan')
    print(plan)
    Student.objects.filter(id=req.session['user_id']).update(
       plan=plan
    )
    return JsonResponse({'msg':'success'})
def analysis(req):
    username = req.session['username']
    role_id = req.session['role']
    results = Student.objects.all()
    blue = []
    orange = []
    for i in results:
        if int(i.gaokao_score) < 251:
            blue.append(i.name+'|'+i.number)

        if (i.xueqi == 2 and i.score < 15) or (i.xueqi == 3 and i.score < 35) or (i.xueqi == 4 and i.score < 55) or (
                i.xueqi == 5 and i.score < 75) or (i.xueqi == 6 and i.score < 95) or (
                i.xueqi == 7 and i.score < 115) or (i.xueqi == 8 and i.score < 135) or i.xueqi>8:
            orange.append(i.name + '|' + i.number)
    yellow = []
    red =[]
    orange_count = len(orange)
    blue_count = len(blue)
    yellow_ocunt = len(yellow)
    red_count =len(red)
    return render(req,'analysis.html',locals())

def login(req):
    return render(req, 'login.html')

def chengji(request):
    username = request.session['username']
    role_id = request.session['role']
    user_id = request.session['user_id']
    results = Student.objects.all()
    students = []
    for i in results:
        students.append(i.name+'|'+i.number)
    return render(request,'chengji.html',locals())
def add_chengji(request):
    """
    注册账号
    :return:
    """
    try:
        data = request.POST.get('name')
        shuxue = request.POST.get('shuxue')
        english = request.POST.get('english')
        daolun = request.POST.get('daolun')
        xueqi = request.POST.get('xueqi')
        score = request.POST.get('score')
        name = data.split('|')[0]
        number=data.split('|')[1]
        user = Achievement.objects.filter(student_id=number,name=name,xueqi=xueqi)
        if user:
            return JsonResponse({'message': '学生成绩已存在,如若修改,请点击修改按钮'}, status=403)
        Achievement.objects.create(
            name=name,
            student_id=number,
            shuxue=shuxue,
            english=english,
            xueqi=xueqi,
            daolun=daolun
        )
        result = Student.objects.filter(number=number).first()
        Student.objects.filter(number=number).update(
            xueqi=int(xueqi)+1,
            score=int(result.score)+int(score)
        )
        response_data = {'message': '新增成功'}
        return JsonResponse(response_data)
    except Exception as e:
        print(e)
        return JsonResponse({'message': '注册失败'}, status=401)
def get_chengji(request):
    """
    获取用户列表信息 | 模糊查询
    :param request:
    :return:
    """
    keyword = request.GET.get('name')
    page = request.GET.get("page", '')
    limit = request.GET.get("limit", '')
    role_id = request.GET.get('position', '')
    response_data = {}
    response_data['code'] = 0
    response_data['msg'] = ''
    data = []
    if keyword is None:
        results1 = Achievement.objects.all()
        paginator = Paginator(results1, limit)
        results = paginator.page(page)
        if results:
            for user in results:
                record = {
                    "id": user.id,
                    'student_id': user.student_id,
                    "name": user.name,
                    'english': user.english,
                    'shuxue': user.shuxue,
                    'daolun': user.daolun,
                    "xueqi": user.xueqi,
                    'score':user.score,
                }
                data.append(record)
            response_data['count'] = len(results1)
            response_data['data'] = data
    else:
        users_all = Achievement.objects.filter(name__contains=keyword).all()
        paginator = Paginator(users_all, limit)
        results = paginator.page(page)
        if results:
            for user in results:
                record = {
                    "id": user.id,
                    'student_id': user.student_id,
                    "name": user.name,
                    'english': user.english,
                    'shuxue': user.shuxue,
                    'daolun': user.daolun,
                    "xueqi": user.xueqi,
                    'score': user.score,

                }
                data.append(record)
            response_data['count'] = len(users_all)
            response_data['data'] = data
    return JsonResponse(response_data)


def edit_chengji(request):
    """
    修改用户
    """
    response_data = {}
    user_id = request.POST.get('id')
    username = request.POST.get('name')
    shuxue = request.POST.get('shuxue')
    daolun=request.POST.get('daolun')
    english=request.POST.get('english')
    Achievement.objects.filter(id=user_id).update(
        english=english,
        daolun=daolun,
        shuxue=shuxue)
    response_data['msg'] = 'success'
    return JsonResponse(response_data, status=201)


def del_chengji(request):
    """
    删除用户
    """
    user_id = request.POST.get('id')
    result = Achievement.objects.filter(id=user_id).first()
    try:
        if not result:
            response_data = {'error': '删除用户信息失败!', 'message': '找不到id为%s的用户' % user_id}
            return JsonResponse(response_data, status=403)
        result.delete()
        response_data = {'message': '删除成功!'}
        return JsonResponse(response_data, status=201)
    except Exception as e:
        response_data = {'message': '删除失败!'}
        return JsonResponse(response_data, status=403)


def get_info(req,data):
    username = req.session['username']
    role_id = req.session['role']
    name = data.split('|')[0]
    number = data.split('|')[1]
    student = Student.objects.filter(number=number).first()
    yj_type = '正常'
    if int(student.gaokao_score) < 251:
        yj_type = '蓝色预警'
    elif (student.xueqi == 2 and student.score < 15) or (student.xueqi == 3 and student.score < 35) or (student.xueqi == 4 and student.score < 55) or (
            student.xueqi == 5 and student.score < 75) or (student.xueqi == 6 and student.score < 95) or (
            student.xueqi == 7 and student.score < 115) or (student.xueqi == 8 and student.score < 135) or student.xueqi > 8:
        yj_type = '橙色预警'
    return render(req,'info.html',locals())

def personal(req):
    username = req.session['username']
    role_id = req.session['role']
    student = Student.objects.filter(name=username).first()
    yj_type = '正常'
    if int(student.gaokao_score) < 251:
        yj_type = '蓝色预警'
    elif (student.xueqi == 2 and student.score < 15) or (student.xueqi == 3 and student.score < 35) or (student.xueqi == 4 and student.score < 55) or (
            student.xueqi == 5 and student.score < 75) or (student.xueqi == 6 and student.score < 95) or (
            student.xueqi == 7 and student.score < 115) or (student.xueqi == 8 and student.score < 135) or student.xueqi > 8:
        yj_type = '橙色预警'
    return render(req,'personal.html',locals())

获取源码或论文

如需对应的论文或源码,以及其他定制需求,也可以下方微❤联系。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值