第二次博客作业

此作业要求参见: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

功能四:

30

38

8

调试:

60

98

38

代码规范

5

5

0

 

总结:

1.分析上表中出现差距的原因是我的基础不牢固,排除BUG的速度太慢,因此往下进行的速度变慢,以至于造成比预计时间晚了很多也没有完成功能4。.

2.我最大的毛病就是效率不高,有的时候卡在一个BUG上卡一个下午才能解开。还有就是代码的结构不够清晰。尽管我只实现了三个功能,还是花了非常多的时间。

3.对于困难的地方,我觉得就是哈希思想的利用,其实之前想了很多,但是这个思想是最好的。

版本控制

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

posted @ 2018-09-24 21:20  王硕Ary  阅读(162)  评论(0编辑  收藏  举报