2020软件工程第五次作业05

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10619
这个作业要求在哪 在网页页面上呈现树形结构形式的师门树
作业正文 下文
参考文献 CSDN、哔哩哔哩、学堂在线、名华在线、百度文库······

1.链接

[唐同学的博客地址:](https://home.cnblogs.com/u/asd1422/)
[严同学的博客地址:](https://home.cnblogs.com/u/fengyunzhixia/)
[本次作业的博客地址](https://i-beta.cnblogs.com/posts/edit;postId=12706425)
GitHub项目地址:

2.明确分工

  • 唐:整合资料,参与和协助我完成项目
  • 严:需求分析、代码编写、UI设计

3.PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 40
Estimate 估计这个任务需要多少时间 30 40
Development 开发 150 120
Analysis 需求分析 (包括学习新技术) 950 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 30
Test Repor 测试报告 60 60
Size Measurement 计算工作量 10 60
ostmortem & Process Improvement 事后总结, 并提出过程改进计划 30 60
合计 2200 2300

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

需求分析

读完题目,经过认真的分析,NABCD模型,我们将整个需求分成三个模块

  • 处理输入数据模块
  • TreeGraph模块
  • 个人信息展示模块

算法关键

主要在于处理输入数据,首先空行分割数据,数据按组来处理,每一组在通过关键字检测提取分割,最后维护出图的邻接表。然后通过dfs递归遍历图,将数据格式修改为指定要求的构建树图数据格式,传入对应的类,渲染出关系树。

树的结构设计

因为存在多树关联的情况,那么本质上就是构造出一张DAG,但是我们经过讨论后,认为如果构造一张DAG的话,可能层级结构不是那么清晰,我们决定如果多棵树有公共节点就合并成为一颗树,每一个级别也抽象成一个点,例如"2016级博士生"也作为图上的一个点,每一人物节点的父节点先是他是什么年级的学生,再连着他的导师,公共节点拿去拆分成多个副本,这样结构关系清晰,并且也能够清楚知道他跟过哪些导师,但是每个人只保存他的最高学历。

  • 上一次结对是美术作业,这次自然就是延续“学术家族树”的编程作业了。我们用思维导图构思了一下,如下:

  • 树状静态结构的生成

  • 代码组织与内部实现设计(类图)

  • 说明算法的关键与关键实现部分流程图

  • 贴出你认为重要的/有价值的代码片段,并解释

5.附加特点设计与展示

  • 设计的创意独到之处,这个设计的意义

  • 实现思路

  • 贴出你认为重要的/有价值的代码片段,并解释

  • 实现成果展示

6.在博客中给出目录说明和使用说明

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

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

7.单元测试

  • 说明你们选用的测试工具,是如何学习单元测试的,能出一份你自己的简易教程吗?

  • 展示出项目部分单元测试代码,并说明测试的函数

  • 说明构造测试数据的思路,你是如何考虑各种情况的?你如何考虑将来测试人员的刁难?

  • ps:上一次编程作业是比较欠缺的部分,请同学们认真完成此次单元测试,请看附录部分说明。

8.贴出Github的代码签入记录

  • 请合理记录commit信息

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

  • 问题描述

选择如何建成一棵树

我觉得大多数人在看到题目的时候都没什么头绪,毕竟以树的结构直接显示出来数据大多数都没有经验,所以大家都在这个问题纠结。一开始是想用bootstrap,毕竟这是助教推荐的,我也不知道这个能不能实现,但也就先学。边学别实现,虽然效率不是很好。

问题二

处理数据

本次作业需要使用框架,而框架对于数据的传入格式有着非常严格的要求,把传入的数据处理成框架所需要的比较困难,我们采用层层处理,像剥洋葱一样,将数据分成多步慢慢处理,提取出其中需要的并转化为固定的格式

问题三

合成树

对于每一大块数据会生成一个三层的树,如果只是把一组组数据单独的显示成一颗颗树,其中不乏有联系的节点,但那样树节点有许多的关系都没有体现出来,而把它们连接起来就格外的困难,在这里我们首先在处理数据的同时记录每个节点的父亲节点,由此可以将树的关系搭建起来,在这里我们首先在处理数据的同时记录每个节点的父亲节点,由此可以将树的关系搭建起来,再使用深搜逐步将数据串起来,将零散的数据合并为一整个树

有何收获

10.评价你的队友

值得学习的地方:

  • 长路漫漫,队友作伴

自己需要改进的地方:

  • 做事比较没有效率,一些简单的东西都要上网去看视频从头学到尾,这样的方式虽然好但是效率不高。我给出的意见是直接看官网样例或者API,实在不懂再去看视频解释,这样才能发挥最大效益。
原文地址:https://www.cnblogs.com/fengyunzhixia/p/12706425.html