慕课作业互评(使用脚本自动互评)

MoocHomeworkCheck100

慕课作业互评一键一百分

使用方法

  1. 使用Chrome或者firefox等浏览器打开作业批改页面
  2. 按F12(打开开发者模式),选择Console选项卡
  3. 粘贴代码,回车可以看到页面右侧出现如图悬浮框
  4. 在大输入框中输入评价内容,在小输入框中输入要批量评价的 份数
  5. 点击"Fuck It Now",即可自动完成(大概5秒),

js代码

如果js代码复制有问题时(可能会弹出窗口,但不能运行),去这里复制代码: 链接

let suckIt = `<div style="position: fixed;top: 50%;z-index: 999;right: 10%;padding: 1em;background: rgba(233,233,233,.6);border: 1px solid #aaa;">
<textarea placeholder="评价内容" id="fuckMe" style="padding: 10px;height: 60px;width: 200px;margin: 10px;">Good Job Bro.</textarea>
<p style="text-align: center;">
<input type="text"  id="times" placeholder="份数,1 ~ 20" style="width: 100px;padding: .4em;margin: 0 1em;background: #fff;border: 1px solid #999;float: left;" value="1">
<input type="submit" value="Fuck It Now" οnclick="fuckIt();" style="border: 1px solid #aaa;padding: 5px;color: #999;cursor: pointer;">
</p>
</div>`;
document.body.insertAdjacentHTML("afterbegin", suckIt);

function fuckIt() {
    let judge = document.getElementById('fuckMe').value || 'Good Job';
    let times = document.getElementById('times').value || '1';
    if (times > 0 && times < 21) {
        let fuck = setInterval(() => {
            document.querySelectorAll('.s').forEach(e => {
                e.children[e.children.length - 1].children[0].checked = true
            });
            document.querySelectorAll('.j-textarea').forEach(e => {
                e.value = judge
            });
            document.querySelector('.j-submitbtn').click();
            times--;
            setTimeout(() => {
                if (times !== 0) {
                    console.log(`还剩${times}份`);
                    document.getElementsByClassName('j-gotonext')[0].click();
                } else {
                    console.log(`已完成`);
                    document.getElementsByClassName('j-backbtn')[0].click();
                    window.clearInterval(fuck);
                    return false;
                }
            }, 666);
        }, 2333);
    } else {
        alert("次数错误,范围1 ~ 20");
        return false;
    }
}

之后出现悬浮框

注意

[1] 保险起见谨慎使用一次批改多份功能
[2] 如果出现bug请刷新页面。如果多次出现bug请提交issue并注明你正在使用的浏览器版本和系统版本
[3] * 本文来源 -->https://github.com/iMyOwn/MoocChecker*

### 基于 Spring Boot 开发师生作业互评系统 #### 项目初始化 为了创建一个基于 Spring Boot 的师生作业互评系统,首先需要设置好开发环境并初始化一个新的 Spring Boot 项目。可以通过 Spring Initializr 来快速启动这个过程。 ```bash curl https://start.spring.io/starter.zip \ -d dependencies=web,jpa,h2,thymeleaf \ -o spring-boot-student-evaluation-system.zip unzip spring-boot-student-evaluation-system.zip && cd student-evaluation-system ``` 这段命令将会下载并解压一个包含了 Web 支持、JPA(Java Persistence API)、H2 数据库以及 Thymeleaf 模板引擎支持的基础 Spring Boot 应用程序框架[^1]。 #### 实体类定义 接下来定义两个主要实体类 `Student` 和 `Assignment`,用于表示学生和他们的作业提交情况: ```java @Entity public class Student { @Id private Long id; private String name; // Getters and Setters... } @Entity public class Assignment { @Id private Long id; private String title; private String content; private Integer score; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="student_id", nullable=false) private Student student; // Getters and Setters... } ``` 这里使用了 JPA 注解来映射数据库中的表格结构到 Java 对象上,并建立了多对一的关系以便追踪每份作业属于哪位同学。 #### 控制器实现 控制器负责处理 HTTP 请求并将数据传递给视图层展示出来。下面是一个简单的例子展示了如何接收来自前端页面的学生评分请求: ```java @RestController @RequestMapping("/assignments") public class AssignmentController { @Autowired private AssignmentRepository assignmentRepo; @PostMapping("/{id}/evaluate") public ResponseEntity<?> evaluate(@PathVariable Long id, @RequestParam int score){ Optional<Assignment> optAssignemnt = assignmentRepo.findById(id); if (!optAssignemnt.isPresent()) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } Assignment assignment = optAssignemnt.get(); assignment.setScore(score); assignmentRepo.save(assignment); return new ResponseEntity<>(assignment, HttpStatus.OK); } } ``` 此段代码实现了对学生所交作业打分的功能,在接收到 POST 请求后更新对应的记录分数字段。 #### 测试驱动开发 (TDD) 采用 TDD 方法论有助于提高代码质量与可靠性。对于上述 RESTful 接口来说,可以在编写业务逻辑前先构思几个单元测试案例确保接口按预期工作: ```java @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class AssignmentControllerTest { @LocalServerPort private int port; TestRestTemplate restTemplate = new TestRestTemplate(); HttpHeaders headers = new HttpHeaders(); @Test void contextLoads() {} @Test void shouldEvaluateAnExistingAssignmentSuccessfully(){ HttpEntity<String> entity = new HttpEntity<>("Parameters", headers); ResponseEntity<String> response = this.restTemplate.exchange( createURLWithPort("/assignments/1/evaluate?score=85"), HttpMethod.POST, entity, String.class); assertEquals(HttpStatus.OK, response.getStatusCode()); } private String createURLWithPort(String uri) { return "http://localhost:" + port + uri; } } ``` 以上示例中,通过发送模拟的 HTTP 请求验证 `/assignments/{id}/evaluate` 路径下的 POST 方法能否正常运作。如果一切顺利,则意味着服务器端能够正确响应客户端发出的操作指令[^2]。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值