1. 程式人生 > >軟件工程作業——WC Java實現

軟件工程作業——WC Java實現

設計思路 利用 devel 測試結果 內容 -s 目前 body 執行

Github項目地址:https://github.com/2youyou/2youyou

項目要求

實現一個統計程序,它能正確統計程序文件中的字符數、單詞數、行數,以及還具備其他擴展功能,並能夠快速地處理多個文件。

  • 具體功能
    • -c 返回文件字符數
    • -w 返回詞的數目
    • -l 返回行數
  • 擴展功能
    • -s 遞歸處理目錄下符合條件的文件
    • -a 返回更復雜的數據(代碼行 / 空行 / 註釋行)
  • 高級功能
    • -x 命令行輸入-x參數,程序顯示圖形界面,用戶可以通過界面選取單個文件,程序就會顯示文件的字符數、行數等全部統計信息。

解題思路描述
看到這個題目,我首先想到的就是利用java裏面的IO流,要統計文件中的行數,可以選擇利用BufferReader來按行讀出文件中的內容,然後設置一個整型變量來統計行數,直到整個文件全部讀完;統計字符數可以通過將讀出的文件內容變成字符串的形式,然後計算字符串的長度及為字符的數量。至於統計單詞的數量這個功能,每個人大概都不一樣吧,因為每個人對單詞的定義都不一樣,究竟怎麽樣才算一個單詞,每個人有每個人的看法,正如那句老話,一千個人,就有一千個哈姆雷特。我對單詞的定義是利用空格以及換行來界定單詞,只要是連續的字符,就算一個單詞。然後利用字符串的分割,返回一個數組,單詞數量就等於數組的長度。這樣,就粗略的實現了基本的三個功能。
設計實現過程


這個項目因為比較簡單,所以我只寫了了一個類,裏面有四個方法,分別是統計字符數、單詞數、行數的方法及檢測文件是否存在並執行統計的方法;main方法就是調用執行方法,作為一個程序入口的存在。
代碼說明
主要的代碼部分就是三個統計方法:
(1)統計行數的方法 c()
設計思路:使用BufferedReader(),按行讀入,並將讀到的內容賦值給字符串"s",之後計算字符串的長度即為字符的數量。
具體實現:

技術分享圖片

(2)統計單詞的方法 w()
設計思路:使用BufferedReader(),按行讀入,每讀完一行就將內容賦值給字符串"s"並加一個換行符,然後進行字符串的分割,計算分割後返回數組的長度。
具體實現:

技術分享圖片

(3)統計行數的方法 l()
設計思路:這個方法相對來說比較簡單,直接使用BufferedReader()按行讀入,每次讀入時進行計數,直到全部的行全部讀完。
具體實現:

技術分享圖片

除了以上的統計方法,還有一個fileExist()方法,這個方法是對用戶的輸入的文件路徑進行判斷,若文件存在,則運行三個統計方法,若不存在,則報錯。

測試運行

測試文件:

技術分享圖片

測試結果:

技術分享圖片

各部分預計耗費時間和實際耗費時間

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 30 50
· Estimate · 估計這個任務需要多少時間 50 70
Development 開發 600 800
· Analysis · 需求分析 (包括學習新技術) 180 200
· Design Spec · 生成設計文檔 30 60
· Design Review · 設計復審 (和同事審核設計文檔) 120 150
· Coding Standard · 代碼規範 (為目前的開發制定合適的規範) 60 50
· Design · 具體設計 60 80
· Coding · 具體編碼 180 200
· Code Review · 代碼復審 30 50
· Test · 測試(自我測試,修改代碼,提交修改) 50 30
Reporting 報告 60 90
· Test Report · 測試報告 30 60
· Size Measurement · 計算工作量 20 30
· Postmortem & Process Improvement Plan · 事後總結, 並提出過程改進計劃 20 30
合計 1520 1950

代碼覆蓋率

技術分享圖片

項目小結

這次的項目只實現了基本的功能,因為好久沒有使用Java編程,對java的相關知識有點遺忘,通過這次的項目,又重新拿起書本,復習了一遍java的相關知識,對Java有了新的理解,也算收獲良多。這次項目的實現起來並不復雜,主要是IO流與字符串的種種方法,采用控制臺輸出的方式顯示結果,並沒有專門設計圖形界面。

雖然項目不是很復雜,但是體驗了如何從零開始做一個項目,並不只是簡單的編程,更包括對測試,估計項目耗時的,對軟件編寫有了新的認識。同時,還學會了使用GitHub來記錄項目開發過程,這是之前沒有接觸過的,也算是一個重大收獲。

軟件工程作業——WC Java實現