试卷导入

试卷导入,word导入,这个需要用标签的形式来进行规定:

比如<试卷><名称>物理试卷</名称></试卷>

这样进行规定。

@Autowired
	private QuestionDao questionDao;
	
	@Autowired
    private MessageSource messageSource;
	
	/**
	 * 读取word
	 * @param path
	 * @return
	 */
	@Override
	public String wordRead(String path){
		File file = new File(path);
        try {
            FileInputStream fis = new FileInputStream(file);
            WordExtractor wordExtractor = new WordExtractor(fis);
            String text = wordExtractor.getText();   
            return text;
        } catch (IOException e) {
            e.printStackTrace();
        }
		return "";
	}
	
	/**
	 * 获取标签中的内容
	 * @param text
	 * @param tag
	 * @return
	 */
	@Override
	public String getTagContent(String text,String tag){
		String bt = "";
		int btIndex = text.indexOf("<"+tag+">");
		int btLastIndex = text.indexOf("</"+tag+">");
    	if(btIndex!=-1&&btLastIndex!=-1){
    		bt = text.substring(btIndex+("<"+tag+">").length(), btLastIndex);
    	}
		return bt;
	}
	
	/**
	 * 获取某一组的某一个单项,如单选题这个组别中有多个单选题(单项)
	 * @param text
	 * @param tag1 单项标签名,(例如:题)
	 * @param tag2 上面标签的名称或者其他什么(标签)
	 * @return
	 */
	@Override
	public void getSingleContent(String text,String tag1,String tag2,String questionType,Resource testPaper){
		for(int i = 1;i>=1;i++){
    		String tContent = getTagContent(text,tag1+i);
    		String tMc = getTagContent(tContent,tag2);
    		if(Strings.isNullOrEmpty(tContent)||Strings.isNullOrEmpty(tMc)) break;
    		if(i18n(XZT).equals(questionType)){
    			for(int j = 1;j>=1;j++){
        			String xxContent = getTagContent(tContent,i18n(XX));
        			String cContent = getTagContent(xxContent,i18n(CONTENT));
        			if(Strings.isNullOrEmpty(xxContent)||Strings.isNullOrEmpty(cContent)) break;
        			System.out.println(cContent);
        		}
    		}
    		//下面再做添加操作
    		System.out.println(tMc);
    		
    		Resource question = new Resource();
    		ResourceType resourceType = resourceTypeDao.findByCode(TypeCode.QUESTION);
    		question.setDescription(tMc);
    		question.setType(resourceType);
    		questionDao.save(question);
    		
    		String daMc = getTagContent(tContent,i18n(QuestionService.DA));
    		
    		this.saveExValue(question, "rightAnswer", daMc);
    		this.saveExValue(question, "questionType", questionType);
    		
    		List<Resource> questions = testPaper.getItems();
    		if(questions==null){
    			questions = Lists.newArrayList();
    			questions.add(question);
    			testPaper.setItems(questions);
    		}else{
    			testPaper.getItems().add(question);
    		}
    		resourceDao.update(testPaper);
    		
    	}
	}
	
	/**
	 * 设置资源中某个字段的value
	 * @param resource 资源
	 * @param fieldName 字段名称
	 * @param value 值
	 */
	protected void saveExValue(Resource resource, String fieldName, String value){
		ExField rAField = exFieldDao.findByNameAndType(fieldName, resource.getType().getId());
		ExValue rAValue = new ExValue();
		rAValue.setField(rAField);
		rAValue.setResource(resource);
		rAValue.setValue(value);
		exValueDao.save(rAValue);
	}
	
	@Override
	public List<Resource> listQuestionByTypeAndPaper(String questionType, long paperId) {
		return questionDao.listQuestionByTypeAndPaper(questionType, paperId);
	}
	
	protected String i18n(String message) {
        return messageSource.getMessage(message, null, null);
    }

	@Override
	public void importQuestions(String text) {
		//--------------------------------标题------------------------------------
    	String btContent = this.getTagContent(text,i18n(QuestionService.BT));
    	String btMc = this.getTagContent(btContent,i18n(QuestionService.MC));
    	System.out.println(btMc);
    	
    	
    	Resource testPaper = new Resource();
    	testPaper.setName(btMc);
    	ResourceType testPaperType = resourceTypeDao.findByCode(TypeCode.TEST_PAPER);
    	testPaper.setType(testPaperType);
    	questionDao.save(testPaper);
    	
    	//----------------------------------选择题---------------------------------------
    	String xztContent = this.getTagContent(text,i18n(QuestionService.XZT));
    	String xztMc = this.getTagContent(xztContent,i18n(QuestionService.MC));
    	
    	System.out.println(xztMc);
    	this.getSingleContent(xztContent,i18n(QuestionService.T),i18n(QuestionService.MC),i18n(QuestionService.XZT),testPaper);
    	
    	//----------------------------------判断题---------------------------------------
    	String pdtContent = this.getTagContent(text,i18n(QuestionService.PDT));
    	String pdtMc = this.getTagContent(pdtContent,i18n(QuestionService.MC));
    	System.out.println(pdtMc);
    	this.getSingleContent(pdtContent,i18n(QuestionService.T),i18n(QuestionService.MC),i18n(QuestionService.PDT),testPaper);
    	
    	//----------------------------------填空题---------------------------------------
    	String tktContent = this.getTagContent(text,i18n(QuestionService.TKT));
    	String tktMc = this.getTagContent(tktContent,i18n(QuestionService.MC));
    	System.out.println(tktMc);
    	this.getSingleContent(tktContent,i18n(QuestionService.T),i18n(QuestionService.MC),i18n(QuestionService.TKT),testPaper);
    	
    	//----------------------------------解答题---------------------------------------
    	String jdtContent = this.getTagContent(text,i18n(QuestionService.WDT));
    	String jdtMc = this.getTagContent(jdtContent,i18n(QuestionService.MC));
    	System.out.println(jdtMc);
    	this.getSingleContent(jdtContent,i18n(QuestionService.T),i18n(QuestionService.MC),i18n(QuestionService.WDT),testPaper);
		
	}

