创新实训项目架构

1.项目简介

该项目是基于deepseek大语言模型的历史主题的线上考试学习系统。在构建该项目时,我们首先进行了需求分析,经过讨论,我们将项目功能列举:

1.老师在出题时工作量大,需要先人工出题后录入题库系统,且题库需要周期性更新。为解决此问题,我们使用大语言模型,基于每个单元的知识点和史料,自动生成对应知识点的相关题目。

2.在评卷过程中,客观题老师是将答案录入考试系统,但是主观题需要人工评判。我们使用大模型在生成题目的时候同时生成答案。使用程序自动对于学生的答案做成评价。

3.学生反馈不足,学生只是获得了自己的答卷情况,而无法根据答卷情况确定后续学习方向。我们使用大模型根据学生的答题情况指定个性化的学习指导。

因此整个项目的目标可分为三个方向:题目生成智能化,题目测评智能化,答题建议个性化

2.整体设计

我们初步设计老师端有考试管理模块,学生管理模块,成绩管理模块,知识管理模块四大模块。由于核心功能为出题和答题,我们先对考试管理模块进行开发。

3.出题模块设计

我们的系统面向用户角色有学生和教师,教师端的主要功能是对于学生进行管理(非主要功能),出题,查看答题情况等。学生端的主要功能就是做题和取得反馈。因此我们采取增量式的思想,对于项目进行开发,我们计划先完成主要的教师出题功能。我们计划老师可以选择的参数为客观题的数目,问答题的数目,材料题的数目,简单,中档,困难等难度百分比以及考试的单元范围。出题模块主要前期我们需要的表为教师表,学生表,考试表(主要记录以上出题的参数),以及题目表。我们对于不同的题型分别建立一个表,里面主要储存题目,以及相应的答案,为后续评卷,给出建议做准备。我们整理了按单元,按课程整理知识点,历史资料。老师选择题目对应的单元后,会随机取出相应的知识点,历史资料并根据其生成内容。目前基于脚手架已完成对于出题部分的设计。我们使用vue框架来搭建我们的前端。该模块我们使用el-form组件完成

<template>
    <div class="add">
        <el-row :gutter="30">
            <el-col :span="8">
                <el-form ref="form" :model="DTA.form" label-width="60px">
                    <el-form-item label="试卷名称" :label-style="{ fontSize: '8px' }">
                        <el-input v-model="DTA.form.source" style="width: 70%;"></el-input>
                    </el-form-item>
                    <el-form-item label="介绍">
                        <el-input v-model="DTA.form.description" style="width: 70%;" ></el-input>
                    </el-form-item>
                    <el-form-item label="考试日期">
                        <el-date-picker
                            placeholder="选择日期"
                            v-model="DTA.form.examDate"
                            style="width: 70%;"
                        ></el-date-picker>
                    </el-form-item>
                    <el-form-item label="持续时间">
                        <el-input v-model="DTA.form.totalTime" style="width: 70%;" ></el-input>
                    </el-form-item>
                    <el-form-item label="考生提示">
                        <el-input type="textarea" v-model="DTA.form.tips" style="width: 70%;"></el-input>
                    </el-form-item>
                </el-form>
            </el-col>
            <el-col :span="8">
              <el-form>
                <el-form-item label="试卷类型">
                    <el-select v-model="DTA.info.type" placeholder="请选择试卷科目" style="width: 70%;">
                        <el-option
                            v-for="item in typeOptions"
                            :key="item.value"
                            :label="item.label"
                            :value="item.value"
                        ></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="简单题占比">
                    <el-input v-model="DTA.info.simple" placeholder style="width: 70%;" ></el-input>
                </el-form-item>
                <el-form-item label="中档题占比">
                    <el-input v-model="DTA.info.normal" placeholder style="width: 70%;"></el-input>
                </el-form-item>
                <el-form-item label="困难题占比">
                    <el-input v-model="DTA.info.diff" placeholder style="width: 70%;"></el-input>
                </el-form-item>
                <el-form-item label="客观题数量">
                    <el-input v-model="DTA.info.num1" placeholder="请输入客观题数量" style="width: 70%;"></el-input>
                </el-form-item>
                <el-form-item label="问答题数量">
                    <el-input v-model="DTA.info.num2" placeholder="请输入问答题数量" style="width: 70%;" ></el-input>
                </el-form-item>
                <el-form-item label="材料题数量">
                    <el-input v-model="DTA.info.num3" placeholder="请输入材料题数量" style="width: 70%;" ></el-input>
                </el-form-item>
              </el-form>
            </el-col>
            <el-col :span="8">
              <!-- <el-form>
                <el-form-item label="考试范围" style="margin-bottom: 20px;">
                    <el-input v-model="DTA.info.theme" placeholder="请输入考试范围" style="width: 70%;"></el-input>
                </el-form-item>
                <el-form-item style="margin-bottom: 20px;">
        <el-button type="primary" @click="onSubmit()">立即创建</el-button>
        <el-button type="text" @click="cancel()">取消</el-button>
      </el-form-item>
              </el-form> -->
              <el-form>
    <el-form-item 
      label="考试范围" 
      style="margin-bottom: 400px;">
      <el-input 
        v-model="DTA.info.theme" 
        placeholder="请输入考试范围" 
        style="width: 70%;">
      </el-input>
    </el-form-item>
    <el-form-item style="margin-top: 360px;">
      <el-button type="primary" @click="onSubmit()">立即创建</el-button>
      <el-button type="text" @click="cancel()">取消</el-button>
    </el-form-item>
  </el-form>
            </el-col>
        </el-row>
    </div>
