軟工網絡16我的做業2

1.地址

2.PSP表格

PSP2.1 我的開發流程 預估耗費時間(分鐘) 實際耗費時間(分鐘)
Planning 計劃 45 55
· Estimate 明確需求和其餘相關因素,估計每一個階段的時間成本 45 55
Development 開發 365 515
· Analysis 需求分析 (包括學習新技術) 30 60
· Design Spec 生成設計文檔 30 25
· Design Review 設計複審 25 20
· Coding Standard 代碼規範 10 15
· Design 具體設計 20 30
· Coding 具體編碼 150 210
· Code Review 代碼複審 20 25
· Test 測試(自我測試,修改代碼,提交修改) 30 45
Reporting 報告 50 85
· 測試報告 20 35
· 計算工做量 10 20
· 並提出過程改進計劃 20 30

3.解題思路

  1. 審查題目,得知是要統計文件中字符、單詞信息等,所以本題在編寫代碼時先要創建與文件的鏈接,所以初步設計一個FileRead類,編寫方法讀取文件內容,並先將數據存儲起來(這裏我將讀取的數據存入了ArrayList中並返回),再交給另一個類的功能來處理數據。
  2. 因爲任務是經過前臺傳參文件名,在對處理文件的類中設計一個參數來記錄文件名(路徑)。
  3. 要求是對字符、非空白行數、單詞總數、以及前10個出現次數最高的單詞進行統計。思考後,發現單詞須要根據是否符合條件(4個英文字母開頭,跟上字母數字符號,單詞以分隔符分割,不區分大小寫)進行篩選,行數、字符數則不須要作過多的其餘工做,所以將字符數統計以及行數統計直接交給了FileRead處理,Main中則直接調用其方法得到結果。單詞方面,則暫不作處理,以多種不一樣分隔符分割出內容後,一律先存儲到動態數組中,再另行判斷是否爲單詞
  4. 在Main中先調用FileRead的方法,得到存儲文件內容數據的ArrayList,再根據要求對該動態數組的數據進行篩選,符合條件的存入Map映射中,不符合的則拋棄,在存入Map時,設計Map鍵值對類型爲<String,Integer>,使單詞與出現次數相對應,遍歷動態數組,使用toLowerCase()方法所有轉爲小寫,當檢測到相同單詞時,對次數加1,不然新存入一個單詞賦次數值爲1。
  5. 所有符合條件的值存入Map中後,根據出現次數降序排序,在不一樣單詞數大於10時,輸出前10個鍵值對,不然輸出全部內容,即爲輸出頻率最高的前10個單詞。

4.設計實現過程

  1. 在類設計上,一共設計了兩個類,FileRead類和主類Main。
  2. FileRead類設計了兩個方法,一個是FileRead(fileRoad)方法,實現的功能是讀取文件單詞數據,並存入動態數組ArrayList;另外一個方法是charsLinesCount(fileRoad)方法,統計文件字符數和行數信息,兩方法均爲有參函數,傳入文件名(路徑)。
  3. Main類中則提供主函數入口,並調用了FileRead相應的方法獲取數據。

5.代碼說明

  1. FileRead類的FileRead()方法

    這部分代碼主要是將文件內容讀取出來,並利用正則表達式給定的字符進行單詞分割,並存入動態數組。
  2. FileRead類的charsLinesCount()方法

    這部分代碼是統計文件中的字符總數以及非空白行數。
  3. Main()方法


    這部分代碼調用FileRead類的相關方法得到數據,並進行處理排序最後輸出。

6.測試結果及覆蓋率


7.心得收穫

  • 本次實驗整體上難度適中,可是多是由於過久沒有使用Java語言進行編程,顯得有些生疏,對於起方法名、變量名等都暴露出了很多的問題。再加上前期規劃較少,編程起來就顯得有些混亂。Mian()裏面彷佛也放置了過多的沒必要要的代碼塊,顯得極爲冗餘,揹負了太多不屬於它的代碼。後期可能會這對命名以及代碼放置的位置進行調整,把功能都分別裝起來,減輕Main()的負擔。
  • 收穫方面,這一次收穫比較大的是第一次接觸到PSP表格,瞭解到了對於工程,是須要有具體的規劃設計以及時間評估的,以便於後期可以更高效地完成工程。但由於是第一次接觸,因此實際上彷佛並無起到多大的效果,後期會繼續增強。
  • 知識點方面,收穫比較大的是利用正則表達式,指定多個分隔符來劃分文件內容,另外就是第一次代碼做業,讓我意識到了Java編程方面的能力仍是太弱了,須要增強練習了。
相關文章
相關標籤/搜索