java随机组卷和手动组卷功能实现

java随机组卷和手动组卷功能实现

//组卷
    @PostMapping("/paper/ins")
    public void insert(HttpServletResponse response, @RequestBody OrderPaperVo orderPaper)throws IOException{

        int length, sing, many, judg, answ;
        if(StringUtils.isNotEmpty(orderPaper.getSjTypearray())) orderPaper.setType(orderPaper.getSjTypearray()[0]);
        if(StringUtils.isNotEmpty(orderPaper.getSjLevelarray())) orderPaper.setLevel(orderPaper.getSjLevelarray()[0]);
        if(StringUtils.isNotEmpty(orderPaper.getDelFlagarray())) orderPaper.setDelFlag(orderPaper.getDelFlagarray()[0]);

        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = dateFormat.format(date);
        orderPaper.setCreateTime(format);

        //2 随机出题 1 手动出题
        if ("2".equals(orderPaper.getDelFlag())) {
            //1 单选 2 判断 3 多选 4 简答
            //试题总个数 length
            length = (sing = Integer.parseInt(orderPaper.getSingle())) + (many = Integer.parseInt(orderPaper.getMany())) + (judg = Integer.parseInt(orderPaper.getJudgment())) + (answ = Integer.parseInt(orderPaper.getAnsw()));
            String[] array = new String[length];

            //查出所有单选题
            String[] sinIds = orderQuestionService.selectIdsByType(1);
            //查出所有判断题
            String[] judgIds = orderQuestionService.selectIdsByType(2);
            //查出所有多选题
            String[] manyIds = orderQuestionService.selectIdsByType(3);
            //查出所有简答题
            String[] answIds = orderQuestionService.selectIdsByType(4);

            for (int i = 0; i < length; i++) {
                Random random = new Random();
                int i1 = random.nextInt(sinIds.length);
                int i2 = random.nextInt(judgIds.length);
                int i3 = random.nextInt(manyIds.length);
                int i4 = random.nextInt(answIds.length);
                if (i < sing) array[i] = sinIds[i1];
                if (i >= sing && i < sing + many) array[i] = manyIds[i3];
                if (i >= sing + many && i < sing + many + judg) array[i] = judgIds[i2];
                if (i >= sing + many + judg && i < sing + many + judg + answ) array[i] = answIds[i4];
            }
            orderPaper.setQuestionIds(array);
        }
        if ("1".equals(orderPaper.getDelFlag())) {
            //把数组整合到一起
            String[] signarr = StringUtils.isNotEmpty(orderPaper.getSingleList()) ? orderPaper.getSingleList().split(",") : new String[0];//单选
            String[] manyarr = StringUtils.isNotEmpty(orderPaper.getManyList()) ? orderPaper.getManyList().split(",") : new String[0];//多选
            String[] judgarr = StringUtils.isNotEmpty(orderPaper.getJudgmentList()) ? orderPaper.getJudgmentList().split(",") : new String[0];//判断
            String[] answarr = StringUtils.isNotEmpty(orderPaper.getAnswList()) ? orderPaper.getAnswList().split(",") : new String[0];//简答
            length = (sing = signarr.length) + (many = manyarr.length) + (judg = judgarr.length) + (answ = answarr.length);
            String[] array = new String[length];//开辟空数组空间,保存id
            System.arraycopy(signarr,0,array,0,sing);
            System.arraycopy(manyarr,0,array,sing,many);
            System.arraycopy(judgarr,0,array,many + sing,judg);
            System.arraycopy(answarr,0,array,many + sing + judg,answ);
            orderPaper.setQuestionIds(array);
        }

        Date date1 = new Date();
        SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format1 = dateFormat1.format(date1);
        orderPaper.setCreateTime(format1);
        int i = orderPaperService.insertPaperTest(orderPaper);

        //添加试卷试题关联
        String[] questionIds = orderPaper.getQuestionIds();
        for (int i1 = 0; i1 < questionIds.length; i1++) {
            OrderPaperQuestion orderPaperQuestion = new OrderPaperQuestion();
            orderPaperQuestion.setPaperId(orderPaper.getId());
            orderPaperQuestion.setQuestionId(Integer.parseInt(questionIds[i1]));
            orderPaperQuestionService.insertOrderPaperQuestion(orderPaperQuestion);
        }

        if (i > 0) {
            writeJSON(null,response,"200","添加成功");

        }else
        writeJSON(null,response,"201","添加失败");
    }

实体类:

@Data
public class OrderPaperVo extends OrderPaper {

    //单选
    private String singleList;
    //多选
    private String manyList;
    //判断
    private String judgmentList;
    //简答
    private String answList;

}
@Data
public class OrderPaper implements Serializable {
private static final long serialVersionUID=1L;


	//
	private Integer id;


	//试卷类型(1、理论 2 实训 3 综合)
	private String type;
	private String[] sjTypearray;


	//试卷难易程度(1、人工评分 2 系统评分)
	private String level;
	private String[] sjLevelarray;


	//总分
	private String score;


	//及格分数
	private String passscore;


	//考试需知
	private String remark;


	//创建时间
	private String createTime;


	//创建人
	private String createuser;


	//试卷简介
	private String introduction;


	//考试时间
	private String doingtime;


	//1 随机出题 2手动出题
	private String delFlag;
	private String[] delFlagarray;


	//是否可重新考试 0 不可以 1 可以
	private String rtype;


	//开始ip
	private String startIp;
	//结束ip
	private String endIp;


	//单选题个数
	private String single;


	//单选分数
	private String singleScore;


	//多选个数
	private String many;


	//多选分数
	private String manyScore;


	//判断个数
	private String judgment;


	//判断分数
	private String judgmentScore;


	//简答个数
	private String answ;


	//简答分数
	private String answSore;


	//考试开始时间
	private Date startTime;


	//考试结束时间
	private Date endTime;

	//班级id
	private Integer classId;

	private String[] questionIds;

	//
	private String majorName;

	private String catalogName;

	private String systemName;




	///返回试题
	private List<Questions> singlList;
	private List<Questions> manList;
	private List<Questions> judgeList;
	private List<Questions> ansList;

arraycopy用法:
参数:

src:要复制的数组(源数组)

srcPos:复制源数组的起始位置

dest:目标数组

destPos:目标数组的下标位置

length:要复制的长度
String[] arr = {"A","B","C","D","E","F"};
System.arraycopy(arr ,3,arr,2,2);

从下标为3的位置开始复制,复制的长度为2(复制D、E),从下标为2的位置开始替换为D、E
复制后的数组为:

String[] arr = {"A","B","D","E","E","F"};
  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值