开发一个在线考试系统,你发现考题录入后,给考题排顺序很麻烦。有没有好的解决方法?
现在这里有两个方法实现简单的在线开始系统,希望与你们分享一下
首先创建一个Question类
package model;
public class Question {
private int id;
private int order;
private String name;
// 创建无参构造方法
public Question() {
super();
// TODO Auto-generated constructor stub
}
// 创建含参构造方法
public Question(int id, int order, String name) {
super();
this.id = id;
this.order = order;
this.name = name;
}
// get,set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
创建QuestionAction
package action;
import java.util.ArrayList;
import java.util.List;
import model.Question;
import com.opensymphony.xwork2.ActionSupport;
public class QuestionAction extends ActionSupport {
// 未排序试题
private List<Question> question = new ArrayList<Question>();
// 已排序试题
private List<Question> orderquestion = new ArrayList<Question>();
// 排序后的数组 数组中存放的试题id
private String[] rightList = new String[4];
public String[] getRightList() {
return rightList;
}
public void setRightList(String[] rightList) {
this.rightList = rightList;
}
public List<Question> getQuestion() {
return question;
}
public void setQuestion(List<Question> question) {
this.question = question;
}
public List<Question> getOrderquestion() {
return orderquestion;
}
public void setOrderquestion(List<Question> orderquestion) {
this.orderquestion = orderquestion;
}
private List<Question> getAll() {
List<Question> list = new ArrayList<Question>();
Question ql = new Question(1, 0, "q1");
Question q2 = new Question(2, 0, "q2");
Question q3 = new Question(3, 0, "q3");
Question q4 = new Question(4, 0, "q4");
list.add(ql);
list.add(q2);
list.add(q3);
list.add(q4);
return list;
}
// 模拟从数据库查询所有的试题
public String selectAll() {
question = getAll();
return SUCCESS;
}
// 传递数据到排序页面
public String order() {
question = getAll();
return SUCCESS;
}
// 排序结束
public String orderback() {
for(int i=0;i<rightList.length;i++){
String key=rightList[i];
//根据主键查询question对象
Question q =findQuestionByid(key);
q.setOrder(i+1);
orderquestion.add(q);
}
question =orderquestion;
return SUCCESS;
}
private Question findQuestionByid(String Key){
if(Key.equals("1")){
Question q=new Question(1,0,"q1");
return q;
}else if(Key.equals("2")){
Question q=new Question(2,0,"q2");
return q;
}else if(Key.equals("3")){
Question q=new Question(3,0,"q3");
return q;
}else{
Question q=new Question(4,0,"q4");
return q;
}
}
}
创建list.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
试题列表<br/>
<s:iterator value="question" var="question">
题号:<s:property value="order"/>
试题<s:property value="name"/><br/>
</s:iterator>
<s:a href="hello/order">排序</s:a>
</body>
</html>
现在使用第一种方法解决排序问题:(Optiontransferselect)
创建order.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%@taglib uri="/struts-dojo-tags" prefix="sx"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<s:form action="/hello/orderback">
<s:optiontransferselect
label="试题排序"
leftTitle="未排序试题"
rightTitle="已排序试题"
doubleList="orderquestion"
doubleListKey="id"
doubleListValue="name"
list="question"
listKey="id"
listValue="name"
name="leftList"
doubleName="rightList"
addToLeftLabel="向左移动"
addToRightLabel="向右移动"
headerKey="cnKey"
headerValue="未排序试题列表"
doubleHeaderKey="enKey"
doubleHeaderValue="已排序试题列表"
addAllToRightLabel="全部导入右侧"
addAllToLeftLabel="全部导入左侧"
selectAllLabel="选中所有"
doubleMultiple="true"
>
</s:optiontransferselect>
<s:submit value="排序完成"
οnclick="selectAllOptionsExceptSome(document.getElementById('leftList'), 'key', 'cnKey');
selectAllOptionsExceptSome(document.getElementById('rightList'), 'key', 'enKey');"/>
</s:form>
</body>
</html>
配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="hello" namespace="/hello" extends="struts-default">
<action name="question" class="action.QuestionAction" method="selectAll">
<result name="success">
/list.jsp
</result>
</action>
<action name="order" class="action.QuestionAction" method="order">
<result name="success">
/order.jsp
</result>
</action>
<action name="orderback" class="action.QuestionAction" method="orderback">
<result name="success">
/list.jsp
</result>
</action>
</package>
</struts>
进入order.jsp页面后,页面如图所示:
进入页面后,把所有试题移到已排序试题列表中 ,并对其进行排序。排序后点击排序完成按钮,进入排序成功页面,即list.jsp页面
第二种方法解决排序问题:(利用strust2中updown标签实现排序)
创建index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%@taglib uri="/struts-dojo-tags" prefix="sx"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<s:form action="/hello/orderback">
<s:updownselect
list="question"
allowSelectAll="true"
name="rightList"
moveDownLabel="向下移"
moveUpLabel="向上移"
listKey="id"
listValue="name"
selectAllLabel="全选"
headerKey="enKey"
headerValue="需要排序的列表"/>
<s:submit value="排序完成"
οnclick="selectAllOptionsExceptSome(document.getElementById('rightList'), 'key', 'enKey');"/>
</s:form>
</body>
</html>
此时struts.xml也要重新配置一下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="hello" namespace="/hello" extends="struts-default">
<action name="question" class="action.QuestionAction" method="selectAll">
<result name="success">
/list.jsp
</result>
</action>
<action name="order" class="action.QuestionAction" method="order">
<result name="success">
/index.jsp
</result>
</action>
<action name="orderback" class="action.QuestionAction" method="orderback">
<result name="success">
/list.jsp
</result>
</action>
</package>
</struts>
进入index.jsp页面后,页面如图所示:
进入页面后,对其进行排序,排序完成后点击 排序完成按钮进入成功页面即list.jsp。如图所示:
这只是运用ajax和struts2编写的一个简单的在线考试系统。我会继续努力写出更好的小程序的。