zoukankan      html  css  js  c++  java
  • 软件工程结对作业01--四则运算Web版

    一.设计思想:

      首先,写出一个菜单界面,有两个选项一个是分数,一个是整数。而这两个标签后面则是转向其更详细的菜单,题目数量,有无括号,运算的项数等等详细功能,再点击这两个按钮之后,就会跳转过去。当选择整数运算时,显示出需要的菜单,输入完要求之后,跳转到生成算式的JSP文件,在此文件中首先是用request方法来获取上个页面中你所需要的功能,然后再强制类型转化来为下面使用,通过随机数生成,分别生成参与运算的数和符号,0代表加法1代表减法3代表乘法4代表除法。选择有负数和有余数式子生成,选择没有负数或者没有余数的情况下,就需要将随机的数进行运算,符合条件flag=1,不符合条件的flag=0。定义一个数来表示他的结果,在每个运算符号的if语句中,将结果运算出来,在整个式子都通过前面的用户需求时,将运算数和符号连成一个字符串,然后再进行查重,如果没有重复则flag1=1,如果有重复flag1=0。当全部满足条件时,在页面中显示出来,并且在式子右侧写一个文本框用来填写结果。然后设置一个统计按钮,填完结果之后,统计的答题情况,我是用session方法来保存式子数组和答案数组的。然后跳转到核对界面进行核对,如果对了提示回答正确,count++,如果错误提示错误。上面是两个数的运算,多个数的运算则是用的先生成两个数的运算,然后在随机是否生成括号,如果生成然后在随机括号的位置是在这一组上的前面加括号,还是后面加括号。上面就是整数部分的运算。分数部分的运算和整数部分差不多,首先随机生成四个数两个构成一个分数,然后再定义个随机数来表示运算符。然后,分子分母进行比较,是否是真分数。如果不是此次循环结束,i--重新开始。需要满足的条件基本上和整数差不多,不过需要在jsp中写一个求最大公约数的方法,来进行化简,在运算的时候先运算然后进行化简。最后数字和符号组成字符串,结果字符串。通过session方法进行保存。跳到核对界面进行核对。多个分数运算有无括号和整数的原理也一致。最后来说说数据库,在jsp中连接数据库的话和在.java文件中连接有所不同,在加载驱动时,加载驱动语句右面要加.Instance();才能加载成功。然后在情况下,所满足条件的生成式子。通过SQL增加语句进行写入数据库。

    二.程序源代码:

      开始界面

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>菜单页面</title>
    
    </head>
    <body >
    	<div align="center">
    	<br/>
    	<br/>
    	<br/>
    	<br/>
    	<br/>
    	<br/>	
    	<a href="zs.jsp"  >●整数运算</a>
    	<br/>
    	<br/>
    	<a href="fens.jsp">⊙分数运算</a>
    	</div>
    </body>
    </html>
    

       整数菜单:

      

    <%@ 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>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>整数二级菜单页面</title>
    </head>
    <body>
    	<form name="form1" method=post action="index.jsp">
    	<center> 整数四则运算</center>
    	<table align="center">
    	<tr>
    	<td>请输入需要生成的题目数量</td>
    	<td><input name="shuliang" id="shuliang" type="text" > </td>
    	</tr>
    	<tr>
    	<td>
    		 请输入最小值
    	</td>
    		<td>
    		<input name="zuixiao" id="zuixiao" type="text"> 
    		</td>
    	</tr>
    	 <tr>
    	 <td>请输入最大值</td>
    	 <td> <input name="zuida" id="zuida" type="text"> </td>
    	 </tr>
    	 <tr>
    	 <td> 请选择是否需要括号1有2没有</td>
    	 <td> <input name="kuohao" id="kuohao" type="text"> </td>
    	 </tr>
    	 <tr>
    	  <td>请选择生成算式的位数1两位数2多位数</td>
    	  <td><input name="weishu" id="weishu" type="text"> </td>
    	 </tr>
    	 <tr>
    	  <td>加减有无负数</td>
    	  <td><input name="fs" id="fs" type="text"> </td>
    	  </tr>
    	  <tr>
    	  <td> 除法有无余数</td>
    	  <td><input name="ys" id="ys"type="text"></td>
    	  </tr>
    	</table>
    		<center><input type="submit" value="开始出题"> </center>
    	</form> 
    </body>
    </html>
    

      整数试题和填写

      

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="java.sql.Connection,java.sql.DriverManager,java.sql.ResultSet"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>整数页面</title>
    </head>
    <body>
    <%
    	String driverStr = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    	Class.forName(driverStr).newInstance();
    	String connStr = "jdbc:sqlserver://localhost:1433; DatabaseName=Webys";
    	String dbusername = "sa";
    	String dbpassword = "123456";
    	Connection conn=null;
    	java.sql.Statement stmt=null;
    	
    	conn=DriverManager.getConnection(connStr, dbusername, dbpassword);
    	stmt=conn.createStatement();
    	String weishu=request.getParameter("weishu");
    	String kuohao=request.getParameter("kuohao");
    	String zuix=request.getParameter("zuixiao");
    	String zuid=request.getParameter("zuida");
    	String fss=request.getParameter("fs");
    	String yss=request.getParameter("ys");
    	if(Integer.parseInt(weishu)==1)
    	{
    		int ans=0;
    		String j=request.getParameter("shuliang");
    		int sl=Integer.valueOf(j);
    		int litt=Integer.valueOf(zuix);
    		int bi=Integer.valueOf(zuid);
    		String []ss=new String[sl];
    		String s="";
    		String daan[] =new String [sl];
    		String ans2[]=new String[sl];
    		int a[]=new int [sl];
    		int b[]=new int [sl];
    		int flag=0;
    		int flag1=0;	
    		int c[]=new int [sl];
    		int d[]=new int[sl];
    		int e[]=new int[sl];
    		int fs=Integer.valueOf(fss);
    		int ys=Integer.valueOf(yss);
    		for(int i=0;i<sl;i++)
    		{
    			daan[i]="name"+i;
    			flag1=0;
    			a[i]=(int)(Math.random()*(bi-litt)+1+litt);
    			b[i]=(int)(Math.random()*(bi-litt)+1+litt);
    		 	c[i]=(int)(Math.floor((Math.random()*4)));
    			if(fs==1)
    			{
    				flag=0;
    			}
    			if(fs==2)
    			{
    			   if(c[i]==1)
    			   {
    					if((a[i]-b[i])>=0)
    					{
    						flag=0;
    					}
    					else
    					{
    						flag=1;
    					}
    			   }
    			}
    		
    			if(c[i]==0)
    			{
    				s=" + ";
    				ans=a[i]+b[i];
    			}
    			if(c[i]==1)
    			{
    				s=" - ";
    				ans=a[i]-b[i];
    			}
    			if(c[i]==2)
    			{
    				s=" * ";
    				ans=a[i]*b[i];
    			}
    			if(c[i]==3)
    			{
    				
    				if(b[i]!=0)
    				{
    					if(ys==1)
    					{
    						s=" ÷ ";
    						ans=a[i]/b[i];
    					}
    					if(ys==2)
    					{
    						if((a[i]%b[i])==0)
    						{
    							s=" ÷ ";
    							ans=a[i]/b[i];
    						}
    						else
    						{
    							flag=1;
    						}
    					}
    				}
    				else
    					flag=1;
    			}
    			ss[i]=a[i]+s+b[i];
    			for(int i1=0;i1<i;i1++)   //查重
    			{
    				if((a[i1]==a[i])&&(b[i1]==b[i])&&(c[i1]==c[i]))
    					flag1=1;			
    				if((a[i1]==b[i])&&(b[i1]==a[i])&&(c[i1]==0)&&(c[i]==0))
    					flag1=1;
    		
    				if((a[i1]==b[i])&&(b[i1]==a[i])&&(c[i1]==2)&&(c[i]==2))
    					flag1=1;
    			}
    			if((flag==0)&&(flag1==0))  //输出
    			{
    				String sql="INSERT INTO size VALUES ('"+ss[i]+"','"+ans+"')";
    				stmt.executeUpdate(sql);
    				ans2[i]=""+ans;
    				out.print(ss[i]); 
    				
    				%>
    				<br> 
    				<form name="form2" method="post" action="zscheck2.jsp">
    				 请输入答案<input name=<%=daan[i] %> type="text" id="daan">
    				 <br/>				 
    
    						<% 	
    		  	}
    			else
    			{
    				i--;
    			}
    			
    		}
    		
    		session.setAttribute("v1", ss);
    		session.setAttribute("v2", ans2);
    		%>
    	<input type="submit" value="统计结果"> </form>
    	<% 
    	}
    		 if(Integer.parseInt(weishu)==2)
    		 {
    			 String j=request.getParameter("shuliang");
    				int sl=Integer.valueOf(j);
    				int litt=Integer.valueOf(zuix);
    				int bi=Integer.valueOf(zuid);
    				String []ss=new String[sl];
    				String s="";
    				String daan[] =new String [sl];
    				int a[]=new int [sl];
    				int b[]=new int [sl];
    				int flag=0;
    				int flag1=0;
    				String [] ans2=new String[sl];
    				int ans=0;
    				int c[]=new int [sl];
    				int d[]=new int[sl];
    				int e[]=new int[sl];
    				int fs=Integer.valueOf(fss);
    				int ys=Integer.valueOf(yss);
    				int y=0;
    				int y1=0;
    				int y2=0;
    				String j1=request.getParameter("kuohao");
    				int y3=Integer.valueOf(j1);
    				for(int i=0;i<sl;i++)
    				{
    					daan[i]="name"+i;
    					int c1 []=new int [20000];
    					flag1=0;
    					y=(int )(Math.random()*4+3);//生成数的个数
    					y1=(int )(Math.random()*2);//有无括号
    					y2=(int )(Math.random()*2);//前后
    					a[i]=(int)(Math.random()*(bi-litt)+1+litt);
    					b[i]=(int)(Math.random()*(bi-litt)+1+litt);
    				 	c[i]=(int)(Math.floor((Math.random()*4)));
    					if(fs==1)
    					{
    						flag=0;
    					}
    					if(fs==2)// 没有负数
    					{
    					   if(c[i]==1)
    					   {
    							if((a[i]-b[i])>=0)
    							{
    								flag=0;
    							}
    							else
    							{
    								flag=1;
    							}
    					   }
    					}
    				
    					if(c[i]==0)
    					{
    						s=" + ";
    						ans=a[i]+b[i];
    					}
    					if(c[i]==1)
    					{
    						s=" - ";
    						ans=a[i]-b[i];
    					}
    					if(c[i]==2)
    					{
    						s=" * ";
    						ans=a[i]*b[i];
    					}
    					if(c[i]==3)
    					{
    						
    						if(b[i]!=0)
    						{
    							if(ys==1)
    							{
    								s=" ÷ ";
    								ans=a[i]/b[i];
    							}
    							if(ys==2)
    							{
    								if((a[i]%b[i])==0)
    								{
    									s=" ÷ ";
    									ans=a[i]/b[i];
    								}
    								else
    									flag=1;
    							}
    						}
    						else
    							flag=1;
    					}
    					ss[i]=a[i]+s+b[i];
    
    					if(y3==1)//有括号生成
    					{
    						for(int  r=0;r<(y-2);r++)
    						{
    							y1=(int )(Math.random()*2);//有无括号
    							y2=(int )(Math.random()*2);//前后
    							d[r]=(int)(Math.random()*(bi-litt)+1+litt);
    						 	c1[i]=(int )(Math.random()*4);
    		
    							if(c1[i]==0)
    							{
    								s=" + ";
    								ans=ans+d[r];
    							}
    							if(c1[i]==1)
    							{
    								s=" - ";
    								ans=ans-d[r];
    							}
    							if(c1[i]==2)
    							{
    								s=" * ";
    								ans=ans*d[r];
    							}
    							if(c1[i]==3)
    							{
    								
    								if(b[i]!=0)
    								{
    									if(ys==1)
    									{
    										s=" ÷ ";
    										ans=ans/d[r];
    									}
    									if(ys==2)
    									{
    										if((a[i]%b[i])==0)
    										{
    											s=" ÷ ";
    											ans=ans/d[r];
    										}
    										else
    											flag=1;
    									}
    								}
    								else
    									flag=1;
    							}
    							if(y1==1) //随机数生成没有括号情况
    							{
    								if(y2==0) //加在后面
    								{
    									ss[i]=ss[i]+s+d[r];
    								}
    								if(y2==1)  //加在前面
    								{
    									ss[i]=d[r]+s+ss[i];
    
    								}
    							}
    							if(y1==0) //随机数生成了括号
    							{
    								if(y2==0)  //加在后面
    								{
    									ss[i]="("+ss[i]+")"+s+d[r];
    									
    								}
    								if(y2==1)  //括号加在前边
    								{
    									ss[i]=d[r]+s+"("+ss[i]+")";
    
    								}
    							}
    							for(int i2=0;i2<i;i2++)
    							{
    								if(ss[i2]==ss[i])
    									flag1=1;
    								else
    									flag1=0;
    							}
    						}
    					}
    					if(y3==2)
    					{
    						for(int  r=0;r<(y-2);r++)
    						{
    							y1=(int)(Math.random()*2);//有无括号
    							y2=(int)(Math.random()*2);//前后
    							d[r]=(int)(Math.random()*(bi-litt)+1+litt);
    						 		c1[i]=(int)(Math.random()*4);
    
    							if(c1[i]==0)
    							{
    								s=" + ";
    								ans=ans+d[r];
    							}
    							if(c1[i]==1)
    							{
    								s=" - ";
    								ans=ans-d[r];
    							}
    							if(c1[i]==2)
    							{
    								s=" * ";
    								ans=ans*d[r];
    							}
    							if(c1[i]==3)
    							{
    								
    								if(b[i]!=0)
    								{
    									if(ys==1)
    									{
    										s=" ÷ ";
    										ans=ans/d[r];
    									}
    									if(ys==2)
    									{
    										if((a[i]%b[i])==0)
    										{
    											s=" ÷ ";
    											ans=ans/d[r];
    										}
    										else
    											flag=1;
    									}
    								}
    								else
    									flag=1;
    							}
    							if(y1==1) //没有括号
    							{
    								if(y2==0) //加在后面
    								{
    									ss[i]=ss[i]+s+d[r];
    
    								}
    								if(y2==1)	
    								{
    									ss[i]=d[r]+s+ss[i];
    
    								}
    							}
    							for(int i2=0;i2<i;i2++)
    							{
    								if(ss[i2]==ss[i])
    									flag1=1;
    								else
    									flag1=0;
    							}
    
    					} //小for 循环
    					
    				}
    					
    					if((flag==0)&&(flag1==0))
    					{
    						String sql="INSERT INTO size VALUES ('"+ss[i]+"','"+ans+"')";
    						stmt.executeUpdate(sql);
    						ans2[i]=""+ans;
    						out.print(ss[i]+" "); %>
    						<br> 
    					<form name="form2" method="post" action="zscheck2.jsp">
    						 请输入答案<input name=<%=daan[i] %> type="text" id="daan">
    				 	<br/>				 
    						<% 
    					
    					}
    					else
    						i--;
    			}
    				session.setAttribute("v1", ss);
    				session.setAttribute("v2", ans2);%>
    				<input type="submit" value="统计结果"> </form>
    				<% 
    				
    		  }	
    		  %>
    	
    </body>
    </html>
    

      结果核查

      

    <%@ 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>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<%
         String[] s1= (String[])session.getAttribute("v1");
         String[] answer= (String[])session.getAttribute("v2");
         String[] daan=new String[s1.length];
         int count=0;//正确答案的个数
         for(int i=0;i<s1.length;i++)
         {
            out.print("运算式为:");
             out.print(s1[i]+"  ");
            out.print("您的输入结果为:");
             daan[i]=request.getParameter("name"+i);
             out.print(daan[i]+"   ");
             out.print("正确结果为:");
             out.print(answer[i]);
            if(Integer.parseInt(daan[i])==Integer.parseInt(answer[i]))
             {
                out.print("恭喜你答对了!");
                count++;
             }
            else
             {
                 out.print("很遗憾,你答错了!");
             }
             out.print("<br>");
         }
         out.print("你一共答对的题目数:");
         out.print(count);
     %>
    </body>
    </html>
    

      分数菜单:

      

    <%@ 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>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>分数二级菜单</title>
    
    </head>
    <body >
    	<form name="form3" method=post action="fes.jsp">
    	<center> 整数四则运算</center>
    	<table align="center">
    	<tr>
    	<td>请输入需要生成的题目数量</td>
    	<td><input name="shuliang" id="shuliang" type="text" > </td>
    	</tr>
    	 <tr>
    	 <td>请输入分数的最大值</td>
    	 <td> <input name="zuida" id="zuida" type="text"> </td>
    	 </tr>
    	 <tr>
    	 <td> 请选择是否需要括号1有2没有</td>
    	 <td> <input name="kuohao" id="kuohao" type="text"> </td>
    	 </tr>
    	 <tr>
    	  <td>请选择生成算式的位数1两位数2多位数</td>
    	  <td><input name="weishu" id="weishu" type="text"> </td>
    	 </tr>
    	 <tr>
    	  <td>加减有无负数</td>
    	  <td><input name="fs" id="fs" type="text"> </td>
    	  </tr>
    	  <tr>
    	  <td> 除法有无余数</td>
    	  <td><input name="ys" id="ys"type="text"></td>
    	  </tr>
    	</table>
    		<center><input type="submit" value="开始出题"> </center>
    	</form> 
    </body>
    </html>
    

      分数出题:

      

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="java.sql.Connection,java.sql.DriverManager,java.sql.ResultSet"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%!
     	class gg
     	{
           int gongbei(int x,int y)
    	 {
    		 int z;
    		 for(z=x;;z++)
    		 {
    			if(z%x==0&&z%y==0)
    				break;
    		 }
    		 return z;
    	 }
    	   int gongyue(int x,int y)
    	  {
    		  int z;
    		  for(z=x;z>0;z--)
    		  {
    			 if(x%z==0&&y%z==0)
    			 	break;
    		  }
    		return z;
    	  }
     	}
    %>
    <% 
    	String driverStr = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    	Class.forName(driverStr).newInstance();
    	String connStr = "jdbc:sqlserver://localhost:1433; DatabaseName=Webys";
    	String dbusername = "sa";
    	String dbpassword = "123456";
    	Connection conn=null;
    	java.sql.Statement stmt=null;
    	
    	conn=DriverManager.getConnection(connStr, dbusername, dbpassword);
    	stmt=conn.createStatement();
    	String weishu=request.getParameter("weishu");
    	String kuohao=request.getParameter("kuohao");
    	String zuid=request.getParameter("zuida");
    	String fss=request.getParameter("fs");
    	String yss=request.getParameter("ys");
    	gg g=new gg();
    	if(Integer.parseInt(weishu)==1)
    	{
    		int fenzi=0;
    		int fenmu=0;
    		int huajian=0;
    		String j=request.getParameter("shuliang");
    		int sl=Integer.valueOf(j);
    		int bi=Integer.valueOf(zuid);
    		String []ss=new String[sl];
    		String daan[] =new String [sl];
    		String jj[]=new String[sl];
    		String s="";
    		int ans=0;
    		String ans1[]=new String[sl];
    		int a[]=new int [sl];
    		int a1[]=new int[sl];
    		int b[]=new int [sl];
    		int b1[]=new int[sl];
    		int flag=0;
    		int flag1=0;
    		int flag2=0;
    		int flag3=0;
    		int c[]=new int [sl];
    		int d[]=new int[sl];
    		int d1[]=new int[sl];
    		int e[]=new int[sl];
    		int fs=Integer.valueOf(fss);
    		int ys=Integer.valueOf(yss);
    			for(int i=0;i<sl;i++)
    			{
    				daan[i]="name"+i;
    				flag1=0;
    				flag2=0;
    				a[i]=(int)(Math.random()*(bi-1-1)+1);
    				a1[i]=(int)(Math.random()*(bi-1)+1);
    				b[i]=(int)(Math.random()*(bi-1-1)+1);
    				b1[i]=(int)(Math.random()*(bi-1)+1);
    				c[i]=(int)(Math.random()*4);
    				if((a[i]>=a1[i])||(b[i]>=b1[i])) //判断是否为真分数
    				{
    					flag2=1;
    				}
    				else   //是真分数继续进行
    				{
    					flag2=0;
    				}
    					
    				if(fs==1)  //有负数
    				{
    					flag=0;
    				}
    				if(fs==2)  //没有负数
    				{
    				   if(c[i]==1)
    				   {
    						if((a[i]*b1[i]-a1[i]*b[i])>=0)
    						{
    							flag=0;
    						}
    						else
    						{
    							flag=1;
    						}
    				   }
    				}
    			
    				if(c[i]==0)
    				{
    					s=" + ";
    					fenzi=(a[i]*b1[i])+(a1[i]*b[i]);
    					fenmu=a1[i]*b1[i];
    						huajian=g.gongyue(fenzi, fenmu);
    						int o=fenzi/huajian;
    						int p=fenmu/huajian;
    						if(o<p)
    						{
    							jj[i]=o+"/"+p;
    						}
    						if((o>p)&&(o%p!=0))
    						{
    							int you=o/p;
    							o=o-p*you;
    							jj[i]=you+"|"+o+"/"+p;
    						}
    						if((o>p)&&(o%p==0))
    						{
    							int you=o/p;
    							jj[i]=""+you;
    						}
    						
    				}
    				if(c[i]==1)
    				{
    					s=" - ";
    					fenzi=(a[i]*b1[i])-(a1[i]*b[i]);
    					fenmu=a1[i]*b1[i];
    					if(fenzi>0)
    					{
    						huajian=g.gongyue(fenzi, fenmu);
    						int o=fenzi/huajian;
    						int p=fenmu/huajian;
    						if(o<p)
    						{
    							jj[i]=o+"/"+p;
    						}
    						if((o>p)&&(o%p!=0))
    						{
    							int you=o%p;
    							o=o-p*you;
    							jj[i]=you+"|"+o+"/"+p;
    						}
    						if((o>p)&&(o%p==0))
    						{
    							int you=o%p;
    							jj[i]=""+you;
    						}
    					}
    					if(fenzi<0)
    					{
    						int t=0-fenzi;
    						huajian=g.gongyue(t, fenmu);
    						int o=fenzi/huajian;
    						int p=fenmu/huajian;
    						if(o<p)
    						{
    							jj[i]=o+"/"+p;
    						}
    						if((o>p)&&(o%p!=0))
    						{
    							int you=o/p;
    							o=o-p*you;
    							jj[i]=you+"|"+o+"/"+p;
    						}
    						if((o>p)&&(o%p==0))
    						{
    							int you=o/p;
    							jj[i]=""+you;
    						}
    					}
    					if(fenzi==0)
    					{
    						jj[i]=""+0;
    					}
    				}
    				if(c[i]==2)
    				{
    					s=" * ";
    					fenzi=a[i]*b[i];
    					fenmu=a1[i]*b1[i];
    					huajian=g.gongyue(fenzi, fenmu);
    					int o=fenzi/huajian;
    					int p=fenmu/huajian;
    					if(o<p)
    					{
    						jj[i]=o+"/"+p;
    					}
    					if((o>p)&&(o%p!=0))
    					{
    						int you=o/p;
    						o=o-p*you;
    						jj[i]=you+"|"+o+"/"+p;
    					}
    					if((o>p)&&(o%p==0))
    					{
    						int you=o/p;
    						jj[i]=""+you;
    					}
    				}
    				if(c[i]==3)
    				{
    					
    						if(ys==1)
    						{
    							s=" ÷ ";
    							fenzi=a[i]*b1[i];
    							fenmu=a1[i]*b[i];
    							huajian=g.gongyue(fenzi,fenmu);
    							int o=fenzi/huajian;
    							int p=fenmu/huajian;
    							
    							if(o<p)
    							{
    								jj[i]=o+"/"+p;
    							}
    							if((o>p)&&(o%p!=0))
    							{
    								int you=o/p;
    								o=o-p*you;
    								jj[i]=you+"|"+o+"/"+p;
    							}
    							if((o>p)&&(o%p==0))
    							{
    								int you=o/p;
    								jj[i]=""+you;
    							}
    						}
    						if(ys==2)
    						{
    							if(((a[i]*b1[i])%(a1[i]*b[i]))==0)
    							{
    								s=" ÷ ";
    								fenzi=a[i]*b1[i];
    								fenmu=a1[i]*b[i];
    								huajian=g.gongyue(fenzi,fenmu);
    								int o=fenzi/huajian;
    								int p=fenmu/huajian;
    								if(o<p)
    								{
    									jj[i]=o+"/"+p;
    								}
    								if((o>p)&&(o%p!=0))
    								{
    									int you=o%p;
    									o=o-p*you;
    									jj[i]=you+"|"+o+"/"+p;
    								}
    								if((o>p)&&(o%p==0))
    								{
    									int you=o%p;
    									jj[i]=you+"";
    								}
    							}
    							else
    							{
    								flag=1;
    							}
    						}
    	
    				}
    				int y=g.gongyue(a[i],a1[i]);
    				int y1=g.gongyue(b[i],b1[i]);
    				a[i]=a[i]/y;
    				a1[i]=a1[i]/y;
    				b[i]=b[i]/y1;
    				b1[i]=b1[i]/y1;
    				ss[i]=a[i]+"/"+a1[i]+s+b[i]+"/"+b1[i];
    				for(int i1=0;i1<i;i1++)   //查重
    				{
    					if((a[i1]==a[i])&&(a1[i1]==a1[i])&&(b[i1]==b[i])&&(b1[i]==b1[i1])&&(c[i1]==c[i]))
    						flag1=1;			
    					if((a[i1]==b[i])&&(b[i1]==a[i])&&(c[i1]==0)&&(c[i]==0)&&(a1[i1]==b1[i])&&(b1[i1]==a1[i]))
    						flag1=1;
    			
    					if((a[i1]==b[i])&&(b[i1]==a[i])&&(c[i1]==2)&&(c[i]==2)&&(a1[i1]==b1[i])&&(b1[i1]==a1[i]))
    						flag1=1;
    				}
    				if((flag==0)&&(flag1==0)&&(flag2==0))  //输出
    				{
    					
    					String sql="INSERT INTO size VALUES ('"+ss[i]+"','"+jj[i]+"')";				
    					stmt.executeUpdate(sql);
    					ans1[i]=jj[i];
    					out.print(ss[i]);
    					
    					%>
    					<br> 
    					<form  name="form4" method="post" action="fscheck.jsp">
    					 请输入答案<input name=<%=daan[i] %> type="text" id="daan">
    					 <br/>		
    					<% 		 
    				}
    				else
    				{
    					i--;
    				}
    			}
    			session.setAttribute("v1", ss);
    			session.setAttribute("v2", ans1);
    			%>
    		<input type="submit" value="统计结果"> </form>
    		<% 
    	}
    	if(Integer.parseInt(weishu)==2)
    	{
    		String j=request.getParameter("shuliang");
    		int sl=Integer.valueOf(j);
    		int bi=Integer.valueOf(zuid);
    		String []ss=new String[sl];
    		String daan[] =new String [sl];
    		String s="";
    		int ans=0;
    		String ans1[]=new String[sl];
    		int a[]=new int [sl];
    		int a1[]=new int[sl];
    		int b[]=new int [sl];
    		int b1[]=new int[sl];
    		int flag=0;
    		int flag1=0;
    		int flag2=0;
    		int flag3=0;
    		int c[]=new int [sl];
    		int d[]=new int[sl];
    		int d1[]=new int[sl];
    		int e[]=new int[sl];
    		int fs=Integer.valueOf(fss);
    		int ys=Integer.valueOf(yss);
    		int y=0;
    		int y1=0;
    		int y2=0;
    
    		
    		for(int i=0;i<sl;i++)
    		{
    			String j1=request.getParameter("kuohao");
    			int y3=Integer.valueOf(j1);
    			int c1 []=new int [20000];
    			flag1=0;
    			flag2=0;
    			y=(int)(Math.random()*4+3);//生成数的个数
    			y1=(int)(Math.random()*2);//有无括号
    			y2=(int)(Math.random()*2);//前后
    			a[i]=(int)(Math.random()*(bi-1-1)+1);
    			a1[i]=(int)(Math.random()*(bi-1)+1);
    			b[i]=(int)(Math.random()*(bi-1-1)+1);
    			b1[i]=(int)(Math.random()*(bi-1)+1);
    			c[i]=(int)(Math.random()*4);
    			if((a[i]>=a1[i])||(b[i]>=b1[i])) //判断是否为真分数
    			{
    				flag2=1;
    			}
    			else   //是真分数继续进行
    			{
    				flag2=0;
    			}
    			if(fs==1)
    			{
    				flag=0;
    			}
    			if(fs==2)// 没有负数
    			{
    			   if(c[i]==1)
    			   {
    					if((a[i]*b1[i]-a1[i]*b[i])>=0)
    					{
    						flag=0;
    					}
    					else
    					{
    						flag=1;
    					}
    			   }
    			}
    		
    			if(c[i]==0)
    			{
    				s=" + ";
    			}
    			if(c[i]==1)
    			{
    				s=" - ";
    			}
    			if(c[i]==2)
    			{
    				s=" * ";
    			}
    			if(c[i]==3)
    			{
    				
    					if(ys==1)
    					{
    						s=" ÷ ";
    					}
    					if(ys==2)
    					{
    						if(((a[i]*b1[i])%(a1[i]*b[i]))==0)
    						{
    							s=" ÷ ";
    						}
    						else
    						{
    							flag=1;
    						}
    					}
    
    			}
    			int z=g.gongyue(a[i],a1[i]);
    			int z1=g.gongyue(b[i],b1[i]);
    			a[i]=a[i]/z;
    			a1[i]=a1[i]/z;
    			b[i]=b[i]/z1;
    			b1[i]=b1[i]/z1;
    			c1[i]=(int)(Math.random()*4);
    			ss[i]=a[i]+"/"+a1[i]+s+b[i]+"/"+b1[i];
    			if(y3==1)//有括号生成
    			{
    				for(int  r=0;r<(y-2);r++)
    				{
    					
    					y1=(int)(Math.random()*2);//有无括号
    					y2=(int)(Math.random()*2);//前后
    					d[r]=(int)(Math.random()*(bi-1-1)+1);
    					d1[r]=(int)(Math.random()*(bi-1)+1);
    					int z3=g.gongyue(d[r],d1[r]);
    					d[r]=d[r]/z3;
    					d1[r]=d1[r]/z3;
    					if(d[r]>=d1[r])
    					{
    						flag3=1;
    					}
    					else
    					{
    						flag3=0;
    					}
    					if(c1[i]==0)
    					{
    						s=" + ";
    					}
    					if(c1[i]==1)
    					{
    						s=" - ";
    					}
    					if(c1[i]==2)
    					{
    						s=" * ";
    					}
    					if(c1[i]==3)
    					{
    						
    
    							if(ys==1)
    							{
    								s=" ÷ ";
    							}
    							if(ys==2)
    							{
    							  if(y2==0)
    							  {
    								if((a[i]*b1[i])%(a1[i]*b[i])==0)
    								{
    									s=" ÷ ";
    								}
    								else
    									flag=1;
    							  }
    							}
    					}
    					if(y1==0) //随机数生成没有括号情况
    					{
    						if((y2==0)&&(flag3==0)) //加在后面
    						{
    							ss[i]=ss[i]+s+d[r]+"/"+d1[r];
    						}
    						if((y2==1)&&(flag3==0))  //加在前面
    						{
    							ss[i]=d[r]+"/"+d1[r]+s+ss[i];
    
    						}
    					}
    					if(y1==1) //随机数生成了括号
    					{
    						if((y2==0)&&(flag3==0))  //加在后面
    						{
    							ss[i]="("+ss[i]+")"+s+d[r]+"/"+d1[r];
    							
    						}
    						if((y2==1)&&(flag3==0))  //括号加在前边
    						{
    							ss[i]=d[r]+"/"+d1[r]+s+"("+ss[i]+")";
    
    						}
    					}
    					for(int i2=0;i2<i;i2++)
    					{
    						if(ss[i2]==ss[i])
    							flag1=1;
    						else
    							flag1=0;
    					}
    					if(flag3!=0)
    						r--;
    				}
    			}
    			if(y3==2)  //没有括号
    			{
    				for(int  r=0;r<(y-2);r++)
    				{
    					c1[i]=(int)(Math.random()*4);
    					y1=(int)(Math.random()*2);//有无括号
    					y2=(int)(Math.random()*2);//前后
    					d[r]=(int)(Math.random()*(bi-1-1)+1);
    					d1[r]=(int)(Math.random()*(bi-1)+1);
    					int z4=g.gongyue(d[r],d1[r]);
    					d[r]=d[r]/z4;
    					d1[r]=d1[r]/z4;
    					if(d[r]>=d1[r])
    					{
    						flag3=1;
    					}
    					else
    					{
    						flag3=0;
    					}
    
    					if(c1[i]==0)
    					{
    						s=" + ";
    					}
    					if(c1[i]==1)
    					{
    						s=" - ";
    					}
    					if(c1[i]==2)
    					{
    						s=" * ";
    					}
    					if(c1[i]==3)
    					{
    						if(ys==1)
    							{
    								s=" ÷ ";
    							}
    							if(ys==2)
    							{
    								if((a[i]*b1[i])%(a1[i]*b[i])==0)
    								{
    									s=" ÷ ";
    								}
    								else
    									flag=1;
    							}
    					}
    				
    					if(y1==1) //没有括号
    					{
    						if((y2==0)&&(flag3==0)) //加在后面
    						{
    							ss[i]=ss[i]+s+d[r]+"/"+d1[r];
    
    						}
    						if((y2==1)&&(flag3==0))	
    						{
    							ss[i]=d[r]+"/"+d1[r]+s+ss[i];
    
    						}
    					}
    					for(int i2=0;i2<i;i2++)
    					{
    						if(ss[i2]==ss[i])
    							flag1=1;
    						else
    							flag1=0;
    					}
    			
    					if(flag3!=0)
    						r--;
    			} //小for 循环
    			
    		}
    			
    			if((flag==0)&&(flag1==0)&&(flag2==0)&&(flag3==0))
    			{
    				out.print(ss[i]);
    				%>
    				<br> 
    				<form  name="form5" method="post" action="fscheck.jsp">
    				 请输入答案<input name=<%=daan[i] %> type="text" id="daan">
    				 <br/>		
    				<% 		
    			}
    			else
    				i--;
    	  }
    		session.setAttribute("v1", ss);
    		session.setAttribute("v2", ans1);
    		%>
    	<input type="submit" value="统计结果"> </form>
    	<% 
    	}
    %>
    </body>
    </html>
    

      分数核查:

      

    <%@ 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>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
         String[] s1= (String[])session.getAttribute("v1");
         String[] answer= (String[])session.getAttribute("v2");
         String[] daan=new String[s1.length];
         int count=0;//正确答案的个数
         for(int i=0;i<s1.length;i++)
         {
            out.print("运算式为:");
             out.print(s1[i]+"  ");
            out.print("您的输入结果为:");
             daan[i]=request.getParameter("name"+i);
             out.print(daan[i]+"   ");
             out.print("正确结果为:");
             out.print(answer[i]);
            if(daan[i].equals(answer[i]))
             {
                out.print("恭喜你答对了!");
                count++;
             }
            else
             {
                 out.print("很遗憾,你答错了!");
             }
             out.print("<br>");
         }
         out.print("你一共答对的题目数:");
         out.print(count);
     %>
    </body>
    </html>
    

     三.运行结果截图:

      

      

      

     

    四.编程总结:

      在编程当中,遇到了很多麻烦,下面来阐述一下。首先,遇到的是怎么将菜单填入的值让自己和java里面用上,后来通过request方法来解决这个问题。还有就是随机数的生成,之前一直用的是Random类来实现随机数的生成,但是在JSP中好像不能直接那么用了,最后用的(int)(Math.random*n)方法。通过定义一个字符串数字,解决了文本框中输入值,和正确结果比对的问题。在有数据库连接方面,如果想在JSP中进行数据库的连接,在java中的驱语句后面还要加上.Instance()才能加载上。而且的Jdbc还要放在lib文件夹下。另外还有一个问题就是,在分数的情况下,执行SQL语句时,例如用1'1/5表示一又五分之时,会有二义性,最后将'改为|.

     五.开发之前预计的PSP表格

      

    六.完成之后PSP

      

  • 相关阅读:
    UML 基础: 组件图
    如何绘制 UML 活动图
    JVM简介
    【转】Adapter 模式
    用例建模技巧
    【转】JVM内存模型以及垃圾回收
    从UML到BPEL
    用例建模指南
    关于 Assigned
    符号和基本语法
  • 原文地址:https://www.cnblogs.com/xieshiyu/p/6675477.html
Copyright © 2011-2022 走看看