软件工程实践2019第五次作业

项目信息

内容 地址
成员博客 林斌祥031702416
成员博客 柯禧帆031702418
作业博客 作业博客
github地址 github地址

分工

柯禧帆:代码编写,设计框架
林斌祥:ui设计,后期美化


PSP表格

Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
计划 20 10
估计这个任务需要多少时间 10 2
开发 180 300
需求分析 (包括学习新技术) 60 180
生成设计文档 60 60
设计复审 10 10
代码规范 (为目前的开发制定合适的规范) 10 10
具体设计 40 30
具体编码 120 180
代码复审 30 20
测试(自我测试,修改代码,提交修改) 20 60
报告 20 30
测试报告 30 20
计算工作量 20 20
事后总结, 并提出过程改进计划 20 30
合计 650 962

解题思路与设计实现说明

看到结对作业为实现一棵家族树后,我们便决定找一个bootstrap的treeview来实现,程序编写时主要需要解决的问题为js对象的设计与对文字的处理

<script>
            function creatTree() {
                var text = document.getElementById('inarea').value;
                var table = text.split(/\n\s*\n/);//分割不同的树
                /*var obj = {
                    id : '',//该节点id
                    name : '',//节点名
                    parentId : '',//父节点id
                    desc : '',//说明
                }类*/
                var objList = [];
                for(i=0;i<table.length;i++){//分割成多个块一边生成多棵树
                    var row = table[i].split(/[(\r\n)\r\n]+/);//分割每行
                    var obj = new Object();//导师对象
                    obj.name = row[0].split(/:/)[1];
                    obj.id = String(i);
                    obj.parentId = null;
                    obj.desc = "teacher";
                    objList.push(obj);
                    for(j=1;j<row.length;j++){
                        var obj = new Object();//年级和学位对象
                        var gAndD = row[j].split(/:/)[0];//年级和学位
                        var stu = row[j].split(/:/)[1].split(/、/);//学生
                        obj.id = String(i)+String(j);
                        obj.name = gAndD;
                        obj.parentId = String(i);
                        obj.desc = "grade and degree";
                        objList.push(obj);
                        for(k=0;k<stu.length;k++){
                            var obj = new Object(); //学生对象
                            obj.id = String(i)+String(j)+String(k);
                            obj.name = stu[k];
                            obj.parentId = String(i)+String(j);
                            obj.desc = "student";
                            objList.push(obj);
                        }
                    }
                }
                var data = objList;
                $('#tree_table').bootstrapTable({//调用插件提供方法生成树
                    class: 'table table-hover table-bordered',
                    data: data,
                    sidePagination: 'server',
                    pagination: false,
                    treeView: true,
                    treeId: "id",
                    treeField: "name",
                    rowAttributes: function (row, index) {
                        return {
                            xx:index
                        };
                    },
                    queryParams : function(params) {
                        var param = {
                            roleId : 'xx'
                        };
                        return param;
                    },
                    columns: [{
                        field: 'name',
                        title: '名称',
                    },
                    {
                        field: 'desc',
                        title: '详情',
                    },
                    ]
                });
                $("#expandAllTree").on('click',function(){//展开所有节点
                    $('#tree_table').bootstrapTable("expandAllTree")
                })
                $("#collapseAllTree").on('click',function(){//关闭所有节点
                    $('#tree_table').bootstrapTable("collapseAllTree")
                })
            }
        </script>

使用说明

按找指定格式如下,输入内容点击按钮即可生成树,树与树之间需空一行。
导师:张三
2016级博士生:天一、王二、吴五
2015级硕士生:李四、王五、许六
2016级硕士生:刘一、李二、李三
2017级本科生:刘六、琪七、司四
界面如下:


github代码签入记录


异常或结对困难及解决方法

主要困难在于框架的学习以及前端语言的学习
解决办法:找一个简单易用的框架,例如我们现在所使用的这个-_-


评价队友

林斌祥:我的队友是一个很可靠的人,在结对编程遇到困难没有方向的时候,试了很多的框架,写了很多的代码。很高兴能一起完成本次结对编程。
柯禧帆:我的队友设计的页面样式还是挺好看的,符合我的审美,很高兴能一起完成本次结对编程。


posted @ 2019-10-19 17:30  Raiyon  阅读(220)  评论(1编辑  收藏  举报