2020软件工程作业05

软件工程 17级计科一班
作业要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10619
作业目标 需要在网页页面上呈现树形结构形式的师门树
作业正文 如下
参考文献 http://www.treejs.cn/v3/api.php
https://www.cnblogs.com/xing901022/p/4787625.html

结对信息

朱旭炜20177596:https://www.cnblogs.com/RCJames/

刘涛20177569:https://www.cnblogs.com/liutaodashuaige/

Github仓库:https://github.com/zxw0621/20177596-20177569

具体分工

朱旭炜:负责前端编写,Ajax和servlet,编写博客园博文

刘涛:负责后台JavaBean的编写

PSP表格

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

解题思路&设计实现

  • 流程图

    lc
  • public List jiexi(String wb){
            List<HashMap<String, Object>> shu = new ArrayList<HashMap<String, Object>>();
            //分解为单行
            String[] fenlei = wb.split("
    ");
            for (int i=1;i<=fenlei.length;i++){
                //分解父节点和子节点
                String[] jiedian = fenlei[i-1].split(":");
                if(jiedian[0].equals("导师")){//当检索到导师字段时
                    HashMap<String,Object> jd = new HashMap<String,Object>();
                    jd.put("id",i);
                    jd.put("pId",0);
                    jd.put("name","导师");
    
                    shu.add(jd);
                    //导师子节点
                    HashMap<String,Object> jd1 = new HashMap<String,Object>();
                    jd1.put("id",i*10);
                    jd1.put("pId",1);
                    jd1.put("name",jiedian[1]);
    
                    shu.add(jd1);
                }else{//类别目录
                    HashMap<String,Object> jd = new HashMap<String,Object>();
                    jd.put("id",i);
                    jd.put("pId",1);
                    jd.put("name",jiedian[0]);
    
                    shu.add(jd);
                    //分解所有子节点
                    String[] xjd = jiedian[1].split("、");
    
                    for (int j=0;j<=xjd.length-1;j++){//学生目录
                        HashMap<String,Object> xs = new HashMap<String,Object>();
                        xs.put("id",i*10+j);
                        xs.put("pId",i);
                        xs.put("name",xjd[j]);
    
                        shu.add(xs);
                    }
    
                }
            }
            return shu;
        }
    

遇到的困难及解决方法

  1. textarea标签中换行符是如何保存

    解决:在浏览器的开发者工具查看textarea的取值,换行符不保存,而保存了一些空格

  2. JSON如何从servlet返回给前端处理

    解决:导入fastjson包,用JSON.toJSONString转成json字符串,在前端用eval方法再把json字符串转json对象

评价队友

@波兰杜兰特:在结对过程中,十分曲折,困难重重,但是通过我们共同学习和协作,完成了一个十分简陋的版本,对JSON和zTree的使用还要进一步的学习,我们在结对时,一有问题或者想法就会马上连线沟通,培养默契,提高了我们完成作业的效率,这种结对编程的方式让我们获益匪浅,共同进步。

@不负真人:在本次的软件工程作业的完成过程中,我与朱旭炜同学再次亲密合作,有了上次结对编程的经验,这次结对编程我更加深刻的体会到了结对编程的优点,加强了和朱旭炜同学的沟通交流,加快了我们合作工作的效率,同时,在对家族书功能的实现中,我负责后台代码部分,这使我对于构建代码过程中的分工有了清晰的认识,收获颇丰!

结对图片

QQ截图20200415160949

效果图

QQ图片20200417094907
原文地址:https://www.cnblogs.com/RCJames/p/12717892.html