English 中文(简体)
JSP 数据库检索基茨应用程序
原标题:JSP Quiz application with database access

I m working on a java quiz application. The application will consist of 20 questions of one of the following forms:

english字的用词是什么?

What is the german word of the english word xxxx?

I have created a database with a word table and a page to add words to that table. the table consists of the following columns: germanWord, gender, englishWord

我的问题是,在每一个问题上,我要随意从该数据库中抽出一字,以形成问题,例如:

What is the german word of the english word wordTable.getEnglishName?

最后,问题是一个多重选择问题,因此,在4个可能的答复中,我可以插入一个指令,从为问题选择的同一条目中得出相关答案吗?

<input type="radio" name="q1Answer" value="A"/><label for="A">A) fixed answer</label><br/>
<input type="radio" name="q1Answer" value="B"/><label for="B">B) fixed answer</label><br/>
<input type="radio" name="q1Answer" value="C"/><label for="C">C) *get name from the database*</label><br/>
<input type="radio" name="q1Answer" value="D"/><label for="D">D) fixed answer</label><br/><br/>



package org.me.jsp.beans;

import java.sql.*;
import java.util.*;

public class WordDataBean {


    private Connection connection;
    private PreparedStatement addWord, getWords, removeWord, getRandEnglishWord;

    public WordDataBean() throws Exception {

        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/university2", "root",
                    "");

            getWords = connection.prepareStatement("SELECT * FROM word");

            addWord = connection.prepareStatement("INSERT INTO university2.word ( "
                    + "germanName, gender, englishName ) " + "VALUES ( ?, ?, ?);");
            
            removeWord = connection.prepareStatement("DELETE FROM university2.student "
                    + "WHERE germanName= ? ;");
            getRandEnglishWord= connection.prepareStatement("SELECT englishName FROM word"
                    + "ORDER BY RAND() LIMIT 1");
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        }

    }

    public List<WordBean> getWordList() throws SQLException {
        List<WordBean> wordList = new ArrayList<WordBean>();

        // obtain list of titles
        ResultSet results = getWords.executeQuery();

        // get row data
        while (results.next()) {
            WordBean word = new WordBean();

            word.setGermanName(results.getString(1));
            word.setGender(results.getString(2));
            word.setEnglishName(results.getString(3));

            wordList.add(word);
        }

        return wordList;
    }

    public void addWord(WordBean word) throws SQLException {
        addWord.setString(1, word.getGermanName());
        addWord.setString(2, word.getGender());
        addWord.setString(3, word.getEnglishName());
        addWord.executeUpdate();
    }
    
    public void removeWord(WordBean word) throws SQLException{
        removeWord.setString(1,word.getGermanName());
        removeWord.executeUpdate();
    }
    public void randomEnglishWord(WordBean word) throws SQLException{
        getRandEnglishWord.setString(1, word.getEnglishName());
        getRandEnglishWord.executeQuery();
    }
    protected void finalize() {
        try {
            getWords.close();
            addWord.close();
            connection.close();
        } catch (SQLException sqlException) {
            sqlException.printStackTrace();
        }
    }
}

Here is a sample of one of the question jsp pages, q1.jsp:

<%-- 
    Document   : q1
    Created on : 06-May-2012, 18:54:24
    Author     : encore
--%>

<!--This JSP acts as the first question in a multiple choice quiz, with the user
asked to submit their answer to the question-->

<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Big Java Quiz, question 1</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <%if(request.getParameter("choice").equals("N"))
            out.print("<meta http-equiv= refresh  content= 0;url=options.jsp />");
            //Redirects user back to index if they did not want to take quiz%>
        <form action="q2.jsp" method="POST">
            <b>Question 1.</b> What is the German noun for the English word ______?<br/><br/>
            <input type="radio" name="q1Answer" value="A"/><label for="A">A) Exception generator</label><br/>
            <input type="radio" name="q1Answer" value="B"/><label for="B">B) Exception manipulator</label><br/>
            <input type="radio" name="q1Answer" value="C"/><label for="C">C) Exception handler</label><br/>
            <input type="radio" name="q1Answer" value="D"/><label for="D">D) Exception monitor</label><br/><br/>
            <input type="submit" value="Submit"/>
        </form>
    </body>
</html>
最佳回答

将你的问题列入一个清单:

    List<WordBean> wordList = getWordList();
    List<String> answersList = new ArrayList<String>(); 
    Random random = new Random();
    Random forAnswers = new Random();

    WordBean goodOne = wordList.get(random.nextInt(wordList.size()));
    //take it out from the list
    wordList.remove(goodOne);
    //add it to the answers list
    answersList.add(goodOne.getGermanName());
    WordBean fakeOne = wordList.get(random.nextInt(wordList.size()));
    //take it out from the list
    wordList.remove(fakeOne);
    //add it to the answers list
    answersList.add(fakeOne.getGermanName());
    WordBean fakeTwo = wordList.get(random.nextInt(wordList.size()));
    //take it out from the list
    wordList.remove(fakeTwo);
    //add it to the answers list
    answersList.add(fakeTwo.getGermanName());

    %>What is the english word for the german word <%=goodOne.getGermanName()%>

    <%
    char letter =  A ;
    for (String answer:answersList){
    %>
    <input type="radio" name="q1Answer" value=""/><label for="<%=letter%>"><%=letter%>)<%=answerList.get(forAnswers.getNextInt(3))> />
    <%
    //point to the next letter
    letter++;
    }
问题回答

暂无回答




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签