基本信息

学号 姓名 具体分工 博客链接
031702313 周丽榕 js编码,实例测试 https://www.cnblogs.com/lrongblog/
031702206 吴雅虹 UI设计,文字归纳 https://www.cnblogs.com/wuyahong/
GitHub地址:https://github.com/zlrong-hub/031702313-031702206-
本次作业博客链接:https://edu.cnblogs.com/campus/fzu/2019FZUSEZ/homework/8736

PSP表格

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 40
Estimate 估计这个任务需要多少时间 30 40
Development 开发 150 120
Analysis 需求分析 (包括学习新技术) 900 750
Design Spec 生成设计文档 30 30
Design Review 设计复审 30 60
Coding Standard 代码规范 (为目前的开发制定合适的规范) 60 30
Design 具体设计 60 90
Coding 具体编码 480 600
Code Review 代码复审 60 90
Test 测试(自我测试,修改代码,提交修改) 180 240
Reporting 报告 30 60
Test Repor 测试报告 60 60
Size Measurement 计算工作量 30 60
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 60
合计 2160 2330

解题思路描述与设计实现说明

解题思路

  • 在文本框中输入数据,将数据放入数组中放入数组
  • 将数组中的数组进行分割
  • 在div块中动态生成无序列表
  • 本来想用jstree来增加可扩展性
  • 设置css格式

设计实现

生成家族树函数

 //动态生成内嵌无序列表
    function rendertree(lines,parent){
        if(lines.length<=1||lines[1].length<=1){
            var el=$('<a href="#">'+lines+'</a>');
            parent.append(el);
            return parent;
        }
        else{
            el=$('<a href="#">'+lines[0]+'</a>');
            parent.append(el);}
        var ul=$('<ul/>');
        for(var i=1;i<lines.length;i++){
            var li=$('<li/>');
            rendertree(lines[i],li);
            ul.append(li);
        }
        parent.append(ul);
        return parent;
    }
    //在divz中添加生成的无序列表
    function render(lines){
        var div=$('<div/>');
        return rendertree(lines,div);
    }
    function maketree(){
        //将文本框内容进行分割后存放在数组中
        var text=0;var lines=new Array();var data=new Array();var tdata=new Array();var line=new Array();var k=0;var j=0;
        text=document.getElementById("Text").value;
        lines=text.split("\n");
        for(var i=0;i<lines.length;i++){
            lines[i]=lines[i].replace(/(:)/g," ");
            lines[i]=lines[i].replace(/(、)/g," ");
            lines[i]=lines[i].split(" ");
        }
        /*for(var i=0;i<lines.length;i++){
            if(lines[i]!=""){
                data[j]=lines[i];j++;
            }
            else{
                tdata[k]=data;k++;j=0;var data=new Array();
            }
        }*/
        //for(var j=0;j<tadata.length;j++) {
            var tree=render(lines);
            $("div").append(tree);
        //}
        $("a").click(function () {
            $(this).next().toggle();
        });
    }

页面设计

<head>
    <meta charset="utf-8">
    <title>家族树</title>
    <style type="text/css">
     body
     {
	background-image:url(背景1.jpg);
	background-repeat:no-repeat;
	background-size:cover
      }
     .main
     {
	width:60%;
	height:400px;
	float:right;
      }
      </style>
</head>
<body>
<h2 align="center"><font color=black>家族树信息</font></h2>
请输入家族树信息
<br>
<textarea id="Text"cols ="50" rows = "20" style="background-color:transparent"></textarea>
<div id="div" class ="main">
</div>
<br>
<br>
<button onclick="maketree()" style="margin-left:140px;">maketree</button>
</body>

附加特点设计与展示

特点

基本上没什么特点,就是很简单的一棵树

页面展示

登录界面

生成界面

节点缩放

目录说明和使用说明

目录说明

家族树文件中包含jiazushu文件和README文件
jiazushu文件夹是包含html文件、img文件、jiazushu.js文件
README文件网页使用说明

使用说明

  • 下载整个家族树文件夹
  • 打开jiazushuwen文件中的jiazushu.html可在浏览器中看到页面
  • 在文本框内输入数据,点击按钮将显示结果

单元测试

单元测试使用谷歌浏览器

Github的代码签入记录



遇到的代码模块异常或结对困难及解决方法

问题描述:如何将文本内容进行合理的分割并且存放在数组中
做过哪些尝试:只是利用split()进行分割但是没有达到预期的结果,后来通过split()与replace()相结合实现了预期效果
是否解决:已经解决
有何收获:学会了使用replace()函数

问题描述:无法动态生成无序列表
做过哪些尝试:在html中设置ul预留部分,然后在动态添加li
是否解决:已经解决
有何收获:动态添加元素并且添加父元素的子元素,用递归的方式动态生成内嵌列表

问题描述:无法实现多棵树并存以及关联树
做过哪些尝试:将生成一颗树的函数放在循环里面生成多棵树
是否解决:未解决

评价队友

吴雅虹:首先很感谢我的队友,由于我在编码能力方面确实有所欠缺,所以此次js部分全部由她完成,包括前期的学习和后期编码及修改,这可能也是我比较愧疚的地方,没有在她困难时提供实质上的帮助,也多亏她认真的态度,才能让我们顺利完成此次作业;希望我们在之后的团队合作中也能继续勉励,完成1+1>2。
周丽榕:对于我们两个前端小白来说做这次的任务实属困难,在完成作业的过程中我的队友给予了我很多鼓励,让我可以做下去。同时也希望在我们以后的过程中能够在多一些交流和分享。