第二次博客作业
此作业要求参见: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.对于困难的地方,我觉得就是哈希思想的利用,其实之前想了很多,但是这个思想是最好的。
版本控制