ソフトウェア工学第五の求人 - 船団プログラミング

第コンボイ操作 - 遠位折り畳み式ツリーを達成します


まず、ポータルを開きます

1.ブログのアドレス:
チームメイト(リー・共有)のブログのアドレス:https://www.cnblogs.com/lx2509/

仕事のブログ:https://edu.cnblogs.com/campus/fzu/2019FZUSEZ/homework/8736

2.GitHubアドレス
https://github.com/lx509/031702509-031702535

第二に、労働者の特定の部門

リーは楽しむ:書き込みコード、テスト、UIデザイン
シェン李、黄:代替、更新、ブログの書き込みの新バージョン

三、PSP用フォーム

PSP2.1 パーソナルソフトウェア
プロセス段階
推定時間がかかる(分) 実際の消費(分)
プランニング 計画 30 30
推計 このタスクが必要とどのくらいの時間を見積もります 60 60
開発 開発 2160 2880
分析 ニーズ分析
(新しい技術を学ぶ含みます)
600 720
デザインスペック 設計ドキュメントの生成 60 40
デザインレビュー デザインレビュー 30 30
標準コーディング コードの仕様
(開発のための適切な規範の開発)
10 10
設計 具体的な設計 60 60
コーディング 具体的なコーディング 720 900
コードレビュー コードレビュー 60 30
テスト 検査
(セルフテスト、修正、変更をコミット)
120 180
報告 レポート 60 60
試験報告書 テストレポート 20 20
サイズ測定 コンピューティングのワークロード 10 10
死後&プロセスの
改善計画
後知恵
とは、プロセス改善計画を提案します
10 10
トータル 1850 2100

問題解決のためのアイデアの記述と説明の第四に、設計と実装

1.問題解決のアイデア

スパニングツリーは〜のjQueryを使用しています

  • コード組織と内部実装設計(クラス図)
    クラス図
    により、我々は基本的に匿名関数や構造あるコードには、特定のメソッド名で書かれたので、このような何かすることはできません。
  • 部分的なフローチャートを達成するための鍵と鍵アルゴリズム
    アルゴリズム1の鍵部分
    入力データ分割処理は、今接続ロジック出力ノードスーパーバイザに従って、学生の残りの部分は、その後、ノード教師に接続されたノードを判定しています。

    2.フローチャート
    一般的スキーム:
    総流量
    処理ノードフローチャート教師:
    処理ノードの家庭教師
    処理ノードの他のフローチャート:
    他の処理ノード

    3キーコードおよび説明
//将文本框输入转化为数组(利用split()方法和正则表达式分割,存入ss[]数组)

var s =document.getElementById("text1").value;
var reg = new RegExp("导师:","g");
s.replace(reg,"导师:/");
var reg = new RegExp("级博士生:","g");
s.replace(reg,"级博士生:/");
var reg = new RegExp("级硕士生:","g");
s.replace(reg,"级硕士生:/");
var reg = new RegExp("级本科生:","g");
s.replace(reg,"级本科生:/");
var reg = new RegExp(" ","g");
s.replace(reg,"");
var length=s.length;
if (s[length-1].match(/\n|\r/g))
alert("文本末不能有空行!");
var reg = /\n(\n)*( )*(\n)*\n/g;
s = s.replace(reg,"\n");
var ss = s.split(/、|\n|\r|:|\t|\ +/g); 

//处理导师节点(如果ss[i]=="导师",利用html的列表,往列表不断添加节点,分为第一次添加导师节点和不是第一次添加导师节点的情况)
if(i==0){
    if(ss[i]=="导师"){
        $("#Tree").html('<li id="id4'+num4+'"><span  id="id5'+num5+'" class="badge badge-success"> 导师</span></li>');
        num4++;
        i++;
        $('#id5'+num5).after('<ul><li id="tc'+tc+'"><span id="teacher"> '+ss[i]+'</span></li></u1>');
        num5++;
    }
    else{
    break;
    } 
    console.log(ss[i]);
}
else{
    if(ss[i]=="导师"){
    $('#id4'+(num4-1)).after('<li id="id4'+num4+'"><span  id="id5'+num5+'" class="badge badge-success"> 导师</span></li>');
    num4++;
    i++;
    $('#id5'+num5).after('<ul><li id="tc'+tc+'"><span id="teacher"> '+ss[i]+'</span></li></u1>');
    num5++;
    }
    else{
        break;
    } 
    console.log(ss[i]);
}

