!!!!!!!!!
很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度(部分学校只有一次答辩机会 没弄好就延迟毕业了)
会持续一直更新下去 有问必答 一键收藏关注不迷路
源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d 提取码: jf1d
!!!!!!!!!
项目介绍
随着高校教育规模的不断扩大和对学生学业管理精细化要求的提升,高校学生学业预警系统成为保障学生顺利完成学业的关键工具。借助先进的信息技术手段,为学校教务管理人员、教师以及学生提供全面的学业监测与预警服务,旨在有效解决传统学业管理中信息滞后、干预不及时等问题,满足高校对于智能化、精准化学业管理的需求。
核心功能模块
- 个人账户管理:支持教务管理人员、教师和学生注册、登录与个人信息编辑。教务人员可录入管理权限、负责院系等信息,教师能完善教学专长、所授课程等资料,
- 学业数据采集与整合:系统自动从学校教务管理系统中采集学生的各类学业数据,包括课程成绩、考勤记录、学分获取情况、补考重修信息等,并进行整合分析。
- 学业状况监测与预警:根据预设的学业预警规则,对学生的学业状况进行实时监测。例如,当学生某学期的不及格课程学分达到一定阈值、累计挂科学分超过规定数量、考勤缺勤率过高或者学分获取进度滞后等情况出现时,系统自动触发预警信息。
- 预警信息分析与反馈:展示详细的预警信息数据,如不同专业、年级学生的预警分布情况、预警类型占比分析等;支持自定义分析设置,深入挖掘预警数据中的模式和规律,例如分析特定专业学生在某些课程上的预警集中趋势,
- 个性化学业辅导推荐:运用数据挖掘与分析技术,根据预警学生的学业数据和个人特点,为其推荐个性化的学业辅导方案。
- 学业干预效果评估:对实施学业干预措施后的学生学业状况进行持续跟踪和评估。通过对比干预前后学生的学业成绩、考勤情况、学分获取等数据,分析学业干预措施的有效性,为学校调整和优化学业管理策略提供参考依据。
- 定制化报表生成:根据教务管理人员、教师或学校管理层需求输出包含详细图表说明的专业级文档供下载打印保存。
- 师生互动交流平台:设立论坛版块方便教师发布学业辅导资料、
- 数据可视化:提供交互式的数据可视化面板,使教务管理人员、教师和学生等非技术用户也能轻松理解复杂的学业数据集。
技术栈
1.运行环境:python3.7/python3.7
2.IDE环境:pycharm+mysql8.0;
3.数据库工具:Navicat15
技术栈
后端:python+django
前端:vue+CSS+JavaScript+jQuery+elementui
项目截图
核心代码
# coding:utf-8
# author:ila
import click,py_compile,os
from configparser import ConfigParser
from configs import configs
from utils.mysqlinit import Create_Mysql
from api import create_app
from api.exts import db
from api.models.user_model import *
from api.models.config_model import *
from api.models.brush_model import *
@click.group()
def sub():
pass
@click.command()
@click.option("-v", default=0.1, type=float)
def verr(v):
# VERSION = 0.1
click.echo("py sub system version:{}".format(v))
@click.command()
def run():
app = create_app(configs)
app.debug = configs['defaultConfig'].DEBUG
app.run(
host=configs['defaultConfig'].HOST,
port=configs['defaultConfig'].PORT,
threaded=configs['defaultConfig'].threaded,
processes=configs['defaultConfig'].processes
)
@click.command()
def create_all():
app = create_app(configs)
with app.app_context():
print("creat_all")
db.create_all()
@click.command()
@click.option("--ini", type=str)
def initsql(ini):
cp = ConfigParser()
cp.read(ini)
sqltype = cp.get("sql", "type")
database= cp.get("sql", "db")
if sqltype == 'mysql':
cm = Create_Mysql(ini)
cm.create_db("CREATE DATABASE IF NOT EXISTS `{}` /*!40100 DEFAULT CHARACTER SET utf8 */ ;".format(database))
with open("./db/mysql.sql", encoding="utf8") as f:
createsql = f.read()
createsql = "DROP TABLE" + createsql.split('DROP TABLE', 1)[-1]
cm.create_tables(createsql.split(';')[:-1])
cm.conn_close()
elif sqltype == 'mssql':
cm = Create_Mysql(ini)
cm.create_db("CREATE DATABASE IF NOT EXISTS `{}` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;".format(database))
with open("./db/mssql.sql", encoding="utf8") as f:
createsql = f.read()
createsql = "DROP TABLE" + createsql.split('DROP TABLE', 1)[-1]
cm.create_tables(createsql.split(';')[:-1])
cm.conn_close()
else:
print('请修改当前面目录下的config.ini文件')
@click.command()
@click.option("--py_path", type=str)
def compile(py_path):
print("py_path====>",py_path)
py_compile.compile(py_path)
@click.command()
def replace_admin():
filePath=os.path.join(os.getcwd(),"api/templates/front/index.html")
if os.path.isfile(filePath):
print(filePath)
with open(filePath,"r",encoding="utf-8") as f:
datas=f.read()
datas=datas.replace('baseurl+"admin/dist/index.html#"','"http://localhost:8080/admin"')
datas=datas.replace('baseurl+"admin/dist/index.html#/login"','"http://localhost:8080/admin"')
with open(filePath,"w",encoding="utf-8") as f:
f.write(datas)
sub.add_command(verr)
sub.add_command(run,"run")
sub.add_command(create_all,"create_all")
sub.add_command(initsql,"initsql")
sub.add_command(replace_admin,"replace_admin")
if __name__ == "__main__":
sub()