软件工程第五次作业

Github地址:https://github.com/somnusw/study-tree/blob/master/NewFile.jsp


 

作业描述

软件工程https://edu.cnblogs.com/campus/zswxy/software-engineering-2017/
作业要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017/homework/10496
题目 2020软件工程作业05-家族树的可视化
作业正文 下面
其他参考文献 https://www.cnblogs.com/xiaowenshu/p/10450848.html

结对同学:20177583邓畅伟

具体分工

20177583邓畅伟:单元测试,D3框架的改进

20177731魏博硕:jstree的实现

共同完成:博客内容的撰写

PSP表格

 Personal Software Process Stages预估耗时实际耗时
Planning 计划 0 0
Development 开发 60 500
Analysis 需求分析 (学习新技术) 600 1200
Design Spec 生成设计文档 0 0
Design Review 设计复审 60 60
Coding Standard 代码规范 60 60
Design 具体设计 60 60
Coding 具体编码 180 600
Code Review 代码复审 180 180
Test 测试 180 180
Reporting 报告 60 120
Test Repor 测试报告 60 120
Size Measurement 计算工作量 0 0
Postmortem 事后总结 180 180
Process Improvement Plan 提出过程改进计划 60 60
Estimate 这个任务需要多少时间 1740 3320


解题思路、设计实现

难点分析:

  •       1.如何得到输入框中的内容
  •       2.如何处理输入框中的内容
  •       3.如何将所得的数据以树形的结构展示出来

如何生成家族树:

  •           经过大量的查找,最后找到了一个满意的解决方案o(* ̄▽ ̄*)o。但是生成树中的数据是固定的不是根据输入的要求而进行改变的,还要学习修改数据

得到文本输入:

  •           我重新学习了一下java web中的DoM树,运用其中的document.getElementById()方法来返回指定id元素的内容,并将其内容(也就是我们输入的内容)都保存在                    一 个变量中。

处理输入文本中的内容

  •          1.首先我们先将从文本框中得到的全部内容以换行符来进行分割,并将其放内容保存在一个变量中。
  •          2.接下来将1中变量再对每行的数据进行分割,以冒号为分隔符进行分割,并将其内容保存到一个变量中。
  •          3.再将2中的变量对冒号后的数据进行分割,以顿号为分割符,保存在一个变量中。

设计

关键算法及流程图

  1.getJsonDataLength()函数--------因为数据是json格式,所以求父节点的下一级子节点的长度就是关键,check()函数就要调用getJsonLength()函数得到子节点的长度。

                                       

       2.接下来是check_son_tree()函数,遍历之前所有树的所有节点,查找是否有导师的学生也是导师的情况,同时调用getJsonLength()函数,得到父节点的下一级子节点的长度,来进行递归查找。

                         

        3.核心代码流程图

 

 4.将核心代码分解来进行分析

    • 获取文本框中的数据

            

    • 对其数据进行拆分获取导师名字

                   

    • 学生的年纪级学位、学生的姓名

              

    • 与前面所有的树进行比较,判断是否为关联树,调用核对函数

                

    • 画出所有的树,调用treeInit()函数

             

附加特点设计与展示

设计的创意独到之处以及设计的意义


1. 采用上下格局,使界面显得整齐规整

2.透明图片作为背景,增加界面的美观感

实现思路


 

1.css 样式对界面的定位

2.算法和重要的代码见上面

实现成果展示


 

在博客中使用说明

说明你的目录是如何组织的


1.使用方式

  下载到本地,解压后用chrome打开NewFile.JSP,在右侧文本框输入文本。

  学术家族树以文本形式输入,点击提交文本框。

2. 文本格式

                学术家族树以文本形式输入,点击提交文本框,考虑学术家族树的文本格式是这样的:

    •         输入:

导师:张三

2016级博士生:天一、王二、吴五

2015级硕士生:李四、王五、许六

2016级硕士生:刘一、李二、李三

2017级本科生:刘六、琪七、司四

!!!文本最后不能换行

其中,"导师:","级博士生:","级硕士生:","级本科生:"和"、"当做关键词处理;若有多组输入,中间空一行

    •         输出:

树的节点,鼠标点击后是可以缩放的。同时,支持呈现多棵树并存、两棵关联树共存等形式。

在下侧家族树下会显示可缩放的树状结构,即生成的家族树

测试人员如何运行你的网页


  • 点击github上把文件Clone到本地,解压后即可使用。
  • 直接用Chrome打开NewFile.JSP,输入格式按照作业要求。
  • 在上面的文本框输入数据,点击提交文本,将会在下面生成一棵以导师为根节点的树。同时支持多棵树并存以及关联树。

单元测试


 

1.测试工具

使用的是Chrome浏览器的F12工具台进行测试

在这里推荐看一下教程:https://www.cnblogs.com/xiaowenshu/p/10450848.html

2.测试代码

在代码中使用console.log()的命令检查数据分割的正确性

有了这个工具后我们确实加速了很多的进度

这是本次实验最大收获的一部分,掌握了Chrome控制台的使用

3.测试数据

数据一:

导师:张三
2016级博士生:天一
2015级硕士生:李四
2016级硕士生:刘一
2017级本科生:刘六

 

数据二:

导师:刘2

2016级博士生:天四、王九

2015级硕士生:李四

2016级硕士生:刘一

2017级本科生:刘一

数据三:

 

导师:张三

 

2016级博士生:天一、王二、吴五

 

2015级硕士生:李四、王五、许六

 

 

数据四:

导师:张三

2016级博士生:天一、王二、吴五

2015级硕士生:李四、王五、许六

2016级硕士生:刘一、李二、李三

2017级本科生:刘六、琪七、司四

数据五:

导师:张三

2016级博士生:天一、王二、吴五

2015级硕士生:李四、王五、许六

2016级硕士生:刘一、李二、李三

2017级本科生:刘六、琪七、司四

导师:吴五

2016级博士生:天一、王二、吴

2015级硕士生:李四、王五、许六

2016级硕士生:刘一、李二、李三

2017级本科生:刘2、琪七、司四

数据

导师:张三

2016级博士生:天一、王二、吴五

2015级硕士生:李四、王五、许六

2016级硕士生:刘一、李二、李三

2017级本科生:刘六、琪七、司四

导师:吴五

2016级博士生:天二、王四、吴六

2015级硕士生:李一、王八、许七

2016级硕士生:刘三、李八、李二

2017级本科生:刘一、琪八、司四九


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

  • 问题描述:树状结构难以实现。

  • 尝试:学习VUE,D3等框架,寻找类似树状可折叠结构的模板,学习API使用。

  • 是否解决:已解决。

  • 问题描述:无法与界面树进行数据交互

  • 尝试:学习json,用json做结构

  • 是否解决:已解决

评价队友


 

    值得学习的地方=====大佬就是牛,各方面都要向他学习(自己就是垃圾)

   需要改进的地方=====界面不太美观,需要改进

原文地址:https://www.cnblogs.com/weiboshuosomnuslog/p/12273572.html