201671010426 孙锦喆《英文文本统计分析》结对项目报告

项目 2016级计算机科学与工程学院软件工程(西北师范大学)
这个作业的要求在哪里 实验二 软件工程个人项目
课程学习目标 尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发。
本次作业在哪个具体方面帮助我们实现目标 (1)掌握软件项目个人开发流程。(2)掌握Github上发布软件项目的操作方法。

点评信息

点评博客: 201671010449 杨天超 实验二英文词频统计设计步骤
Github链接地址: https://github.com/369BRabc/simple-
点评内容: 通读全文后,感觉报告层次清晰,语言严谨,对于开发当中对于用户的需求做了很深层次的分析,对于设计实现步骤分明,总结当中能够指明在开发过程中所遇到的问题和自身的不足。唯一瑕疵就是文章排版当中存在一点问题,希望继续努力,加油!
点评心得: 在自己的博客中还有着很多问题,在通过浏览他的博客时,一部分问题得到解决,对于Java的了解也进一步加深。

1、序言

在上一次的作业中,我们提到了使用Java语言去编写词频统计的系统开发,在每一步的开发过程中我们遇到了一系列问题,有一些耽误了我们开发的进度,另一些则导致我们对逻辑产生误解,下面我们会结合实验四的实验要求将问题一一提出并加以解决。

2、结对项目过程

两两结对后对对方实验二的博客进行了分析和评论,并对实验四的任务要求做了分析,在实验二的基础上我们还需要添加以下几点功能:
(1)各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
(2)人机交互界面要求GUI界面(WEB页面、APP页面都可);
(3)附加分功能:统计文本中除冠词、代词、介词之外的高频词;
(4)附加分功能:统计前10个两个单词组成的词组频率。

3、软件优化过程

核心代码展示

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();  //降序  
            }  
        });  

4、PSP

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)需求分析是已知的,但需要整理转换为我们所需要的步骤要求。

5、在GitHub的实际操作过程中所遇到的问题和一些建议

(1)全英文界面对于英语基础低的同学去正确使用有着不小的困难,建议使用Chrome浏览器进行网页翻译。
(2)文件无法上传的问题:
https://www.cnblogs.com/wyl090512/p/9887795.html

6、实验四的完成进度

任务一已经完成,已进行结对,博客互评,对于博文内容,优缺点,博文结构做了详细的分析。从GitHub中克隆了对方源码到本地进行阅读分析,从而弥补自我编写代码的不足。
任务二柱状图没有实现,还需要再进一步的学习。已可以统计文本的字符数以及行数,可以导入任意英文文本。使用HTML制作web交互界面。在本次任务中,我们实现了实验中的互相学习,对于我们基础薄弱的同学有了很大的提升。

7、Github代码分享

我的Github

原文地址:https://www.cnblogs.com/sjz961108/p/10632727.html