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个两个单词组成的词组频率。
1614540-20190402233337820-1942243035.jpg
1614540-20190402233346757-592411809.jpg

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

1614540-20190402231247107-1976435760.png

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

1614540-20190402232708452-1421395541.png

1614540-20190402232846484-938113513.jpg

4、PSP

PSP2.1任务内容计划共完成需要的时间(min)实际完成需要的时间(min)
Planning计划1540
Estimate估计这个任务需要多少 时间,并规划大致工作步骤1540
Development开发4060
Analysis需求分析 (包括学习新技术)1010
Design Spec生成设计文档1510
Design Review设计复审 (和同学审核设计文档)35
Coding Standard代码规范 (为目前的开发制定合适的规范)33
Design具体设计2025
Coding具体编码3060
Code Review代码复审1520
Test测试(自我测试,修改代码,提交修改)2520
Reporting报告2530
Test Report测试报告1015
Size Measurement计算工作量55
Postmortem & Process Improvement Plan事后总结 ,并提出过程改进计划1010

在实验二的过程中:
(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值