项目成员:张金生     张政

需求分析:

1.要进行四则运算;

2.运算题目随机;

3.进行对错判断;

4.整数运算。

程序概要:

1.用JSP实现;

2.用户可选择题目数量;

3.答题页用表格列出;

4.包含用来填写答案的输入框;

5.答完后点击提交会直接显示相应题目的对错。

实现过程:

数据结构主要用到了数组

题目生成:

 1     public String generateQuestion(int numOfOperand, int rangeMin, int rangMax, boolean isInt,
2 SupportedOperation[] operation, boolean bracket) {
3 String question = "";          //用来保存题目
4 int[] ioperands = null;        //用来保存随机生成的操作数
5 double[] doperands = null;
6 SupportedOperation[] so = null;    //用来保存操作符
7 if (numOfOperand < 2) {
8 System.out.println("操作数数量至少为2");
9 return "";
10 }
11 if (rangMax > 500) {
12 System.out.println("操作数数最大值不能超过500");
13 return "";
14 }                      //基础判断,看参数是否符合要求
15 if (isInt) {
16 ioperands = new int[numOfOperand];
17 for (int i = 0; i < numOfOperand; i++) {
18 ioperands[i] = (int) (Math.random() * rangMax / 2 +1);//生成随机数并保存到数组中
19
20 }
21 question += ioperands[0];      //录入第一位操作数
22 //int sub = ioperands[0];
23 so = new SupportedOperation[numOfOperand-1];//初始化操作符数组
24 for(int i = 0;i < operation.length;i++){
25 if(operation[i] == SupportedOperation.ALL){
26 operation = new SupportedOperation[4];
27 operation[0] = SupportedOperation.ADD;
28 operation[1] = SupportedOperation.MINUS;
29 operation[2] = SupportedOperation.MULTIPLY;
30 operation[3] = SupportedOperation.DIVIDE;
31
32 }
33 }
34 int value = 0;        //避免出现连续的除法运算
35 for(int j = 0;j<numOfOperand-1;j++){
36
37 so[j] = operation[(int)(Math.random()*operation.length)];
38 switch(so[j]){      //匹配操作符并写入算式
39 case ADD:question = ioperands[j+1]+"+"+question;break;
40 case MINUS:question = ioperands[j+1]+"-"+question;break;
41 case MULTIPLY:question = ioperands[j+1]+"*"+question;break;
42 case DIVIDE:{      //保证数能够整除
43 if(value < 1){
44 ioperands[j+1] = ioperands[j+1]*ioperands[j];
45 question =ioperands[j+1]+"/"+question;
46
47 value++;
48 }
49 else{
50 j--;
51 }
52 }break;
53 default:System.out.println("操作符错误");break;
54 }
55 }
56 System.out.println(question);      //以下部分主要用于测试
57 ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript");
58
59 try {
60 Integer d = (Integer) se.eval(question);
61 System.out.println(d);
62 } catch (ScriptException e) {
63 e.printStackTrace();
64 }
65
66 } else {
67 doperands = new double[numOfOperand];
68 for (int i = 0; i < numOfOperand; i++) {
69 doperands[i] = Math.random() * rangMax / 2;
70 }
71 }
72
73 return question;
74
75 }

答案评定:

 1 <script type="text/javascript">
2 function compute() {
3
4 for (var i = 1; i <= <%=num%>; i++) {        //对每一道题进行对错判断
5 var a = "" + eval(document.getElementById("q" + i).innerHTML);
6 var auser = document.getElementById("a" + i).value;
7 if (a == auser) {
8 document.getElementById("r" + i).innerHTML = "正确";
9 } else {
10 document.getElementById("r" + i).innerHTML = "错误";
11 }
12 }
13
14 }
15 </script>

 题目难度设计:

 1     public String generateSimpleQuestion() {
2 SupportedOperation[] operation = { SupportedOperation.ADD, SupportedOperation.MINUS };
3 return generateQuestion(2, 0, 20, true, operation, false);
4 }
5
6 public String generateCommonQuestion() {
7 SupportedOperation[] operation = { SupportedOperation.ADD, SupportedOperation.MINUS,
8 SupportedOperation.MULTIPLY, SupportedOperation.DIVIDE };
9 return generateQuestion(3, 0, 30, true, operation, false);
10 }
11
12 public String generateMediumQuestion() {
13 SupportedOperation[] operation = { SupportedOperation.ADD, SupportedOperation.MINUS,
14 SupportedOperation.MULTIPLY, SupportedOperation.DIVIDE };
15 return generateQuestion(4, 0, 50, true, operation, true);
16 }
17
18 public String generateComplexQuestion() {
19 SupportedOperation[] operation = { SupportedOperation.ALL };
20 return generateQuestion(6, 0, 50, true, operation, true);
21 }

