小组成员: 信1505-1班 20153274 罗振宇
信1505-1班 20153293 康学涛
任务要求:实现自动生成算术题,并且能够检查结果和将结果存放到数据库中的四则运算,并制作成网页版
程序设计思想:写好java程序后,需要将程序嵌入网页中,编写jsp脚本文件,使用数组来实现java和jsp的交互;session标签,可以实现网页之间参数的传递。
程序源代码:
1.界面设计:
Choose.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 4 5 6 733 34选择界面 8 17 18 19四则运算生成器20Welcome To User The System21 22请选择出题的范围23
2.
chuandi.jsp 通过session标签实现参数在网页之间的传递
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>选择界面 四则运算生成器Welcome To User The System请选择出题的范围
3.fenshu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import = "java.util.Random"%>Insert title here <%!class calculate2{ public int m,n,x,y,c;//定义4个变量,还有一个符号变量 public Random random=new Random(); String s;//生成的计算式储存咋m里面 int fanwei; public void shengcheng(int fanwei1) { fanwei=fanwei1; c=random.nextInt(4); x=random.nextInt(fanwei); y=random.nextInt(fanwei); m=random.nextInt(fanwei); n=random.nextInt(fanwei);//生成4个随机数在50以内,赋给x,y,m,n String fuhao; for(int i=0;;i++) { if(x==0)//不能生成0 { x=random.nextInt(fanwei); } else { break; } } for(int i=0;;i++) { if(y==0||y==x)//不能生成0 { y=random.nextInt(fanwei); } else { break; } } for(int i=0;;i++) { if(m==0)//不能生成0 { m=random.nextInt(fanwei); } else { break; } } for(int i=0;;i++) { if(n==0||m==n)//不能生成0 { n=random.nextInt(fanwei); } else { break; } } if(c==0)//通整数一样,0是加法,1减法,2乘法,3除法 { fuhao="+"; } else if(c==1) { fuhao="-"; } else if(c==2) { fuhao="*"; } else { fuhao="/"; } int gongyue=Gongyue(x,y); x=x/gongyue; y=y/gongyue; gongyue=Gongyue(m,n); m=m/gongyue; n=n/gongyue; } public String shuchu()//定义输出函数 { if(c==0) { if(x>y&&m>n)//生成的分母必须大于分子,输出不同的结果 { s=y+"/"+x+" + "+n+"/"+m+"="; return jisuan(x,y,m,n,c);//返回计算结果 } else if(x>y&&mc) { gongbei=a;//公倍数从大的开始 while(gongbei<=a*c) { if(gongbei%a==0&&gongbei%c==0) { break; } gongbei++; } } else { gongbei=c;//公倍数从大的开始 while(gongbei<=a*c) { if(gongbei%a==0&&gongbei%c==0) { break; } gongbei++; } } return gongbei; } public int Gongyue(int gongbei,int s3)//求最大公约数的函数 { int i=1,gongyue=0; if(gongbei>s3)//公约数从1到最小的数 { while(i<=s3) { if(gongbei%i==0&&s3%i==0) { gongyue=i; } i++; } return gongyue; } else { while(i<=gongbei) { if(gongbei%i==0&&s3%i==0) { gongyue=i; } i++; } return gongyue; } } public int jianyan(String a[],int l)//检验是否生成重复计算式的函数 { int flag=1; for(int i=0;i <% tishu=Integer.parseInt((String.valueOf(session.getAttribute("tishu")))); fanwei=Integer.parseInt((String.valueOf(session.getAttribute("fanwei")))); session.setAttribute("tishu", tishu); if(m <% } else { daan=a.shuchu(); session.setAttribute("shuju", shuju[m]); session.setAttribute("daan", daan); session.setAttribute("m", m); %> <% m++