201671030126赵佳平《英文文本统计分析》结对项目报告

信息表

项目 内容
次作业所属课程 软件工程
作业要求 作业要求内容
课程学习目标 熟悉软件开发整体流程,提升自身能力
本次作业在哪个具体方面帮助我们实现目标 第一次体验一个完整的工程

任务一

  • 博客地址
  • 点评内容:整体博文的结构很好,但是一些图片的布局有一点不好,另外在菜单中要将具体实现的功能体现出来,不然不知道功能是否实现或者不清楚菜单的选择;最后应该要注意博文中的错别字。表格和代码的插入值得学习,使得整体界面更加美观。
  • 点评心得:阅读完这位同学的博文之后,让我意识到我的博文整体还不是很美观,应该更少地使用截图的形式。

    任务二

  • 源码地址
  • 1.需求分析
    (1)实验2要求的功能;
    (2)单词频数可视化柱状图
    (3)统计该文本行数及字符数;
    (4)各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
    (5)可处理任意用户导入的任意英文文本;
    (6)人机交互界面要求GUI界面(WEB页面、APP页面都可);
    (7)附加分功能:统计文本中除冠词、代词、介词之外的高频词;
    (8)附加分功能:统计前10个两个单词组成的词组频率。
  • 2.软件设计
    项目主要有3个包,2个登陆界面的类(loginFrame.java,loginPane.java),1个主函数Main,3个功能实现类(可视化柱状图类chart.java、统计文本中除冠词、代词、介词之外的高频词类Highword.java、其他要求功能类function.java),2个主运行界面的类(firstFrame.java,firstPanel.java)
  • 3.核心代码
    读入文件并排序
        String path = firstPanel.textField.getText();
        try {
            FileInputStream fis = new FileInputStream(path);
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
            String temp="";
            long startTime=System.currentTimeMillis();
            startTime1=System.currentTimeMillis();
            while((temp = br.readLine())!=null)
            {
                stmplength1+=temp.length();
                String[] str = temp.split("([^a-zA-Z])"); //过滤出只含有字母的
                
                stmplength++;
                
                for(int i=0;i<str.length;i++)
                {
                    String word = str[i].trim();
                    if(word.length()!=0)    //去除长度为0的行
                        staff.put(word, staff.getOrDefault(word, 0)+1);
                }
            }
            br.close();
            endTime1=System.currentTimeMillis();
            
            //System.out.println("Total time is:"+ (endTime-startTime) );
            rank();//按值排序
            long endTime=System.currentTimeMillis();
            //System.out.println("文件读入成功!请继续...");
            JOptionPane.showMessageDialog(null, "文件读入成功! \n 耗时:"+(endTime-startTime)+"ms");//提示登录成功
        }catch(Exception e) {
            //System.out.println("文件不存在!!!请重新确认!");
            JOptionPane.showMessageDialog(null, "文件读入出错!");
        }

按值排序

public static void rank()//按值排序
    {
        Set<Entry<String,Integer>> mapEntries = staff.entrySet();
        
        aList = new ArrayList<Entry<String,Integer>>(mapEntries);
        
        Collections.sort(aList, new Comparator<Entry<String,Integer>>() {
             
            @Override
            public int compare(Entry<String, Integer> ele1,
                    Entry<String, Integer> ele2) {
 
                return ele2.getValue().compareTo(ele1.getValue());
            }
        });
 
       /* for(Entry<String,Integer> entry: aList) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        } */
    }

统计文本中除冠词、代词、介词之外的高频词

for(int i=0;i<k;i++)//10
                {
                    boolean ok=false;
                    if(flag)
                        textArea.append(function.aList.get(i).getKey()+"\t"+function.aList.get(i).getValue()+"\n");
                    else
                    {
                        for(int j=0;j<function.stop.size();j++)
                        {
                            if(function.aList.get(i).getKey().toLowerCase().equals(function.stop.get(j)))
                            {
                                k++;
                                ok=true;
                                break;
                            }
                        }
                        if(!ok)
                            textArea.append(function.aList.get(i).getKey()+"\t"+function.aList.get(i).getValue()+"\n");
                    }
                }
  • 4.运行程序
    登陆(nwnu,2019)

    读入文件


    主运行界面

    指定单词词频统计及柱状图


    前k个高频词汇统计

    统计文本中除冠词、代词、介词之外的高频词

    输出到文件


    统计行数及字符数

  • 5.结对编程

  • 6.PSP

    任务内容 计划完成时间(min) 实际完成时间(min)
    计划 10 8
    估计这个任务需要多长时间,并规划大致工作步骤 5 6
    开发 110 130
    需求分析(包括学习新技术) 8 6
    生成设计文档 5 8
    设计复审(和同事审核设计文档) 5 4
    代码规范(为当前的开发制定合适的规范) 4 3
    具体设计 15 10
    具体编码 150 200
    代码复审 5 6
    测试(自我测试、修改代码、提交修改) 15 12
    报告 9 5
    测试报告 5 3
    计算工作量 3 2
    事后总结,并提出工程改进计划 5 3
  • 7.小结感受
    通过此次的结对项目编程,让我感受到了合作的利与弊,诚然,合作编程能提升整个过程的效率,但如果没有好的交流共通,加上对彼此代码风格的不适应,反而会降低团队的效率。

猜你喜欢

转载自www.cnblogs.com/qiuwuji/p/10645902.html