1)操做可行性
操做可行性是指系统的操做方式在这个用户组织内行得通吗?本次开发只是简单的一个词频统计,不须要太大的人力或是资源。
2) 经济可行性
经济可行性是从经济的角度分析系统的规划方案有无实现的可能性和开发的价值。本系统是自主开发的,用于本身的做业设计,因此不考虑资金上的流动,故而不存在经济不可行得问题。
3) 技术可行性
技术上的可行性要考虑未来采用的硬件和软件技术可否知足用户提出的要求。目前,使用eclipse软件彻底能够,因此,也不存在技术可行性的问题。java
根据实验二可知,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发。其基本需求以下:git
1)现统计词汇数目
2)查找指定词汇
3)查找高频单词
4)实现字典排序github
操做系统 | Widnows 7 |
开发工具 | Eclipse |
JDK | 1.8 |
流程图设计 | 迅捷流程图制做软件 |
该程序共有三个类
1)包含主函数main的主类:Main.java
2)单词词频统计和高频词统计的功能类: Wordcount.java,对用户输入的单词进行处理,查询单词出现的次数。
3)排序功能类:WordEntity.java,对整个文本文件进行降序或者排序。
词频统计编程
try { BufferedReader reader = new BufferedReader(new FileReader(fileName)); String line = null; TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); while((line=reader.readLine())!=null){ line = line.toLowerCase(); String str[] = line.split("\\s+"); for(int i = 0; i<str.length; i++){ String word = str[i].trim(); if(tm.containsKey(word)){ tm.put(word, tm.get(word)+1); }else{ tm.put(word, 1); } } } //输出咱们想要的字符串格式 System.out.println("按字典序输出为:"); Iterator<Entry<String, Integer>> iterator=tm.entrySet().iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }
高频统计app
try { BufferedReader br = new BufferedReader(new FileReader(fileName)); String s; StringBuffer sb = new StringBuffer(); while ((s = br.readLine()) != null) { sb.append(s); } Map<String,Integer> map = new HashMap<String, Integer>(); StringTokenizer st = new StringTokenizer(sb.toString(),",.! \n"); while (st.hasMoreTokens()) { String letter = st.nextToken().trim(); int count; if (!map.containsKey(letter)) { count = 1; } else { count = map.get(letter).intValue() + 1; } map.put(letter,count); } Set<WordEntity> set = new TreeSet<WordEntity>(); for (String key : map.keySet()) { set.add(new WordEntity(key,map.get(key))); } System.out.println("本文中出现频率最高的单词为:");
for(int i=0;i<rulerStep;i++){ g2.drawString((400-20*i)+"个", 8, topMargin+rulerStep*i);//绘制Y轴上的数据 } g2.setColor(Color.PINK); int m=0; for(int i = 0;i<st.length;i++){ int value = tm.get(st[i]); int step = (m+1)*40;//设置每隔柱形图的水平间隔为40 g2.fillRoundRect(leftMargin+step*2,Height-value, 40, value, 40, 10);//绘制每一个柱状条 g2.drawString(st[i], leftMargin+step*2, Height-value-5); //标识每一个柱状条 m++; }*/
可是因为本人能力有限,以前对图形化的设计方面不太了解,最后结果没能呈现出来。
开始运行
eclipse
统计频率,并按字典排序输出
编程语言
统计出现频率次数最高
函数
查找单词功能
工具
PSP2.1 | 任务内容 | 计划共完成须要的时间(min) | 实际完成须要的时间(min) |
Planning | 计划 | 15 | 10 |
Estimate | 估计这个任务须要的时间,并规划大体工做步骤 | 15 | 10 |
Development | 开发 | 180 | 220 |
Analysis | 需求分析(包括学习新技术) | 6 | 8 |
Design Spec | 生成设计文档 | 30 | 20 |
Design Review | 设计复审 | 15 | 10 |
Coding Standard | 代码规范(为目前的开发制做合适的规范) | 3 | 3 |
Design | 具体设计 | 10 | 10 |
Coding | 具体编码 | 50 | 60 |
Code Review | 代码复审 | 5 | 8 |
Test | 测试(自我测试、修改代码,提交修改) | 8 | 6 |
Reporting | 报告 | 9 | 8 |
Test Report | 测试报告 | 1 | 2 |
Size Measurement | 过后总结,并提出过程改进计划 | 5 | 5 |
本身虽然以前编写过程序,也编写过一些小项目,可是,由于时间久了不动手致使在这次编程中 出现了不少问题,不少方面都出现了许许多多的问题。致使本身又回过头从新去学习,花费了大量 的时间。可是,因为本身的编程能力有限,柱形图的功能未能实现。 |
该项目仓库地址学习