• 结对项目-四则运算 “软件”之升级版


    一.前提

    (1)作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

    (2)GitHub地址:https://github.com/P-and-A/learningGit/tree/master/arthematic

    (3)调试环境:IntelliJ IDEA ,CHORME浏览器,Tomcat8.5.28

    二.作业要求

    (1)基本要求

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

    (2)扩展要求

    1. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。
    2. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
    3. 程序可以设置皮肤功能,可以改变界面的颜色即可。
    4. 程序可以出单个整数阶乘的题目:如:4!=24。

    (3)结对成员

       姓名:廖超凡 学号:201606120044 博客园地址:https://www.cnblogs.com/grate/

           姓名:梁秋华 学号:201606120036 博客园地址:https://home.cnblogs.com/u/liangqiuhua/

          

    三.时间估算

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

           (时间单位:小时)

    PSP2.1

    个人软件实现阶段

    预计时间

    实际时间

    Planning

    计划

    10

    16

    · Estimate

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

    10

    17

    Development

    开发

    10

    10

    · Analysis

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

    0.5

    0.5

    · Design Spec

    生成设计文档

    0.5

    0.5

    · Design Review

    设计复审

    0.2

    0.2

    · Coding Standard

    代码规范

    0.1

    0.1

    · Design

    具体设计

    0.2

    0.2

    · Coding

    具体编码

    1

    1

    · Code Review

    代码复审

    0.5

    0.5

    · Test

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

    1

    1

    Reporting

    报告

    0.5

    0.5

    ·

    测试报告

    0.5

    0.5

    ·

    计算工作量

    1

    1

    ·

    并提出过程改进计划

    1

    1

    五.工作详情

        (一)工作:

        廖超凡:          架设服务器、数据库录入题目、设计实现获取题目及答案的Api接口、协助前端设计交互逻辑。

        梁秋华:          设计前端的界面设计部分、按键、按钮、测试输入答案

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

      后端:

        (1)处理请求

    1     @RequestMapping(value = "get_questions/{num}")
    2     @ResponseBody
    3     public String getAllQuestion(@PathVariable("num")int num){
    4         return iQuestionService.getAllQuestion(num);
    5     }

        

      (2)随机选取题目并返回Json数据

     1 public String getAllQuestion(int num){
     2         List<Question> questionList = questionMapper.getAllQuestion();
     3         List<Question> selectList = new ArrayList<>();
     4         Set<Integer> selected = new HashSet<>();
     5         int size = questionList.size();
     6         for(int i=0;i<num;){
     7             Random random = new Random();
     8             int randomNum = random.nextInt(size);
     9             if(selected.add(randomNum)){
    10                 selectList.add(questionList.get(randomNum));
    11                 i++;
    12             }
    13         }
    14         return ToJsonUtil.getToJsonUtil().objectToJson(selectList);
    15     }

      前端:

        (1)题目选择显示功能:可以通过下拉框来选择题目显示的数目,此处可以从后端服务器数据库中获得题目,并更新页面状态

     1                   get:function(){
     2                         //发送get请求
     3                         var num = $('#itemNum').val();
     4                         this.ischeck = false; //刷新批改状态
     5                         this.$http.get('get_questions/'+this.selected).then(function(res){
     6                             this.msg=res.body;
     7                         },function(){
     8                             console.log('请求失败');
     9                         });
    10 //                        页面初始化
    11                         $.each( $('[data-index]'), function(index,item){
    12                             var a = item.children;
    13                             a[1].value="";
    14                             if(a[2].style.visibility="visible"){
    15                                 a[2].style.visibility="hidden";
    16                             }
    17                         });
    18                     },

        (三)运行与测试结果

                        

                             图1.回答并统计成绩


                         

                       图2.有正误扣分提示


                       

                         图3.选择题目数量并打印


                      

                       图4.换肤功能演示

        

      (四)结对照片

                                

    六.收获与感悟

      (一)遇到的问题及解决方案

        技术方面:

          (1)Tomcat运行时,项目中有些类出现ClassNotFound。

            通过搜索引擎查找相似的问题,发现问题出现使用idea构建Maven项目,将项目打包到Tomcat时,相关Jar包并没有加到Tomcat运行环境的Web模块中,导致某些类出现ClassNotFound,通过idea的Project Structure设置后,在Tomcat的部署环境中出现相关Jar包。

        合作方面:

          (1)有些需要边学边做,两人合作出现项目进度不好把控,容易出现延期。

            如果项目赶工期的话,尽量采用双方熟悉的技术,避免耽误项目的完工。不赶工期的话,以做促学,可以有效提高技术水平,缺点是卡壳时会耽误进度。

          (2)项目分工不明确(如对题目的预处理,在前端随机挑选还是后端挑选分工没有明确),有些功能实现出现了延期。

            功能设计需要更加详细具体指明实现方。

  • 相关阅读:
    17.天堂和地狱只在你的一念之间
    14.事情原来可能更糟
    如何评价一个网站的人气(Link Popularity Check)
    1.人生何必一定要成功
    4.何不看开一点
    字符串到枚举的转换代码
    广州泳场一览表
    收集开源项目
    7.把“失去”当作“抛弃”
    经常使用的Oracle监控语句
  • 原文地址:https://www.cnblogs.com/grate/p/9842185.html
Copyright © 2020-2023  润新知