项目实训第四周第一篇


上课历史前端与后端交互


1.前端获取上课历史记录并加载

代码如下:

        //从后端数据库获得所有上课历史信息,保存到list
    private ArrayList<Class_historyItem> getData(int page) {
        String res = HttpClient.findHistorysByC_id(c_id);
        JSONArray jsonArray = JSONArray.parseArray(res);
        ArrayList<Class_historyItem> interList = new ArrayList<>();
        for (int i=0; i < jsonArray.size(); i++)    {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Date chDate = jsonObject.getDate("chDate");
            int chId = jsonObject.getInteger("chId");
            String remarks = jsonObject.getString("remarks");
            interList.add(new Class_historyItem(chDate,chId,remarks));
        }
        return interList;
    }
    //获取上课历史并加载一页到前端UI
        listContainer = (ListContainer)
                getFractionAbility().findComponentById(ResourceTable.Id_list_class_history);
        new Thread(() -> {
            list = getData(page);
            class_historyItemProvider = new Class_historyItemProvider(getPageData(page), getFractionAbility());
            getFractionAbility().getUITaskDispatcher().asyncDispatch(() -> {//获取UI 主线
                listContainer.setItemProvider(class_historyItemProvider);
            });
        }).start();
    public static String findQuestionsBycid(String c_id){
        String url = "http://t40g792468.qicp.vip/question/findQuestionsBycid?c_id="+c_id;
        return doGet(url);
    }

2.前端获取指定上课记录的答题情况并加载

代码如下:

    //从后端数据库获取指定上课记录的发送题目列表 用class_history_id在数据库查询
    //题目基本信息 题型 题干 分值
    //答题情况 回答人数 正确人数 正确率
    private ArrayList<Answer_resultItem> get_history_question(String class_history_id) {
        String res = HttpClient.findAnswersBychid(class_history_id);
        JSONArray jsonArray = JSONArray.parseArray(res);
        ArrayList<Answer_resultItem> interList = new ArrayList<>();
        for (int i=0; i < jsonArray.size(); i++)    {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String stem = jsonObject.getString("stem");
            float score = jsonObject.getFloat("score");
            int answerSum = jsonObject.getInteger("answerSum");
            int correctSum = jsonObject.getInteger("correctSum");
            interList.add(new Answer_resultItem("单选题",stem,String.valueOf(score),String.valueOf(answerSum),String.valueOf(correctSum),String.format("%.2f",(float)correctSum/(float)answerSum)));
        }
        return interList;
    }
new Thread(() -> {
            ArrayList<Answer_resultItem> answer_resultList = get_history_question(class_history_id);
            getFractionAbility().getUITaskDispatcher().asyncDispatch(() -> {//获取UI 主线
                StemItemProvider stemItemProvider = new StemItemProvider(answer_resultList,getFractionAbility());
                stemItemProvider.setHistory_question_frame(answer_result_frame);
                ArrayList<Text> text_list = new ArrayList<>();
                text_list.add((Text)
                        getFractionAbility().findComponentById(ResourceTable.Id_r1) );
                text_list.add((Text)
                        getFractionAbility().findComponentById(ResourceTable.Id_r2) );
                text_list.add((Text)
                        getFractionAbility().findComponentById(ResourceTable.Id_r3) );
                text_list.add((Text)
                        getFractionAbility().findComponentById(ResourceTable.Id_r4) );
                text_list.add((Text)
                        getFractionAbility().findComponentById(ResourceTable.Id_r5) );
                stemItemProvider.setText_list(text_list);
                ListContainer history_question_listContainer = (ListContainer)
                        getFractionAbility().findComponentById(ResourceTable.Id_list_history_question);
                history_question_listContainer.setItemProvider(stemItemProvider);
                history_question_frame.setVisibility(0);
            });
        }).start();
    public static String findOptionsByoqid(String o_q_id){
        String url = "http://t40g792468.qicp.vip/question/findOptionsByoqid?o_q_id="+o_q_id;
        return doGet(url);
    }

3.后端实现

DAO层:

	@Query(nativeQuery = true,value = "SELECT  distinct t_question.q_id,t_question.q_stem,t_question.q_score from t_question WHERE t_question.c_id=?1") //原生SQL方法
    public List<Object> findQuestionsBycid(int c_id);
    @Query(nativeQuery = true,value = "SELECT  distinct t_option.o_num,t_option.o_content,t_option.o_answer,t_option.o_id from t_option WHERE t_option.o_q_id = ?1") //原生SQL方法
    public List<Object> findOptionsByoqid(int o_q_id);

Controller层:

    @RequestMapping("/findQuestionsBycid")
    @ResponseBody
    public Object findQuestionsBycid(int c_id){
    	List<QuestionData> datas = new ArrayList<>();
		List<Object> result = questionDao.findQuestionsBycid(c_id);
		for (Object o : result) {
			Object[] rowArray = (Object[]) o;
			QuestionData d = new QuestionData((BigInteger)rowArray[0],(String) rowArray[1],(float)rowArray[2]);
			datas.add(d);
		}
		return datas;
    }
    @RequestMapping("/findOptionsByoqid")
    @ResponseBody
    public Object  findOptionsByoqid(int o_q_id){
    	List<OptionData> datas = new ArrayList<>();
		List<Object> result = questionDao.findOptionsByoqid( o_q_id );
		for (Object o : result) {
			Object[] rowArray = (Object[]) o;
			OptionData d = new OptionData((String)rowArray[0],(String) rowArray[1],(boolean)rowArray[2],(int)rowArray[3]);
			datas.add(d);
		}
		return datas;
    }

4.演示

请添加图片描述

请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值