词频统计-功能一

一.完成一个小程序

我 拿到这个题目之后,就决定用最不熟悉的c#来实现,因为老师说不懂的去学才会有进步。布置任务后的第二天就开始去图书馆借了两本书《c#从入门到精髓》,《c#项目实战》,拿到书之后看了入门书《c#从入门到精髓》,看书的过程时痛苦的,因为发现大二选修课学的c#全交还给老师了,只能重头再学了。唯一有点印象的就是窗口应用程序,基于UI的设计。

写代码首先需要工具,由于电脑上没有visual studio的安装包,当时求助了度娘。

如果没有安装包的同学们,可以借鉴一下这个链接http://blog.csdn.net/chunleixiahe/article/details/52874158,里面vs2003-2015的版本都有,推荐。由于网速问题,下载安装包都花费了半个小时。

看到题目,我就直接用Windows窗口程序完成了文件的查找,读取和统计字数,然后询问老师是否可以用Windows窗口程序完成,发现这次作业后续功能需要重定向输入,必须得做成控制台,否则无法做重定向输入。

编程中也遇到了很多问题,只能一步步看书和借助度娘来解决。

遇到的主要问题如下:

1.不知道c#对文件如何操作,如何查找文件,读取文件,输出文件的内容。

2.不知道如何统计文件中内容的字符,并且正确输出每个单词的出现的频数,后来实现这个小功能主要使用了哈希表,并对哈希表的值进行排序,然后遍历哈希表对每个单词出现的次数进行输出。

