1. 程式人生 > >系統分析與設計結對項目

系統分析與設計結對項目

技術 with 結束 報告 nds 入參 java 不同 結對編程

作業成果

作業源碼-java-gitee.

作業要求

老師源作業要求
根據WordCount的需求描述,先編程實現,再編寫單元測試,最後撰寫博客。

合作夥伴

    201631062120 201631062220

編碼過程

PSP表格

PSP2.1 PSP階段 預估耗時(分鐘) 實際耗時(分鐘)
· Planning · 計劃 60 50
· Estimate · 估計這個任務需要多少時間 20 20
· Development · 開發 330 330
· Analysis · 需求分析 (包括學習新技術) 30 30
· Design Spec · 生成設計文檔 0 0
· Design Review · 設計復審 (和同事審核設計文檔) 20 20
· Coding · 代碼規範 (為目前的開發制定合適的規範) 0 0
· Code Review · 具體設計 20 20
· Test · 具體編碼 180 100
· Reporting · 代碼復審 20 20
· Test Report · 報告 140 140
· Size Measurement · 測試報告 60 60
· Postmortem & Process · 計算工作量 20 20
· Improvement Plan · 事後總結, 並提出過程改進計劃 60 60
· 合計 520 540

互審代碼

李欣 TO 王筱哲 :邏輯寫的非常不錯,唯一不足的是註釋有點少,希望以後多寫註釋

王筱哲 TO 李欣 :思路很清楚,感覺還不錯

基本功能基本一樣,擴展功能主要是分成幾個class,都有點困擾,代碼不是那麽清楚,都有所改動,最後基本一致

UML類圖

技術分享圖片

屬性方法

文件對象

public class Wc {
    public int chars;
    public int words;
    public int lines;
    public int codeLines;       //代碼行數
    public int empLines;        //空行數
    public int comLines;        //註釋行數

    public int getChars() {
        return chars;
    }

    public int getWords() {
        return words;
    }

    public int getLines() {
        return lines;
    }

    public int getCodeLines() {
        return codeLines;
    }

    public int getEmpLines() {
        return empLines;
    }

    public int getComLines() {
        return comLines;
    }
}

命令對象

    public static String inputFile;
    public static String outputFile;
    public static boolean needC;
    public static boolean needW;
    public static boolean needL;
    public static boolean needO;
    public static boolean needS;        //輸入參數中是否有“-s”
    public static boolean needA;        //輸入參數中是否有“-a”
    public static boolean needE;        //輸入參數中是否有“-e”

查找代碼行、註釋行、空行

    此處不同於最終項目,是最初時,對於註釋行的檢測的初試
    public static Count wc(String inputFile) throws IOException {
        boolean isNote = false;
        int notNote=0;
        String lineString = "";
        Count count=new Count(0,0,0,0,0,0);
        String txt = "";
        String[] buffer = null;
        String[] buffer2;
        File dir=new File(inputFile);
        BufferedReader bf = new BufferedReader(new FileReader(dir));
       while((txt=bf.readLine())!=null){
            buffer2=txt.split(",| |\t|\n");
            for(int i=0;i<buffer2.length;i++){
                if(!buffer2[i].equals(""))
                    count.WordCount++;
            }
            count.LineCount++;
            count.CharCount+=txt.length();
        }
        while((lineString=bf.readLine())!=null){

            //遇到 , 空格 就結束賦值
            /*buffer=lineString.split(",| ");
            for(int i=0;i<buffer.length;i++){
                    if(!buffer[i].equals("")){
                        count.WordCount++;
                    }
            }*/
            lineString=lineString.trim();
            //空行,一個字符的也算空行
            if (lineString.matches("^[//s&&[^//n]]*$")||lineString.length()==1) {
                count.EmptyCount++;
            }
            //註釋/*的開始
            else if (lineString.startsWith("/*") && !lineString.endsWith("*/")||((lineString.startsWith("{/*")
                    ||lineString.startsWith("}/*"))&&!lineString.endsWith("*/"))){
                count.NoteCount++;
                isNote=true;
            }
            //沒有遇到*/
            else if(isNote&&!lineString.endsWith("*/")&&!lineString.startsWith("*/")) {
                notNote++;
                count.NoteCount++;
            }
            //遇到*/
            else if (isNote == true && (lineString.endsWith("*/")||lineString.startsWith("*/"))) {
                count.NoteCount++;
                isNote=false;
            }
            //註釋行
            else if (lineString.startsWith("//")|| lineString.startsWith("}//")||lineString.startsWith("{//")||
                    ((lineString.startsWith("{/*") ||lineString.startsWith("}/*")||lineString.startsWith("/*"))
                            && lineString.endsWith("*/"))) {
                count.NoteCount++;
            }
            else{
                count.CodeCount++;
            }
        }
        bf.close();
        count.NoteCount-=notNote;
        count.CodeCount+=notNote;

        return count;
    }

測試

    命令
    wc.exe -l -c -w -a D:\\Desktop\\123.c"
    結果
    123.c, 字符數: 44
    123.c, 單詞數: 30
    123.c, 行數: 7
    123.c, 代碼行/空行/註釋行: 2/4/1

總結

    停用詞表的檢測存在些許問題,沒有達到預期效果。因為時間有限,高級功能最終也沒有真正實現。希望後續時間可以完成
    另外結對編程相比自己編程來說,可以更好的討論和研究需求和具體實現,但是也存在雙方意見不同、爭執的時候。但總體來說,1+1>2,遇到問題時,有人可以商量,比一個人思索更有效些。

系統分析與設計結對項目