项目 | 2016级计算机科学与工程学院软件工程(西北师范大学) |
这个做业的要求在哪里 | 实验二 软件工程我的项目 |
课程学习目标 | 尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发。 |
本次做业在哪一个具体方面帮助咱们实现目标 | (1)掌握软件项目我的开发流程。(2)掌握Github上发布软件项目的操做方法。 |
点评博客: | 201671010449 杨天超 实验二英文词频统计设计步骤 |
Github连接地址: | https://github.com/369BRabc/simple- |
点评内容: | 通读全文后,感受报告层次清晰,语言严谨,对于开发当中对于用户的需求作了很深层次的分析,对于设计实现步骤分明,总结当中可以指明在开发过程当中所遇到的问题和自身的不足。惟一瑕疵就是文章排版当中存在一点问题,但愿继续努力,加油! |
点评心得: | 在本身的博客中还有着不少问题,在经过浏览他的博客时,一部分问题获得解决,对于Java的了解也进一步加深。 |
在上一次的做业中,咱们提到了使用Java语言去编写词频统计的系统开发,在每一步的开发过程当中咱们遇到了一系列问题,有一些耽误了咱们开发的进度,另外一些则致使咱们对逻辑产生误解,下面咱们会结合实验四的实验要求将问题一一提出并加以解决。html
两两结对后对对方实验二的博客进行了分析和评论,并对实验四的任务要求作了分析,在实验二的基础上咱们还须要添加如下几点功能:
(1)各类统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
(2)人机交互界面要求GUI界面(WEB页面、APP页面均可);
(3)附加分功能:统计文本中除冠词、代词、介词以外的高频词;
(4)附加分功能:统计前10个两个单词组成的词组频率。
java
核心代码展现git
public static void main(String[] args) throws Exception { try{ File file =new File("e:\\test.txt"); if(file.exists()){ FileReader fr = new FileReader(file); LineNumberReader lnr = new LineNumberReader(fr); int linenumber = 0; int zifu = 0; while (lnr.readLine() != null){ linenumber++; java.util.Scanner sc=new java.util.Scanner(file); String str=sc.next(); zifu = zifu + str.length(); } System.out.println("行数 : " + linenumber); System.out.println("字符:"+ zifu); lnr.close(); }else{ System.out.println("File does not exists!"); } }catch(IOException e){ e.printStackTrace(); }
Map<String, Integer> wordsCount = new TreeMap<String,Integer>(); //存储单词计数信息,key值为单词,value为单词数 //单词的词频统计 for (String li : lists) { if(wordsCount.get(li) != null){ wordsCount.put(li,wordsCount.get(li) + 1); }else{ wordsCount.put(li,1); } } SortMap(wordsCount); //按值进行排序 } //按value的大小进行排序 public static void SortMap(Map<String,Integer> oldmap){ ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(oldmap.entrySet()); Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){ @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o2.getValue() - o1.getValue(); //降序 } });
PSP2.1 | 任务内容 | 计划共完成须要的时间(min) | 实际完成须要的时间(min) |
---|---|---|---|
Planning | 计划 | 15 | 40 |
Estimate | 估计这个任务须要多少 时间,并规划大体工做步骤 | 15 | 40 |
Development | 开发 | 40 | 60 |
Analysis | 需求分析 (包括学习新技术) | 10 | 10 |
Design Spec | 生成设计文档 | 15 | 10 |
Design Review | 设计复审 (和同窗审核设计文档) | 3 | 5 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 3 | 3 |
Design | 具体设计 | 20 | 25 |
Coding | 具体编码 | 30 | 60 |
Code Review | 代码复审 | 15 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 25 | 20 |
Reporting | 报告 | 25 | 30 |
Test Report | 测试报告 | 10 | 15 |
Size Measurement | 计算工做量 | 5 | 5 |
Postmortem & Process Improvement Plan | 过后总结 ,并提出过程改进计划 | 10 | 10 |
在实验二的过程当中:
(1)计划阶段的不一样意,在计划阶段咱们本来打算花15分钟计划处出一个大体的流程,但由于意见的不统一和自身技术的缺陷而致使花了40分钟。
(2)开发阶段,是让我意识到本身的短板的时期,由于对代码的不熟悉,以及对于总体构造的不完美,致使花了大量的时间编写代码。
(3)需求分析是已知的,但须要整理转换为咱们所须要的步骤要求。github
(1)全英文界面对于英语基础低的同窗去正确使用有着不小的困难,建议使用Chrome浏览器进行网页翻译。
(2)文件没法上传的问题:
http://www.javashuo.com/article/p-puyjwjbp-n.htmlweb
任务一已经完成,已进行结对,博客互评,对于博文内容,优缺点,博文结构作了详细的分析。从GitHub中克隆了对方源码到本地进行阅读分析,从而弥补自我编写代码的不足。
任务二柱状图没有实现,还须要再进一步的学习。已能够统计文本的字符数以及行数,能够导入任意英文文本。使用HTML制做web交互界面。在本次任务中,咱们实现了实验中的互相学习,对于咱们基础薄弱的同窗有了很大的提高。编程
个人Github浏览器