目录:

一、Coding.net项目地址

二、PSP

三、接口设计

四、接口实现

五、性能分析

六、单元测试

七、异常处理

八、模块设计

九、模块对接

十、结对

十一、思考

十二、PSP

网站:http://ali.hellowood.com.cn:8089/出题做题都能实现,如果生成题目太多,可能会有延迟

Coding仓库地址: https://git.coding.net/librarian1/Operation_Generation_Validate.git

二、十二、PSP

PSP

任务内容

计划时间(min)

完成时间(min)

Planning

计划

30

60

Estimate

估计这个任务需要多少时间,并规划大致工作步骤

30

60

Development

开发

60*36

60*60

Analysis

需求分析

60

60

Design Spec

生成文档

0

0

Design Review

设计复审

2*60

4*60

Coding Standard

代码规范

10

15

Design

具体设计

12*60

18*60

Coding

具体编码

16*60

30*60

Code Review

代码复审

4*60

6*60

Test

测试

15

60

Reporting

报告

5.5*60

9*60

Test Report

测试报告

60

0

Size Measurement

计算工作量

30

60

  Postmortem& ProcessImprovement Plan

事后总结, 并提出过程改进计划

4*60

8*60

三、接口设计

1、Information Hiding

信息隐藏是指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。

信息隐藏原理框图:

2、Interface Design、Loose Coupling

接口设计和低耦合是相辅相成的,接口化设计能大大降低程序的耦合度,低耦合一定离不开接口化设计。

我们将出题功能与做题功能设计成了2个类:为每一个具体的出题参数设计一个接口,在生成题目的generation类中实现这些接口,并且对这个类进行封装;实现松耦合接口可以由具体类generation和validate直接实现,而不需要改变依赖类interface,使得软件设计具有可扩展性。

四、接口实现

本次界面程序的调用关系如下图:

我们一共设计了5个类,分别为interface、Generate、Validate、Node、strOperating。

六、单元测试

 用Junit4对generation类和validate类中每一个方法进行单元测试,后来决定用简单的assert断言来编写测试,并且遵照了一部分单元测试的原则。

七、异常处理

对于题目数量,数值范围,运算符数量和题目要求输入等四个接口分别设计了异常。
异常写在了枚举类enum里面,然后在页面输入那些题目要求的时候会对每个输入框进行判断,如果有异常会走后台的方法输出异常

-    EXCEPTION_TITEL_NUMBER  
未设置题目数量或题目数量不符合规定
-    EXCEPTION_NUMBER_RANGE
未设置数值范围或数值范围不符合规定
-    EXCEPTION_SIGN_NUMBER
未设置运算符数量或运算符数量不符合规定
-    EXCEPTION_SIGN_NUMBER

题目要求未提交
 

八、模块设计

<head
<meta charset="UTF-8">
<title>四则运算题目</title>
<link href="css/main.css" rel="stylesheet" />
<script src="js/jquery-3.2.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
/*计时器*/
function two_char(n) {
return n >= 10 ? n : "0" + n;
}
function time_fun() {
var sec=0;
setInterval(function () {
sec++;
var date = new Date(0, 0)
date.setSeconds(sec);
var h = date.getHours(), m = date.getMinutes(), s = date.getSeconds();
document.getElementById("mytime").innerText = two_char(h) + ":" + two_char(m) + ":" + two_char(s);
}, 1000);
}
/*弹窗*/
$(function() {
$(".button").click(function(){
var $p=$("<p>3</p>");
var p_txt=$p.text();
var $h2=$("h2")
var h2_txt=$h2.text();
$(".mainone").remove();
$("h1").after(p_txt)
$("h1").after("<h3>正确题目数:</h3>")
$("h1").after(h2_txt)
$("h1").after("<h3>此次所用时间:</h3>")
});
}); </script>
</head>

十、结对

