1.设计思路:

定义一个类arithmetic,在该类中的定义相关成员,随机产生的题目以及答案用数组承接,在第一个jsp里面用户输入题目数量以及设置做题时间,将这两个数传到第二个jsp页面,在此页面定义类对象,调用相关类函数,进行出题:

最后将算式的数组和答案的数组以及用户输入的值传到第三个jsp页面,进行答案的校对即可。

源代码:

arithmetic.java:

package com.jaovo.msg.model;

public class arithmetic {

public int []answer;//答案

public int shumu;//出题数目

public String []suanshi;//算式

public void setsuanshi(String []suanshi)

{

this.suanshi=suanshi;

}

public String [] biaodashi(int n)

{

shumu=n;

answer=new int[n];

int a,b,c,d1 = 0,d,d2=0;

int []mixture=new int[2];

String []biaodashi=new String[n];

for(int i=0;i

{

a=(int)(Math.random()*100)+1;//1-100

b=(int)(Math.random()*100)+1;

c=(int)(Math.random()*5)+1;//随机生成一个1-5的整数,4表示加法,1表示减法,2表示乘法,3表示除法,5表示混合

if(c==5)//混合运算

{

do

{

for(int m=0;m<2;m++)

{

mixture[m]=(int)(Math.random()*2);//0-1

}//控制运算符

a=(int)(Math.random()*100)+1;

b=(int)(Math.random()*100)+1;

d=(int)(Math.random()*100)+1;//生成三个数

if(mixture[0]==0&&mixture[1]==0)

{

biaodashi[i]=a+"+"+b+"+"+d+" = ";

d1=a+b+d;

}

if(mixture[0]==1&&mixture[1]==1)

{

biaodashi[i]=a+"-"+b+"-"+d+" = ";

d2=a-b;

d1=a-b-d;

}

if(mixture[0]==0&&mixture[1]==1)

{

biaodashi[i]=a+"+"+b+"-"+d+" = ";

d1=a+b-d;

}

if(mixture[0]==1&&mixture[1]==0)

{

biaodashi[i]=a+"-"+b+"+"+d+" = ";

d2=a-b;

d1=a-b+d;

}

}while(d2<0||d1<0);

answer[i]=d1;

}

if(c==4)//单加法

{

d1=a+b;

biaodashi[i]=a+"+"+b+" = ";

while(d1>100)

{

a=(int)(Math.random()*100)+1;

b=(int)(Math.random()*100)+1;//1-100 包括1和100 不加1 表示0-99

d1=a+b;

}

biaodashi[i]=a+"+"+b+" = ";

answer[i]=d1;

System.out.print(a+"+"+b+"= ");

}

if(c==1)//单减法

{

d1=a-b;

while(d1<0)

{

a=(int)(Math.random()*100)+1;

b=(int)(Math.random()*100)+1;

d1=a-b;

}

biaodashi[i]=a+"-"+b+" = ";

answer[i]=d1;

System.out.print(a+"-"+b+"= ");

}

if(c==2)//乘法

{

a=(int)(Math.random()*10);//0-9

b=(int)(Math.random()*10);//1-100 包括1和100 不加1 表示0-99

d1=a*b;

while(a<1||b<1||d1>81)

{

a=(int)(Math.random()*10);//0-9

b=(int)(Math.random()*10);//1-100 包括1和100 不加1 表示0-99

}

d1=a*b;

biaodashi[i]=a+"*"+b+" = ";

answer[i]=d1;

System.out.print(a+"*"+b+"= ");

}

if(c==3)//除法

{

d1=a/b;

while(a%b!=0||a/b>9||(a<=81&&b>=10)||(a>9&&a==b)||(a>81))

{

a=(int)(Math.random()*100)+1;

b=(int)(Math.random()*100)+1;//1-100 包括1和100 不加1 表示0-99

}

d1=a/b;

biaodashi[i]=a+"÷"+b+" = ";

answer[i]=d1;

System.out.print(a+"÷"+b+"= ");

}

//查重

for(int k=i-1;k>=0;k--)

{

while(biaodashi[i].equals(biaodashi[k]))

{

a=(int)(Math.random()*100)+1;//1-100

b=(int)(Math.random()*100)+1;

c=(int)(Math.random()*5)+1;//随机生成一个1-5的整数,4表示加法,1表示减法,2表示乘法,3表示除法,5表示混合

if(c==5)

{

do//混合运算

{

for(int m=0;m<2;m++)

{

mixture[m]=(int)(Math.random()*2);//0-1

}//控制运算符

a=(int)(Math.random()*100)+1;

b=(int)(Math.random()*100)+1;

d=(int)(Math.random()*100)+1;//生成三个数

if(mixture[0]==0&&mixture[1]==0)

{

biaodashi[i]=a+"+"+b+"+"+d+" = ";

d1=a+b+d;

}

if(mixture[0]==1&&mixture[1]==1)

{

biaodashi[i]=a+"-"+b+"-"+d+" = ";

d2=a-b;

d1=a-b-d;

}

if(mixture[0]==0&&mixture[1]==1)

{

biaodashi[i]=a+"+"+b+"-"+d+" = ";

d1=a+b-d;

}

if(mixture[0]==1&&mixture[1]==0)

{

biaodashi[i]=a+"-"+b+"+"+d+" = ";

d2=a-b;

d1=a-b+d;

}

}while(d2<0||d1<0);

answer[i]=d1;

}

if(c==4)

{

d1=a+b;

biaodashi[i]=a+"+"+b+" = ";

while(d1>100)

{

a=(int)(Math.random()*100)+1;

b=(int)(Math.random()*100)+1;//1-100 包括1和100 不加1 表示0-99

d1=a+b;

}

biaodashi[i]=a+"+"+b+" = ";

answer[i]=d1;

System.out.print(a+"+"+b+"= ");

}

if(c==1)

{

d1=a-b;

while(d1<0)

{

a=(int)(Math.random()*100)+1;

b=(int)(Math.random()*100)+1;

d1=a-b;

}

biaodashi[i]=a+"-"+b+" = ";

answer[i]=d1;

System.out.print(a+"-"+b+"= ");

}

if(c==2)

{

a=(int)(Math.random()*10);//0-9

b=(int)(Math.random()*10);//1-100 包括1和100 不加1 表示0-99

d1=a*b;

while(a<1||b<1||d1>81)

{

a=(int)(Math.random()*10);//0-9

b=(int)(Math.random()*10);//1-100 包括1和100 不加1 表示0-99

}

d1=a*b;

biaodashi[i]=a+"*"+b+" = ";

answer[i]=d1;

System.out.print(a+"*"+b+"= ");

}

if(c==3)

{

while(a%b!=0)

{

a=(int)(Math.random()*100)+1;

b=(int)(Math.random()*100)+1;//1-100 包括1和100 不加1 表示0-99

}

d1=a/b;

biaodashi[i]=a+"÷"+b+" = ";

answer[i]=d1;

System.out.print(a+"÷"+b+"= ");

}

}

}

}

return biaodashi;

}

}

chutijiemian.jsp:

pageEncoding="UTF-8"%>

出题数目

WELCOME

你想做几道题来着?
设置时间:

chuti.jsp:

pageEncoding="UTF-8"%>

出题页

//接收客户端传递过来的参数

request.setCharacterEncoding("UTF-8");

String time = request.getParameter("usertime");//接收时间

int time1=0;

int x=1;

for(int m=0;m

{

time1+=(time.charAt(time.length()-m-1)-'0')*x;

x*=10;

}//字符串类型的数字转换为整型 成为参数

%>

var c=1;

var t;

var num1=

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 事件会在页面或图像加载完成后立即发生。

}

开始答题

倒计时:

//接收客户端传递过来的参数

request.setCharacterEncoding("UTF-8");

String num = request.getParameter("username");//接收出题的数目

int num1=0;

x=1;

for(int m=0;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

{

out.println(biaodashi1[i]);//输出表达式

%>

out.println("
");

out.println("
");//换行

}

session.setAttribute("jieshou",demo);//用于下一个界面的接收本界面的这个类的全部内容result 所以定义的对象

%>

提交

Result.jsp:

pageEncoding="UTF-8"%>

出题

正确答案

//接收客户端传递过来的参数

arithmetic newdemo=new arithmetic();

newdemo=(arithmetic)session.getAttribute("jieshou");//用于接收CHUti界面传过来的数 (对象)

String []yoursolution=new String[newdemo.shumu];//接收传过来的文本框的答案

int sumright=0,sumerror=0,empty=0;

for(int i=0;i

{

request.setCharacterEncoding("UTF-8");

out.print(newdemo.suanshi[i]);//正确的算式

yoursolution[i] = request.getParameter("result["+i+"]");//你的答案

out.println(yoursolution[i]);

%>

out.println("正确答案是: ");

out.println(newdemo.answer[i]);//正确的答案

%>

int num1=0;

int x=1;

for(int m=0;m

{

num1+=(yoursolution[i].charAt(yoursolution[i].length()-m-1)-'0')*x;

x*=10;

}//字符串类型的数字转换为整型 用于和正确答案比较 因为从出题界面接受的答案是字符串类型

if(yoursolution[i].equals(""))

{

out.println("你没有回答哦!");

empty++;

}

else if(num1==newdemo.answer[i])

{

sumright++;

out.println("恭喜你!回答正确!");

}

else

{

sumerror++;

out.println("回答错误,再接再厉!");

}

out.println("
");//换行

}

out.println("回答正确了"+sumright+"道题!");

out.println("
");//换行

out.println("回答错误了"+sumerror+"道题!");

out.println("
");//换行

out.println("没有回答"+empty+"道题!");

out.println("
");//换行

%>

退出

运行结果:

已接触Javawe快一个月了,因为是刚刚接触这个网页吧,所以会的很少,不会的很多。对于Javaweb,我感觉是个很神奇的,参数的传递,自动调用,自动启动等等,这些都是没见过的,当然还要进一步理解!写的慢的原因,对Javaweb不是很了解,只能一步一步来

时间记录日志:

学生:马佳慧                                            日期:2017/12/5

教师:王建民                                            课程:软件工程概论

日期\时间

开始时间

结束时间

中断时间

净时间

活动

备注

12/1

9:00

11:30

10:30

120分钟

自习,练习

课间

14:00

16:30

15:30

80分钟

练习

中场休息

12/2

9:30

11:00

10:30

80分钟

听课,练习

中场休息

14:30

18:00

16:00

200分钟

上课

中场休息

12/3

8:00

11:30

10:00

150分钟

写作业,练习,提交作业

写 四则

12/4

19:00

22:00

20:30

150分钟

练习,自习

课间

12/5

8:00

16:50

8:50/9:50/12:00

180分钟

改错,补充,写总结上课

课间

java 四则运算_四则运算————javaweb版相关推荐

  1. Java毕业设计_基于javaweb的网上预约实验室管理系统的设计与实现

    基于javaweb的网上预约实验室管理系统的设计与实现 基于javaweb的网上预约实验室管理系统的设计与实现mysql数据库创建语句 基于javaweb的网上预约实验室管理系统的设计与实现oracl ...

  2. Java毕业设计_基于JAVAWeb和Android的随堂练习软件

    基于JAVAWeb和Android的随堂练习软件 基于JAVAWeb和Android的随堂练习软件mysql数据库创建语句 基于JAVAWeb和Android的随堂练习软件oracle数据库创建语句 ...

  3. python实现四则运算_四则运算 Python实现(杨浩政,张兆敏)

    四则运算 项目要求: 题目:实现一个自动生成小学四则运算题目的命令行程序说明: 说明: 自然数:0, 1, 2, -. 真分数:1/2, 1/3, 2/3, 1/4, 1'1/2, -. 运算符:+, ...

  4. python四则运算_四则运算 python

    java转换json需要导入的jar包,org/apache/commons/lang/exception/NestableRuntimeException 缺少相应jar包都会有异常,根据异常找ja ...

  5. text对应java类型_【JavaWeb】79:JavaScript和Java的关系?

    今天是刘小爱自学Java的第79天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 一.JavaScript概述 JavaScrip和Java到底有什么关系呢? 令我无比惊讶的是,就本质而言它们 ...

  6. 金立java微信_微信金立版下载-微信金立手机版v7.0.21 安卓版 - 极光下载站

    微信金立手机版除了最基础的社交聊天之外,还为用户带来了非常多有趣的功能,例如像双十一.大年三十等特殊日子会有很多电视活动,大家可以通过微信摇一摇来进行抽奖,独特的互动方法为你和家人带来更多欢乐. 微信 ...

  7. 诺基亚8110能玩java吗_诺基亚81104G版评测 买不了吃亏也买不了上当

    描述 经典归来 诺基亚8110 4G版 1998年,当时的你多大呢?是否还记得诺基亚在这一年发布了一款经典的滑盖手机-诺基亚8110.当年的诺基亚在机身的设计上可谓脑洞大开,这款带有香蕉弧形的滑盖机也 ...

  8. 侠义java加速_侠义加速版下载-侠义加速版游戏下载v1.7 安卓版-单机手游网

    侠义加速版是一款经典的复古武侠手游,游戏完美还原了一个武侠世界该有的一切东西,带你体验武侠江湖的恩怨情仇,丰富的玩法模式让你爱不释手,全方位的战力提升系统助你突破巅峰.喜欢这款游戏的小伙伴们快来单机1 ...

  9. java血饮狂刀_血饮狂刀PC版

    不知道怎么下载?点我 游戏介绍 游戏介绍 <血饮狂刀 Draw Slasher>是由Mass Creation开发的一款动作冒险类游戏,早先在PS和手机上发布,现已登陆PC平台.游戏以忍者 ...

最新文章

  1. web.xml 配置 加载顺序
  2. Java断点续传(基于socket与RandomAccessFile的实现)
  3. Spring Boot 集成 Swagger-Bootstrap-UI,非常棒的解决方案
  4. java 无法找到ant_无法找到与ANT(mac)关联的文件
  5. 数据存储方案-闭包表
  6. python的字典与集合
  7. 面向对象编程(基础简介)
  8. Ruby学习-第二章
  9. 企业办公自动化系统_OA系统的核心功能有哪些?分析当下OA系统的缺陷以及相关解决方案...
  10. 不卖了?这家公司暂停门店销售iPhone!
  11. 深度优先搜索算法的通用解法
  12. 如何重启虚拟机里的ssh服务器,通过SSH重启 vSphere 虚拟机
  13. 114. PHP command line getopt
  14. Python3网络爬虫:requests+mongodb+wordcloud 爬取豆瓣影评并生成词云
  15. 显卡RTX2080 + CUDA10 + win10 + tensorflow配置安装探坑记
  16. 钽电容正负极_钽电容是什么?怎么区分正负极?
  17. 埙曲推荐,《葬花吟》简谱
  18. Python 运算符及其优先级总结大全(新手必收藏)
  19. 软件性能测试、分析与调优实践之路_读书笔记(一)
  20. CNT-OSI七层参考模型和TCP/IP四层网络协议

热门文章

  1. 企立方集团:拼多多推广ROI的计算方式
  2. 方正证券国产CPU行业深度报告
  3. 《自然语言处理学习之路》05 新闻分类任务实战
  4. 我的QQ签名记录 最近更新2006-11-11
  5. 模拟电子技术基础笔记(4)——晶体三极管
  6. 多种非接触卡 ATQA 字节说明
  7. 15、Spark_RDD算子——AggregateByKey
  8. 基于LM2576的降压电源的分析与设计
  9. 2021高考语文成绩查询,重磅!2021年上海高考分数线权威预测出炉,看看你能上什么大学...
  10. 用 Python 抓取了 7000 多本电子书