天天看點

第二次部落格作業

此作業要求參見:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2126

一.功能:

1.小檔案輸入, 為表明程式能跑。

 2.支援指令行輸入英文作品的檔案名,親自錄入。

 3.支援指令行輸入存儲有英文作品檔案的目錄名,批量統計。

 4.從控制台讀入英文單篇作品。提供更适合嵌入腳本中的作品。

二.代碼設計與實作:

      首先我在網上查閱關于C#語言的資料,也在圖書館借閱了C#的教程書,把很久沒有用過的C#又重新拾了起來。

1.從控制台接收到不同數量的參數,執行的操作也不同。參數個數通過args來擷取,再根據參數的不同屬性執行對應的操作。

if (args.Length == 2)//接收參數為兩個
{
  if (args[0] == "-s")//第一個參數為“-s”
  {
       if (args[1] != null)//第二個參數不為空
        //執行“wf -s test.txt”               

2.ch存儲了定義的分隔符。

char[] ch = { ' ', '.', ',', '?', '!', ':', ';', '\'', '\"' };      

通過分隔符可以将單詞全部分開,友善統計他們的個數。定義Hashtable類型存儲器,利用哈希統計單詞的個數。

string[] strArr = str.Split(ch);      

3.将統計好的單詞和單詞對應的數量,分别存儲到兩個數組裡,是單詞和它的數量對應,為下一步排序做準備。

strTab.Keys.CopyTo(keys, 0);
 strTab.Values.CopyTo(values, 0);
 Array.Sort(values, keys);      

4.接受從指令行輸入的目錄,查找其中的英文作品檔案,批量統計。首先确認控制台輸入了幾個參數,進行判斷,再對輸入内容進行判斷。

string[] files = Directory.GetFiles(args[0]);//擷取目錄下的所有檔案

for (int k = 0; k < files.Length; k++)
{
  string path = files[k];
  int m = args[0].Length;
                        
  if (File.Exists(@path))
  {
    Console.WriteLine(files[k].Substring(m + 1));
    string str = Count.readFile(path);
    Count.Statistics(str);
  }
  else
  {
    Console.WriteLine("檔案打開失敗!");
  }
}      

三.功能實作與分析:

功能一:

第二次部落格作業
第二次部落格作業

 功能二:

第二次部落格作業

功能三:

第二次部落格作業

 四、PSP

計劃花費時間 實際花費時間 差距
整個工程 200 241 41
40 47 7
功能二: 100 104 4
30 21 -9
功能四: 38 8
調試: 60 98
代碼規範 5

總結:

1.分析上表中出現差距的原因是我的基礎不牢固,排除BUG的速度太慢,是以往下進行的速度變慢,以至于造成比預計時間晚了很多也沒有完成功能4。.

2.我最大的毛病就是效率不高,有的時候卡在一個BUG上卡一個下午才能解開。還有就是代碼的結構不夠清晰。盡管我隻實作了三個功能,還是花了非常多的時間。

3.對于困難的地方,我覺得就是哈希思想的利用,其實之前想了很多,但是這個思想是最好的。

版本控制

git位址:https://git.coding.net/Cool_Ary/wf.git