201671010413葛進花+《英文文本統計分析》結對項目報告

課前摘要:

項目名稱:英文文本統計分析 項目要求
任課教師:代老師 博客地址
結對人:201671010401包稚潼 博客地址

任務一

對結對方實驗二的項目成果進行評價:

點擊進入對方博客

(源碼)html

1.博文部分:

  • 從博文結構上來看,排版很整齊,全部想呈現的東西都一目瞭然。
  • 從從博文內容上來看,知足了老師項目要求的部分功能,對實現的部分功能的描述並非太完善。
  • 從PSP表中能夠看出, 在各個階段預期時間與實際時間差很少,只有在開發階段比預期多了半個小時。
    緣由: 開發階段比本身想象的要複雜,加上本身基礎較爲薄弱,因此超出了本身的預期時間。

2.代碼部分:

  • 從功能上來講,結對方沒有實現老師的所有基本功能
  • 從代碼規範的角度考慮,命名基本規範,可是,結對方將本身的代碼所有寫在一個包裏,這樣就顯得有點亂,並且不便於維護,若是是一個團隊項目,也不便於分工。

3.自我反思:

  • 在整個實驗二項目中,我跟結對方的問題都出現的差很少
    • 1.沒有分模塊,分功能去寫。
    • 2.功能都未能徹底實現。
      因此在糾正對方的不足時, 我也不斷地反思本身.
      在本次項目中,咱們首先會修改對方的代碼,使其變得更爲規範,其次,咱們會將雙方的代碼加以整合,而後添加老師此次實驗所所要求的功能。

任務二:採用兩人合做方式,設計開發一個英文文本統計分析軟件,使之具備如下功能:

實驗2要求的功能:

-統計該文本行數及字符數;
-各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
-可處理任意用戶導入的任意英文文本;
-人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
-附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;
-附加分功能:統計前10個兩個單詞組成的詞組頻率。java

軟件設計:

-需求分析:
-1.可處理用戶任意輸入的英文文本
-2.統計該文本的行數及字符數功能
-3.指定單詞詞頻統計功能
-4.前k個高頻詞的輸出
-5.統計該文本的單詞數,而後輸出到result.txt文件。
-6.統計功能耗時
-7.GUI人機交互界面
-8.統計文本除冠詞、代詞、介詞以外的高頻
-單詞頻數可視化柱狀圖要求是如下樣式:
git

本次實驗運行結果:




核心功能代碼展現:

public class  CountOccurrenceOfWords {
    public static void main(String[] args) {
        long t1 = System.currentTimeMillis();
        String s;
        String fileName1 = "D:\\Workspaces\\jiedui\\src\\text.txt";
        String fileName2 = "D:\\Workspaces\\jiedui\\src\\result.txt";
        try {
            BufferedReader br = new BufferedReader(new FileReader(fileName1));
            BufferedWriter bw = new BufferedWriter(new FileWriter(fileName2));
            StringBuffer sb = new StringBuffer();
            //將文件內容存入StringBuffer中
            while((s = br.readLine()) != null) {
                sb.append(s);
            }
            String str = sb.toString().toLowerCase();
            //分隔字符串並存入數組
            String[] elements = str.split("[^a-zA-Z0-9]+");
            int count = 0;
            Map<String, Integer> myTreeMap = new TreeMap<String, Integer>();
            //遍歷數組將其存入Map<String, Integer>中
            for(int i = 0; i < elements.length; i++) {
                if(myTreeMap.containsKey(elements[i])) {
                    count = myTreeMap.get(elements[i]);
                    myTreeMap.put(elements[i], count + 1);
                }
                else {
                    myTreeMap.put(elements[i], 1);
                }
            }                                          
            System.out.println("單詞統計的結果請見當前目錄result.txt文件");
            //將map.entrySet()轉換成list
            List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(myTreeMap.entrySet());
            //經過比較器實現排序
            Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
                //降序排序
                public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                    return o2.getValue().compareTo(o1.getValue());
                }
            });
            int num = 1;
            //將結果寫入文件
            for(Map.Entry<String, Integer> map : list) {
                
                if(num <= sb.length()) {
                    bw.write("出現次數第" + num + "的單詞爲:" + map.getKey() + ",出現頻率爲" + map.getValue() + "次");
                    bw.newLine();
                    System.out.println(map.getKey() + ":" + map.getValue());
                    num++;
                }
                else break;
            }
            bw.write("耗時:" + (System.currentTimeMillis() - t1) + "ms");
            br.close();
            bw.close();
            System.out.println("耗時:" + (System.currentTimeMillis() - t1) + "ms");
        } catch (FileNotFoundException e) {
            System.out.println("找不到指定文件!");
        } catch (IOException e) {                                    
            System.out.println("文件讀取錯誤!");
        }
    }
}
public class Word {
    // 統計數字或者字符出現的次數
    public static TreeMap<Character, Integer> Pross(String str) {
        char[] charArray = str.toCharArray();
 
        TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
 
        for (int x = 0; x < charArray.length; x++) {
            if (!tm.containsKey(charArray[x])) {
                tm.put(charArray[x], 1);
            } else {
                int count = tm.get(charArray[x]) + 1;
                tm.put(charArray[x], count);
            }
        }
        return tm;
    }
 
    public static void main(String[] args) {
        BufferedReader br = null;
        int line = 0;
        String str = "";
        StringBuffer sb  = new StringBuffer();
        try {
            br = new BufferedReader(new FileReader("D:\\Workspaces\\jiedui\\src\\text.txt"));
            while ((str = br.readLine()) != null) {
              sb.append(str);
                ++line;
            }
            System.out.println("\n文件行數: " + line);
            TreeMap<Character, Integer> tm = Pross(sb.toString());
            System.out.println("\n字符統計結果爲:" + tm);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

結隊過程:-初期尋找隊友,兩人互評博客,找出對方的優點和不足,而後相互補充,作出psp表,初期有了大體的計劃,後期投入實踐,在編程過程遇到的問題較多

任務三:博文信息表psp

PSP2.1 任務內容 計劃共完成須要的時間(min) 實際完成所須要的時間(min)
Planning 計劃 15 13
Estimate 估計這個任務須要多少時間,並規劃大體工做步驟 15 10
Development 開發 600 850
Analysis 需求分析(包括學習新技術) 18 12
Design Spec 生成設計文檔 20 35
Design Review 設計複審(審覈設計文檔) 15 22
Coding Standard 代碼規範(爲目前的開發制定合適的規範) 18 25
Design 具體設計 15 20
Coding 具體編碼 600 930
Code Review 代碼複審 20 30
Test 測試(自我測試,修改代碼,提交修改) 50 68
Reporting 報告 50 60
Test Report 測試報告 30 40
Size Measurement 計算工做量 15 20
Postmortem & Process Improvement Plan 過後總結,並提出過程改進計劃 20 32

總結:從實驗二到實驗四,老師給出的實驗,在開發和代碼編寫上花費大量時間,錯誤頻繁出現修改失敗,一直有bug,很崩潰,可是bug修復後心情也是很激動。在結隊中咱們相互促進,共同尋找實現的方法,可是很惋惜因爲技術方面的不足,附加功能沒有實現。PSP展現了咱們的開發過程,計劃趕不上變化,實際操做的時間遠遠大於計劃時間,程序語言方面存在很大問題,在中途也請教過其餘同窗,有所收穫,可是仍然有解決不了的問題,後續要強加練習和學習,相互討論和監督,獲得了不一樣的提高,在合做過程當中磨合不斷,要學會發現別人身上的閃光點。github

點擊查看源碼
相關文章
相關標籤/搜索