201671030102陈飞 词频统计软件项目报告
我的GitHub仓库
1需求分析
根据实验二 软件工程个人项目分析
1、程序可读入文本文件,且文本文件大小不定,文件路径为相对路径
2、指定单词词频统计功能,可多个输入并且输出柱状图
3、统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt。
4、可按文本中词频数降序显示前k个单词的词频及单词
5、使用java开发,且jdk环境为jdk8u161,jre环境为jre8u161
2功能设计
·基本功能:
1、指定单词词频统计功能
2、高频词统计功能
3、统计该文本所有单词数量及词频数
·拓展功能:
无
3设计实现
开发所使用类:
1、main类
主程序(包括所有函数)
2、word类
单词类,存储单词和出现次数
核心函数
1、lass SortByWord implements Comparator 按字典排序
2、public static void sr()输入词汇统计
3、public static void pxs()高频词汇统计
测试运行
开始执行
部分功能展示
result.txt部分内容展示
代码展示:
1、文件录入和词汇分割
try {
if(file.exists()) {
file.createNewFile();
}
Scanner fl=new Scanner(file);
while(fl.hasNext())
{
word=fl.nextLine();
words=word.split("\"|,|!|\\?|“|”|\\.|…|`|\\(|\\)|-|—|‘|’|&|\\'|:|;|\n|\\,| ");
for(int i=0;i<words.length;i++)
{
add(words[i]);
sumnu++;
}
2、统计该文本所有单词数量及词频数并输出到文件result.txt
Collections.sort(sum, new SortByWord());
File file=new File("result.txt");
try {
if(file.exists()) {
file.createNewFile();
}
FileWriter fop = new FileWriter(file.getAbsoluteFile());
for(Word s : sum )
{
fop.write(s.getWord()+":"+s.getNumber()+"\n");
}
fop.close();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("写入结束");
总结
根据分析所得到的要求。操作的对象为单词,创建单词类并给予我们所需要使用的属性。主类、设计到文件的处理及其所有函数的统一调配。根据所需功能创建不同的函数,以次来实现不同模块的划分。
psp2.1展示:
PSP2.1 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|
Planning | 10 | 5 |
Estimate | 5 | 1 |
Development | 225 | 181 |
Analysis | 30 | 10 |
Design Spec | 20 | 10 |
Design Review | 0 | 0 |
Coding Standard | 30 | 5 |
Design | 10 | 5 |
Coding | 60 | 100 |
Code Review | 10 | 5 |
Test | 20 | 30 |
Reporting | 10 | 5 |
Test Report | 0 | 0 |
Size Measurement | 0 | 0 |
Postmortem & Process Improvement Plan | 20 | 5 |