课程名称 |
|
作业要求 |
|
课程目标 |
尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发。 |
作业意义 |
1)掌握软件项目个人开发流程。 (2)掌握Github上发布软件项目的操作方法 |
在Github的仓库主页的链接地址:https://github.com/16rgzxh/zxh-/tree/master/test/src
1.需求分析:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图。
2.功能设计:
1.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词。
2.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt。
3. 设计实现,设计包括你会有哪些类,这些类分别负责什么功能。
a)
public BufferedReader(Reader in,int sz)
创建一个使用指定大小输入缓冲区的缓冲字符输入流。
in - 一个 Reader
sz - 输入缓冲区的大小
b)
public BufferedReader(Reader
in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流.
c)
toLowerCase 方法
字符串中的字母被转换为小写字母.
d)
ArrayList 排序方法
实现对数组的排序,给输出的单词频率高低进行排序.
e)
PrintStream 打印输出流.
实现统计文本的输出,输出文本结果保存在文档中.
4. 测试运行,请展示程序的运行截图,包括题目要求实现功能运行截图。
5.代码片段,用博客园正确的代码控件来显示。(提示:要有必要的注释说明,提示:不要贴所有代码!不符合规定的要倒扣分)
BufferedReader br = new
BufferedReader(new FileReader("src/a.txt"));
StringBuffer sb = new StringBuffer();
String text="";
System.out.println(br.readLine()!=null);
while
((text=br.readLine())!=null){
//遍历追加
sb.append(text);
}
//关闭流
br.close();
// 将stringBuffer转为字符并转换为小写
String str = sb.toString().toLowerCase();
// 正则表达式 非单词的字符来分割,得到所有单词
String[] words = str.split("[^(a-zA-Z)]+");
Map<String ,Integer> map = new HashMap<String,
Integer>() ;
for(String word
:words){
// 若不存在说明是第一次,则加入到map,出现次数为1
if(map.get(word)==null){
map.put(word,1);
}else{
// 若存在,次数累加1
map.put(word,map.get(word)+1);
}
}
6. 总结:
所谓模块化就是将整体软件系统划分成许多个逻辑上相对独立且可独立访问的模块,不同的模块通常具有不同的功能。模块是程序中逻辑上相对独立的单元,每个模块可独立地进行设计、开发和测试,最后所有模块组装在—起从而形成一个完整的软件系统。在结构化方法中,一个模块可能是一个过程、函数或子程序等,它是构成软件的基本构件。
设计原则:
l 建立数据流,可输入的英文文本,遍历文本,统计各个单词出现次数。
l 排序:对统计的单词书出现频率进行排序,一出现频率由高到低的顺序排序,
l 输出单词总数并输出单词出现频率的结果,并且可以查询所需单词的次数。
l 写入输出文本,存储统计结果。
7. 展示PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
30 |
40 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
20 |
25 |
Development |
开发 |
300 |
720 |
Analysis |
需求分析 (包括学习新技术) |
120 |
150 |
Design Spec |
生成设计文档 |
45 |
60 |
Design Review |
设计复审 (和同事审核设计文档) |
20 |
10 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
20 |
30 |
Design |
具体设计 |
30 |
60 |
Coding |
具体编码 |
300 |
600 |
Code Review |
代码复审 |
40 |
80 |
Test |
测试(自我测试,修改代码,提交修改) |
120 |
150 |
Reporting |
报告 |
60 |
100 |
Test Report |
测试报告 |
20 |
30 |
Size Measurement |
计算工作量 |
5 |
10 |
Postmortem & Process Improvement Plan |
事后总结 ,并提出过程改进计划 |
30 |
60 |