message.properties:

biaoti = \u6807\u9898
xuanzeti = \u9009\u62E9\u9898
panduanti = \u5224\u65AD\u9898
tiankongti = \u586B\u7A7A\u9898
wendati = \u95EE\u7B54\u9898
ti = \u9898
mingcheng = \u540D\u79F0
xuanxiang = \u9009\u9879
neirong = \u5185\u5BB9
xuanxiang = \u9009\u9879
neirong = \u5185\u5BB9
daan = \u7B54\u6848

试卷,word:

<标题>
	<名称>物理试卷</名称>
</标题>
<选择题>
<名称>一.选择题(60分)</名称>
<题1>
<名称>1.一场大雪过后,人们会感到外面万籁俱静.究其原因,你认为正确的是( )</名称>
	<选项1>
		<内容>A.可能是大雪后,行驶的车辆减少,噪声减小 </内容>
</选项1>
<选项2>
	<内容>B.可能是大雪蓬松且多孔,对噪声有吸收作用</内容>
</选项2>
<选项3>
	<内容>C.可能是大雪后,大地银装素裹,噪声被反射 </内容>
</选项3>
<选项4>
	<内容>D.可能是大雪后气温较低,噪声传播速度变慢 </内容>
</选项4>
</题1>

<题2>
<名称>2.助听器的工作原理是利用仪器( )</名称>
	<选项1>
		<内容>A.引起头骨、颌骨振动,传到听觉神经,引起听觉 </内容>
</选项1>
<选项2>
	<内容>B.引起鼓膜振动,经过听小骨及其他组织传给听觉神经,引起听觉</内容>
</选项2>
<选项3>
	<内容>C.产生超声波直接作用在听觉神经引起听觉</内容>
</选项3>
<选项4>
	<内容>D.产生声波直接作用在听觉神经引起听觉</内容>
</选项4>
</题2>

<题3>
<名称>3.如图1所示,老师用同样的力吹一根吸管,并将它的长度逐渐剪短,他在研究声音的( )</名称>
	<选项1>
		<内容>A.响度与吸管长短的关系</内容>
</选项1>
<选项2>
	<内容>B.音调与吸管材料的关系</内容>
</选项2>
<选项3>
	<内容>C.音调与吸管长短的关系</内容>
</选项3>
<选项4>
	<内容>D.音色与吸管材料的关系</内容>
</选项4>
</题3>

</选择题>

<判断题>
	<名称>二.判断题(10分)</名称>
	<题1>
	<名称>1.一物体受外力越大,加速度越大( )</名称>
</题1>
	<题2>
	<名称>2.物体所受的合外力越大,速度越大( )</名称>
</题2>
	<题3>
	<名称>3.物体的加速度大小不变一定守恒力作用( )</名称>
</题3>
	<题4>
	<名称>4.如果不考虑空气阻力的作用,不同轻重,不同形状当物体下落的快慢是相同的(  )</名称>
</题4>
<题5>
	<名称>5水平公路上行驶的汽车。当发动机熄火后,行驶速度越来越小,在这个过程中,汽车的机械能守恒(  )
</名称>
</题5>

</判断题>

<填空题>
	<名称>三.填空题(10分)</名称>
	<题1>
		<名称>1、声音在15℃空气中的传播速度是_______m/s;</名称>
</题1>
	<题2>
		<名称>2、超声波的频率高于_________Hz,次声波的频率低于______Hz。</名称>
</题2>
	<题3>
		<名称>3、光(电磁波)在真空中的传播速度是c= _______ m/s=_________km/s。</名称>
</题3>
	<题4>
		<名称>4、正常人的眼睛的远点在_________,近点在大约_________ 处,明视距离大约是_________处</名称>
</题4>
</填空题>
<问答题>
	<名称>四.问答题(60分)</名称>
	<题1>
		<名称>1.夏天游泳时,一上岸就感到凉快;当有风吹来时,更觉得冷。为什么?(96五)5分。</名称>
</题1>
	<题2>
		<名称>2.试分析蒸发和沸腾的相同处和不同点。(98.五 0.43)5分。</名称>
</题2>
	<题3>
		<名称>3.小明暑假在家休息时觉得十分炎热,请你用学过的物理知识想出二种消暑降温的好办法,并简要说明理由。</名称>
</题3>
	<题4>
		<名称>4.医生为病人检查牙齿时,常拿一个带把的金属小平面镜在酒精灯的火焰上烤一烤,然后再放入病人的口腔中,这样做的主要目的是什么?(4分)</名称>
</题4>
</问答题>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值