我的实现代码如下:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace wf
{
    class Program
    {

        static void Main(string[] args)
        {

            string theFileName;
            Console.Write(">type ");
            theFileName=Console.ReadLine();
            string thePath = @"D:\vs2010\test.txt";
            //string thePath = null;
            //Console.Write(">type ");
            //thePath = Console.ReadLine();
            //StreamReader content = File.OpenText(thePath);

            //读取文件内容并输出
            StreamReader reader = new StreamReader(thePath);
            string sline=reader.ReadLine();
            Console.WriteLine(sline.ToString());
            sline = sline.ToLower();//全部变为小写字母
            //定义一个字符数组
            char[] c = { ‘ ‘, ‘,‘, ‘.‘, ‘?‘, ‘!‘, ‘:‘, ‘;‘, ‘\‘‘, ‘\"‘ };
            //分隔字符串后产生的字符串数组
             string[] S = sline.Split(c);
             //Console.WriteLine();
             //Console.WriteLine(">wf -s test.txt");
            // Console.WriteLine("total " + S.Length);
            //建立哈希表
             Hashtable ha = new Hashtable();
             for (int i = 0; i < S.Length; i++)
             {
                  //判断文本是否进入
                  if (ha.ContainsKey(S[i]))
                   {
                       ha[S[i]] = (int)ha[S[i]] + 1;
                   }
                    else
                    {
                        ha.Add(S[i], 1);
                    }
                }
               //int sum = 0;
                string[] arrKey = new string[ha.Count];//存哈希表的键
                int[] arrValue = new int[ha.Count];//存哈希表的值
                ha.Keys.CopyTo(arrKey, 0);
                ha.Values.CopyTo(arrValue, 0);
                Console.WriteLine();
                Console.WriteLine(">wf -s test.txt");
                Console.WriteLine("total " + ha.Count);
                Console.WriteLine();

                Array.Sort(arrValue,arrKey);//按哈希表的值进行排序

                //遍历哈希表
                //foreach (DictionaryEntry de in ha)
                //{
                //输出
                // Console.WriteLine(de.Key + ":" + de.Value);
                 //Console.Write(ha.Count);

                // }
                for (int i = arrKey.Length - 1; i >= 0; i--)
                {
                    if ((string)arrKey[i] != "")
                    {
                        Console.Write(arrKey[i].ToString() + ":");
                        Console.WriteLine(arrValue[i].ToString());
                    }
                }

        }
    }
}

实现的截图如下:

二.例行报告

1.PSP(personal software process)个人软件过程

类别 任务 开始时间 结束时间 打扰时间 净时间
借书 借书 2017.9.15 10:00 2017.9.15 10:20 20min
看书   2017 9.15 12:20 2017.9.16  21:15 n多打扰时间
<5h

编程 写代码 2017 9.16 18:00 2017.9.16   21:30 洗漱30min,回复消息20min 2h40min
写作 写博客 2017.9.16 21:50 2017.9.16  22:30 40min

2.进度条

  代码行 博文字数 知识点
第二周 83 800 见博客词频统计-功能一
时间: 2024-12-24 13:15:43

词频统计-功能一的相关文章

词频统计-功能二

一.完成一个小程序 今天的任务是处理一本英文小说.我处理的英文小说是<war and peace> 本想着用多线程来解决的,发现看书还不是太懂,并不能真正动手编程. 我在编程的过程中主要遇到了以下两个问题: 1.在对整个英文小说进行单词总数统计遇见困难. 2.字符串数组的空字符串处理问题.因为我开始用空格来代替标点等不是英文单词来进行对单词分割,其中用到了正则表达式,后来统计对单词出现频数时,发现空格竟然排第一名,有4万多空格. 最终我的处理方式是使用List泛型集合的ForEach方法循环获

Java实现的词频统计——功能改进

本次改进是在原有功能需求及代码基础上额外做的修改,保证了原有的基础需求之外添加了新需求的功能. 功能: 1. 小文件输入——从控制台由用户输入到文件中,再对文件进行统计: 2.支持命令行输入英文作品的文件名: 3.支持命令行输入存储有英文作品文件的目录名,批量统计: 4.从控制台读入英文单篇作品,重定向输入流. 实现: 1.判断输入方式,如果从命令行传递参数则直接对文件进行统计:如果未传递参数,其方式同控制台相同,由用户从标准输入流输入到文件,再对文件进行词频统计.这里如果传入文件路径时会对其是

第二周作业-词频统计

本周作业是词频统计,编程具体要求如下: https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/922 对实现功能进行简要的介绍: 功能一:小文件输入,为表明程序能跑.需要在控制台下输入命令,得到文件中不重复的总单词数.并对单词出现的次数进行排序输出. 功能二:支持命令行输入英文作品的文件名,亲自录入,输出显示不重复单词总数,并对出现频率最高的前10的单词进行输出 功能三:支持命令行输入存储有英文作品文件的目录名,批量统计词频. 功能四:

第二周-词频统计更新

词频统计功能新增: HTTPS:https://git.coding.net/li_yuhuan/WordFrequency.git SSH:[email protected]:li_yuhuan/WordFrequency.git 代码: static void Main(string[] args) { string str = ""; int length = args.Length; switch (length) { case 0: { string line = Conso

使用Storm进行词频统计

词频统计 1.需求:读取指定目录的数据,并且实现单词计数功能 2.实现方案: Spout用于读取指定文件夹(目录),读取文件,将文件的每一行发射到Bolt SplitBolt用于接收Spout发射过来的数据,并拆分,发射到CountBolt CountBolt接收SplitBolt发送的每一个单词,进行单词计数操作 3.拓扑设计: DataSourceSpout + SplitBolt + CountBolt 代码如下: package com.csylh; import org.apache.

201671010423 词频统计软件项目报告

需求分析 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 基本功能 1.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 2.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词. 3.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件

201671030102陈飞 词频统计软件项目报告

我的GitHub仓库 链接 1需求分析 根据实验二 软件工程个人项目分析 1.程序可读入文本文件,且文本文件大小不定,文件路径为相对路径 2.指定单词词频统计功能,可多个输入并且输出柱状图 3.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt. 4.可按文本中词频数降序显示前k个单词的词频及单词 5.使用java开发,且jdk环境为jdk8u161,jre环境为jre8u161 2功能设计 ·基本功能: 1.指定单词词频统计功能 2.高频词统计功能 3.

201671010454词频统计软件项目报告

一.课程名称:2016级计算机科学与工程学院软件工程(西北师范大学) 二.课程要求:实验二 软件工程个人项目 三.实验目标: (1)掌握软件项目个人开发流程. (2)掌握Github上发布软件项目的操作方法. 四.实验内容: (一)需求分析 程序可读入任意英文文本文件,改文件中英文词数大于等于1个,且能读取容纳英文原版<哈利波特>10万词以上的文章. 指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 高

201671010441徐浩杰 词频统计软件项目报告

实验二.软件工程个人项目 一.需求分析 尝试按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发.软件基本功能要求如下: •程序可读入任意英文文本文件,该文件中英文词数大于等于1个. •程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. •指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. •高频词统计功能:用户从键盘输入高