1. 程式人生 > >第1次作業-詞頻統計

第1次作業-詞頻統計

com output 實踐 cnblogs 一個 href tps uri www

作業地址:【https://edu.cnblogs.com/campus/nenu/2016CS/homework/2110】

一、程序要求(60分)

簡述

程序名稱:wf.exe
作用:一個用於統計文本文件(文件名後綴為txt)中的單詞出現次數的控制臺程序
單詞:不以數值開頭,由英文字母和字母數字符號組成的字符串視為一個單詞。單詞以分隔符分割且不區分大小寫。

  • 英文字母:A-Za-z
  • 字母數字符號:A-Za-z0-9
  • 分割符:空格,非字母數字符號
  • 例:file123是一個單詞,123file不是一個單詞。fileFileFILE是同一個單詞

功能列表:

  • 功能1:統計文件中不重復的單詞數量
  • 功能2:指定文件目錄,統計文件名稱按照字典序最靠前的文本文件中不重復的單詞數量
  • 功能3:輸出出現次數最多的前N個單詞
    實現效果請與教師和助教給出樣例保持一致。

功能1(10分)

控制臺輸入格式wf -f 文件名,以“input.txt”作為文件名為例,如下。total為不重復單詞的總數量,例如“she is not she”,則total為3。
輸出的單詞均為小寫字母。

wf -c input.txt
/*
 *要求程序統計文本文件input.txt中不重復的單詞數量,最終輸出
 *例:input.txt文件中內容為"Talk is cheap,Show me the code"
 *則輸出如下
 */
total 7

talk     1
is       1
cheap    1
show     1
me       1
the      1
code     1

功能2(18分)

控制臺輸入格式wf -f 文件路徑,以“E:\code”作為文件路徑為例,如下。

wf -f E:\code
/*
 *要求程序統計目錄E盤的code文件夾中,文件名稱按照字典序最靠前的文本文件的不重復的單詞數量,最終輸出
 *例:E:\code中有input.txt、output.txt和test.txt三個文本文件,程序應選擇input.txt進行詞頻統計,input.txt文件中內容為"Talk is cheap,Show me the code"
 *則輸出如下
 */
total 7 words
cheap    1
code     1
is       1
me       1
show     1
talk     1
the      1

功能3(27分)

控制臺輸入格式wf -f 文件路徑 -n 數量或者wf -c 文件名 -n 數量或者wf -n 數量 -c 文件名或者wf -n 數量 -f 文件路徑
以“E:\code”作為文件路徑,以“input.txt”作為文件名為例,數量為3,如下。
統計文件中各單詞的出現次數,最終只輸出頻率最高的3個。頻率相同的單詞,優先輸出字典序靠前的單詞。

wf -f E:\code -n 3
/*
 *要求程序統計目錄E盤的code文件夾中,文件名稱按照字典序最靠前的文本文件的不重復的單詞數量,最終輸出詞頻最高的3個單詞
 *例:E:\code中有input.txt、output.txt和test.txt三個文本文件,程序應選擇input.txt進行詞頻統計,input.txt文件中內容為"Talk is cheap,Show me the code"
 *則輸出如下
 */
Total words is 7
----------
cheap    1
code     1
is       1

版本控制(5分)

git項目名稱為wf,例如:https://git.coding.net/XXX/wf.git。代碼要求在 coding.net 做版本控制。要求push&pull時使用git客戶端,而不使用web頁面。
推薦git客戶端tortoisgit。安裝過程可參考鏈接:https://www.cnblogs.com/ranh941/p/7555082.html。
請註意助教或教師會使用腳本pull每個人的項目,如果你在博客中給出的鏈接不符合規範而導致腳本無法獲取你的項目,那麽程序要求得分為0。

二、博客要求(40分)

要求0(5分)

【你的博客第一行必須寫上作業要求的博客鏈接】 這樣,讀者看到學生的博客後,就可以點擊到作業要求的博客。
例如:https://www.cnblogs.com/ranh941/p/7999266.html。
反向鏈接,讓讀者了解背景。要不然很多人看了,並不了解要求,也是一頭霧水。
作業如果沒有此項,此次作業無效。

要求1(5分)

在博客中給出你們git倉庫地址

要求2(10分)

  • 在同一篇博客中,參照教材第35頁表2-2和表2-3,為詞頻統計項目制作PSP階段表格。
  • PSP階段表格中第一列中的“具體編碼”、“具體設計”和測試應分類,如功能1、功能2、測試功能1等。
  • 詞頻統計項目的預估耗時和實際耗時的時間顆粒度為分鐘,請對比預估耗時和實際耗時的差距,分析原因。
  • 有關PSP的更多內容,請自行閱讀鄒欣老師的博客:http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html

要求3(20分)

  • 解題思路描述。即剛開始拿到題目後,如何思考,如何找資料的過程。(5分)
  • 介紹上述“項目”中每個功能的重點/難點,展示重要代碼片斷,展示你感覺得意、突破、困難的地方。(10分)
    代碼要求:要求使用cnblogs代碼控件。凡粘貼IDE中的代碼截圖,或者貼文字而沒有關鍵字高亮或彩色的,要求3的得分記作0分。參考往屆博客https://www.cnblogs.com/ranh941/p/7545915.html、http://www.cnblogs.com/huangxman/p/5871201.html
  • 結合在構建之法中學習到的相關內容與結對項目的實踐經歷,撰寫解決項目的心路歷程與收獲。(5分)

第1次作業-詞頻統計