项目 | 内容 |
---|---|
这个做业属于哪一个课程 | 任课教师首页连接 |
这个做业的要求在哪里 | 做业连接地址 |
课程学习目标 | 熟悉软件开发总体流程,提高自身能力 |
本次做业在哪一个具体方面帮助咱们实现目标 | 第一次体验一个完整的工程 |
点评心得:
经过运行博主的代码,对方代码在书写方面符合代码书写规范,命名格式彻底符合代码规范要求,代码格式整洁,注释部分也很详细。对比本身的博文和代码,我仍是有不少不足之处,所以,在接下来的实验中我会慢慢改善本身的不足,尽可能写出结构清晰、内容完整的博文。html
按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,结对完成英文文本词频统计的软件开发。软件基本功能要求以下:
(1)实验2要求的功能;
(2)单词频数利用可视化柱状图;
git
(3)统计该文本行数及字符数;
(4)各类统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
(5)可处理任意用户导入的任意英文文本;
(6)人机交互界面要求GUI界面(WEB页面、APP页面均可);
(7)附加分功能:统计文本中除冠词、代词、介词以外的高频词;github
类图
编程
(1)单词频数利用可视化柱状图实现dom
public JFreeChart ShowCountHistogram(BufferedReader bufferedReader) throws IOException { CategoryDataset dataset = getDataSet(bufferedReader); JFreeChart chart = ChartFactory.createBarChart3D( "英文文本词频统计图", // 图表标题 "单词名称", // 目录轴的显示标签 "次数", // 数值轴的显示标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向:水平、垂直 true, // 是否显示图例(对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成URL连接 ); CategoryPlot plot=chart.getCategoryPlot(); //获取图表区域对象 CategoryAxis domainAxis=plot.getDomainAxis(); //水平底部列表 domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14)); //水平底部标题 domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //垂直标题 ValueAxis rangeAxis=plot.getRangeAxis();//获取柱状 rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15)); chart.getTitle().setFont(new Font("宋体",Font.BOLD,20)); //设置标题字体 return chart; }
(2)统计文本中除冠词、代词、介词以外的高频词的实现编程语言
public Map<String, Integer> selectExceptFunctionWord(BufferedReader bufferedReader) throws IOException { Map<String, Integer> map = this.selectWordCountByDOrder(bufferedReader); Map<String, Integer> exceptFunction = new LinkedHashMap<String, Integer>(); for (Map.Entry<String, Integer> w :map.entrySet()) { if(!w.getKey().equals("the")&&!w.getKey().equals("is")&&!w.getKey().equals("you")&&!w.getKey().equals("yourself")&&!w.getKey().equals("your")&&!w.getKey().equals("them")&&!w.getKey().equals("their")&&!w.getKey().equals("to")&&!w.getKey().equals("by")&&!w.getKey().equals("is")&&!w.getKey().equals("a")&&!w.getKey().equals("and")&&!w.getKey().equals("was")&&!w.getKey().equals("has")&&!w.getKey().equals("had")&&!w.getKey().equals("I")&&!w.getKey().equals("for")&&!w.getKey().equals("my")&&!w.getKey().equals("me")&&!w.getKey().equals("with")&&!w.getKey().equals("of")&&!w.getKey().equals("in")&&!w.getKey().equals("on")&&!w.getKey().equals("that")&&!w.getKey().equals("it")&&!w.getKey().equals("The")&&!w.getKey().equals("at")&&!w.getKey().equals("which")&&!w.getKey().equals("he")&&!w.getKey().equals("as") &&!w.getKey().equals("but")&&!w.getKey().equals("his")&&!w.getKey().equals("from")&&!w.getKey().equals("some")&&!w.getKey().equals("be")&&!w.getKey().equals("were")&&!w.getKey().equals("not") &&!w.getKey().equals("they")&&!w.getKey().equals("this")&&!w.getKey().equals("an")&&!w.getKey().equals("no")&&!w.getKey().equals("into")&&!w.getKey().equals("It")&&!w.getKey().equals("there")&&!w.getKey().equals("But")&&!w.getKey().equals("him")&&!w.getKey().equals("could")&&!w.getKey().equals("been")&&!w.getKey().equals("would")&&!w.getKey().equals("she")&&!w.getKey().equals("then")&&!w.getKey().equals("Then")&&!w.getKey().equals("have")) { exceptFunction.put(w.getKey(), w.getValue()); }} return exceptFunction; }
(3)读取文本获取降序词频ide
public Map<String, Integer> selectWordCountByDOrder(BufferedReader bufferedReader) throws IOException { Map<String, Integer> map = this.AllWordCount(bufferedReader); List<Map.Entry<String, Integer>> nlist = new LinkedList<Map.Entry<String, Integer>>(map.entrySet()); Collections.sort(nlist, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { int compare = (o1.getValue()).compareTo(o2.getValue()); return -compare; } }); Map<String, Integer> result = new LinkedHashMap<String, Integer>(); for (Map.Entry<String, Integer> entry : nlist) { result.put(entry.getKey(), entry.getValue()); } return result; }
(1)实验2要求的功能
主界面
工具
统计该文本行数及字符数
学习
读取文本获取词频,按照字典排序
测试
(2)单词频数利用可视化柱状图
(3)读取文本获取指定单词出现的次数
(4)读取文本获取指定前K个高频词
(5)读取文本获取降序词频
(6)统计文本中除冠词、代词、介词以外的高频词
PSP2.1 | 任务内容 | 计划共完成须要的时间(h) | 实际完成须要的时间(h) |
---|---|---|---|
Planning | 计划 | 0.4 | 0.4 |
Estimate | 估计这个任务须要多少时间,并规划大体工做步骤 | 15 | 20 |
Development | 开发 | 2 | 3 |
Analysis | 需求分析 (包括学习新技术) | 5 | 6 |
Design Spec | 生成设计文档 | 2 | 1.5 |
Design Review | 设计复审 (和同事审核设计文档) | 1 | 1 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 0.5 | 0.5 |
Design | 具体设计 | 5 | 5 |
Coding | 具体编码 | 15 | 18 |
Code Review | 代码复审 | 0.5 | 0.5 |
Test | 测试(自我测试,修改代码,提交修改) | 0.5 | 0.5 |
Reporting | 报告 | 1 | 2 |
Test Report | 测试报告 | 0.5 | 0.5 |
Size Measurement | 计算工做量 | 0 | 0 |
Postmortem & Process Improvement Plan | 过后总结 ,并提出过程改进计划 | 0.5 | 0.5 |
经过此次结对项目,我深入的理解了1+1>2的含义。在编写此次项目的过程当中因为咱们两个的编程水平都不太好,须要学习的东西太多,因此在学习心得技术和具体实现的时候花费了不少的时间,可是两我的在学习和讨论的效率明显大于一我的的,咱们能够互相讲解本身看懂的或者学懂得技术,这样节约了大量的时间。可是在结对项目的过程当中也存在不少的缺点,好比沟通很差两我的就会重复作事情,这样反而下降了项目的进度,因此在两我的的合做中良好的沟通显得格外重要。最后,在此次的结对项目中我学会了不少的知识,咱们也从彼此的身上学到了各自的优势,很开心和她合做。