用applet实现在线考试系统

来源:互联网 发布:吉利奥蒂数据 编辑:程序博客网 时间:2024/05/16 07:23

这个学期学校的实验是做一个教学网站,在做这个东西时,我们尝试了使用java applet来实现一个在线考试系统.原因在于虽然用户下载APPLET时速度比较慢,但一旦完成时,在做题期间就有了很大的自由度,在客户端的表现立也更强. 服务器端我们采用的是java servlet,每次applet向servlet请求时,servlet从数据库中按类别随机选出若干题目和答案封装成对象再发向APPLET,applet接收并显示给用户.

applet端请求接收题目代码:
 private ArrayList Setquestions(){
  ArrayList temp=new ArrayList();
  try{
   //获取网址
      URL url = new URL(getCodeBase(), "/DBeducation/TestServlet");
      URLConnection con = url.openConnection();
      con.setUseCaches(false);
      InputStream in = con.getInputStream();
      ObjectInputStream objStream;
      objStream = new ObjectInputStream(in);
      temp=(ArrayList)objStream.readObject();
      objlength=temp.size();

      System.out.println("ok");
  }catch(Exception e){
   
  }return  temp;
 }

servlet端选择题目发送代码:
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
 Connection con; 
 PreparedStatement stm;
 ResultSet rs;
 //PrintWriter out;
 String sql;
 int id[]=new int[200];//用于存放类型ID号的数组
 int temp=0;
 ArrayList all=new ArrayList();
    response.setContentType("text/html;charset=gb2312");
  //  out = response.getWriter();
 try{
  con=new ContactSql().getcon();
  sql="select id from testlibkind";
  stm=con.prepareStatement(sql);
  rs=stm.executeQuery();//获得测试题所有的类型ID号
  while(rs.next()){
   id[temp]=rs.getInt(1);//获得ID号
   temp++;
  }
  
  for(int i=0;i<id.length;i++){
   sql="select question,answer,a,b,c,d from testlib where kid=? order by rand() limit 3";//随机获得每个类型习题的题目和答案3道
   stm=con.prepareStatement(sql);
   stm.setString(1,""+id[i]);
   rs=stm.executeQuery();
   while(rs.next()){
    ArrayList v=new ArrayList();
    v.add(rs.getString("question"));//获得问题
    v.add(rs.getString("answer"));//获得答案
    v.add(rs.getString("a"));
    v.add(rs.getString("b"));
    v.add(rs.getString("c"));
    v.add(rs.getString("d"));
    all.add(v);
   }
   
  }
  
     OutputStream out1;//发送arraylist对象到applet
     ObjectOutputStream objStream;
     out1 = response.getOutputStream();
     objStream = new ObjectOutputStream(out1);
     objStream.writeObject(all);
     rs.close();
     stm.close();
     con.close();
    
     return;

  
 }catch(Exception e){
  //out.println(e.getMessage());
  System.out.println(e);
 }
 
 }

原创粉丝点击