我的項目:WC(Node.js+Web端實現)

本項目GitHub地址:https://github.com/sherlockHSY/WCcss

1、項目要求html

  wc.exe 是一個常見的工具,它能統計文本文件的字符數、單詞數和行數。這個項目要求寫一個命令行程序,模仿已有wc.exe 的功能,並加以擴充,給出某程序設計語言源文件的字符數、單詞數和行數。git

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

  具體功能要求:web

    程序處理用戶需求的模式爲:wc.exe [parameter] [file_name]正則表達式

    基本功能列表:後端

      wc.exe -c file.c //返回文件 file.c 的字符數瀏覽器

      wc.exe -w file.c //返回文件 file.c 的詞的數目框架

      wc.exe -l file.c //返回文件 file.c 的行數函數

    擴展功能:

      -s 遞歸處理目錄下符合條件的文件。
      -a 返回更復雜的數據(代碼行 / 空行 / 註釋行)。

    高級功能:

      -x 這個參數單獨使用。用戶可圖形化選取界面,選取文件展現文件信息。

2、PSP表格

PSP Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃  40 30
· Estimate · 估計這個任務須要多少時間  30  25
Development 開發  790 710
· Analysis · 需求分析 20  20
· Design Spec · 生成設計文檔  40  30
· Design Review · 設計複審   30  30
· Coding Standard · 代碼規範  30  40
· Design · 具體設計  80  100
· Coding · 具體編碼(查找文檔)  470  370
· Code Review · 代碼複審  60  50
· Test · 測試(自我測試,修改代碼,提交修改)  60  80
Reporting 報告 120 120
· Test Report · 測試報告  60  80
· Size Measurement · 計算工做量  30  50
· Postmortem & Process Improvement Plan · 過後總結, 並提出過程改進計劃  30  30
  合計  950  960

3、解題思路

  拿到這個題目後,首先理解項目需求,大體是統計文件中的數據,須要統計包括字符數、行數、單詞數、代碼行、註釋行、空行等結果。會涉及到文件的讀寫操做。經考慮後,決定用Node.js實現。圖形界面直接使用web頁面。

  1. 開發準備

   實現語言:Node.js

   IDE:VSCode

  2.需求分析:

   (1)基礎功能:首先是命令行指令與參數的獲取。利用yargs模塊讀取命令的輸入,判斷指令類型,以及對指令和參數進行驗證,確保輸入是否合法。而後執行相應的邏輯處理。使用原生fs模塊建立文件IO流,利用readline模塊逐行讀取文件內容,再結合正則表達式實現對文件字符數、行數、單詞數的統計

   (2)進階功能:實質上是在基礎功能上的一些拓展,寫個遞歸函數增長對文件夾的遞歸處理,以及正則匹配出通配符(* ?),在對文件搜索時加以判斷。-a 命令中的複雜查找,結合正則匹配便可實現統計。

   (3)高級功能:圖形化界面的實現。因爲Node.js語言自己做爲一門新起的後端語言,自己就服務於web端,因此圖形界面直接用web實現,只要命令行輸入命令,調用Node的子進程實現自動打開瀏覽器窗口運行。web頁面採用html,css,js實現。

4、設計實現

  流程圖

  

  1. index.js做爲程序主入口,獲取命令行輸入的指令和參數後,校驗指令輸入是否合法,作出相應處理,至關於Controll層。

  2. handleCommand.js將對各個指令的邏輯處理過程高度封裝對應函數,並經過export暴露出模塊,至關於Service層,對數據的深層處理。供Controll層調用

  3. webView.js實現對web層的處理。經過開啓http server監聽頁面請求,並主動觸發自動打開web頁面,渲染index.html(至關於View層)。

5、測試

  單元測試

  1.測試基礎指令

          測試文件 1.c

   

   測試結果:

     

  2.測試進階指令  測試遞歸讀取文件夾下的文件,並統計複雜數據

         測試文件夾 testDir

         

    測試結果:

     

  3.測試高級指令

     

   4. 通配符測試

   測試通配符 * :

     

     測試通配符 ? :

          

6、總結     

  本項目採用Node.js+web是個人一次嘗試,使用web的初衷是想要與傳統的GUI不同。這個項目的開發,我第一次一我的實現一個完整的流程,從需求分析、設計、開發到測試,學習到了軟件工程的不少思想和知識,把項目的自己功能點實現是一方面,項目的測試也是很是重要的一部分。在實際開發中,模塊的構建和總體框架的搭建也十分重要。我也認識到只有把各個方面都儘量的作好,才能使程序具備更好的健壯性。

相關文章
相關標籤/搜索