</template>
<script>
export default {
    data() {
        return {
            DTA: {
                form: { //表单数据初始化
        source: '',
        description: '',
        institute: '',
        major: '',
        grade: '',
        examDate: '',
        totalTime: '',
        totalScore: '',
        type: '',
        tips: '',
        paperId: '',
      },
                info: {
                    type: '',
                    simple: '',
                    normal: '',
                    diff: '',
                    num1: '',
                    num2: '',
                    num3: '',
                    theme: ''
                }
            },
            activeName: "first",
            typeOptions: [
                { value: "历史", label: "历史" },
                { value: "地理", label: "地理" },
                { value: "政治", label: "政治" },
            ],
        };
    },
    // created() {
    //   this.getParams()
    // },
    methods: {
        formatTime(date) {
            //日期格式化
            let year = date.getFullYear();
            let month =
                date.getMonth() + 1 < 10
                    ? "0" + (date.getMonth() + 1)
                    : date.getMonth() + 1;
            let day =
                date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
            let hours =
                date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
            let minutes =
                date.getMinutes() < 10
                    ? "0" + date.getMinutes()
                    : date.getMinutes();
            let seconds =
                date.getSeconds() < 10
                    ? "0" + date.getSeconds()
                    : date.getSeconds();
            // 拼接
            return (
                year +
                "-" +
                month +
                "-" +
                day +
                " " +
                hours +
                ":" +
                minutes +
                ":" +
                seconds
            );
        },
        onSubmit() {
            if(this.DTA.form.examDate!='')
            {let examDate = this.formatTime(this.DTA.form.examDate);
            this.DTA.form.examDate = examDate.substr(0, 10);}
            this.$axios(`/api/examManagePaperId`).then((res) => {
                this.DTA.form.paperId = res.data.data.paperId + 1; //实现paperId自增1
                this.$axios({
                    url: "/api/exam",
                    method: "post",
                    data: {
                        ...this.DTA,
                    },
                }).then((res) => {
                    if (res.data.code == 200) {
                        this.$message({
                            message: "数据添加成功",
                            type: "success",
                        });
                        this.$router.push({ path: "/selectExam" });
                    }
                });
            });
        },
        cancel() {
            //取消按钮
            this.DTA.form = {};
            this.DTA.info = {};
        },
        back() {},    },
};
</script>

由此制作出老师出题页面,后续会进一步进行优化。

data() {

        return {

            //新建一个数据结构,来传递相关试卷的参数

            info: {}}}

通过info这种数据结构将试卷要求传入后端由后端接收。

效果如图

后端接受到前端传回的考试要求后,将考试的参数传入模型脚本调用函数,调用模型生成对应的试卷,并按照要求存入数据库中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值