一.前提

(1)GitHub地址:https://github.com/mingbiaoleung/FourOperationWeb

(2)调试环境:IntelliJ IDEA ,CHORME浏览器

二.作业要求

(1)基本要求

  • 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
  • 用户可以输入答案。
  • 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

(2)扩展要求

  1. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2 *(-4) = -8。
  2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。
  3. 用户答题结束以后,程序可以显示用户答题所用的时间。
  4. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

(3)结对成员

姓名:梁铭标 学号:201606120031  博客园地址:https://www.cnblogs.com/luengmingbiao/

姓名:刘杰  学号:201606120029  博客园地址:http://www.cnblogs.com/Winslow-liujie/

三.时间估算

结对项目软件过程耗时估计表与统计表

(时间单位:小时)

PSP2.1

个人软件实现阶段

预计时间

实际时间

Planning

计划

1

2

· Estimate

估计这个任务需要多少时间

10

20

Development

开发

10

10

· Analysis

需求分析 (包括学习新技术)

1

1

· Design Spec

生成设计文档

1

1

· Design Review

设计复审

0.5

0.5

· Coding Standard

代码规范

1

1

· Design

具体设计

1

1

· Coding

具体编码

1

1

· Code Review

代码复审

0.5

0.5

· Test

测试(自我测试,修改代码,提交修改)

1

1

Reporting

报告

1

1

Test Report

测试报告

1

1

·workload

计算工作量

0.5

0.5

·correction

并提出过程改进计划

2

2

四:工作详情

(一)工作:

刘杰:             设计和编写界面交互部分、设计计时器。

梁铭标:          后台代码随机生成题目、前后端数据交互、判断正误。

(二) 部分功能代码介绍:

(1)题目获取功能:通过ajax异步获取一定数量的四则运算习题(前台)

$.ajax({
type: "POST",
url: "GetTitleInfoServlet",
dataType: "json",
data: jsonDate,
async:false,
contentType:"application/json;charset=UTF-8",
success: function (returnedData) {
var titleInfoJson = JSON.stringify(returnedData);
sessionStorage.setItem("title", titleInfoJson);
}
});

