此作業要求參見: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