WordCount

码云链接:https://gitee.com/ocapp/WordCount.git

一、解题思路:

看到这个题目,我想到的用先判断操作指令,然后将文件读入,以统计字符数的等信息,并将其写入到指定文件中,读写文件的操作用C#封装好的类很容易实现,

所以我决定用C#实现。

二、具体实现:

因为这个项目需要完成的操作比较简单,所以我写了两个类分别用于读文件和写文件。

1.读文件:

用一个char类型的c一个一个读入文件字符,读入一个则字符数+1,当遇到”,“和空格,则单词数+1,行数定义为只要分行,不管此行有无代码,即算一行,所以当字符c == “\n",

行数+1。

while((c =sr.Read()) != -1) //一个一个读取字符
            {
                charNumber++;  //没读一个字符,字符数+1
                if ((char)c == ',' || (char)c == ' ')
                    wordNumber++;     //遇到逗号或者空格,单词数+1
                if ((char)c == '\n') //遇到转行符,行数+1
                    lineNumber++;
                lst.Add((char)c);
            }

 

2.写文件:

用type[]数组存入判定指令,当指令出现,则执行相应操作并将结果输出到result.txt文件里

//type存入的是指令,分别是字符、单词和行数的标志
            bool writeChar = false;  //各种指令
            bool writeWord = false;
            bool writeLine = false;
            LoadFile load = new LoadFile();
            load.Load(filename);
            for(int i = 0;i < 3;i++)
            {
                if (type[0] == "c")   //判断指令,如果指令为真,则将想要结果写入文件里
                    writeChar = true;
                if (type[1] == "w")
                    writeWord = true;
                if (type[2] == "l")
                    writeLine = true;
            }

在主函数里循环获得指令

for(int i = 0;i < 4;i++)    //循环四次,每次获得一行指令
			{
				line = Convert.ToString(Console.ReadLine());
				if (line.Length < 10)
				{
					Console.WriteLine("出错");
					break;
				}
				
				str = line.Substring(8, 1);//获取指令
				if (str == "c")
					type[0] = str;
				if (str == "w")
					type[1] = str;
				if (str == "l")
					type[2] = str;
				if (str == "o")
				{				
					break;
				}
				filename = line.Substring(10);				
			}

  

三、测试用例:

测试文件是file.c 输出文件是result.txt

测试各个功能是否能够实现

结果:

错误输入指令,输出“出错”

测试ReadFile类

LoadFile reader = new LoadFile();
            reader.Load("file.c");
            Console.WriteLine(reader.charNumber);  //输出文件的统计信息
            Console.WriteLine(reader.wordNumber);
            Console.WriteLine(reader.lineNumber);

结果:

测试WirteFile类

string[] type = { "c", "w", "l" };
            WriteFile write = new WriteFile();
            write.Write("file.c", type); //传入指令和文件

结果:

四、心得体会

通过这次作业,我认识了码云和博客园这两个帮助软件开发的工具,码云能帮助我保存代码版本,博客园能提供我软件开发的知识和视野,有许多软件开发者在博客园这个平台上发表自己的学习体会和开发经验,通过博客园的桥梁我能更好的向高级软件工程师进步。

posted @ 2018-09-24 21:52  OCAPP  阅读(227)  评论(0编辑  收藏  举报