2020软件工程作业05
这个作业属于哪个课程 |
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10619 |
这个作业要求在哪里 |
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10619 |
这个作业的目标 |
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10619 |
作业正文 |
本篇 |
其他参考文献 |
百度 |
学号 |
姓名 |
20177599 |
胡宇 |
20177588 |
郭承宗 |
github地址:https://github.com/a2228618156/20177599-20177588
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 |
30 |
Estimate |
估计这个任务需要多少时间 |
30 |
30 |
Development |
开发 |
600 |
550 |
Analysis |
需求分析 (包括学习新技术) |
800 |
850 |
Design Spec |
生成设计文档 |
30 |
30 |
Design Review |
设计复审 |
30 |
30 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
30 |
30 |
Design |
具体设计 |
100 |
110 |
Coding |
具体编码 |
800 |
900 |
Code Review |
代码复审 |
60 |
60 |
Test |
测试(自我测试,修改代码,提交修改) |
60 |
50 |
Reporting |
报告 |
60 |
60 |
Test Report |
测试报告 |
30 |
30 |
Size Measurement |
计算工作量 |
30 |
30 |
Postmortem & Process Improvement Plan |
事后总结, 并提出过程改进计划 |
30 |
30 |
合计 |
|
2720 |
2820 |
- 解题思路:
- 代码组织与内部实现设计:代码就是html,首先进行数据处理,然后根据节点和边进行建图。从根节点通过d3框架渲染树形结构。
- 关键代码和流程图:
- 代码:
- 输入:

- 读取数据:var str=document.all.text.value;//读取数据
- 数据处理:
var next=new Map; var level=new Map; var f=new Map; var x=["博士生", "硕士生", "本科生"]; var map=new Map(); var vi=[]; map["导师"]=4; map["博士生"]=3; map["硕士生"]=2; map["本科生"]=1; for(var i=0;ivar j; for(j=i;jif(arrstr[j]=="") { break; } } var item=arrstr[i].split(':'); var tp=item[1]; next[tp]=[]; level[tp]=item[0];; vi.push(tp); for(var l=i+1;lfor(var val of x) { if(arrstr[l].indexOf(val)!=-1) { var item1=arrstr[l].split(':'); var z=item1[0]+tp; next[tp].push(z); level[z]=val; next[z]=[]; f[z]=1; vi.push(z); break; } } var s=item1[1].split('、'); for(var val of s) { console.log(val); next[z].push(val); f[val]=1; level[val]=item1[0]; vi.push(val); } } i=j+1; } for(var val of vi) { if(f[val]==null) { var root=dfs(val,-1); } } function dfs(u,fa) { var ss; ss={}; ss.name=u; ss.children=[]; var v=next[u]; if(v==null) { return ss; } for(var i=0;iif(u.indexOf(fa)!=-1) { var t=u.substring(0, u.indexOf(fa)); ss.name=t; } return ss; }
- 渲染树:
var svg;
d3.selectAll("svg").remove();
var margin = {top: 50, right: 20, bottom: 20, left: 20}, width = 2300 - margin.right - margin.left, height = 2300 - margin.top - margin.bottom; s var i = 0, duration = 750;