结对编程——paperOne基于java web的简易四则运算出题网站
需求分析:
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的简易四则运算出题网站的更多相关文章
- paperOne基于java web的简易四则运算出题网站
项目成员:张金生 张政 需求概要 1.运算数均为正整数 2.包含的运算符有+,-,*,/ 3.除法运算结果为整除运算 4.批量生成题目并判题 核心功能分析 1.题目生成——java后端 题目生 ...
- 结对编程——paperOne基于java的四则运算 功能改进
项目成员:张金生 张政 由于新的需求,原本使用JSP的实现方式目前改为Java实现,即去除了B/S端. 需求分析: 1.四则运算要满足整数运算.分数运算两种: 2.运算题目随机,并且可以打印题 ...
- 结对编程1 —— 基于GUI和Swing的四则运算题目生成器
合作伙伴 201421123102 王艳秋 201421123106 陈 雄 代码地址 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI( ...
- 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写
基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...
- 基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书
一.选题报告 目录 团队名称 团队成员 项目名称 项目描述 创新与收益 用户场景分析 真实用户调研 未来市场与竞争 项目导图 比例权重 总结 1.团队名称--指南者团队 2.团队成员 孔潭活:2015 ...
- 网络编程:基于C语言的简易代理服务器实现(proxylab)
本文记录了一个基于c socket的简易代理服务器的实现.(CS:APP lab 10 proxy lab) 本代理服务器支持keep-alive连接,将访问记录保存在log文件. Github: h ...
- 【Java Web】简易商品信息管理系统——首个Web项目
正文之前 在学习了一段时间的Java Web的内容之后,当然需要有个项目来练练手,我相信大多数人的首选项目都是信息管理系统吧,所以我选择了商品信息管理系统 目前项目源码已全部上传至GitHub,欢迎大 ...
- 【原创】三分钟教你学会MVC框架——基于java web开发(2)
没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...
- 结对编程1----基于java的四则运算生成器
小组成员:王震(201421123054).王杰(201421123055) Coding地址:https://git.coding.net/a506504661/sssss.git 一.题目描述 我 ...
随机推荐
- ILOVEYOU代码
代码确实很简单...我是初学者,练手的. /* 文件名: Love.c 描 述: 打印字母和图形 */ #include<stdio.h> #include<windows.h> ...
- 经典傅里叶算法小集合 附完整c代码
前面写过关于傅里叶算法的应用例子. <基于傅里叶变换的音频重采样算法 (附完整c代码)> 当然也就是举个例子,主要是学习傅里叶变换. 这个重采样思路还有点瑕疵, 稍微改一下,就可以支持多通 ...
- scala 求数组排序后每两个元素的差值
求数组排序后每两个元素的差值 例如数组 1,5,8,10,2 求得结果为 1,3,3,2 一般什么样的场景会有这种需求呢? 比如 计算一堆数据在一定时间内的计算时延, 或者得到这段时间内数据的平均计算 ...
- python的subprocess基本
先在同一个文件夹下创建两个.py文件. 第一个:13.py # -*- coding: utf-8 -*- __author__ = "YuDian" ''' multiproce ...
- 如何加入别人的Git项目——Git Fork指南
如何加入别人的Git项目--Git Fork指南 首先,在网页打开别人Git上的项目,点击右上角的.下图因为Fork过了,所以灰了. 随即弹出如下窗口,当然选择确定. 于是,我们在在自己的项目列表可以 ...
- 20155213 2016-2017-2《Java程序设计》第四周学习总结
20155213 2016-2017-2<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承避免多个类间重复定义共同行为,使用关键字extends.继承表明了子类与 ...
- day2 Ubuntu配置源
1.寻找国内镜像源 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 2.配置source list源 sources.list系统自带的,源是来U ...
- 【BZOJ3527】[ZJOI3527]力
[BZOJ3527][ZJOI3527]力 题面 bzoj 洛谷 题解 易得 \[ E_i=\sum_{j<i}\frac{q_j}{(i-j)^2}-\sum_{j>i}\frac{q_ ...
- SaltStack入门篇(三)之数据系统Grains、Pillar
1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.可以理解为Grains记录着每台Minion的一些常用属性,比如CPU ...
- cogs1533 [HNOI2002]营业额统计
cogs1533 [HNOI2002]营业额统计 啦啦啦啦 不维护区间的平衡树题都是树状数组+二分练手题! 不会的参考我的普通平衡树的多种神奇解法之BIT+二分答案 和上一篇博文完全一样2333 另外 ...