在结对的过程中,我和我的伙伴,也就是我的舍友,我们之间有很多愉快和不愉快的事情,意见不统一,项目也存在很多问题,但经过两个人的磨合,我们也算收获到很多东西,很感谢我的伙伴这段时间以来给予我的帮助和配合,感谢她帮了我很多东西,也很感谢我朋友给予我的帮助。

说一说我的小伙伴吧,她是一个南方女孩,在这么多天,包括这两年的接触中,我总结一下她的优点和缺点吧。

优点:很自律,很有时间观念,喜欢钻研一个东西,喜欢思考比较有挑战的问题,不畏惧难题,

缺点:太钻牛角尖,不懂得变通,在完成一个任务的过程中不喜欢接收别人的帮助,喜欢单打独斗,不注重团队合作。

最后说说自己的优缺点:

优点:做事果断,有主见,有领导能力,行动力强。

缺点:缺乏耐心,不够细心,比较浮躁,无法集中注意力。

十一、思考

总之很感谢这段时间的合作,我们在这次结对作业中都收获了很多东西,学会了处理问题的办法,独立思考,互相帮助。

结对编程的缺点:

1、对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾。

2、有时候,程序员们会对一个问题各执己见(代码风格可能会是引发技术人员口水战的地方),争吵不休,反而产生重大内耗。

3、两个人在一起工作可能会出现工作精力不能集中的情况。程序员可能会交谈一些与工作无关的事情,反而分散注意力,导致效率比单人更为低下。

4、结对编程可能让程序员们相互学习得更快。有些时候,学习对方的长外,可能会和程序员们在起滋生不良气氛一样快。比如,合伙应付工作,敷衍项目。

5、面对新手,有经验的老手可能会觉得非常的烦躁。不合适的沟通会导到团队的不和谐。

6、新手在面对有经验的老手时会显得非常的紧张和不安,甚至出现害怕焦虑的的精神状态,从而总是出现低级错误,而老手站在他们后面不停地指责他们导致他们更加紧张,出现恶性循环。最终导致项目进展效率低下,并且团队貌合神离。

7、有经验的人更喜欢单兵作战,找个人来站在他背后看着他可能会让他感到非常的不爽,最终导致编程时受到情绪影响,反而出现反作用。

结对编程的优点:

1、程序员互相帮助,互相教对方,可以得到能力上的互补。

2、可以让编程环境有效地贯彻Design。

3、增强代码和产品质量,并有效的减少BUG。

4、降低学习成本。一边编程,一边共享知识和经验,有效地在实践中进行学习。

5、在编程中,相互讨论,可能更快更有效地解决问题。

