1》设计思路
1.首先编写一个input.jsp页面,用于输入各种参数,如出题的个数和数值上限,简单运算还是混合运算
2.编写index.jsp页面,用request接受input.jsp的参数,如果是简单运算,就是执行第一种算法,只出两个数的题,每出一题,输入一次答案,最后将输入答案,运算式和正确答案存到字符串中,而复杂运算则执行第二种算法,产生复杂运算式,也是每出一道题,输入一次答案,然后将运算式,输入答案和正确答案存到字符串中(其中产生算式和计算答案的方法和原来的普通四则运算一样)
3.编写Result.jsp,用session和request接收运算式,输入答案和正确答案,如果输入答案和正确答案相同,就答对了,正确题目数目加1,否则就打错了,最后输出正确题目数目
2》程序源代码
input.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <title>首页</title> 8 </head> 9 <body background="image/beijing1.jpg"> 10 <form name="form1" method="post"action="index.jsp"> 11 <center>小学生的四则运算</center> 12 <table align="center"> 13 <tr> 14 <td> 请输入要出题的题目数量: </td> 15 <td> <input name="shuliang" type="text" id="shuliang"maxlength="5"></td> 16 </tr> 17 <tr> 18 <td> 19 请输入要出题范围(1~?): 20 </td> 21 <td> 22 <input name="fanwei" type="text" id="fanwei"maxlength="5"> 23 </td> 24 </tr> 25 <tr> 26 <td>请选择计算的类型: 27 </td> 28 <td> 29 <select name="leixing"> 30 <option value=0>简单运算</option> 31 <option value=1>混合运算</option> 32 </select> 33 </td> 34 </tr> 35 </table> 36 <center><input type="submit"value="开始答题"></center> 37 </form> 38 </body> 39 </html>
index.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <title>Insert title here</title> 8 </head> 9 <body background="image/beijing2.jpg"> 10 <% 11 String leixing=request.getParameter("leixing"); 12 if(Integer.parseInt(leixing)==0) 13 { 14 %> 15 16 <% 17 18 int answer; //题目的答案 19 String j=request.getParameter("shuliang");//运算式的数量 20 int shuliang= Integer.valueOf(j); 21 String[] str=new String[shuliang];//用于连接输出字符 22 String[] daan=new String[shuliang];//输入的答案 23 String[] answer1=new String[shuliang]; //正确答案 24 String j1=request.getParameter("fanwei");//数值范围 25 int fanwei=Integer.valueOf(j1); 26 for(int i=0;i<shuliang;i++) 27 { 28 daan[i]="name"+i; 29 //生成0-100之间的随机数 30 int num1=(int)(Math.random()*fanwei+1); 31 int num2=(int)(Math.random()*fanwei+1); 32 int fuhao= (int)(Math.random()*4); 33 if(fuhao==0) 34 { 35 str[i]=num1+"+"+num2+"="; 36 answer=num1+num2; 37 } 38 else if(fuhao==1) 39 { 40 str[i]=num1+"-"+num2+"="; 41 answer=num1-num2; 42 } 43 else if(fuhao==2) 44 { 45 str[i]=num1+"*"+num2+"="; 46 answer=num1*num2; 47 } 48 else 49 { 50 str[i]=num1+"/"+num2+"="; 51 answer=num1/num2; 52 } 53 54 answer1[i]=""+answer; 55 out.print(str[i]); 56 57 58 %> 59 <br> 60 <form name="form2"method="post"action="Result.jsp"> 61 请输入你的答案:<input name="<%=daan[i] %>" type="text" id="daan"maxlength="5"> 62 <br> 63 64 <% 65 } 66 %> 67 <% 68 session.setAttribute("v1",str); 69 session.setAttribute("v2",answer1); 70 %> 71 <input type="submit"value="确定"> 72 </form> 73 <% 74 } 75 %> 76 77 <% 78 if(Integer.parseInt(leixing)==1) 79 { 80 int answer; //题目的答案 81 String j=request.getParameter("shuliang");//运算式的数量 82 int shuliang= Integer.valueOf(j); 83 String[] str=new String[shuliang];//用于连接输出字符 84 String[] daan=new String[shuliang];//输入的答案 85 String[] answer1=new String[shuliang]; //正确答案 86 String j1=request.getParameter("fanwei");//数值范围 87 int fanwei=Integer.valueOf(j1); 88 89 for(int i=0;i<shuliang;i++) 90 { 91 daan[i]="name"+i; 92 str[i]=""+(int)((Math.random()*fanwei)+1); //随机产生第一个数 93 int num=(int)(Math.random()*3+2); 94 int jisuan[]=new int[num+1];//用于保存中间结果 95 jisuan[0]=Integer.parseInt(str[i]); 96 char yunsuanfu[]=new char[num+1]; 97 for(int l=1;l<num;l++) 98 { 99 int fuhao= (int)(Math.random()*4);//随机产生符号 100 int num2=(int)(Math.random()*fanwei+1); 101 jisuan[l]=num2; 102 if(fuhao==0) 103 { 104 str[i]+="+"+num2; 105 yunsuanfu[l]='+'; 106 } 107 if(fuhao==1) 108 { 109 str[i]+="-"+num2; 110 yunsuanfu[l]='-'; 111 } 112 if(fuhao==2) 113 { 114 str[i]+="*"+num2; 115 yunsuanfu[l]='*'; 116 } 117 if(fuhao==3) 118 { 119 str[i]+="/"+num2; 120 yunsuanfu[l]='/'; 121 } 122 } 123 out.print(str[i]+"<br>"); 124 for(int l=1;l<num;l++) 125 { 126 if(yunsuanfu[l]=='*') 127 { 128 jisuan[l]=jisuan[l-1]*jisuan[l]; 129 jisuan[l-1]=0; 130 yunsuanfu[l]=yunsuanfu[l-1]; 131 } 132 else if(yunsuanfu[l]=='/') 133 { 134 jisuan[l]=jisuan[l-1]/jisuan[l]; 135 jisuan[l]=0; 136 yunsuanfu[l]=yunsuanfu[l-1]; 137 } 138 } 139 for(int l=1;l<num;l++) 140 { 141 if(yunsuanfu[l]=='+') 142 { 143 jisuan[l]=jisuan[l-1]+jisuan[l]; 144 jisuan[l-1]=0; 145 } 146 else if(yunsuanfu[l]=='-') 147 { 148 jisuan[l]=jisuan[l-1]-jisuan[l]; 149 jisuan[l-1]=0; 150 } 151 } 152 answer1[i]=""+jisuan[num-1]; 153 %> 154 <br> 155 <form name="form2"method="post"action="Result.jsp"> 156 请输入你的答案:<input name="<%=daan[i] %>" type="text" id="daan"maxlength="5"> 157 <br> 158 <% 159 } 160 %> 161 <% 162 session.setAttribute("v1",str); 163 session.setAttribute("v2",answer1); 164 %> 165 <input type="submit"value="确定"> 166 </form> 167 <% 168 } 169 %> 170 171 <table> 172 <tr> 173 <td><img src="image/gougou.jpg"width="70"height ="74"></td> 174 <td>书山有路勤为径,学海无涯苦作舟!</td> 175 </tr> 176 </table> 177 </body> 178 </html>
Result.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <title>结果</title> 8 </head> 9 <body background="image/beijing3.jpg"> 10 <% 11 String[] s= (String[])session.getAttribute("v1"); 12 String[] answer= (String[])session.getAttribute("v2"); 13 String[] daan=new String[s.length]; 14 int count=0;//正确答案的个数 15 for(int i=0;i<s.length;i++) 16 { 17 out.print("运算式为:"); 18 out.print(s[i]+" "); 19 out.print("您的输入结果为:"); 20 daan[i]=request.getParameter("name"+i); 21 out.print(daan[i]+" "); 22 out.print("正确结果为:"); 23 out.print(answer[i]); 24 if(Integer.parseInt(daan[i])==Integer.parseInt(answer[i])) 25 { 26 out.print("恭喜你答对了!"); 27 count++; 28 } 29 else 30 { 31 out.print("很遗憾,你打错了!"); 32 } 33 out.print("<br>"); 34 } 35 out.print("你一共答对的题目数:"); 36 out.print(count); 37 %> 38 </body> 39 </html>
3》结果截图:
总结:因为时间的因素,还有对知识掌握的还不太熟练,所以一些功能还没实现,不过我课下会积极努力完成功能,进行完善,这只是初期版