201671010413葛进花+《英文文本统计分析》结对项目报告

课前摘要:

项目名称:英文文本统计分析 项目要求
任课教师:代老师 博客地址
结对人:201671010401包稚潼 博客地址

任务一

对结对方实验二的项目成果进行评价:

点击进入对方博客

(源码)

1.博文部分:

  • 从博文结构上来看,排版很整齐,所有想呈现的东西都一目了然。
  • 从从博文内容上来看,满足了老师项目要求的部分功能,对实现的部分功能的描述并不是太完善。
  • 从PSP表中可以看出, 在各个阶段预期时间与实际时间差不多,只有在开发阶段比预期多了半个小时。
    原因: 开发阶段比自己想象的要复杂,加上自己基础较为薄弱,所以超出了自己的预期时间。

2.代码部分:

  • 从功能上来说,结对方没有实现老师的全部基本功能
  • 从代码规范的角度考虑,命名基本规范,但是,结对方将自己的代码全部写在一个包里,这样就显得有点乱,而且不便于维护,如果是一个团队项目,也不便于分工。

3.自我反思:

  • 在整个实验二项目中,我跟结对方的问题都出现的差不多
    • 1.没有分模块,分功能去写。
    • 2.功能都未能完全实现。
      所以在纠正对方的不足时, 我也不断地反思自己.
      在本次项目中,我们首先会修改对方的代码,使其变得更为规范,其次,我们会将双方的代码加以整合,然后添加老师这次实验所所要求的功能。

任务二:采用两人合作方式,设计开发一个英文文本统计分析软件,使之具有以下功能:

实验2要求的功能:

-统计该文本行数及字符数;
-各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
-可处理任意用户导入的任意英文文本;
-人机交互界面要求GUI界面(WEB页面、APP页面都可);
-附加分功能:统计文本中除冠词、代词、介词之外的高频词;
-附加分功能:统计前10个两个单词组成的词组频率。

软件设计:

-需求分析:
-1.可处理用户任意输入的英文文本
-2.统计该文本的行数及字符数功能
-3.指定单词词频统计功能
-4.前k个高频词的输出
-5.统计该文本的单词数,然后输出到result.txt文件。
-6.统计功能耗时
-7.GUI人机交互界面
-8.统计文本除冠词、代词、介词之外的高频
-单词频数可视化柱状图要求是以下样式:

本次实验运行结果:




核心功能代码展示:

public class  CountOccurrenceOfWords {
    public static void main(String[] args) {
        long t1 = System.currentTimeMillis();
        String s;
        String fileName1 = "D:\\Workspaces\\jiedui\\src\\text.txt";
        String fileName2 = "D:\\Workspaces\\jiedui\\src\\result.txt";
        try {
            BufferedReader br = new BufferedReader(new FileReader(fileName1));
            BufferedWriter bw = new BufferedWriter(new FileWriter(fileName2));
            StringBuffer sb = new StringBuffer();
            //将文件内容存入StringBuffer中
            while((s = br.readLine()) != null) {
                sb.append(s);
            }
            String str = sb.toString().toLowerCase();
            //分隔字符串并存入数组
            String[] elements = str.split("[^a-zA-Z0-9]+");
            int count = 0;
            Map<String, Integer> myTreeMap = new TreeMap<String, Integer>();
            //遍历数组将其存入Map<String, Integer>中
            for(int i = 0; i < elements.length; i++) {
                if(myTreeMap.containsKey(elements[i])) {
                    count = myTreeMap.get(elements[i]);
                    myTreeMap.put(elements[i], count + 1);
                }
                else {
                    myTreeMap.put(elements[i], 1);
                }
            }                                          
            System.out.println("单词统计的结果请见当前目录result.txt文件");
            //将map.entrySet()转换成list
            List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(myTreeMap.entrySet());
            //通过比较器实现排序
            Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
                //降序排序
                public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                    return o2.getValue().compareTo(o1.getValue());
                }
            });
            int num = 1;
            //将结果写入文件
            for(Map.Entry<String, Integer> map : list) {
                
                if(num <= sb.length()) {
                    bw.write("出现次数第" + num + "的单词为:" + map.getKey() + ",出现频率为" + map.getValue() + "次");
                    bw.newLine();
                    System.out.println(map.getKey() + ":" + map.getValue());
                    num++;
                }
                else break;
            }
            bw.write("耗时:" + (System.currentTimeMillis() - t1) + "ms");
            br.close();
            bw.close();
            System.out.println("耗时:" + (System.currentTimeMillis() - t1) + "ms");
        } catch (FileNotFoundException e) {
            System.out.println("找不到指定文件!");
        } catch (IOException e) {                                    
            System.out.println("文件读取错误!");
        }
    }
}
public class Word {
    // 统计数字或者字符出现的次数
    public static TreeMap<Character, Integer> Pross(String str) {
        char[] charArray = str.toCharArray();
 
        TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
 
        for (int x = 0; x < charArray.length; x++) {
            if (!tm.containsKey(charArray[x])) {
                tm.put(charArray[x], 1);
            } else {
                int count = tm.get(charArray[x]) + 1;
                tm.put(charArray[x], count);
            }
        }
        return tm;
    }
 
    public static void main(String[] args) {
        BufferedReader br = null;
        int line = 0;
        String str = "";
        StringBuffer sb  = new StringBuffer();
        try {
            br = new BufferedReader(new FileReader("D:\\Workspaces\\jiedui\\src\\text.txt"));
            while ((str = br.readLine()) != null) {
              sb.append(str);
                ++line;
            }
            System.out.println("\n文件行数: " + line);
            TreeMap<Character, Integer> tm = Pross(sb.toString());
            System.out.println("\n字符统计结果为:" + tm);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

结队过程:-初期寻找队友,两人互评博客,找出对方的优势和不足,然后相互补充,做出psp表,初期有了大致的计划,后期投入实践,在编程过程遇到的问题较多

任务三:博文信息表psp

PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成所需要的时间(min)
Planning 计划 15 13
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 15 10
Development 开发 600 850
Analysis 需求分析(包括学习新技术) 18 12
Design Spec 生成设计文档 20 35
Design Review 设计复审(审核设计文档) 15 22
Coding Standard 代码规范(为目前的开发制定合适的规范) 18 25
Design 具体设计 15 20
Coding 具体编码 600 930
Code Review 代码复审 20 30
Test 测试(自我测试,修改代码,提交修改) 50 68
Reporting 报告 50 60
Test Report 测试报告 30 40
Size Measurement 计算工作量 15 20
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 20 32

总结:从实验二到实验四,老师给出的实验,在开发和代码编写上花费大量时间,错误频繁出现修改失败,一直有bug,很崩溃,但是bug修复后心情也是很激动。在结队中我们相互促进,共同寻找实现的方法,但是很可惜由于技术方面的不足,附加功能没有实现。PSP展示了我们的开发过程,计划赶不上变化,实际操作的时间远远大于计划时间,程序语言方面存在很大问题,在中途也请教过其他同学,有所收获,但是仍然有解决不了的问题,后续要强加练习和学习,相互讨论和监督,得到了不同的提升,在合作过程中磨合不断,要学会发现别人身上的闪光点。

点击查看源码

猜你喜欢

转载自www.cnblogs.com/gejinhua/p/10634521.html