软件工程实践2019第五次作业——结对编程的编程实现

1.链接

结对成员
作业博客
Git地址


2.分工

031702108 叶心言:UI设计,博客编写
031702142 林德辉:代码编写,测试


3.PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 20
Estimate 估计这个任务需要多少时间 20 20
Development 开发 340 300
Analysis 需求分析(包括学习新技术) 40 60
Design Spec 生成设计文档 20 10
Design Review 设计复审 10 10
Coding Standard 代码规范(为目前的开发制定合适的规范) 10 5
Design 具体设计 30 30
Coding 具体编码 160 120
Code Review 代码复审 30 45
Test 测试(自我测试,修改代码,提交修改) 50 60
Reporting 报告 30 30
Test Report 测试报告 10 10
Size Measurement 计算工作量 10 10
Postmortem & Process Improvement Plan 事后总结,并提出改进计划 10 10
合计 390 350

4.解题思路与设计实现

4.1代码组织
数据输入与处理
zTree实现
4.2算法关键
输入数据的处理,保存为zNode节点,使用父子ID的形式来寻找父亲
4.3代码片段
<script>
function getString(separator) {
    let str; //输入的信息
    str = document.getElementById("inp").value;

    if(str == null || str == ""){ //未输入信息点击提交按钮出现提示
        alert("请输入学术家族树");
        return false;
    }

    var treenode = 0;  //多课树
    var num = 100;     //一级根的编号
    var student =  1000;  //二级根的编号

    for(var i = 0; i < str.length;i++){
        if(str[i] == "导"&& str[i+1] == "师" &&str[i+2] == ":"){
            var name;
            var k = 0;
            for(var j = i+3;j < str.length;j++){
                if(str[j] == "\n") {//导师名字输入完成
                    k = j;
                    break;
                }
            }
            if(k == 0) k = str.length-1;
            name = "导师:" + str.substring(i+3,k);
            zNodes1.push({"id":++treenode,"pId":0,"name":name});//加入节点

        }else if(myIsNaN(str[i])){
            var name;
            var k;
            for(var j = i;j < str.length ;j++){
                if(str[j] == ":"){//毕业级数及学位
                    k = j;
                    break;
                }
            }
            name = str.substring(i,k);
            zNodes1.push({"id":++num,"pId":treenode,"name":name}); //加入节点

            for(var j = k;j < str.length;j++){
                if(str[j]=="\n"){//一行输入结束
                    i = j;
                    break;
                }
                else if(str[j]=="、"){// “、”直接跳过
                    continue;
                }
                else if(str[j] != ":"){// 冒号后为人名
                    for(var q = j;q < str.length;q++){
                        if(str[q]=="、"){
                            k = q-1;
                            break;
                        }
                        if(str[q] =="\n"){ //人名输入结束
                            k = q-1;
                            break;
                        }
                    }
                    if(k < j) k = str.length;
                    name = str.substring(j,k+1);
                    zNodes1.push({"id":++student,"pId":num,"name":name});//加入节点
                    j = k;
                }
                i = j;
            }
        }
    }
    //初始化第一个树
    $.fn.zTree.init($("#ztree1"), setting1, zNodes1);
    document.getElementById("inp").style.display="none";
    document.getElementById("reset").style.display="none";
}

5.附加特点设计与展示


6.目录及使用说明

6.1目录组织

6.2网页运行
直接打开webtree.html文件就可以运行

7.单元测试

7.1关于测试工具

选择的测试工具是mocha+chai,通过WebStorm集成Mocha + Chai进行js单元测试 进行学习。

7.2测试部分

测试代码

测试结果

7.3测试思路

测试数据的思路,主要是数据的输入处理,因而只有对数据的节点时候正确存储进行判断


8.Github代码签入记录


9.遇到的困难及解决方法

问题描述

zTree样式不知道如何改变

做过的尝试

百度,看源码

是否解决?

暂未

收获

面向百度编程的能力又提升了


10.评价你的队友

值得学习的地方
效率高
需要改进的地方
对细节不太注意

猜你喜欢

转载自www.cnblogs.com/yxyolo/p/11704842.html