201671010439-词频统计软件项目报告

一,需求分析

1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个。

2.程序需要很壮健,能读取容纳英文原版《哈利波特》10万词以上的文章。

3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图。

4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词。

5.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt。

二,功能设计

1.用户输入任意多个英文单词,显示对应单词在文本中出现的次数和柱状图。

2.用户从键盘输入高频词输出的个数k,按文本中词频数降序显示前k个单词的词频及单词。

3.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt。

三,设计实现

说明每个部分的算法设计说明(可以是描述算法的流程图)、每个程序中使用的存储结构设计说明(如果指定存储结构写出该存储结构的定义),面向对象的方法,应该给出类中成员变量和成员函数原型声明

四、测试运行

部分代码

while(fscanf(fp,"%s",st)!=EOF)

{   found=0;

for(i=0;i<wordnum;i++)

   { if(strcmp(wl[i].word,st)==0)    //字符串的读取  

  {

wl[i].num++;    

found=1; 

    break; }

}   if(!found)  

{

strcpy(wl[i].word,st);  

  wl[i].num=1;  

  wordnum++; }

}  fclose(fp); 

  if((fp=fopen("14220105.txt","r"))==NULL) 

exit(1);

  while((c=fgetc(fp))!=EOF)

{

if(c==' ')

 ++n;

else if(c>='0'&&c<='9')

++j;

else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))

++k;

else ++m

}

fclose(fp)

printf("读取完毕,结果如下:\n")

printf("数字%d\n 字母%d\n 空格%d\n 其他%d\n);//输出结果

}

void shuru()

{char str[100]

char letter[52]

int count[52]={0}

int i;

int lc=0;

cout<<“输入字符串:”<<endl;

scanf("%s",str);

//初始字母表

for(i=0;i<26;i++)

letter[i]='A'+i;

for(i=26;i<52;i++)

letter[i]='a'+i-26;

i=0;

while(str[i]!='\0')

{

if(str[i]!='\0')//字符串未结束

{

if(str[i]>='A'&&str[i]<='Z')

count[str[i]-65]++;

lc++;

}

i++;

}for(i=0,i<52;i++)

{if(count[i]!=0)

printf(%c-%d-%3.2f%\n",letter[i],count[i],(float)count[i]/lc*100);

}

}

五、运行结果

 

 

 

posted on 2019-03-19 23:24  温永琴  阅读(156)  评论(3编辑  收藏  举报