一. 前提
(2)GitHub 地址: https://github.com/llgeill/llg-web
http://github.com/P-and-A/learningGit
(3) 调试环境: IntelliJ IDEA ,CHORME 浏览器
二. 作业要求
(1) 基本要求
自动生成题目, 单个题目最多不能超过 4 个运算符, 操作数小于 100.
用户可以输入答案
若用户输入答案正确, 则提示正确; 若答案错误, 则提示错误, 并要提示正确答案是多少.
(2) 扩展要求
用户答题结束以后, 程序可以显示用户答题所用的时间
用户可以选择出题的个数 (最多不能超过 5 个题目), 答题结束可以显示用户答错的题目个数和答对的题目个数
用户在第一次答题时, 需要用户输入用户名, 用户下次启动后, 程序需要记住用户前一次输入的用户名
程序可以设置答题时间, 时间设置为整数, 单位为秒, 最大不能超过 120 秒, 若超过了答题时间未答题, 则提示: 时间已到, 不能答题.
(3) 结对成员
姓名: 李利光 学号: 201606110062 博客园地址: https://www.cnblogs.com/liliguang/
姓名: 黄扬帆 学号: 201606110079 博客园地址: https://www.cnblogs.com/gzcchyf/
三. 时间估算
结对项目软件过程耗时估计表与统计表
(时间单位: 小时)
PSP2.1 | 个人软件实现阶段 | 预计时间 | 实际时间 |
Planning | 计划 | 1 | 2 |
· Estimate | 估计这个任务需要多少时间 | 10 | 15 |
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 |
· | 测试报告 | 1 | 1 |
· | 计算工作量 | 2 | 2 |
· | 并提出过程改进计划 | 2 | 2 |
四: 工作详情
(一) 工作:
黄杨帆: 设计和编写界面交互部分, 设计计时器, 保存用户名
李利光: 后台代码随机生成题目, 前后端数据交互, 判断正误, 计算得分
(二) 部分功能代码介绍:
(1) 题目获取功能: 通过 Ajax 异步获取一定数量的四则运算习题 (前台)
- getReq: function () {
- // 发送 get 请求
- this.$http.get('/getOperation?count=' + this.count).then(function (res) {
- this.items = res.body;
- }, function () {
- console.log('请求失败处理');
- });
- },
题目获取功能: 通过 Ajax 异步获取一定数量的四则运算习题 (后台)
- @RequestMapping("getOperation")
- public List<Operation> getOperation(int count){
- List<String> resultList=new ArrayList<>();
- List<String> problemList=new ArrayList<>();
- List<Integer> signNumberList=new ArrayList<>();
- fourArithmeticOperation.outPutData(count,resultList,problemList,signNumberList);
- List<Operation> list=new ArrayList<>();
- for(int i=0;i<resultList.size();i++){
- Operation operation=new Operation();
- operation.setAnswer(resultList.get(i));
- operation.setProblem(problemList.get(i));
- operation.setSignConunt(signNumberList.get(i));
- list.add(operation);
- }
- return list;
- }
(2) 用户提交功能: 首先经过校验机制判断是否输入答案, 之后进行答案的比对运算出答对题数量和最终得分
- rejectAnswer: function () {
- this.stopTime = true;
- this.get_answer_flag = true;
- this.currentShowResult = true;
- var itemClone = this.items;
- for (var i = 0; i < itemClone.length; i++) {
- if (itemClone[i].user_answer == itemClone[i].answer) {
- itemClone[i].isCorrect = false;
- var item = JSON.parse(JSON.stringify(itemClone[i]));
- this.items.splice(i, 1, item);
- this.currentCorrectCount++;
- } else {
- itemClone[i].isCorrect = true;
- }
- }
- },
- post: function () {
- // 校验表单
- var forms = document.getElementById('valitForm');
- if (forms.checkValidity() === true) {
- forms.classList.remove('was-validated');
- this.rejectAnswer();
- } else {
- forms.classList.add('was-validated');
- }
- },
五. 软件演示
六: 结对照片
七: 收获与感悟
来源: http://www.bubuko.com/infodetail-2820513.html