题目获取功能:通过ajax异步获取一定数量的四则运算习题(后台)

 /**
* 响应前端ajax生成一定数量的四则运算习题并返回到前台
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置请求与响应的编码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/x-javascript;charset=utf-8");
response.setHeader("Cache-Control", "no-cache"); // 获取从页面中提交过来的JSON格式数据数据
String titleInfo = JsonService.readJSONData(request);
JSONObject titleInfoJson = JSONObject.parseObject(titleInfo); // 根据前台传来的数据进行解析后生成相应的题目,并以JsonArray格式存储
JSONArray titleJsonArray = generateTitleJsonArray(titleInfoJson); // 把生成的题目返回到前台
PrintWriter printWriter = response.getWriter();
printWriter.write(titleJsonArray.toJSONString());
printWriter.flush();
printWriter.close();
}

(2)用户提交功能:首先经过校验机制判断是否输入答案,之后进行答案的比对运算出答对题数量。

//用户点击按钮提交题目答案并计算用户的正确数以及错误数
$('#summitUserAnswer').click(function () {
$('#summitUserAnswer').addClass('disabled'); // Disables visually
$('#summitUserAnswer').prop('disabled', true); // Disables visually + functionally
//初始化用户做对题目的数目
var trueNum = 0;
for (var i = 0; i < titleJsonLength; i++) {
var userAnswer = document.getElementById("input" + i).value;
if (userAnswer == correctAnswerArray[i]) {
var code = "<p class=\"card-text text-danger col-sm-4\">正确</p>";
$('#title' + i).append(code);
trueNum++;
}else{
var code = "<p class=\"card-text text-danger\">你答错了,正确答案为"+ correctAnswerArray[i] +"</p>";
$('#title' + i).append(code);
} }
//做错的题目数量
var falseNum = titleJsonLength - trueNum; // var count = "<p class=\"text-danger\">恭喜你完成,你用了"+statisticalTime()/1000+"秒</p>"
var submitCode = "<div class=\"col-md-13\">\n" +
"<div class=\"card\">\n" +
"<div class=\"card-body\">\n" +
"<span><h5 class=\"card-title\">答题结束</h5></span>\n" +
"<p class=\"text-danger\">恭喜你完成,你用了" + statisticalTime() / 1000 +
"秒, 你答对了" + trueNum + "道题, 答错了" + falseNum + "道题!请继续加油!" + "</p>\n" +
"<div class='row' style=\"margin: 0px auto;display: table;\">" +
"<a href=\"Title.html\" class=\"btn btn-primary\">重新生成题目</a>\n" +
"</div>" +
"</div>\n" +
"</div>\n" +
"</div>";
$('#TitleCard').append(submitCode);
});

五.软件演示

软件入口地址:http://119.23.205.157:8888/SimpleFourOperationWeb_war/Title.html

1.首先进行选择题目类型以及题目个数

2.点击做题等待跳转到做题页面

3.计算题目后点击提交

六:结对照片

七:收获与感悟

          在这一次结对小项目中,明确分工和一定的团队交流是非常重要的,可以达到事半功倍的效果。团队工作能增加成员的工作积极性。因为在面对问题的时候,会有人一起分担,共同尝试新的策略。两个人一起工作需要互相配合,如果想偷懒去干别的,就会拖延工作进度。在编程中,如果双方遇到一些问题,可以相互讨论,可以更快更有效地解决问题,互补双方的一些不足。本次结对子编程收益良多,感谢搭档刘杰的支持与帮助。

Java四则运算——图形化界面的更多相关文章

  1. java Swing图形化界面

    学过java的人应该对java的图形化界面很是反感,特别是接触java不久的人.如果想和其他语言那样用鼠标拖拽,可以使用wondosbulider插件.但是用起来也不是那么方便.当然对于不乐意写代码的 ...

  2. JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件

    JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...

  3. java的图形化界面 文本区JTextArea的程序例子

    package java1;     //使用时这个改成你的包名即可//文本区 JTextArea import javax.swing.*;import java.awt.*;import java ...

  4. Java 图形化界面设计(GUI)实战练习(代码)

    关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...

  5. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

  6. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

  7. 二十七、Java图形化界面设计——容器(JFrame)

    摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...

  8. 三十三、Java图形化界面设计——布局管理器之null布局(空布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...

  9. 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...

随机推荐

  1. vue v-for 使用问题整理

    今天使用v-for指令的时候遇到一个错误 [Vue warn]: Error in render: "TypeError: Cannot read property 'children' o ...

  2. Windows下分布式环境搭建以及简单测试

    环境配置: 解压文件: Nginx服务器和Tomcat服务器 Tomcat服务器配置:(conf/server.xml) Nginx配置:(conf/nginx.conf) 安装memcached H ...

  3. Qt高仿Excel表格组件-支持冻结列、冻结行、内容自适应和合并单元格

    目录 一.概述 二.效果展示 三.实现思路 1.冻结行.冻结列 2.行高自适应 3.蚂蚁线 四.测试代码 1.添加表格数据 2.设置冻结行.列 3.行高.列宽 4.单元格背景色 5.单元格文字 6.其 ...

  4. 双栈(Dual Stack)

    参考博客: 双栈数据结构: https://blog.csdn.net/hebtu666/article/details/83011115 https://blog.csdn.net/cainv89/ ...

  5. vue-cli vue脚手架搭建步骤

    提前在E:\nodejs文件夹下建立node_gobal和node_cache 并配置环境变量NODE_PATH:E:\nodejs\node_global\node_modules 改变用户变量中的 ...

  6. bugku insertsql

    题目链接 0X00题目给出的PHP代码 error_reporting(0); function getIp(){ $ip = ''; if(isset($_SERVER['HTTP_X_FORWAR ...

  7. JavaWeb 发送邮件

    我们可以使用第三方的邮箱服务器来发送邮件. 常用的邮件传输协议有2种:POP3/SMTP.IMAP/SMTP. POP和IMAP的区别:在邮箱客户端的操作,比如移动邮件.标记已读,如果使用POP,是不 ...

  8. 个人项目-WC (java实现)

    一.Github地址:https://github.com/734635746/WC 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) ...

  9. VUE+ElementUI 搭建后台项目(一)

    前言 之前有些过移动端的项目搭建的文章,感觉不写个pc端管理系统老感觉少了点什么,最近公司项目比较多,恰巧要做一个申报系统的后台管理系统,鉴于对vue技术栈比较熟悉,所以考虑还是使用vue技术栈来做: ...

  10. 是否忘记了向源中添加“#include "StdAfx.h"”?

    错误分析 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束.没有找到预编译指示信息的头文件"stdafx.h ...