程序设计思想:
首先,由于之前的四则运算已经基本上把需要实现的功能都实现了,所以这次任务的重心在于怎么把一个Java程序变成网页版的。
第一步我的想到需要哪几个网页,每个网页都实现什么功能。那么,主页是必不可少的,用户需要在主页上选择一些出题的基本参数,比如说自然数的范围、
除法有无余数,减法有无负数等,当用于选择好之后,由后台开始出题,于另一个页面显示后台出的题目,用户于此页面进行答题,做完之后,
提交到另一个页面,对用户输入的答案与出题同时写进数据库的答案进行比较,同时告诉用户做对的题目是哪些,做错的题目是哪些。
以上是这个在线答题系统的整体框架,接下来就是对上述描述进行实现,代码如下:
首先是主页的代码:
index Online答题系统
接下来是答题页面的代码:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*,java.util.*,javabean01.*,javax.sql.*,javax.naming.*" errorPage="" %>无标题文档 <%int number=Integer.parseInt(request.getParameter("text1"));int i; //用于循环Random ran=new Random(); //专门用于产生随机数int ranNumber;//存随机产生的数//建一个Ways类的对象,用于方法的调用Ways ways=new Ways();//用于存储用户的选择char choice[]=new char[4];choice[0]=request.getParameter("radio1").charAt(0);choice[1]=request.getParameter("radio2").charAt(0);choice[2]=request.getParameter("radio3").charAt(0);choice[3]=request.getParameter("radio4").charAt(0);int range1=Integer.parseInt(request.getParameter("text2"));int range2=Integer.parseInt(request.getParameter("text3"));int range3=Integer.parseInt(request.getParameter("text4"));%>
最后是判断结果页面的代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*,javax.sql.*,javax.naming.*"%>Insert title here <% int number=Integer.parseInt(request.getParameter("number"));//获取题目的数量 String tjdaan[]=new String[number]; for(int i=1;i<=number;i++) { tjdaan[i-1]=request.getParameter("text"+i); } Connection conn=null; Statement stmt=null; ResultSet rs=null; try { Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/calculation"); conn=ds.getConnection(); stmt=conn.createStatement(); String sql="select daan from anwsy"; rs=stmt.executeQuery(sql); String daan[]=new String [number]; int i=0; while(rs.next()) { daan[i]=new String(rs.getString(1)); i++; } //用来存正确或错误题目的编号 int right[]=new int[number]; int rightnumber=0; int error[]=new int[number]; int errornumber=0; for(int j=0;j<% out.print("做错的题目有:"); for(int j=0;j
以上部分是前端的实现,接下来的代码是以前实现的功能代码(也就是后台程序):
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*,javax.sql.*,javax.naming.*"%>Insert title here <% int number=Integer.parseInt(request.getParameter("number"));//获取题目的数量 String tjdaan[]=new String[number]; for(int i=1;i<=number;i++) { tjdaan[i-1]=request.getParameter("text"+i); } Connection conn=null; Statement stmt=null; ResultSet rs=null; try { Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/calculation"); conn=ds.getConnection(); stmt=conn.createStatement(); String sql="select daan from anwsy"; rs=stmt.executeQuery(sql); String daan[]=new String [number]; int i=0; while(rs.next()) { daan[i]=new String(rs.getString(1)); i++; } //用来存正确或错误题目的编号 int right[]=new int[number]; int rightnumber=0; int error[]=new int[number]; int errornumber=0; for(int j=0;j<% out.print("做错的题目有:"); for(int j=0;j
运行结果截图:
(主页部分)
(答题部分)
(判断结果部分)
(数据库的表结构)
编程体会与总结:
每一次的任务都能让人学到很多东西,现在我开始认识到,任务的结果对我们来说可能不是最重要的,最重要的应该是做任务的这个过程,
每一个挫折都代表着一次成长,可能说的有点夸张了,但是从每个挫折中,我们都能学到一些意料之外的东西。由于是在解决实际问题中学到的东西,
所有才能记得更加深刻,被动学习与主动学习是截然不同的。
在这次实验中,我感觉自己对于数据库的了解又加深了很多,并且学会了JDBC数据源与连接池的使用方法,懂得了如何运用css+div对页面进行
精美的设计。当然对于运用后台解决问题的逻辑思路更加的清晰了。
以上就是通过这次实验我所学到的东西。