结对编程——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 一.题目描述 我 ...
随机推荐
- day11迭代器 and 闭包
函数名的使⽤以及第一类对象 函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量. 函数名就是变量名, 函数名存储的是函数的内存地址 函数名可以赋值给其他变量 函数名可以当做容器类 ...
- IDEA 通过插件jetty-maven-plugin使用 jetty
jetty:run -Djetty.port=8080 pom.xml配置 <build> <plugins> <plugin> <groupId>or ...
- 小议linux
小议linux在虚拟机上的安装和命令行 如何解决intel-vt-x被禁用而无法正常安装虚拟机 一般在新的电脑上第一次安装虚拟都可能出现如下图的问题:intel-vt-x(intel Virtuali ...
- 20145207 java第二周学习总结
教材学习内容总结 这部分可能要扒一些课本而上的东西了.在第三章中,知道了Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型.在这一周主要学习了类类型. 对象(Object):存在的 ...
- 优步uber司机申请了为什么一直没有通过审核,帐号也显示未激活
优步uber现在是越来越火,申请注册成为优步uber司机的人数也日剧增多,申请了的车主都知道,申请后要等待审核,审核通过才可以激活帐号,快的运气好的,三五天不到一个星期就激活了,慢点的得大半个月,还有 ...
- 【JUC源码解析】LinkedBlockingQueue
简介 一个基于链表的阻塞队列,FIFO的顺序,head指向的元素等待时间最长,tail指向的元素等待时间最短,新元素从队列尾部添加,检索元素从队列头部开始,队列的容量,默认是Integer#MAX_V ...
- 解决WCF传输的数据量过大问题
今天写了个WCF接口,然后自测通过,和别人联调时报 远程服务器返回错误: (413) Request Entity Too Large 错误!记得以前写的时候也出现过这个错误,大致解决办 ...
- 订单号生成逻辑,C#和JAVA双版
五年没写过博客了,倒是天天在看 转来转去,又转回技术 原来一直在使用微软爸爸的东西,最近一两年开始玩android,玩java,还有PostgreSQL 都有些应用了,倒是可以整理些随笔出来,这就是其 ...
- C/C++ 下mysql应用封装(连接增删改查)
mysql - 初始化 1) mysql_init():初始化数据库 2) mysql_real_connect()(不推荐用Mysql_connect()):连接数据库 详细代码如下: bool d ...
- Vue2 v-bind:href 中如何使用过滤器
<a class="topic_title" v-bind:href="info.id|getTitleHref" v-bind:title=" ...