码学堂教师用户使用帮助
教师如何在码学堂上组织教学活动?
如何在码学堂上开通教师权限?
如何注册码学堂账号?
如何登录码学堂?
如何在码学堂上建立学生组(班级)?
如何添加学生到学生组(班级)中?
如何在码学堂上创建课程?
如何在码学堂的课程中添加章节信息?
如何在码学堂上创建课程组?
如何在码学堂的课程中添加知识点?
如何在码学堂上备课?
如何在码学堂上出题?
如何上传程序题目测试数据?
如何在码学堂上安排课程导学?
如何在码学堂组织练习、考试、竞赛?
如何使用码学堂考试系统进行考试?
如何在码学堂上组织学习任务?
如何在码学堂上管理学生考勤?
如何在码学堂上设置学生学习绩效?
如何与学生进行问答互动?
如何使用码学堂AI公式识别助手?
在码学堂如何出SQL题目?
码学堂编译器版本
授课中如何录制视频?
教师如何加入授权商户机构?
如何开放码学堂智能助教讲题权限?
码学堂公式编辑器操作文档
更多教学工具
码学堂上如何自动出题?
码学堂上如何批量导入题目?
如何快速在码学堂上组织学生训练与竞赛?
码学堂中组织练习、考试、竞赛如何设置固定时长与指定独立完成时间?
如何在码学堂中进行图形化编程(Scratch OJ)教学?
码学堂更新日志
如何在智能体中连接码学堂?
1.码学堂API Key
2.题目加载接口
3. 提交判题接口指南
4. 测评结果查询接口指南
5. 知识点加载接口指南
6. 知识点管理接口指南
7. 码学堂题目管理接口指南
选项格式说明
支持编程语言对应说明
8. 编程题、函数题、程序填空题批量上传测试数据集
-
+
首页
7. 码学堂题目管理接口指南
# 7.1 概述 码学堂为商户提供8种题型(判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题)的接入服务,商户可以自己的系统中通过接口管理题目。 # 7.2 新增题目 ## 7.2.1 请求参数说明 | 序号 | 参数 | 名称 | 是否必须提供|是否加入签名 |描述 | | :----: | :----: | :----: | :----: |:---- |:---- | | 01 | merchant_id | 商户号 | 是 | 是 | 直接写“0”| | 02 | email | 教师账号|是|是|教师码学堂账号 | | 03|timestamp|时间戳 | 否 | 是|建议提供| |04|ptype|题目类型|是|是|{1,2,3,4,5,6,7,8},分别对应判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题,[参考](http://help.maxuetang.cn/project-14/doc-59/#h1-1.5u9898u76EEu7C7Bu578B "参考")| |05|kp_ids|知识点IDs|是|是|对应“节”,多个知识点用英文","连接| |06|difficulty|题目难度|否|是|{1,2,3,4,5}| |07|score|题目分数|是|是|保留2位小数| |08|tags|题目标签|否|是|| |09|upload_file_flag|答题时是否允许上传文件|否|是|主观题目时,1表示作答时允许上传文件,0表示作答时不允许上传文件| |10|upload_image_flag|答题时是否允许上传图片|否|是|主观题目时,1表示作答时允许上传图片,0表示作答时不允许上传图片| |11|time|运行时间|是|是|单位s,程序填空、函数、编程题时,必须提供,其他类型不用提供| |12|memory|内存要求|是|是|单位M, 程序填空、函数、编程题时,必须提供,其他类型不用提供| |13|language|编程语言|是|是|程序填空、函数题时,必须提供编程语言关键字,其他类型不用提供。[关键字参考](https://help.maxuetang.cn/project-9/doc-112/ "关键字参考")| | 14 | sign | 签名 | 是|否 | SHA256签名,具体签名示例请移步http://help.maxuetang.cn/project-14/doc-60/ | |15|in|输入要求说明|是|否|程序填空题、函数题、程序题时,必须提供,其他类型不用提供| |16|in_mk|输入要求说明markdown|否|否|程序填空题、函数题、程序题时,可选(推荐上传)| |17|out|输出要求说明|是|否|程序填空题、函数题、程序题时,必须提供,其他类型不用提供| |18|out_mk|输出要求说明markdown|否|否|程序填空题、函数题、程序题时,可选(推荐上传)| |19|sample_in_out|输入输出样例|是|否|json数据格式,如[["样例输入1","样例输出\"],["样例输入2","样例输出2"]]| |20|tip|提示信息|否|否|程序填空题、函数题、程序题时有效| |21|tip_mk|提示信息markdown|否|否|程序填空题、函数题、程序题时有效| |22|src|题目来源|否|否|程序填空题、函数题、程序题时有效| |23|test_data_in_out|测试数据集|是|否|程序填空题、函数题、程序题时必须提供,大小不超过1M,如果测试数据集较大时请使用“批量上传测试数据集”接口上传,格式:[["输入","输出",分数,"说明"],["输入","输出",分数,"说明"]],如:[["3 4","7",10.0,"data1"],["10 20","30",10.0,"data2"]]| |24|desc|题面描述|是|否|可以为html格式| |25|markdown|题面描述markdown|否|否|题面描述markdown格式,建议提供 |26|source|题目资源/选项|是|否|当题目类型为判断、单选、多选、程序填空、函数题时必须传入([参考](https://help.maxuetang.cn/project-9/doc-111/ "参考")),当为主观题时(评分标准及答案)可选,其他类型时无效| |27|source_mk|评分标准与答案的markdown|否|否|主观题目时,评分标准与答案的markdown| |28|score_json|分数分布/得分点|是|否|主观题目时必须上传,其他题型不用上传| |29|explanation|题解|否|否|讲解、解析| ## 7.2.2 请求地址及方式 请求地址:`https://mp.api.maxuetang.cn/problem-insert` 请求方式:`POST` ## 7.2.3 返回JSON示例与参数说明 ```json { "success": true, "msg": "保存成功", "data": { "pid": "9220", //题目编号 "ptype": "7", //题目类型 "source": "{\"0\":1,\"1\":0}", //题目资源/选项 "uid": "54****************7", //教师ID "score": "2", //分数 "email": "xxxx@qq.com" } } ``` ## 7.2.4 增加题目接入示例 ```java //hutool-all-4.6.7.jar //新增一个题目 public static void addProblem() { String url = "https://mp.api.maxuetang.cn/problem-insert"; Map params = new TreeMap(); params.put("merchant_id", "0"); params.put("email", "xxxx@qq.com");//机构下的码学堂教师账号 params.put("timestamp", System.currentTimeMillis()); params.put("ptype", 7);//题目类型,必须 params.put("kp_ids", "2502,2503");//知识点ID,对应“节”,多个知识点用英文","分割,必须 params.put("difficulty", 1);//题目难度,{1,2,3,4,5},可选 params.put("score", 2.0);//题目分数,必须 params.put("tags", "C语言,Java");//标签,可选 params.put("upload_file_flag", 1);//主观题目时,1表示作答时允许上传文件,0表示作答时不允许上传文件,可选 params.put("upload_image_flag", 1);//主观题目时,1表示作答时允许上传图片,0表示作答时不允许上传图片,可选 params.put("time", 1);//时间要求,单位s,程序填空、函数、编程题时,必须 params.put("memory", 32);//内存要求,单位M, 程序填空、函数、编程题时,必须 params.put("sign", SignHelper.sign(params, "商户密钥"));//签名 //以下内容不参与签名 params.put("in", "输入要求说明html");//输入要求说明,程序填空题、函数题、程序题时,必须 params.put("in_mk", "输入要求说明markdown");//输入要求说明,程序填空题、函数题、程序题时,可选(推荐上传) params.put("out", "输出要求说明");//输出要求说明,程序填空题、函数题、程序题时,必须 params.put("out_mk", "输出要求说明markdown");//输入要求说明,程序填空题、函数题、程序题时,可选(推荐上传) params.put("sample_in_out", "[[\"样例输入1\",\"样例输出1\"],[\"样例输入2\",\"样例输出2\"]]");//附加的多个程序样例输入与输出,程序填空题、函数题、程序题时,可选 params.put("tip", "提示html");//提示,程序填空题、函数题、程序题时,可选 params.put("tip_mk", "提示markdown");//提示markdown,程序填空题、函数题、程序题时,可选 params.put("src", "题目来源");//题目来源,程序填空题、函数题、程序题时,可选 params.put("test_data_in_out", "[[\"3 4\",\"7\",10.0,\"data1\"],[\"10 20\",\"30\",10.0,\"data2\"]]");//测试输入输出,程序填空题、函数题、程序题时,必须 params.put("desc", "这里是题面描述html-1");//题面描述,可以为html格式,必须 params.put("markdown", "这里是题面描述markdown");//题面描述,markdown格式,可选,不传入时,不能在码学堂中修改题目 params.put("source", "{\"0\":1,\"1\":0}");//题目资源/选项,当题目类型为判断、单选、多选、程序填空、函数题时必须传入,当为主观题时(评分标准及答案)可选,其他类型时无效 params.put("source_mk", "$x_y$");//主观题目时,评分标准与答案的markdown,可选 params.put("score_json", "{\"0\":\"10\",\"1\":\"10\"}");//主观题目时必须上传 String result = HttpUtil.post(url, params); System.out.println("执行结果:"+result); } ``` # 7.3 修改题目 ## 7.3.1 请求参数说明 | 序号 | 参数 | 名称 | 是否必须提供|是否加入签名 |描述 | | :----: | :----: | :----: | :----: |:---- |:---- | | 01 | merchant_id | 商户号 | 是 | 是 | 直接写“0” | | 02 | email | 教师账号|是|是|教师码学堂账号 | | 03|timestamp|时间戳 | 否 | 是|建议提供| |04|ptype|题目类型|是|是|{1,2,3,4,5,6,7,8},分别对应判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题| |05|pid|题目ID|是|是|码学堂题目编号| |06|kp_ids|知识点IDs|是|是|对应“节”,多个知识点用英文","连接| |07|difficulty|题目难度|否|是|{1,2,3,4,5}| |08|score|题目分数|否|是|保留2位小数| |09|tags|题目标签|否|是|| |10|upload_file_flag|答题时是否允许上传文件|否|是|主观题目时,1表示作答时允许上传文件,0表示作答时不允许上传文件| |11|upload_image_flag|答题时是否允许上传图片|否|是|主观题目时,1表示作答时允许上传图片,0表示作答时不允许上传图片| |12|time|运行时间|否|是|单位s,程序填空、函数、编程题时,必须提供,其他类型不用提供| |13|memory|内存要求|否|是|位M, 程序填空、函数、编程题时,必须提供,其他类型不用提供| |14|language|编程语言|是|是|程序填空、函数题时,必须提供编程语言关键字,其他类型不用提供。[关键字参考](http://help.maxuetang.cn/project-14/doc-77/ "关键字参考")| | 15 | sign | 签名 | 是|否 | SHA256签名,具体签名示例请移步http://help.maxuetang.cn/project-14/doc-60/ | |16|in|输入要求说明|否|否|程序填空题、函数题、程序题时,必须提供,其他类型不用提供| |17|in_mk|输入要求说明markdown|否|否|程序填空题、函数题、程序题时,可选(推荐上传)| |18|out|输出要求说明|否|否|程序填空题、函数题、程序题时,必须提供,其他类型不用提供| |19|out_mk|输出要求说明markdown|否|否|程序填空题、函数题、程序题时,可选(推荐上传)| |20|sample_in_out|输入输出样例|否|否|json数据格式,如[["样例输入1","样例输出\"],["样例输入2","样例输出2"]]| |21|tip|提示信息|否|否|程序填空题、函数题、程序题时有效| |22|tip_mk|提示信息markdown|否|否|程序填空题、函数题、程序题时有效| |23|src|题目来源|否|否|程序填空题、函数题、程序题时有效| |24|desc|题面描述|否|否|可以为html格式| |25|markdown|题面描述markdown|否|否|题面描述markdown格式,建议提供 |26|source|题目资源/选项|否|否|当题目类型为判断、单选、多选、程序填空、函数题时必须传入,当为主观题时(评分标准及答案)可选([参考](http://help.maxuetang.cn/project-14/doc-76/ "参考")),其他类型时无效| |27|source_mk|评分标准与答案的markdown|否|否|主观题目时,评分标准与答案的markdown| |28|score_json|分数分布/得分点|否|否|主观题目时必须上传,其他题型不用上传| |29|explanation|题解|否|否|讲解、解析| ## 7.3.2 请求地址及方式 请求地址:`https://mp.api.maxuetang.cn/problem-update` 请求方式:`POST` ## 7.3.3 返回JSON示例与参数说明 ```json { "success": true, "msg": "保存成功", "data": { "pid": "9220", //题目编号 "ptype": "7", //题目类型 "source": "{\"0\":1,\"1\":0}", //题目资源/选项 "uid": "54****************7", //教师ID "score": "2", //分数 "email": "xxxx@qq.com" } } ``` ## 7.3.4 增加题目接入示例 ```java //hutool-all-4.6.7.jar public static void updateProblem() { String url = "https://mp.api.maxuetang.cn/problem-update"; Map params = new TreeMap(); params.put("merchant_id", "商户ID"); params.put("email", "xxxx@qq.com");//机构下的码学堂教师账号 params.put("timestamp", System.currentTimeMillis()); params.put("ptype", 7);//题目类型,必须 params.put("pid", 9219);//题目ID,必须 params.put("kp_ids", "2502,2503");//知识点ID,对应“节”,多个知识点用英文","分割,可选 params.put("difficulty", 1);//题目难度,{1,2,3,4,5},可选 params.put("score", 2.0);//题目分数,可选 params.put("tags", "C语言,Java");//标签,可选 params.put("time", 1);//时间要求,单位s,程序填空、函数、编程题时,可选 params.put("memory", 32);//内存要求,单位M, 程序填空、函数、编程题时,可选 params.put("sign", SignHelper.sign(params, "商户密钥"));//签名 //以下内容不参与签名 params.put("in", "输入要求说明html");//输入要求说明,程序填空题、函数题、程序题时,可选 params.put("in_mk", "输入要求说明markdown");//输入要求说明,程序填空题、函数题、程序题时,可选(推荐上传) params.put("out", "输出要求说明");//输出要求说明,程序填空题、函数题、程序题时,可选 params.put("out_mk", "输出要求说明markdown");//输入要求说明,程序填空题、函数题、程序题时,可选(推荐上传) params.put("sample_in_out", "[[\"样例输入21\",\"样例输出21\"],[\"样例输入23\",\"样例输出23\"]]");//附加的多个程序样例输入与输出,程序填空题、函数题、程序题时,可选 params.put("tip", "提示html");//提示,程序填空题、函数题、程序题时,可选 params.put("tip_mk", "提示markdown");//提示markdown,程序填空题、函数题、程序题时,可选 params.put("src", "题目来源");//题目来源,程序填空题、函数题、程序题时,可选 params.put("desc", "这里是修改后的题面描述html");//题面描述,可以为html格式,必须 params.put("markdown", "这里是修改后的题面描述markdown");//题面描述,markdown格式,可选,不传入时,不能在码学堂中修改题目 params.put("source", "{\"0\":0,\"1\":1}");//题目资源/选项,当题目类型为判断、单选、多选、程序填空、函数题时传入,其他类型时无效 params.put("score_json", "{\"0\":\"10\",\"1\":\"10\"}");//主观题目时上传 String result = HttpUtil.post(url, params); System.out.println("执行结果:"+result); } ``` # 7.4 删除题目 ## 7.4.1 请求参数说明 | 序号 | 参数 | 名称 | 是否必须提供|是否加入签名 |描述 | | :----: | :----: | :----: | :----: |:---- |:---- | | 01 | merchant_id | 商户号 | 是 | 是 | | | 02 | email | 教师账号|是|是|机构下的教师码学堂账号 | | 03|timestamp|时间戳 | 否 | 是|建议提供| |04|ptype|题目类型|是|是|{1,2,3,4,5,6,7,8},分别对应判断题、单选题、多选题、填空题、程序填空题、函数题、编程题及主观题| |05|pid|题目ID|是|是|码学堂题目编号| | 06| sign | 签名 | 是|否 | SHA256签名,具体签名示例请移步http://help.maxuetang.cn/project-14/doc-60/ | ## 7.4.2 请求地址及方式 请求地址:`https://mp.api.maxuetang.cn/problem-delete` 请求方式:`POST` ## 7.4.3 返回JSON示例与参数说明 ```json { "success": true, "msg": "保存成功" } ``` ## 7.4.4 增加题目接入示例 ```java //hutool-all-4.6.7.jar //删除题目 public static void deleteProblem() { String url = "https://mp.api.maxuetang.cn/problem-delete"; Map params = new TreeMap(); params.put("merchant_id", "商户ID"); params.put("email", "xxxx@qq.com");//机构下的码学堂教师账号 params.put("timestamp", System.currentTimeMillis()); params.put("ptype", 7);//题目类型,必须 params.put("pid", 9219);//题目ID,必须 params.put("sign", SignHelper.sign(params, "商户密钥"));//签名 String result = HttpUtil.post(url, params); System.out.println("执行结果:"+result); } ```
码学堂管理员
2026年9月5日 18:44
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码