团队作业——四则运算网页版

设计思路:1、输入,在初始界面输入选择以及数值范围,出题数量,打印方式

             2、(1)整数运算分为有括号和无括号

                        是否有乘除法:在前面做出选择后,在下面只需设置运算符随机出数的范围在0-1之间还是0-3之间

      数值范围:即四则运算随机出数的范围在前域~后域

     加减有无负数:对随机生成的数字进行运算,如果进行加/减运算之后,有负数,则根据选择进行保留或舍弃

    有无括号:用随机数来进行选择在原来式子之前还是之后进行添加

     控制题目不能重复:将之前的题目存放在数组中,然后依次进行比较

    打印方式:根据用户输入要求一行输出几列后,利用取余的方法判断是否要换行输出

    带括号的计算是直接从最里层括号开始往外依次计算

     不带括号的计算则分为没有乘除法和有乘除法

      没有乘除法的是将运算式存为二维数组,将数值和运算符依次分别存放于两个数组中,然后按从左到右的顺序进行计算

    有乘除法的则需进一步统计,在哪有除法或者乘法,然后先进行这两个运算。

                 (2)分数运算,则需产生四个随机数,然后对其进行运算

              3、输出则是运算式的形式

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>Insert title here</title>
 8 </head>
 9 <body>
10 <form name="form1" method="post" action="index.jsp">
11   <center>小学生的四则运算</center>
12   请输入选择:1、整数运算  2、真分数运算 <input name="c" type="text" id="c"maxlength="5"><br>
13   请输入选择:1 、有乘除法 2、无乘除法<input name="c1" type="text" id="c1" maxlength="5"><br>
14   请输入数值范围的前域:<input name="c2" type="text" id="c2" maxlength="5"><br>
15   请输入数值范围的后域:<input name="c3" type="text" id="c3" maxlength="5"><br> 
16   请输入选择:1、除法有余数 2、除法无余数<input name="c4"type="text" id="c4"maxlength="5"><br>
17    请输入要出题的题目数量:<input name="c5" type="text" id="c5"maxlength="5"><br>
18    请输入在一行中输出几列运算式<input name="c6" type="text" id="c6" maxlength="5"><br>
19  请输入选择: 1、有括号 2、无括号:<input name="c7" type="text" id="c7"maxlength="5"><br>
20     <center><input type="submit"value="确定"></center>
21 </body>
22 </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>
 10 <%@page import="java.util.Random"%>
 11 <%@page import="java.util.Scanner"%>
 12 <%@page import="javax.swing.JOptionPane"%>
 14  <% 
 15  String str1="";
 16  String j=request.getParameter("c");
 17  int c= Integer.valueOf(j);
 18  
 19  String j1=request.getParameter("c1");
 20  int c1=Integer.valueOf(j1);
 21  String j2=request.getParameter("c2");
 22  int c2=Integer.valueOf(j2);
 23  String j3=request.getParameter("c3");
 24  int c3=Integer.valueOf(j3);
 25  String j4=request.getParameter("c4");
 26  int c4=Integer.valueOf(j4);
 27  String j5=request.getParameter("c5");
 28  int c5=Integer.valueOf(j5);
 29  String j6=request.getParameter("c6");
 30  int c6=Integer.valueOf(j6);
 31  String j7=request.getParameter("c7");
 32  int c7=Integer.valueOf(j7);
 33   Random rand = new Random();
 34   int a=0,b=0,d=0,e=0;
 35   int x1,x2,y1,y2,z;
 36   int f=0;//符号
 37   String fu="";//符号
 38   int flag=0;
 39   int p=0,w=0;
 40   int g=0;//结果
 41   int y=0;//用户输入的结果
 42   int m=0;//用户正确题目数
 43   int h=1;//最大公约数
 44   if(c==1)
 45   {
 46        String []Repeat1=new String[1000];
 47       // String [][]Repeat2=new String[2*c5][10];
 48        for(int s=0;s<c5;s++)
 49        {
 50            //数值范围
 51            a=rand.nextInt(c3+1)%(c3-c2+1)+c2;
 52            b=rand.nextInt(c3+1)%(c3-c2+1)+c2;
 53            //符号
 54            if(c1==1)
 55            {
 56                 f=rand.nextInt(4);
 57            }
 58            if(c1==2)
 59            {
 60                f=rand.nextInt(2);
 61            }
 62            if(f==0)
 63            {
 64                fu="+";
 65                g=a+b;
 66                  Repeat1[s]=a+fu+b;
 67            }
 68            if(f==1)
 69            {
 70                fu="-";
 71                if(a>b)
 72                {
 73                    g=a-b;
 74                      Repeat1[s]=a+fu+b;
 75                }
 76                if(a<=b)
 77                {
 78                    g=b-a;
 79                      Repeat1[s]=b+fu+a;
 80                }
 81            }
 82            if(f==2)
 83            {
 84                fu="*";
 85                g=a*b;
 86                  Repeat1[s]=a+fu+b;
 87            }
 88            if(f==3)
 89            {
 90 
 91                if(c4==1)
 92                {
 93                    if(b!=0)
 94                    {
 95                          fu="/";
 96                          g=a/b;
 97                            Repeat1[s]=a+fu+b;
 98                    }
 99                    else
100                    {
101                        flag=1;
102                    }
103                }
104                if(c4==2)
105                {
106                     if(a%b==0)
107                     {
108                         if(b!=0)
109                         {
110                             fu="/";
111                             g=a/b;
112                              Repeat1[s]=a+fu+b;
113                         }
114                         else
115                         {
116                             flag=1;
117                         }
118                     }
119                     if(a%b!=0)
120                     {
121                         flag=1;
122                     }
123                 }
124            }
125 
126            
127            //出题长度
128            w=rand.nextInt(3);
129            if(c7==1)//有括号
130            {
131                for(int q=0;q<w;q++)
132                {
133                     d=rand.nextInt(c3+1)%(c3-c2+1)+c2;
134                     p=rand.nextInt(2);
135                 
136                       
137                         if(p==0)
138                         {
139                             //符号
140                               if(c1==1)
141                               {
142                                    f=rand.nextInt(4);
143                               }
144                               if(c1==2)
145                               {
146                                   f=rand.nextInt(2);
147                               }
148                               if(f==0)
149                               {
150                                   fu="+";
151                                   g=g+d;
152                                  Repeat1[s]="("+Repeat1[s]+")"+fu+d+")";
153                               }
154                               if(f==1)
155                               {
156                                   fu="-";
157                                   if(g>=d)
158                                   {
159                                      g=g-d;
160                                       Repeat1[s]="("+Repeat1[s]+")"+fu+d+")";
161                                   }
162                                   if(g<d)
163                                   {
164                                       g=d-g;
165                                      Repeat1[s]="("+d+fu+"("+Repeat1[s]+")";
166                                   }
167                                  // g=g-d;
168                               }
169                               if(f==2)
170                               {
171                                   fu="*";
172                                   g=g*d;
173                                  Repeat1[s]="("+Repeat1[s]+")"+fu+d+")";
174                               }
175                               if(f==3)
176                               {
177 
178                                   if(c4==1)
179                                   {
180                                      if(d!=0)
181                                       {
182                                           fu="/";
183                                           g=g/d;
184                                       }
185                                       else
186                                       {
187                                           flag=1;
188                                       } 
189                                   }
190                                   if(c4==2)
191                                   {
192                                        if(a%d==0)
193                                        {
194                                           if(d!=0)
195                                           {
196                                               fu="/";
197                                               g=g/d;
198                                           }
199                                           else
200                                           {
201                                               flag=1;
202                                           } 
203                                        }
204                                        if(a%d!=0)
205                                        {
206                                            flag=1;
207                                        }
208                                       
209                                    }
210                                  Repeat1[s]="("+Repeat1[s]+")"+fu+d+")";
211                               }
212                              // if(g>d)
213                             
214                         }
215                         if(p==1)
216                         {
217                             //符号
218                               if(c1==1)
219                               {
220                                    f=rand.nextInt(4);
221                               }
222                               if(c1==2)
223                               {
224                                   f=rand.nextInt(2);
225                               }
226                               if(f==0)
227                               {
228                                   fu="+";
229                                   g=d+g;
230                                  Repeat1[s]="("+d+fu+"("+Repeat1[s]+")";
231                               }
232                               if(f==1)
233                               {
234                                   fu="-";
235                                   if(g>d)
236                                   {
237                                       g=g-d;
238                                      Repeat1[s]="("+Repeat1[s]+")"+fu+d+")";
239                                   }
240                                   if(g<=d)
241                                   {
242                                       g=d-g;
243                                      Repeat1[s]="("+d+fu+"("+Repeat1[s]+")";
244                                   }
245                               }
246                               if(f==2)
247                               {
248                                   fu="*";
249                                   g=d*g;
250                                  Repeat1[s]="("+d+fu+"("+Repeat1[s]+")";
251                               }
252                               if(f==3)
253                               {
254 
255                                   if(c4==1)
256                                   {
257                                       if(g!=0)
258                                       {
259                                           fu="/";
260                                           g=d/g;
261                                       }
262                                       else
263                                       {
264                                           flag=1;
265                                       }
266                                   }
267                                   if(c4==2)
268                                   {
269                                        if(a%d==0)
270                                        {
271                                           if(g!=0)
272                                           {
273                                               fu="/";
274                                               g=d/g;
275                                           }
276                                           else
277                                           {
278                                               flag=1;
279                                           }
280                                        }
281                                        if(a%d!=0)
282                                        {
283                                            flag=1;
284                                        }
285                                    }
286                                  Repeat1[s]="("+d+fu+"("+Repeat1[s]+")";
287                               }
288                         
289                         }
290                        
291                                            
292                          
293                }     
294            }
295            if(c7==2)//无括号
296            {
297                for(int q=0;q<w;q++)
298                {
299                     d=rand.nextInt(c3+1)%(c3-c2+1)+c2;
300                     p=rand.nextInt(2);
301                 
302                       //符号
303                          if(c1==1)
304                          {
305                               f=rand.nextInt(4);
306                          }
307                          if(c1==2)
308                          {
309                              f=rand.nextInt(2);
310                          }
311                          if(f==0)
312                          {
313                              fu="+";
314                          }
315                          if(f==1)
316                          {
317                              fu="-";
318                          }
319                          if(f==2)
320                          {
321                              fu="*";
322                          }
323                          if(f==3)
324                          {
325 
326                              if(c4==1)
327                              {
328                                  fu="/";
329                                  
330                              }
331                              if(c4==2)
332                              {
333                                   if(a%d==0)
334                                   {
335                                       fu="/";
336                                   }
337                                   if(a%d!=0)
338                                   {
339                                       flag=1;
340                                   }
341                               }
342                          }
343                         if(p==0)
344                         {
345                             if(fu.equals("+")&&d==0)
346                             {
347                                 flag=1;
348                             }
349                             else
350                             {
351                                 Repeat1[s]=Repeat1[s]+fu+d;
352                             }
353                             
354                         }
355                         if(p==1)
356                         {
357                             Repeat1[s]=d+fu+Repeat1[s];
358                         }
359                         
360                }
361            }
362           //判断重复
363            String str="";//中间判等字符串
364            StringBuffer stringBuffer = new StringBuffer (str); 
365            str=str+stringBuffer.reverse(); 
366            for(int w1=0;w1<w;w++)
367            {
368                if(w==0)//两位数
369                {
370                    if(Repeat1[s].equals(Repeat1[w1]))//简单判等
371                    {
372                         flag=1;
373                    }     
374                    if(Repeat1[s].equals(str))
375                    {
376                        flag=1;
377                    }
378                }
379                else
380                {
381                    if(Repeat1[s].equals(Repeat1[w1]))//简单判等
382                    {
383                         flag=1;
384                    }     
385                }
386            }
387            //输出
388            if(flag==1)
389            {
390                c5++;
391            }
392            else if(flag==0)
393            {
394               if((s+1)%c6==0)
395               {
396                   for(int k=0;k<10000000;k++)
397                        {
398                            String inputx=JOptionPane.showInputDialog(Repeat1[s]+"="+"请输入计算结果");
399                            if(inputx!=null&&!inputx.equals(""))
400                           {
401                              y=Integer.parseInt(inputx);
402                              break;
403                           }     
404                        }
405                        if(y==g)
406                          {
407                             // System.out.println(Repeat1[s]+"="+y+"正确");    
408                             str1=str1+Repeat1[s]+"="+y+"正确"+"<br>";
409                              m++;
410                          }
411                          if(y!=g)
412                          {
413                              //System.out.println(Repeat1[s]+"="+d+"不正确");
414                              str1=str1+Repeat1[s]+"="+y+"不正确"+"<br>";
415                          }
416               }
417               else
418               {
419                   for(int k=0;k<10000000;k++)
420                        {
421                            String inputx=JOptionPane.showInputDialog(Repeat1[s]+"="+"请输入计算结果");
422                            if(inputx!=null&&!inputx.equals(""))
423                           {
424                              y=Integer.parseInt(inputx);
425                              break;
426                           }     
427                        }
428                        if(y==g)
429                          {
430                              //System.out.print(Repeat1[s]+"="+y+"正确");    
431                              str1=str1+Repeat1[s]+"="+y+"正确";
432                              m++;
433                          }
434                          if(y!=g)
435                          {
436                              //System.out.print(Repeat1[s]+"="+y+"不正确");
437                              str1=str1+Repeat1[s]+"="+y+"不正确";
438                          }
439               }
440            }
441        }
442       // System.out.println("共"+c5+"道题"+"    "+m+"道题正确");
443       str1=str1+"<br>"+"共"+c5+"道题"+"    "+m+"道题正确";
444 }
445   if(c==2)
446   {
447        String []Repeat1=new String[2*c5];
448        String []Repeat2=new String[2*c5];
449        for(int s=0;s<c5;s++)
450        {
451            int sx=s;
452 
453           //数值范围
454              a=rand.nextInt(c3+1)%(c3-c2+1)+c2;
455              b=rand.nextInt(c3+1)%(c3-c2+1)+c2;
456              d=rand.nextInt(c3+1)%(c3-c2+1)+c2;
457              e=rand.nextInt(c3+1)%(c3-c2+1)+c2;
458              String s1="",s2="";//两个真分数的字符串
459              if(b==0)
460              {
461                  flag=1;
462              }
463              else if(b!=0)
464              { 
465                  if(a<b)
466                  {
467                      int r = b % a;
468                         while(r != 0){
469                           b = a;
470                           a= r;
471                           r = b % a;
472                           h=a;
473                         }
474                         
475                      //h=f(Math.abs(a),Math.abs(b));
476                      s1=(a/h)+"/"+(b/h);
477                     
478                  }
479                  if(a>b)
480                  {
481                      int r = a % b;
482                         while(r != 0){
483                           a = b;
484                           b = r;
485                           r = a % b;
486                           h=b;
487                         }
488                      //h=f(Math.abs(b),Math.abs(a));
489                      s1=(b/h)+"/"+(a/h);
490                  }
491                  if(a==b)
492                  {
493                      b++;
494                      int r = b % a;
495                         while(r != 0){
496                           b = a;
497                           a= r;
498                           r = b % a;
499                           h=a;
500                         }
501                     // h=f(Math.abs(a-1),Math.abs(b));
502                      s1=(a/h)+"/"+(b/h);
503                  }
504              }
505              if(e==0) 
506              {
507                  flag=1;
508              }
509              else
510              {
511                  if(d<e)
512                  {
513                      int r = e % d;
514                         while(r != 0){
515                           e = d;
516                           d = r;
517                           r = e % d;
518                           h=d;
519                         }
520                     // h=f(Math.abs(d),Math.abs(e));
521                      s2=(d/h)+"/"+(e/h);
522                  }
523                  if(d>e)
524                  {
525                      int r = d % e;
526                         while(r != 0){
527                           d = e;
528                           e= r;
529                           r = d % e;
530                           h=e;
531                         }
532                     // h=f(Math.abs(e),Math.abs(d));
533                      s2=(e/h)+"/"+(d/h);
534                  }
535                  if(d==e)
536                  {
537                      e++;
538                      int r = e% d;
539                         while(r != 0){
540                           e = d;
541                           d = r;
542                           r = d % e;
543                           h=d;
544                         }
545                     // h=f(Math.abs(d-1),Math.abs(e));
546                      s2=(d/h)+"/"+(e/h);
547                  }
548              }
549             
550               //符号
551              f=rand.nextInt(4);
552              if(f==0)
553              {
554                  fu="+";
555              }
556              if(f==1)
557              {
558                  fu="-";
559              }
560              if(f==2)
561              {
562                  fu="*"; 
563              }
564              if(f==3)
565              {
566                  if(d!=0)
567                  {
568                      fu="/";
569                  }
570                  if(d==0)
571                  {
572                      flag=1;
573                  }
574              }
575              Repeat1[s]=s1+fu+s2;
576              //String str1=s2+fu+s1;
577              //判断重复
578              int cc=0;
579              for(int ss=0;ss<sx;ss++)
580              {
581                  if(Repeat1[s].equals(Repeat1[ss]))
582                  {
583                      flag=1;
584                  }
585                  else
586                  {
587                      flag=0;
588                  }
589                  
590              }
591              //输出
592              Repeat2[s]="("+s1+")"+fu+"("+s2+")";
593              if(flag==1)
594              {
595                   c5++;
596              }
597              else if(flag==0)
598              {
599                  if((s+1)%c6==0)
600                  {
601                      //System.out.println(Repeat2[s]+"=  ");
602                      str1=str1+Repeat2[s]+"=  "+"<br>";
603                  }
604                  else
605                  {
606                     // System.out.print(Repeat2[s]+"=  ");
607                      str1=str1+Repeat2[s]+"=  ";
608                  }
609              }
610               
611        }
612   }
613   
614   %>
615   <%=str1 %>
616  <table>
617  <tr>
618  </tr>
619  </table>
620 </body>
621 </html>



运行结果:



结果分析:无括号整数运算,以及分数运算都不能实现
 
原文地址:https://www.cnblogs.com/muamu/p/5372518.html