程序运行结果:

代码地址:https://coding.net/u/jx8zjs/p/paperOne/git

 

结对编程——paperOne基于java web的简易四则运算出题网站的更多相关文章

  1. paperOne基于java web的简易四则运算出题网站

    项目成员:张金生     张政 需求概要 1.运算数均为正整数 2.包含的运算符有+,-,*,/ 3.除法运算结果为整除运算 4.批量生成题目并判题 核心功能分析 1.题目生成——java后端 题目生 ...

  2. 结对编程——paperOne基于java的四则运算 功能改进

    项目成员:张金生     张政 由于新的需求,原本使用JSP的实现方式目前改为Java实现,即去除了B/S端. 需求分析: 1.四则运算要满足整数运算.分数运算两种: 2.运算题目随机,并且可以打印题 ...

  3. 结对编程1 —— 基于GUI和Swing的四则运算题目生成器

    合作伙伴 201421123102 王艳秋 201421123106 陈 雄 代码地址 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI( ...

  4. 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

    基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...

  5. 基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书

    一.选题报告 目录 团队名称 团队成员 项目名称 项目描述 创新与收益 用户场景分析 真实用户调研 未来市场与竞争 项目导图 比例权重 总结 1.团队名称--指南者团队 2.团队成员 孔潭活:2015 ...

  6. 网络编程:基于C语言的简易代理服务器实现(proxylab)

    本文记录了一个基于c socket的简易代理服务器的实现.(CS:APP lab 10 proxy lab) 本代理服务器支持keep-alive连接,将访问记录保存在log文件. Github: h ...

  7. 【Java Web】简易商品信息管理系统——首个Web项目

    正文之前 在学习了一段时间的Java Web的内容之后,当然需要有个项目来练练手,我相信大多数人的首选项目都是信息管理系统吧,所以我选择了商品信息管理系统 目前项目源码已全部上传至GitHub,欢迎大 ...

  8. 【原创】三分钟教你学会MVC框架——基于java web开发(2)

    没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...

  9. 结对编程1----基于java的四则运算生成器

    小组成员:王震(201421123054).王杰(201421123055) Coding地址:https://git.coding.net/a506504661/sssss.git 一.题目描述 我 ...

随机推荐

  1. go VS NET 字符串操作能力

    今天拿golang 与 NET4.0 做了在字符串方面的性能比较,看看谁牛! 一.读取txt文本文件 GO的代码: readbuf, _ := ioutil.ReadFile(userFile) st ...

  2. 20155222 2016-2017-2 《Java程序设计》第4周学习总结

    20155222 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 子类会继承父类的private成员,但是无法直接存取,必须通过父类提供的方法. 多态就是使用 ...

  3. 2016-2017-2 20155302 实验四 Android 开发基础

    2016-2017-2 20155302 实验四 Android 开发基础 实验内容 1.下载和安装Android Studio 2.学会使用Android Studio进行简单的Android开发 ...

  4. 20155305 2016-2017-2 《Java程序设计》实验四 Android开发基础设计实验报告

    实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: 安装 ...

  5. 20155322 2016-2017-2《Java程序设计》课程总结

    学号 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业一:浅谈对师生关系的看法以及对未来学习生活的展望 预备作业二:学习娄老师<做中学> ...

  6. 20155322 2016-2017-2 《Java程序设计》第9周学习总结

    20155322 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 第9周学习的主要内容是课本的第十六.第十七.第十八章,老师的教学指导上主要要求学习以下知识点 ...

  7. 2016-2017-2 20155325实验二《Java面向对象程序设计》实验报告

    实验二 面向对象程序设计-1 答案截图 码云代码链接 链接1 实验遇到的问题和解决过程 问题1:在plugins里搜索不到JUnitGenerator V2.0只能搜到Generste Teats 问 ...

  8. primary key和unique的区别

    定义了 UNIQUE 约束的字段中不能包含重复值,可以为一个或多个字段定义 UNIQUE 约束.因此,UNIQUE 即可以在字段级也可以在表级定义, 在 UNIQUED 约束的字段上可以包含空值.OR ...

  9. 13 tcp3次握手 4次释放 mac和ip 访问百度的过程

    1.mac地址和ip地址的不同 (传棒棒糖) 需求:192.168.1.1  ping 192.168.2.1 1):获取默认的网关mac地址 2)寻找下一个网关的mac地址 3)mac地址在变,寻找 ...

  10. 【bzoj4827】[Hnoi2017]礼物 FFT

    题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一天 ...