• 四则运算——结对编程


    一、Coding.Ne项目地址:https://git.coding.net/deervw/four-operations.git

    测试url地址:http://localhost:8080/pairwork/Login.jsp

    写在前面:在自己进行测试时,生成文件地址 ../result.txt,但最后发现的文件自动生成到了桌面上,之后询问过老师和助教,至今仍未得到解决。若老师或助教在进行测试时出现报错,请将Question.jsp和Answer.jsp页面的查找文件地址改成“C:\web”,可能会解决问题。

    二、预估PSP表格

    PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟) 
    Planning 计划
    30

    60
     
    Estimate · 估计这个任务需要多少时间
    30

    60
     
    Development 开发
    720

    750
     
    · Analysis ·需求分析 (包括学习新技术)
    90

    60
     
    · Design Spec ·生成设计文档
    30

    30
     
    Design Review ·设计复审 (和同事审核设计文档)
    60


    60
     
    · Coding Standard ·代码规范 (为目前的开发制定合适的规范)
    60

    30
     
    · Design · 具体设计
    120

    180
     
    · Coding · 具体编码
    120

    240
     
    · Code Review · 代码复审
    120

    60
     
    · Test · 测试(自我测试,修改代码,提交修改) 240
    120
     
    Reporting 报告
    150

    240
     
    · Test Report · 测试报告
    60

    120
     
    · Size Measurement · 计算工作量
    30

    30
     
    · Postmortem & Process Improvement Plan ·事后总结, 并提出过程改进计划
    60

    90
     
      合计
    900

    1050

    三、接口设计

    Information Hiding、Interface Design、Loose Coupling:信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。隐藏变化源:这样当变化发生时,其影响就能被限制在局部范围内。例如我的设计的judge()方法,只能被函数调用,而不改变其内部变量。面向对象设计最大的原则就是针对接口设计。可见接口的重要性,如果接口能够定义好,不仅便于自身维护,而且也导致上层应用不需要太多变动。接口能够松耦合,是因为多态的特性,父类或者接口的引用是可以接受子类对象的,表现耦合低的意思是说,删除调用层与接受层无关,即方法只需要接口类型,具体传入哪个对象是无需关注的,因为接口是一种规则。例如我们设计的Command类中,生成算式和优先级判断是相互独立的,直接调用即可。

    四、计算模块接口的设计与实现过程

    本次四则运算项目共用到了2个类,3个函数。两个类包括实现主要功能的Command类,和对生成文件进行操作的ChangeFile类。调用关系为Command类调用ReplaceText类。三个函数包括判断优先级judge(),替换特殊字符Replace()和生成算式create(),create()调用judge()和Replace()。

    我们程序的关键在于算式的生成,这是本次项目的最基本功能,代码的独到之处在于类和函数数量少,调用关系明确简单,但缺点是后期的维护较困难。

    五、计算模块接口部分的性能改进

    所花时间:共4小时(查找模块1小时,改进3小时)

    六、计算模块部分单元测试展示

    这里展示两个函数judge()和create()测试截图,我们使用了JUnit来进行测试,通过给这两个函数赋值,与预估值进行比较。结果如下:

    七、计算模块部分异常处理说明

    (1)效范围正整数异常处理

    try {
                n = Integer.parseInt("n1");
                if (n <= 0||n>1000)
                    System.out.println("出题数目无效,请重新输入!");
            } catch (Exception e) {
                System.out.println("输入的不是正整数,请重新输入!");
            }

    对应场景:

    (2)文件生成异常处理

    try {
                PrintStream ps = new PrintStream("../result.txt");
                System.setOut(ps);
            } catch (Exception e) {
                System.out.println("文件生成错误!");
            }

    对应场景:

    八、界面模块的详细设计过程

    (一)、登录界面

     首先登录界面是一个JSP页面,主要用HTML和CSS代码写在JSP文件当中实现页面的部分,首先是登录的部分,打开网页版的程序,首先会看到 一个登录页面,登录界面的背景是星空的图案,在登录界面中,会有两个白色的文本框,一个为输入用户名的文本框,另一个是输入密码的文本框,用户只需输入自己的用户名和密码即可,再输入完用户名和密码过后,你会看见在文本框下面看见一个蓝色的按钮,上面写着登录,所以输入用户名和密码然后点击登录按钮即可提交表单,处罚ACTION的行动,进入下一个界面。

    (二)、欢迎界面

      当你在登录界面点击了蓝色的登录按钮过后,触发了ACTION的动作,就进入了欢迎界面,在欢迎界面你会看见背景是白色为主的,上面有数学公式和多彩的运算符的以及一个小人的团,在该界面,你会看到在页面的正中央的上面有加加粗的深蓝色的大字“欢迎来到四则运算小程序!~”,在该界面的标题的正下方,你会看到一个蓝色的“开始答题”的按钮,当你想要开始答题时,只需点击按钮进入下一页面即可。

    (三)、主界面

      当你在欢迎界面点击了“开始答题~”的蓝色按钮之后,你就会进入下一个页面,主页面,界面包括各个系统功能选择项,包括题目数的选择,运算符个数的选择,题目范围的选择,以及生成题目的按钮。首先题目数的选择输入是以文本框,由用户输入想要生成的题目的数量,接下来是运算符个数的选择,考虑到是小学生的四则运算,所以我们的题目运算符个数不能太多,所以我给用户提供了四个选择,分别为“一个运算符” 、“两个运算符” 、“三个运算符”  、 “四个运算符” ,是以一个下拉框的形式出现在页面上的,最后是生成题目按钮,当你点击按钮,表单内的题目数 、运算符数 、题目范围等参数就会传给后台,后台就会执行生成题目这一动作。
    <p  style="color: #FFFFFF !important ; font-size :30px">题目数</p>
     </td>
     <td>
     <div class="input_outer1">
      
     <input name="n1" class="text1" style="color: #FFFFFF !important" type="text" placeholder="请输入题目数">
      </div>
      </td>
      </tr>
     <tr>
     <td>
     <label  style="color: #FFFFFF !important ; font-size :30px">运算符数</label>
     </td>
     <td>
     <select  class = "sel" style = " padding-right: 14px;" name = "m1">
     <option value = "1">一个运算符</option>
     <option value = "2"  selected = "selected">二个运算符</option>
     <option value = "3">三个运算符</option>
    <option value = "4个">四个运算符</option>
     <lect>
     </td>
     </tr>

    (四)题目页面

      当你在主页面内输入了你想要的题目数,运算符数,题目范围等点击了生成题目的按钮,那么这些参数就会通过Request对象传给后台,后台接收到你的请求,生成相应的题目,输出到前端页面,用户可在前端的题目页面上进行答题操作,后台会实时记录你答题的时间,但你答题结束后,你会在页面的右下方看见一个蓝色的提交按钮,点击该按钮,提交你的答案。在按钮的右侧,你会看见,一个计时器,

    (五)答案页面

      当你在题目页面点击了提交按钮,提交了表单后,你的题目和答案会一起提交到后台,后台的计时器会停止计时,并且后台会对你的题目进行分析判断,最后提交给你一份答案页面,以及你的正确率,以及你答题所用的时间信息。当你检查完题目,觉得要结束这个答题程序了,你可以点击离开按钮,提交表单,AVTION回到登录页面,离开该程序。但如果你对于刚才自己的表现不满意,想要再做一次,可以选择点击右下方的另一个蓝色的按钮,再来一次,选择在一次挑战自己,点击该按钮后,你就会进入主页面,重新选择你想要做的题目的类型的。

    九、界面模块与计算模块的对接

    本次结对编程我们做的是Web项目,在前端页面和后台程序的对接中,我们使用了<% ><%>嵌入java代码来调用后端的函数,引入类的包,使用内置对象request来获取前台的值,并向create和Replace函数传入参数来调用java函数,如下图:

    实现的功能:

     

    生成题目文件和答案文件:

    十、结对过程照片展示

    十一、编程的优点和缺点

    (1)优点:

             结对编程可以交付更好的设计质量和代码质量。

             结对编程具有更强的问题解决能力。

             结对编程伙伴一起工作学习,能够互相提供更多的信心。

    (2)缺点:

             分工不同,可能导致后期代码结合比较困难,互相看不懂代码,不知如何修改。

             交流困难,意见不同,进展不太顺利。

       结对小伙伴 郑春雨 优点:前段代码能力强、有上进心、责任心强;缺点:不够耐心                                         我的  优点:思路清晰、合作能力较好、有上进心;缺点:不够耐心

    十二、项目结束后PSP展示

    PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
    Planning 计划
    60
    60
    · Estimate · 估计这个任务需要多少时间
    1200

    2160
    · Analysis · 需求分析 (包括学习新技术)
    60

    180
    · Design Spec · 生成设计文档
    30

    30
    · Design Review · 设计复审 (和同事审核设计文档)
    30

    30
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范)
    90


    60
    · Design · 具体设计
    120

    150
    · Coding · 具体编码
    120

    180
    · Code Review · 代码复审
    120

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

    60
    Reporting 报告 1
    90
    · Test Report · 测试报告
    90

    120
    · Size Measurement · 计算工作量
    90

    60
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划
    60

    60
  • 相关阅读:
    常用的服务器简介
    PHP Proxy 负载均衡技术
    Hexo 博客Next 搭建与美化主题
    Tomcat PUT方法任意文件上传(CVE-2017-12615)
    哈希爆破神器Hashcat的用法
    内网转发随想
    Oauth2.0认证
    Github搜索语法
    记一次挖矿木马清除过程
    利用ICMP进行命令控制和隧道传输
  • 原文地址:https://www.cnblogs.com/fux137/p/8762484.html
Copyright © 2020-2023  润新知