基于DeepSeek的代码评测和自动纠错优化系统-数据库逻辑结构设计

一,实体分析描述

基于DeepSeek的代码评测和自动纠错优化系统-数据库架构的初步设计和流程

基于DeepSeek的代码评测和自动纠错优化系统-需求分析与关系图

概念结构设计清单

用户信息实体:用户账号,密码,邮箱,注册时间

题目信息实体:题目编号,题目内容,题目描述,样例输入,样例输出,题目难度,通过的测试用例,未通过的用例,总用例

评测信息实体:用户账号,提交代码,提交代码语言,代码通过测试数,代码运行时间,题目编号

用户必须注册并登录系统才能进行代码评测

每次提交一道题

评测系统管理

submission {提交ID,题目ID,代码,使用语言,提交时间,通过数量,总提交,结果}

analysis_result{提交ID,推理过程文本,分析结果,代码量化}

testcaseresult{提交ID, 测试点ID,提交量化信息,用户输入输出}

二,数据库逻辑结构设计

user

作为用户信息的保存,用于用户注册登录和鉴权

去向:Register检测用户注册注册名是否重复,Login校验密码,生成 JWT token

定义用户身份信息表,储存密码以及邮箱账户

package models

import "gorm.io/gorm"

type User struct {
	gorm.Model
	Username string `json:"username" gorm:"unique"`
	Password string `json:"password"` // 注意:后续我们将加密存储
	Email    string `json:"email"`
}

problem

对题目信息的保存,题目的简要描述,输出数据流为题目介绍,支持题目增删改查(Problem内部调用)

来源:手动添加并更新题目进入数据库(需要认证)

去向:允许Problem调用题目,查询所有问题提交记录

定义题目相关内容表,包括题目要求,输入和输出,输入输出样例和难度评级

package models

import "gorm.io/gorm"

type Problem struct {
	gorm.Model

	//ID           uint   `json:"id"`
	Title        string `json:"title"`
	Description  string `json:"description"` // 题目描述
	Input        string `json:"input"`       // 输入描述
	Output       string `json:"output"`      // 输出描述
	SampleInput  string `json:"sample_input"`
	SampleOutput string `json:"sample_output"`
	Difficulty   string `json:"difficulty"` // easy / medium / hard
}
	if err := utils.DB.Model(&models.Submission{}).
		Where("problem_id = ?", problemID).
		Count(&total).
		Order("submit_time desc").
		Offset((pageInt - 1) * limitInt).
		Limit(limitInt).
		Find(&submissions).Error; err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": "查询失败"})
		

submission

管理用户提交信息,评测系统的核心表

来源:从problem获得题目ID,创建提交记录

去向:向用户提交评测结果,向submission保留提交记录

定义用户提交表,包括提交ID信息,题目ID,提交的代码内容,评测系统判定结果,总数和通过数量,执行时间等与用户方提交有关的信息

package models

import (
	"time"

	"gorm.io/gorm"
)

type Submission struct {
	gorm.Model
	UserID      uint      `json:"user_id"`
	ProblemID   uint      `json:"problem_id"`
	Code        string    `json:"code"`
	Language    string    `json:"language"`
	Result      string    `json:"result"` // 总体结果
	SubmitTime  time.Time `json:"submit_time"`
	PassedCount int       `json:"passed_count"` // 通过数量
	TotalCount  int       `json:"total_count"`  // 总数量
}
	sub := models.Submission{
		UserID:     userID,
		ProblemID:  uint(problemID),
		Code:       req.Code,
		Language:   req.Language,
		Result:     "Pending",
		SubmitTime: time.Now(),
	}
	utils.DB.Create(&sub)

analysis_result

评测系统中的分析记录部分,具体到代码的性能分析和量化

来源:提交的submission表的子表

去向:保留分析结果到数据库,并允许查询在同一提交ID下的所有分析结果

_ = services.SaveAnalysisResult(analysis.ID, result)
	c.JSON(http.StatusOK, gin.H{
		"submission_id": sid,
		"analyses":      analyses,
	})

定义用户提交分析表,包括提交ID记录,推理过程文本,分析结果内容,代码量化指标,用于存储用户代码评测数据,保存量化结果

package models

import "gorm.io/gorm"

type AnalysisResult struct {
	gorm.Model
	SubmissionID     uint   `json:"submission_id"`
	ReasoningContent string `gorm:"type:text" json:"reasoning_content"`
	Content          string `gorm:"type:text" json:"content"`
	Status           string `gorm:"type:varchar(50)" json:"status"`
}

testcaseresult

定义测试样例表,提交ID,测试点ID,提交量化信息,增加预期输出的存储实现代码纠错

package models

import "gorm.io/gorm"

type TestcaseResult struct {
	gorm.Model
	SubmissionID uint   `json:"submission_id"` // 所属提交
	CaseID       string `json:"case_id"`       // 测试点编号,如 "1", "2"
	Status       string `json:"status"`        // Accepted / Wrong Answer / Runtime Error
	Output       string `json:"output"`        // 用户输出
	Expected     string `json:"expected"`      // 预期输出
	RuntimeMs    int    `json:"runtime_ms"`    // 执行时间(毫秒)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值