SCUPI_OJ
  1. 回答题目与人工判题操作
SCUPI_OJ
  • SCUPIOJ
    • 用户系统
      • 操作认证
      • 账号增删改查
        • 05 老师管理员获取系统全部用户
        • 04 获取单个用户的信息
        • 06 修改账号密码
        • 07 管理员创建用户
        • 08 管理员删除用户
      • 01 登录
      • 02 注销
      • 03 assess token续期
    • 班级系统
      • 09 管理员创建班级
      • 10 管理员删除班级
      • 11 管理员编辑班级成员
      • 12 获取班级中的成员
      • 13 获取此用户所加入的班级
    • 作业系统
      • 作业与题目关系说明
      • 题目系统
        • 题目操作
          • 23 在作业中新建题目
          • 24 获取作业中题目 v2
          • 25 修改作业中题目内容
          • 26 删除作业中题目
          • 39 获取作业中所有题目得分细则(每道题的得分)
          • 44 获取作业中单个题目
        • 增删改查代码答案
          • 说明
          • 30 创建代码作业答案
          • 31 获取代码答案
          • 32 修改代码答案
          • 33 删除代码答案
        • 回答题目与人工判题操作
          • 34 回答题目
            POST
          • 35 查看全班成员在特定题目的最新提交记录
            GET
          • 36 查询特定学生在某题目的全部提交记录
            GET
          • 37 为题目评分
            PUT
          • 38 删除答题记录
            DELETE
          • 43 运行代码
            POST
        • 图片
          • 27 上传图片
          • 28 查看图片
          • 29 删除图片
      • 19 获取课程中布置的作业 v2
        GET
      • 40 获取设定的作业总分数
        GET
      • 41 获取特定学生的作业总分
        GET
      • 42 获取所有学生作业总得分
        GET
      • 20 布置作业
        POST
      • 21 更改作业信息
        PUT
      • 22 删除作业
        DELETE
    • 信息系统操作
      • 14 获取用户发送信息
      • 15 获取用户接收信息
      • 16 创建新信息
      • 17 修改已读状态
      • 18 删除信息
  1. 回答题目与人工判题操作

34 回答题目

测试中
POST
http://127.0.0.1:8000/home/<str:coursename>/<str:assignmentname>/submit/
OJ

作答str:assignmentname作业中相应id的作业,body含有两个字段,分别是'id'和'content_answer',id是作答题目的id可以从get中获得,content_answer是作答的信息

题目作答规则

答案均由"<-&&->"包裹

  • 选择题作答规则,以多选a,c,e为例
    content_answer应填"<-&a&-><-&c&-><-&e&->"
    得到返回值id和题目的得分如:
    { "id": 2, "score": 5 }
  • 简答题题作答规则,以多选a,b,c为例,第一个空的答案为“床前明月光”第二个空的答案为“疑是地上霜”
    content_answer应填"<-&床前明月光&-><-&疑是地上霜&->"
    得到返回值score和comment一般为null(在ai判题开发之前)
    { "id": 1, "score": null, "comment": null }
  • 代码题的作答规则比较特殊,但是每个部分都由数个"<-&&->"包裹
    具体来说,comment分为两个部分,语言选择块和代码块
    • 语言选择块由content_answer中第一个"<-&&->"构成,比如选择cpp则填"<-&cpp&->",选java则为"<-&java&->"(在所有"<-&&->"中只有第一个为语言选择块)
    • 代码块紧跟在语言选择快之后,由于要实现多文件判题,每个代码块分为两个"<-&&->",第一个中填写文件名,第二中填写相应文件中代码内容,代码块个数没有限制
      举一个具体的例子要提交三个文件:
//main.cpp
#include<iostream>
#include "header.h"
using namespace std;
int main(){
    function();
    cout<<"Hello World!"<<endl;
    return 0;
}
//function.cpp
#include<iostream>
#include"header.h"
using namespace std;
void function(){
    int a;
    cin >> a;
    cout << a << endl;
}
//header.h
void function();

我们的body需要这样填写:

{
    "id":4,
    "content_answer":"<-&cpp&-><-&main.cpp&-><-&#include<iostream>\n#include \"header.h\"\nusing namespace std;\nint main(){\nfunction();\ncout<<\"Hello World!\"<<endl;\nreturn 0;\n}&-><-&function.cpp&-><-&#include<iostream>\n#include\"header.h\"\nusing namespace std;\nvoid function(){\nint a;\ncin >> a;\ncout << a << endl;\n}&-><-&header.h&-><-&void function();&->"
}

得到的返回值:

{
    "id": 4,
    "score": 200,
    "comment": "50 ms 200 KB Output true\n50 ms 200 KB Output true\n"
}

请求参数

Authorization
在 Header 添加参数
Authorization
,其值为在 Bearer 之后拼接 Token
示例:
Authorization: Bearer ********************
Body 参数application/json
id
integer 
必需
content_answer
string 
必需
每种题型的作答方式不同,具体已经在上方说明
示例
{
  "id": 1,
  "content_answer": "<-&a&->"
}

示例代码

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location --request POST 'http://127.0.0.1:8000/home/<str:coursename>/<str:assignmentname>/submit/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "id":1,
    "content_answer":"<-&a&->"
}'

返回响应

🟢200代码题成功
application/json
Body
id
integer 
必需
score
integer 
必需
comment
string 
必需
示例
{
  "id": 4,
  "score": 200,
  "comment": "50 ms 200 KB Output true\n50 ms 200 KB Output true\n"
}
🟢200选择题成功
🟢200简答题成功
上一页
33 删除代码答案
下一页
35 查看全班成员在特定题目的最新提交记录
Built with