结对作业——web四则运算的更多相关文章

  1. 结对作业 -GUI四则运算

    目录: 一.前言(及项目地址) 二.PSP(planning) 三.结对编程中对接口的设计 四.计算模块接口的设计与实现过程 五.计算模块接口部分的性能改进 六.计算模块部分单元测试展示 七.计算模块 ...

  2. 结对作业:四则运算(Java+JavaFX)

    一.简介 此程序是一个可自动生成,计算小学四则运算题目的项目. Github地址:https://github.com/czmDeRepository/SoftwareWork/tree/master ...

  3. 结对作业——随机生成四则运算(Core 第7组)

    结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...

  4. 结对作业——四则运算 Part2. 封装与对接相关问题

    结对作业——四则运算 Part2. 封装与对接相关问题 PB15061303 刘梓轩PB16061489 艾寅中 GITHUB 地址 戳这里 目录 Part 1. Core代码编写部分Part 2. ...

  5. 结对作业——四则运算 Part3. 对于结对编程的总结与思考

    结对作业——四则运算 Part3. 对于结对编程的总结与思考 PB15061303 刘梓轩PB16061489 艾寅中 GITHUB 地址 戳这里 目录 Part 1. Core代码编写部分 Part ...

  6. Core 第三组 结对作业——四则运算 Part1. Core代码编写

    结对作业——四则运算 Part1. Core代码编写 PB15061303 刘梓轩PB16061489 艾寅中 GITHUB 地址 戳这里 目录 (因为内容较多,分为了三个部分,但作业系统中只能提交一 ...

  7. 【第二次个人作业】结对作业Core第一组:四则运算生成PB16061082+PB16120517

    [整体概况] 1.描述最终的代码的实现思路以及关键代码. 2.结对作业两个人配合的过程和两个人分工. 3.API接口文档和两个组的对接. 4.效能分析,优化分析和心得体会. [代码实现] 一. 实现功 ...

  8. 结对作业1----基于flask框架的四则运算生成器

    011.012结对作业 coding地址:https://coding.net/u/nikochan/p/2nd_SE/git 一.作业描述 由于上次作业我没有按时完成,而且庞伊凡同学编程能力超棒,所 ...

  9. 四则运算UI组结对作业报告

    Github提交地址: 小组成员:陈兆庭,陈昶金: 一.编程阶段 清明节开始接触和调研关于UI设计的方法.由于两人的各方面知识储备均不足,在各种东西C#.MFC.Qt中进行调查和讨论,最终因为网上说Q ...

随机推荐

  1. NULLIF与ISNULL的交叉使用

    事件源于字词字段拼接,由于不清楚NULLIF的本质导致惨剧发生. ', 'T5')), '6063-T5') ', 'T5'), ''), '6063-T5') 函数f_CTRL_GetAlloy功能 ...

  2. Flex自定义组件开发 - jackyWHJ

    一般情况下需要组件重写都是由于以下2个原因: 1.在FLEX已有组件无法满足业务需求,或是需要更改其可视化外观等特性时,直接进行继承扩展. 2.为了模块化设计或进一步重用,需要对FLEX组件进行组合. ...

  3. ASP.NET Core开发期间部署到IIS自定义主机域名并附加到进程调试

    在.NET Framework环境下,我们经常会这么做 把一个web项目不经过发布直接部署到IIS里去,配置上主机名,修改一下hosts文件,就可以用自定义的域名来访问我们的应用程序,使用附加到进程( ...

  4. Lookup 转换组件

    查找转换(Lookup)组件用于实现两个数据源的连接,实现的方式是嵌套循环.查找转换通常在内存中缓存查找数据集,然后在输入管道中,把输入数据的每一行都和缓存中的查找数据集进行比较,并输出匹配成功和失败 ...

  5. python将oracle中的数据导入到mysql中。

    一.导入表结构.使用工具:navicate premium 和PowerDesinger 1. 先用navicate premium把oracle中的数据库导出为oracle脚本. 2. 在Power ...

  6. 解决shell命令"** is not in the sudoers file..."错误

    Linux中新建的普通用户一般不会分配给root权限,每次都su root也太麻烦,可以通过在/etc/sudoers文件中添加当前用户的方式,给当前用户赋予sudo命令的使用权限. # 切换到roo ...

  7. yum 出现error: db5 error

    yum 安装k8s的过程中用了 Ctrl+ z, 然后yum 再也不能使用了: Error: rpmdb open failed 解决方法: rpm --rebuilddb yum clean all ...

  8. zabbix4.0LTS安装配置

    一.环境准备 1.最小化安装centos7.5系统 2.安装常用软件包 yum install -y net-tools vim bash-completion 3.关闭selinux和修改主机名 v ...

  9. Educational Codeforces Round 61 (Rated for Div. 2) E. Knapsack

    非常经典的dp题,因为1至8的最大公约数是840,任何一个数的和中840的倍数都是可以放在一起算的, 所以我只需要统计840*8的值(每个数字(1-8)的sum%840的总和),剩下都是840的倍数 ...

  10. 基于Redis实现分布式锁(续)

    代码实现: redis实现分布式锁(lock:通过间隔时间段去请求Redis,来实现阻塞占用,一直到获取锁,或者超时. unlock:删除redis中key)