Java四则运算——图形化界面
一.前提
(1)GitHub地址:https://github.com/mingbiaoleung/FourOperationWeb
(2)调试环境:IntelliJ IDEA ,CHORME浏览器
二.作业要求
(1)基本要求
- 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案。
- 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
(2)扩展要求
- 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2 *(-4) = -8。
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。
- 用户答题结束以后,程序可以显示用户答题所用的时间。
- 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过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四则运算——图形化界面的更多相关文章
- java Swing图形化界面
学过java的人应该对java的图形化界面很是反感,特别是接触java不久的人.如果想和其他语言那样用鼠标拖拽,可以使用wondosbulider插件.但是用起来也不是那么方便.当然对于不乐意写代码的 ...
- JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...
- java的图形化界面 文本区JTextArea的程序例子
package java1; //使用时这个改成你的包名即可//文本区 JTextArea import javax.swing.*;import java.awt.*;import java ...
- Java 图形化界面设计(GUI)实战练习(代码)
关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...
- 转:二十七、Java图形化界面设计——容器(JFrame)
转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...
- 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...
- 二十七、Java图形化界面设计——容器(JFrame)
摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...
- 三十三、Java图形化界面设计——布局管理器之null布局(空布局)
摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...
- 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)
摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...
随机推荐
- html提示信息框淡入淡出效果(自己的思路,如果有更好的思路,请留言)
使用方法: 调用initMessagebox(“要显示的文字”)方法即可 <!--信息框--> <div id="messagebox"></div& ...
- linux系统shell基础知识入门二
条件判断语句 test或[],这两是等价的.但用[]这种可能看起来更简洁 必须在[符号和检查条件之间留出空格,而test命令之后也总是应该有一个空格 如果要把test 和then 放一行上,那么必须在 ...
- Mac 下安装 jdk
1.安装jdk 我们是需要java环境的- 到oracle官网下载se: Java SE Development Kit 8 Downloads https://www.oracle.com/tech ...
- 企业安全之APT攻击防护
现在针对企业APT[1]攻击越来越多了,企业安全也受到了严重的威胁,由于APT攻击比较隐匿的特性[2],攻击并不能被检测到,所以往往可以在企业内部网络潜伏很长时间. APT的攻击方式多种多样,导致企业 ...
- thinkphp5连接sql server
我用的环境是phpstudy,php版本是5.6,thinkphp连接sql server 方法如下: 1.修改database.php文件里的数据库信息 2.进入php扩展目录.我的是“E:\php ...
- Django app安装,配置mysql,时区,模板,静态文件,媒体,admin
1.创建app python manage.py startapp 名字 Migrations 数据库同步目录,记录数据库同步的记录 init 包文件 Admin.py django自带的后台管理文件 ...
- Linux Firewalld 基础介绍
互联网上提供了各种网络服务,而防火墙可以设置各种规则来限制访问,保护服务器. 概述 Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙. Linux系 ...
- yum无法下载,网关问题
由于网关地址改变没有及时更新配置,造成无法下载 failure: repodata/repomd.xml from base: [Errno 256] No more mirrors to try h ...
- 机器学习——k-均值算法(聚类)
文章目录 k-均值(k-means)聚类 1.k-均值算法 2.k-均值算法的代价函数 3.k-均值算法步骤 4.初始化聚类中心点和聚类个数 5.sklearn实现k-means算法 k-均值(k-m ...
- MySQL服务启动时显示本地计算机上的MySQL服务启动后停止。某些服务在。。。
之前一直用的好端端的,这次启动服务突然就报了这错误. 更好的阅读体验可访问 这里. 起因 为了使用 LOAD_FILE 函数,在数据库配置文件 my.ini的 [mysqld] 里添加 secure_ ...