//处理其他关键词节点(如果ss[i]关键词为“级博士生”、“级硕士生”、“级本科生”,利用html的列表,往列表不断添加节点)
if(ss[i].match(/(([0-9]+)级博士生)|(([0-9]+)级硕士生)|(([0-9]+)级本科生)/)){
    $('#tc'+tc).after('<li><span id="id'+num1+'" class="badge badge-success"> </span></li>');

    $('#id'+num1).html(ss[i]);
    console.log(ss[i]);
    i++;
    var j=1;
    for(;i<ss.length;i++){
        console.log(ss[i]);
        if(ss[i].match(/(([0-9]+)级博士生)|(([0-9]+)级硕士生)|(([0-9]+)级本科生)|导师/)){
            i--;
            break;
        }
        if(j==1){
            $('#id'+num1).after('<ul><li id="id3'+num3+'"><span id="id2'+num2+'"> </span></li></u1>');
            j++;
        }
        else{
            $('#id3'+(num3-1)).after('<li id="id3'+num3+'"><span id="id2'+num2+'"> </span></li>');
        }
        $('#id2'+num2).html(ss[i]);
        num2=num2+1;
        num3=num3+1;
        console.log(ss[i]);
    }  
        num1=num1+1;
}
else{
    break;
}

//折叠处理
$('.tree li:has(ul)').addClass('parent_li').find(' > span').attr('title', 'Collapse this branch');

    $('.tree li.parent_li > span').on('click', function (e) {
        var children = $(this).parent('li.parent_li').find(' > ul > li');
    
        if (children.is(":visible")) {
            children.hide('fast');
            $(this).attr('title', 'Expand this branch').find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign');
            } 
        else {
            children.show('fast');
            $(this).attr('title', 'Collapse this branch').find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign');
        }
            e.stopPropagation();
    });
        
});

5つの追加のデザインや表示機能

1.ユニークなデザインの創造、設計センス
同時に入力、複数のツリーの共存をデータの複数のセットをサポートするためには、
各生成された入力ツリーからのデータは、後続の試験なしで、生成されたツリーの最後の入力を覆うとで使用することができます繰り返し更新し、
インターフェース造園を、

2.実現する考え
すべての入力データは、次にノード教師学生と次の世代を識別する、ノードを識別するために、教師、博士ステージXX、XXレベルのマスター、XX学部学生とインストラクターに分割します。
、フォントのリソースをダウンロードしてPSおよび他のバックグラウンド、およびCSS / bootstrap.min.cssとCSS / CSSのstyle.cssページが造園された呼び出します。

3.実績展
首尾よく実証され

第六に、カタログの説明と使用のための指示書

1
2

七、ユニットテスト

  • テストコードと試験結果の一部は、
    (1)入力の単一のセットは、
    1
    (2)入力の単一のセットは、注文転置をキーワード
    2
    スーパーバイザキーの欠如以外の入力(3)単一のセット、
    3
    入力(4)単一のセットのみスーパバイザ・ノード
    4
    ( 5)は、2つの入力
    5
    の入力の三つのグループ、各入力が変化し(6)
    6
    の入力(7)は、3つのグループを、各入力ライン数は、各群において同じではない
    7
    (8)開始家庭教師する入力されていない
    8
    (9)入力テキスト空行の終わり
    9
  • テストデータを構築するという考え
  • 入力と入力の複数のセットの単一のセットを考慮するので、関連するテスト・データ構造。
  • 異なるメンターの学生を考慮すると、複数のカテゴリが含まれていてもよい、それだけの学生の単一のクラスなので、関連する試験データの構造をしてもよいです。
  • 考慮し、ユーザが入力データの順序に必ずしもではない場合、入力データ、データ構造。
  • アカウントに入るデータは自然に最後のグループは、その通知を行いますEnterキーを押して、データの入力が終了している可能性があるユーザーを取ります。

八、GitHubのコードチェックインの記録

ナインは、コードモジュールは困難または結び目とソリューションを経験されて

問題の説明:
1は、それがデータツリーノードを作成し、テキストボックスを扱うことができない
1、情報への2件のアクセスを、についてハード考えるように:試みるために何をした
解決するかどうか:された
JSONデータファイルをオンにしようとし始めて全く分からない、:どのような収穫ターン、彼はあきらめなければなりませんでした。最後に、分割()メソッドとキックを強制する正規表現。
複数のツリーノードを実行するときに2、第2のツリーは、最初の木のの一部となります
1、デバッグコンソールを使用して、再度、サンプルコード分析を使用して2を踏襲:何をしてみてくださいするには
解決されます。ある
ものを収穫:コンソールは、実際にはかなり良いですが、デバッグアーティファクト!
3、どのように関連ツリーを形成するために
何をしようとするんでした:1は、情報へのアクセス2、についてハード考えるように
対処するかどうか:いいえ
何収穫:時間の不足が救命ああを考えて!

テン、あなたのチームメイトを評価

・学習の価値がある場所は、
本当にスーパーの信頼できるパートナー、彼女の後ろ足をドラッグ少しを感じ、能力、忍耐を学んでいる、と彼女から学ぶことがたくさんある必要があります。
・改善のための領域
輝きは、まだ発見します!

おすすめ

転載: www.cnblogs.com/HelloXHD/p/11704137.html