一.需求分析

  • 统计文件中各单词的出现次数

二. 功能设计

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

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

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

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

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


三. 环境需求

  • 测试机环境:Windows

  • 开发环境:CFree5


四.设计实现

  • 利用指针功能

  • 打开txt文件,若打开成功则返回文件起始位置给p指针

  • 利用flag做标志统计每个单词出现的频率

  • 将单词按字典顺序排序,即通过比较ascii值来进行冒泡排序


五.测试运行

英文文本:

开发平台:

运行界面:


六.部分代码

  • 检查文件结束:

    while(!feof(p)){for(j=0;j<20;j++){
    ​     temp[j]=fgetc(p);
    ​     if(temp[j]==' '||temp[j]==','||temp[j]=='.'||temp[j]=='!'||temp[j]=='?')
    ​     {
    ​       temp[j]='\0';
    ​           strcpy(s[b].w,temp);
    ​       b++;
    ​       break;
    ​     }
    ​    }}
  • 统计单词出现频率:

    void pv()
    {int j,k,flag=1;
    ​      for(j=0;j<b;j++)
    ​      {
    ​        for(k=0;k<j;k++)
    ​        {
    ​          if(strcmp(s[j].w,s[k].w)==0)
    ​          {
    ​              flag=0;
    ​              break;
    ​          }
    ​          else
    ​         flag=1;
    ​        }
    ​        while(flag)
    ​        {
    ​          for(k=j;k<b;k++)
    ​          {
    ​            if(strcmp(s[k].w,s[j].w)==0)
    ​                s[j].num++;
    ​          }
    ​         flag=0;
    ​        }
    ​      }
    }
  • 将单词按字典顺序排序:

    void px()
    {int j,k,c;char temp[20]; for(j=0;j<b-1;j++){
    ​      c=j;
    ​      for(k=j+1;k<b;k++)
    ​      {
    ​         if(strcmp(s[c].w,s[k].w)>0)
    ​             c=k;
    ​         if(c!=j)
    ​         {
    ​           strcpy(temp,s[c].w);
    ​           strcpy(s[c].w,s[j].w);
    ​           strcpy(s[j].w,temp);
    ​         }
    ​      } }
    }

七.总结

​ 这应该是目前为止做的最难受的一次实验,对于在语言缺乏和算法短板上的缺陷体现的淋漓尽致,自己的问题还是需要自己解决,没什么救世主,上网广泛浏览现有程序代码,借鉴其中的部分程序源码,主体框架采用C语言,最后又加入C++部分代码实现图形化用户界面,最终实现要求中的个别功能。半路出家的自己与他人的差距心里甚是明了,以后的学习该怎么进行才是接下来主要攻克的难题。


八.PSP

PSP2.1 任务内容 计划共完成需要
的时间(min)
实际完成需要
的时间(min)
Planning 计划 10 8
Estimate 估计这个任务需要多少
时间,并规划大致工作步骤
9 8
Development 开发 100 120
Analysis 需求分析 (包括学习新技术) 10 15
Design Spec 生成设计文档 5 5
Design Review 设计复审 (和同学审核设计文档) 4 5
Coding Standard 代码规范 (为目前的开发制定合适的规范) 3 3
Design 具体设计 15 20
Coding 具体编码 60 90
Code Review 代码复审 10 10
Test 测试(自我测试,修改代码,提交修改) 20 30
Reporting 报告 10 10
Test Report 测试报告 5 4
Size Measurement 计算工作量 5 3
Postmortem & Process Improvement Plan 事后总结 ,并提出过程改进计划 5 5

最重要的是一点要学会至少一门语言,否则寸步难行!

Github的仓库主页的链接地址:Github链接

转载于:https://www.cnblogs.com/dingjiahui/p/10558999.html

201671010406 词频统计软件项目报告相关推荐

  1. 201671010411+巩定定+词频统计软件项目报告

    课程名 软件工程 实验二 词频统计软件项目报告 词频(TF) 是一个词语出现的次数除以该文件的总词语数. 实验目的 (1)掌握软件项目个人开发流程. (2)掌握Github上发布软件项目的操作方法. ...

  2. 201671010417 金振兴 词频统计软件项目报告

    1.需求分析 按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发. .程序可读入任意英文文本文件,该文件中英文词数大于等于1个. . ...

  3. 201671030128+词频统计软件项目报告

    一.需求分析 根据实验二 软件工程个人项目的要求本次软件项目的需求有以下几点: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个,程序需要很壮健,能读取容纳英文原版<哈利波特> ...

  4. 201671030125+词频统计软件项目报告

    项目 内容 这个作业属于哪个课程? 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里? 实验二 软件工程个人项目 我在这个课程的目标是? 按时完成老师给的任务,复习JAVA ...

  5. 201671030130+词频统计软件项目报告

    (一)需求分析 根据实验二 软件工程个人项目的要求该软件项目的基本功能要求如下: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特 ...

  6. 201671010433 | 词频统计软件项目报告

    1.需求分析 使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发.软件基本功能要求如下: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原 ...

  7. 实验二 词频统计软件项目报告

    实验要求 实验二 软件工程个人项目 GitHib链接 https://github.com/Z-zt/Count 一.需求分析 通过分析实验二题目要求,得出的用户需求主要为: 程序可读入任意英文文本文 ...

  8. 201671010403 陈倩倩 词频统计软件项目报告

    一.需求分析 一个英文文本词频统计的软件开发,其基本需求有: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上 ...

  9. 201671010423 词频统计软件项目报告

    需求分析 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 基本功能 1.指定单词词频统计功能:用户可 ...

  10. 201671010444 夏向明 词频统计软件项目报告

    该项目实施过程主要包括以下7部分. 一.需求分析 1.程序需要读入至少一个词,可读入任意英文文本. 2.至少可以统计10万词及以上的文本. 3.用户可以同时查询多个单词的统计,并显示出其个数和柱状图. ...

最新文章

  1. 从一致性hash到ceph crush算法演进图谱(持续更新)
  2. Anaconda,pytorch如何安装中文版的BERT和使用
  3. 产品入门一——十分钟读懂产品经理
  4. 嵌入式 uboot引导kernel,kernel引导fs
  5. 解决Docker容器时区不一致的问题
  6. [Teamcenter 2007 开发系列] web 非空验证
  7. MCU破解技术分析(一)
  8. [转]vue解决刷新页面vuex数据、params参数消失的问题
  9. js调用Bartender
  10. 《Java多线程编程核心技术》学习笔记(1)
  11. firefox、IE下的几个不同属性的方法调用
  12. LA 4490 Help Bubu
  13. 德国:认真是一种可怕的力量
  14. selenium获取html源代码
  15. Matlab GUI编程技巧(十七):Matlab GUI设计总结
  16. java候选码计算的替换法_候选码求解方法
  17. memset函数()详解
  18. 文件操作系列之三——(windows中的文件操作)
  19. [转载]Android实现更换皮肤功能
  20. 云演CTF刷题 lfi

热门文章

  1. 新广告法违规词、敏感词在线检测工具
  2. 光谱数据计算色彩指标的软件(功能强大,齐全)
  3. 数据分析常见的几种方法
  4. Gillmeister Automatic PDF Processor(PDF文件自动处理工具)官方正式版V1.12.3 | pdf自动打印管理软件下载
  5. 数据集成-2-xml
  6. 14届数独-真题标准数独-Day 6-20220121(补)
  7. uniapp浏览pdf文件
  8. java开发面试自我介绍模板_java面试自我介绍范文
  9. c 语言实现链表反转(超详细,有手就行)
  10. 推荐Ubuntu使用UML工具-Drawio