一.設計思想:
1)寫出一個菜單界面,有兩個選項一個是分數,一個是整數。
? ? ?2)而這兩個標簽后面則是轉向其更詳細的菜單,題目數量,有無括號,運算的項數等等詳細功能,再點擊這兩個按鈕之后,就會跳轉過去。?
? ? ?3)當選擇整數運算時,顯示出需要的菜單,輸入完要求之后,跳轉到生成算式的JSP文件,在此文件中首先是用request方法來獲取上個頁
面中你所需要的功能,然后再強制類型轉化來為下面使用,通過隨機數生成,分別生成參與運算的數和符號,0代表加法1代表減法3代表乘法4代
表除法。選擇有負數和有余數式子生成,選擇沒有負數或者沒有余數的情況下,就需要將隨機的數進行運算,符合條件flag=1,不符合條件的flag
=0。定義一個數來表示他的結果,在每個運算符號的if語句中,將結果運算出來,在整個式子都通過前面的用戶需求時,將運算數和符號連成一個
字符串,然后再進行查重,如果沒有重復則flag1=1,如果有重復flag1=0。當全部滿足條件時,在頁面中顯示出來,并且在式子右側寫一個文本
框用來填寫結果。然后設置一個統計按鈕,填完結果之后,統計的答題情況,我們是用session方法來保存式子數組和答案數組的。然后跳轉到核對界
面進行核對,如果對了提示回答正確,count++,如果錯誤提示錯誤。上面是兩個數的運算,多個數的運算則是用的先生成兩個數的運算,然后在隨
機是否生成括號,如果生成然后在隨機括號的位置是在這一組上的前面加括號,還是后面加括號。上面就是整數部分的運算。
? 4)分數部分的運算和整數部分差不多,首先隨機生成四個數兩個構成一個分數,然后再定義個隨機數來表示運算符。然后,分子分母進行比較
,是否是真分數。如果不是此次循環結束,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>
整數菜單
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 <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" id="shuliang" type="text" > </td> 16 </tr> 17 <tr> 18 <td> 19 請輸入最小值 20 </td> 21 <td> 22 <input name="zuixiao" id="zuixiao" type="text"> 23 </td> 24 </tr> 25 <tr> 26 <td>請輸入最大值</td> 27 <td> <input name="zuida" id="zuida" type="text"> </td> 28 </tr> 29 <tr> 30 <td> 請選擇是否需要括號1有2沒有</td> 31 <td> <input name="kuohao" id="kuohao" type="text"> </td> 32 </tr> 33 <tr> 34 <td>請選擇生成算式的位數1兩位數2多位數</td> 35 <td><input name="weishu" id="weishu" type="text"> </td> 36 </tr> 37 <tr> 38 <td>加減有無負數</td> 39 <td><input name="fs" id="fs" type="text"> </td> 40 </tr> 41 <tr> 42 <td> 除法有無余數</td> 43 <td><input name="ys" id="ys"type="text"></td> 44 </tr> 45 </table> 46 <center><input type="submit" value="開始出題"> </center> 47 </form> 48 </body> 49 </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;}}}elseflag=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];}elseflag=1;}}elseflag=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];}elseflag=1;}}elseflag=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;elseflag1=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];}elseflag=1;}}elseflag=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;elseflag1=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/> <%}elsei--;}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=" ÷ ";}elseflag=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;elseflag1=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=" ÷ ";}elseflag=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;elseflag1=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/> <% }elsei--;}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>
三.運行結果截圖:
4遇到的問題
在編程當中,遇到了很多麻煩,下面來闡述一下。首先,遇到的是怎么將菜單填入的值讓自己和java里面用上,后來通過request方法來解決這個問題。還有就是隨機數的生成,之前一直用的是Random類來實現隨機數的生成,但是在JSP中好像不能直接那么用了,最后用的(int)(Math.random*n)方法。通過定義一個字符串數字,解決了文本框中輸入值,和正確結果比對的問題。在有數據庫連接方面,如果想在JSP中進行數據庫的連接,在java中的驅語句后面還要加上.Instance()才能加載上。而且的Jdbc還要放在lib文件夾下。另外還有一個問題就是,在分數的情況下,執行SQL語句時,例如用1'1/5表示一又五分之時,會有二義性,最后將'改為|.