jsp综合应用之标准化考试



实验要求:

使用bean来管理试题文件,jsp页面调用bean实现网络标准化考试。

当考试者选择一套试题,并确定开始考试后,bean负责读入试题,并显示给考试者。当考试者在jsp页面提供的文本框输入全部的答案,单击提交键后,jsp页面再次调用bean来判断考试者的得分,而且考试者只有一次提交答案的机会,bean还负责将考试者的成绩保存到文件。

实验步骤:

1.创建bean的源文件test.java

package com.wxh;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.RandomAccessFile;
public class Test {
	String fileName="",
	correctAnswer="",
	testContent="",
	selection="";
	int score=0;
	int giveAnswerCount=0;
	String name="",number="";
	public String getFileName() {
		return fileName;
	}
	public void setFileName(String fileName) {
		this.fileName = fileName;
		selection="";
		score=0;
		giveAnswerCount=0;
	}
	
	public String getCorrectAnswer() {
		try{
			File f=new File("F:\2000",fileName);
			FileReader in=new FileReader(f);
			BufferedReader buffer=new BufferedReader(in);
			correctAnswer=(buffer.readLine()).trim();
			buffer.close();
			in.close();
		}catch(Exception e){}
		if(giveAnswerCount==1){
			return correctAnswer;
		}else{
			return "你只有一次提交答案的机会,不允许2次提交答案";
		}		
	}
	public void setCorrectAnswer(String correctAnswer) {
		this.correctAnswer = correctAnswer;
	}
	
	public String getTestContent() {
		StringBuffer temp=new StringBuffer();
		try{
			if(fileName.length()>0){
				File f=new File("F:\2000",fileName);
				FileReader in=new FileReader(f);
				BufferedReader buffer=new BufferedReader(in);
				String str=buffer.readLine();
				while((str=buffer.readLine())!=null){
					temp.append("\n"+str);
				}				
				buffer.close();
				in.close();			
			}
		}
		catch(Exception e){}		
		return new String(temp);
	}
	public void setTestContent(String testContent) {
		this.testContent = testContent;
	}
	public String getSelection() {
		return selection;
	}
	public void setSelection(String selection) {
		this.selection = selection;
	}
	public int getScore() {		
		score=0;
		if(giveAnswerCount==1){
			int length1=selection.length();
			int length2=selection.length();
			int min=(int)(Math.min(length1,length2));
			int i=0;
			while(i<min){
				if(selection.charAt(i)==correctAnswer.charAt(i))
					score++;
				i++;
			}
			WriteRecorder teacher=new WriteRecorder();
			teacher.write(name,number,score);
		}		
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	public int getGiveAnswerCount() {
		return giveAnswerCount;
	}
	public void setGiveAnswerCount(int giveAnswerCount) {
		this.giveAnswerCount = giveAnswerCount;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}	
}

class WriteRecorder
{
	RandomAccessFile random;
	File f=new File("成绩单.txt");
	WriteRecorder()
	{
		try{
			random=new RandomAccessFile(f,"rw");
		}catch(Exception ee){}
	}
	public void write(String name,String number,int score)
	{
		try{
			random.seek(random.length());
			String mess="Name:"+name+","+number+","+score;
			random.writeBytes(mess);
			random.close();			
		}catch(Exception ee){
			System.out.println(ee);
		}
	}
}

2.设计jsp页面


<span style="font-family: 宋体; white-space: pre;"><%@ page import="com.wxh.* "%></span><span style="font-family: 宋体; white-space: pre;">	</span>
<body>
<jsp:useBean id="test" class="com.wxh.Test" scope="session" />
<jsp:setProperty name="test" property="name" param="name" />
<jsp:setProperty name="test" property="number" param="number" />
<jsp:setProperty name="test" property="fileName" param="fileName"/>
<form action="" method="post" name=form1>
	输入姓名:<input type="text" name="name" size=10>
	输入学号:<input type="text" name="fileName" size=10>
	请选择试题:<select name="fileName" value="A.txt">
				<option value=A.txt>A.txt</option>
				<option value=B.txt>B.txt</option>
				<option value=C.txt>C.txt</option>
				</select>
	<input type="submit" name="sub" value="确定">
</form>
<TextArea Rows="8" Cols="66">
<jsp:getProperty name="test" property="testContent" />
</TextArea>
<jsp:setProperty name="test" property="giveAnswerCount" param="giveAnswerCount"/>
<form action="" method="post" name=form2>
	在文本框输入全部题目的答案,答案之间不允许有空格:<br/>
	<input type="text" name="selection" size=70>
	<input type="hidden" name="giveAnswerCount"
	value="<%=test.getGiveAnswerCount()+1%>"><br>	
	<input type="submit" value="提交">
</form>
<jsp:setProperty name="test" property="selection"/>
试题的正确答案:<jsp:getProperty name="test" property="correctAnswer" />
<br>您提交的答案:<jsp:getProperty name="test" property="selection"/>
<br>您的分数:<jsp:getProperty name="test" property="score" />
</body>

注意事项:

1、在jsp页面注意javabean包的导入。

2、对文件的读取,在相关的文件路径下创建相应的文件。(根据上面的代码可以在自己电脑的F盘里创建一个2000文件夹,再在里面分别新建A.TXT、B.TXT、C.TXT)

思考:

1、如何添加相应的考试文档,使这个系统真正运行。

2、代码改进,添加注释。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值