软件工程——第二周编程作业

这个作业属于哪个课程 软件工程——计科1班,班级链接
这个作业要求在哪里 作业要求——202103226-1 编程作业
这个作业的目标 学会如何使用gitee,学会词频统计算法
作业正文 软件工程——第二周编程作业
其他参考文献 廖雪峰的git教程软件工程师的能力评估和职业发展,.gitignore配置语法完全版 Java词频

WordCount编程

1.Github项目地址

project-java

2.PSP表格

| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
| --------------------------------------- | -------------------------------- | -------- | -------- | -------- |
| Planning | 计划 | 25 | 35 | |
| • Estimate | • 估计这个任务需要多少时间 | 25 | 35 | |
| Development | 开发 | 630 | 1955 | |
| • Analysis | • 需求分析 (包括学习新技术) | 200 | 600 | |
| • Design Spec | • 生成设计文档 | 90 | 100 | |
| • Design Review | • 设计复审 | 20 | 30 | |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范)| 20 | 25 | |
| • Design | • 具体设计 | 100 | 200 | |
| • Coding | • 具体编码 | 200 | 600 | |
| • Code Review | • 代码复审 | 70 | 100 | |
| • Test | • 测试(自我测试,修改代码,提交修改) | 200 | 300 | |
| Reporting | 报告 | 90 | 100 | |
| • Test Repor | • 测试报告 | 70 | 80 | |
| • Size Measurement | • 计算工作量 | 10 | 15 | |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 10 | 5 | |
| | 合计 | 745 | 2090 | |

3.解题思路描述

1、文件读取。用Buffered,readline按行读取
2、过滤筛选单词并统计word的数量。
3、排序。使用SortMap进行排序
4、最后将结果输出

4.代码规范制定链接

codestyle.md

5.设计与实现过程

行数读取:用readline获取所有行数,并减去无效行
统计有效单词个数

    public static void main(String[] args) throws Exception {  
          
        BufferedReader bufferr = new BufferedReader(new FileReader("C:/test/wordcount test.txt"));  
        List<String> lists = new ArrayList<String>();          //A list of store filtered words  
        String readLine = null;
        int countword = 0;
		while((readLine = bufferr.readLine()) != null){  
            String[] wordsArr = readLine.split("[^a-zA-Z0-9]");  //Filter out letters and numbers only
            for (String word : wordsArr) {  
            	String text = word.toLowerCase();
                if(text.length() >=4){             //Remove words less than 4 letters in length 
                    lists.add(text);  
                    countword ++;
                }
            }  
        }

用sortmap进行排序

    public static void SortMap(Map<String,Integer> oldmap){                 //Sort by value's value 
       
     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();      //descending sort  
         }  
     });  
       
     for(int i = 0; i<10; i++){  
         System.out.println(list.get(i).getKey()+ ": " +list.get(i).getValue());  
     }     
 }  

6.性能改进

还有几个功能没有加上去的,需要尽量加

7.单元测试

8.心路历程与收获

这次作业我用了不太熟悉的java写的,所以很多部分都没有完善好,参考了很多资料,目前完成这样了。下次作业开始还是打算用C,不用java折磨自己了。

posted @ 2021-04-02 18:57  LILI6  阅读(73)  评论(0编辑  收藏  举报