程序设计思想:
首先利用随机数产生器生成1至5之间的随机整数,但产生的随机数为5时,则让其产生3个100以内的随机整数,否则产生2个随机整数运算操作数,在通过判断控制产生的结果
在100以内的式子.之后再写主界面,出题界面与结果界面.
1 package com.jaovo.msg.model; 2 3 public class arithmetic 4 { public int []answer;//答案 5 public int shumu;//出题数目 6 public String []suanshi;//算式 7 public int[] getAnswer() 8 { 9 return answer; 10 } 11 12 public void setAnswer(int[] answer) 13 { 14 this.answer = answer; 15 } 16 17 public int getShumu() 18 { 19 return shumu; 20 } 21 22 public void setShumu(int shumu) 23 { 24 this.shumu = shumu; 25 } 26 27 public String[] getSuanshi() 28 { 29 return suanshi; 30 } 31 32 public void setSuanshi(String[] suanshi) 33 { 34 this.suanshi = suanshi; 35 } 36 37 public void setsuanshi(String[] suanshi) 38 { 39 this.suanshi = suanshi; 40 } 41 42 43 44 public String [] biaodashi(int n) 45 { 46 47 shumu=n; 48 answer=new int[n]; 49 int a=0; 50 int b=0; 51 int c=0; 52 int d1 = 0; 53 int d=0; 54 int d2=0; 55 int []mixture=new int[2];//运算符数组 56 String []biaodashi=new String[n]; 57 58 for(int i=0;i<n;i++) 59 { 60 a=(int)(Math.random()*100)+1;//1-100 61 b=(int)(Math.random()*100)+1; 62 c=(int)(Math.random()*5)+1;//随机生成一个1-5的整数,4表示加法,1表示减法,2表示乘法,3表示除法,5表示混合 63 if(c==5)//混合运算 64 { 65 do 66 { 67 for(int m=0;m<2;m++) 68 { 69 mixture[m]=(int)(Math.random()*2);//0-1 70 }//控制运算符个数 71 72 a=(int)(Math.random()*100)+1; 73 b=(int)(Math.random()*100)+1; 74 d=(int)(Math.random()*100)+1;//生成三个数 75 if(mixture[0]==0&&mixture[1]==0) 76 { 77 biaodashi[i]=a+"+"+b+"+"+d+" = "; 78 d1=a+b+d; 79 } 80 if(mixture[0]==1&&mixture[1]==1) 81 { 82 biaodashi[i]=a+"-"+b+"-"+d+" = "; 83 84 d1=a-b-d; 85 } 86 if(mixture[0]==0&&mixture[1]==1) 87 { 88 biaodashi[i]=a+"+"+b+"-"+d+" = "; 89 d1=a+b-d; 90 } 91 if(mixture[0]==1&&mixture[1]==0) 92 { 93 biaodashi[i]=a+"-"+b+"+"+d+" = "; 94 95 d1=a-b+d; 96 } 97 } while(d1<0); 98 answer[i]=d1; 99 } 100 if(c==4)//单加法 101 { 102 d1=a+b; 103 biaodashi[i]=a+"+"+b+" = "; 104 while(d1>100) 105 { 106 a=(int)(Math.random()*100)+1; 107 b=(int)(Math.random()*100)+1;//1-100 包括1和100 不加1 表示0-99 108 d1=a+b; 109 } 110 biaodashi[i]=a+"+"+b+" = "; 111 answer[i]=d1; 112 113 } 114 if(c==1)//单减法 115 { 116 d1=a-b; 117 while(d1<0) 118 { 119 a=(int)(Math.random()*100)+1; 120 b=(int)(Math.random()*100)+1; 121 d1=a-b; 122 } 123 biaodashi[i]=a+"-"+b+" = "; 124 answer[i]=d1; 125 126 } 127 if(c==2)//乘法 128 { 129 a=(int)(Math.random()*10);//0-9 130 b=(int)(Math.random()*10);//1-100 包括1和100 不加1 表示0-99 131 d1=a*b; 132 while(a<1||b<1||d1>81) 133 { 134 a=(int)(Math.random()*10);//0-9 135 b=(int)(Math.random()*10);//1-100 包括1和100 不加1 表示0-99 136 } 137 d1=a*b; 138 biaodashi[i]=a+"*"+b+" = "; 139 answer[i]=d1; 140 141 } 142 if(c==3)//除法 143 { 144 d1=a/b; 145 while(a%b!=0||a/b>9||(a<=81&&b>=10)||(a>9&&a==b)||(a>81)) 146 { 147 a=(int)(Math.random()*100)+1; 148 b=(int)(Math.random()*100)+1;//1-100 包括1和100 不加1 表示0-99 149 } 150 d1=a/b; 151 biaodashi[i]=a+"÷"+b+" = "; 152 answer[i]=d1; 153 154 } 155 156 //查重 157 for(int k=i-1;k>=0;k--) 158 { 159 while(biaodashi[i].equals(biaodashi[k])) 160 { 161 a=(int)(Math.random()*100)+1;//1-100 162 b=(int)(Math.random()*100)+1; 163 c=(int)(Math.random()*5)+1;//随机生成一个1-5的整数,4表示加法,1表示减法,2表示乘法,3表示除法,5表示混合 164 if(c==5) 165 { 166 do//混合运算 167 { 168 for(int m=0;m<2;m++) 169 { 170 mixture[m]=(int)(Math.random()*2);//0-1 171 }//控制运算符 172 173 a=(int)(Math.random()*100)+1; 174 b=(int)(Math.random()*100)+1; 175 d=(int)(Math.random()*100)+1;//生成三个数 176 if(mixture[0]==0&&mixture[1]==0) 177 { 178 biaodashi[i]=a+"+"+b+"+"+d+" = "; 179 d1=a+b+d; 180 } 181 if(mixture[0]==1&&mixture[1]==1) 182 { 183 biaodashi[i]=a+"-"+b+"-"+d+" = "; 184 d2=a-b; 185 d1=a-b-d; 186 } 187 if(mixture[0]==0&&mixture[1]==1) 188 { 189 biaodashi[i]=a+"+"+b+"-"+d+" = "; 190 d1=a+b-d; 191 } 192 if(mixture[0]==1&&mixture[1]==0) 193 { 194 biaodashi[i]=a+"-"+b+"+"+d+" = "; 195 d2=a-b; 196 d1=a-b+d; 197 } 198 }while(d2<0||d1<0); 199 answer[i]=d1; 200 } 201 if(c==4) 202 { 203 d1=a+b; 204 biaodashi[i]=a+"+"+b+" = "; 205 while(d1>100) 206 { 207 a=(int)(Math.random()*100)+1; 208 b=(int)(Math.random()*100)+1;//1-100 包括1和100 不加1 表示0-99 209 d1=a+b; 210 } 211 biaodashi[i]=a+"+"+b+" = "; 212 answer[i]=d1; 213 System.out.print(a+"+"+b+"= "); 214 } 215 if(c==1) 216 { 217 d1=a-b; 218 while(d1<0) 219 { 220 a=(int)(Math.random()*100)+1; 221 b=(int)(Math.random()*100)+1; 222 d1=a-b; 223 } 224 biaodashi[i]=a+"-"+b+" = "; 225 answer[i]=d1; 226 System.out.print(a+"-"+b+"= "); 227 } 228 if(c==2) 229 { 230 a=(int)(Math.random()*10);//0-9 231 b=(int)(Math.random()*10);//1-100 包括1和100 不加1 表示0-99 232 d1=a*b; 233 while(a<1||b<1||d1>81) 234 { 235 a=(int)(Math.random()*10);//0-9 236 b=(int)(Math.random()*10);//1-100 包括1和100 不加1 表示0-99 237 } 238 d1=a*b; 239 biaodashi[i]=a+"*"+b+" = "; 240 answer[i]=d1; 241 System.out.print(a+"*"+b+"= "); 242 } 243 if(c==3) 244 { 245 while(a%b!=0) 246 { 247 a=(int)(Math.random()*100)+1; 248 b=(int)(Math.random()*100)+1;//1-100 包括1和100 不加1 表示0-99 249 } 250 d1=a/b; 251 biaodashi[i]=a+"÷"+b+" = "; 252 answer[i]=d1; 253 System.out.print(a+"÷"+b+"= "); 254 } 255 } 256 } 257 } 258 259 return biaodashi; 260 } 261 262
<%@page import="com.jaovo.msg.model.arithmetic"%> <%@ page import="javax.swing.*" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head><title>出题页</title></head> <body bgcolor=#FFC4ff onload="load()"> <% //接收客户端传递过来的参数 request.setCharacterEncoding("UTF-8"); String time = request.getParameter("usertime");//接收时间 int time1=0; int x=1; for(int m=0;m<time.length();m++) { time1+=(time.charAt(time.length()-m-1)-'0')*x; x*=10; }//字符串类型的数字转换为整型 成为参数 %> <script> var c=1; var t; var num1=<%=time1%> function timeCount() { document.getElementById("txt").innerHTML=num1-c; c=c+1; t=setTimeout("timeCount()",1000); if(num1==c-1) { clearTimeout(t); alert("同学抱歉时间到了!,点击确定答案将会自动提交"); load(); } } function load() { document.getElementById("anniu").click(); } window.onload =function(){ timeCount();//onload 事件会在页面或图像加载完成后立即发生。 } </script> <h1 style="font-family:华文新魏;font-size:4em" >开始答题</h1> <td style="font-family:华文新魏;font-size:1em;500px" align="right">倒计时:</td> <p id = "txt"></p> <form action="Result.jsp" onsubmit="return validate()==1" method="post"> <% //接收客户端传递过来的参数 request.setCharacterEncoding("UTF-8"); String num = request.getParameter("username");//接收出题的数目 int num1=0; x=1; for(int m=0;m<num.length();m++) { num1+=(num.charAt(num.length()-m-1)-'0')*x; x*=10; }//字符串类型的数字转换为整型 成为参数 arithmetic demo=new arithmetic();//定义对象 String []biaodashi1=new String[num1]; biaodashi1=demo.biaodashi(num1);//接收算式 demo.setsuanshi(biaodashi1);//调用函数 给数据成员算式赋值 以便用于传递 for(int i=0;i<num1;i++) { out.println(biaodashi1[i]);//输出表达式 %> <input style="80px;height:17px;align="right"" type="text" name="result[<%=i%>]"/> <!-- 答案输入文本框 --> <% out.println("<br/>"); out.println("<br/>");//换行 } session.setAttribute("jieshou",demo);//用于下一个界面的接收本界面的这个类的全部内容result 所以定义的对象 %> <tr> <button id="anniu" onclick="test()" type="submit">提交</button> </tr> </body> </html>
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> 10 <h1 style="font-family:华文新魏;font-size:5em; 600px"align="right">四则运算挑战</h1> 11 <body text=red; > 12 <body background="C:UserszhangDesktop img.jpg" > 13 <!-- img alt="pic" src="C:UserszhangDesktopu=1828030732,3679163737&fm=214&gp=0.jpg" width = "760px">--> 14 <form action="chuti.jsp" method="post"> 15 <table align="center" border="0" width="500" style="margin:00px 200px 00px 5px"> 16 <tr> 17 <td style="font-family:华文;font-size:2em;500px" align="right">选择做数目 </td> 18 <td> 19 <input style="100px;height:30px;border:2px solid blue;" type="text" name="username" /> 20 </td> 21 </tr> 22 23 <tr> 24 <td style="font-family:华文;font-size:2em;500px" align="right">我们来设置下时间吧: </td> 25 <td> 26 <input style="100px;height:30px;border:2px solid blue;" type="text" name="usertime" /> 27 </td> 28 </tr> 29 30 <tr><td style="150px;height:20px;"></td></tr> <!-- 加了一个自己设置的高度的空行 --> 31 <tr align="center"> 32 <td colspan="2"> 33 <input style="100px;height:30px;border:3px solid red; margin:00px 20px 00px 350px" type="submit" value="开始答题" /> 34 </body> 35 </html>
1 <%@page import="com.jaovo.msg.model.arithmetic"%> 2 <%@ page import="javax.swing.*" %> 3 <%@ page language="java" contentType="text/html; charset=UTF-8" 4 pageEncoding="UTF-8"%> 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6 <html> 7 <head><title>出题</title></head> 8 9 <body bgcolor=#fFC3D4;> 10 <!--< body background="C:UserszhangDesktop img.jpg" >--> 11 12 <h1 style="font-family:华文新魏;font-size:4em">现在来看一下正确答案</h1> 13 <% 14 //接收客户端传递过来的参数 15 arithmetic newdemo=new arithmetic(); 16 newdemo=(arithmetic)session.getAttribute("jieshou");//用于接收CHUti界面传过来的数 (对象) 17 String []yoursolution=new String[newdemo.shumu];//接收传过来的文本框的答案 18 int sumright=0,sumerror=0,empty=0; 19 for(int i=0;i<newdemo.shumu;i++) 20 { 21 request.setCharacterEncoding("UTF-8"); 22 out.print(newdemo.suanshi[i]);//正确的算式 23 yoursolution[i] = request.getParameter("result["+i+"]");//你的答案 24 out.println(yoursolution[i]); 25 %> 26 <br> 27 <% 28 out.println("正确答案是: "); 29 out.newLine(); 30 out.println(newdemo.answer[i]);//正确的答案 31 %> 32 33 <% 34 int num1=0; 35 int x=1; 36 for(int m=0;m<yoursolution[i].length();m++) 37 { 38 num1+=(yoursolution[i].charAt(yoursolution[i].length()-m-1)-'0')*x; 39 x*=10; 40 }//字符串类型的数字转换为整型 用于和正确答案比较 因为从出题界面接受的答案是字符串类型 41 if(yoursolution[i].equals("")) 42 { 43 out.newLine(); 44 out.println(" 你没有回答哦!"); 45 out.newLine(); 46 empty++; 47 } 48 else if(num1==newdemo.answer[i]) 49 { 50 sumright++; 51 out.newLine(); 52 out.println("恭喜你!回答正确!"); 53 out.newLine(); 54 } 55 else 56 { 57 sumerror++; 58 out.newLine(); 59 out.println("回答错误,再接再厉!"); 60 out.newLine(); 61 } 62 out.println("<br/>");//换行 63 } 64 out.println("回答正确了"+sumright+"道题!"); 65 out.println("<br/>");//换行 66 out.println("回答错误了"+sumerror+"道题!"); 67 out.println("<br/>");//换行 68 out.println("没有回答"+empty+"道题!"); 69 out.println("<br/>");//换行 70 %> 71 </tr> 72 <a href="chutijiemian.jsp">退出</a> 73 </body> 74 </html>
运行截图:
PSP | 时间(分钟) |
估计需要多长时间 | 240 |
开发 | 0 |
需求分析(包括学习新知识) | 40 |
生成设计文档 | 20 |
设计复审 | 0 |
代码规范 | 10 |
具体设计 | 30 |
具体编码 | 120 |
代码复审 | 0 |
测试(自我修复) | 30 |
测试报告 | 0 |
计算工作量 | 0 |
事后总结并提出改进计划 | 5 |
计划用时 | 240 |
实际用时 | 255 |