软工网络16我的做业2

1.地址

2.PSP表格

PSP2.1 我的开发流程 预估耗费时间(分钟) 实际耗费时间(分钟)
Planning 计划 45 55
· Estimate 明确需求和其余相关因素,估计每一个阶段的时间成本 45 55
Development 开发 365 515
· Analysis 需求分析 (包括学习新技术) 30 60
· Design Spec 生成设计文档 30 25
· Design Review 设计复审 25 20
· Coding Standard 代码规范 10 15
· Design 具体设计 20 30
· Coding 具体编码 150 210
· Code Review 代码复审 20 25
· Test 测试(自我测试,修改代码,提交修改) 30 45
Reporting 报告 50 85
· 测试报告 20 35
· 计算工做量 10 20
· 并提出过程改进计划 20 30

3.解题思路

  1. 审查题目,得知是要统计文件中字符、单词信息等,所以本题在编写代码时先要创建与文件的链接,所以初步设计一个FileRead类,编写方法读取文件内容,并先将数据存储起来(这里我将读取的数据存入了ArrayList中并返回),再交给另一个类的功能来处理数据。
  2. 因为任务是经过前台传参文件名,在对处理文件的类中设计一个参数来记录文件名(路径)。
  3. 要求是对字符、非空白行数、单词总数、以及前10个出现次数最高的单词进行统计。思考后,发现单词须要根据是否符合条件(4个英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写)进行筛选,行数、字符数则不须要作过多的其余工做,所以将字符数统计以及行数统计直接交给了FileRead处理,Main中则直接调用其方法得到结果。单词方面,则暂不作处理,以多种不一样分隔符分割出内容后,一律先存储到动态数组中,再另行判断是否为单词
  4. 在Main中先调用FileRead的方法,得到存储文件内容数据的ArrayList,再根据要求对该动态数组的数据进行筛选,符合条件的存入Map映射中,不符合的则抛弃,在存入Map时,设计Map键值对类型为<String,Integer>,使单词与出现次数相对应,遍历动态数组,使用toLowerCase()方法所有转为小写,当检测到相同单词时,对次数加1,不然新存入一个单词赋次数值为1。
  5. 所有符合条件的值存入Map中后,根据出现次数降序排序,在不一样单词数大于10时,输出前10个键值对,不然输出全部内容,即为输出频率最高的前10个单词。

4.设计实现过程

  1. 在类设计上,一共设计了两个类,FileRead类和主类Main。
  2. FileRead类设计了两个方法,一个是FileRead(fileRoad)方法,实现的功能是读取文件单词数据,并存入动态数组ArrayList;另外一个方法是charsLinesCount(fileRoad)方法,统计文件字符数和行数信息,两方法均为有参函数,传入文件名(路径)。
  3. Main类中则提供主函数入口,并调用了FileRead相应的方法获取数据。

5.代码说明

  1. FileRead类的FileRead()方法

    这部分代码主要是将文件内容读取出来,并利用正则表达式给定的字符进行单词分割,并存入动态数组。
  2. FileRead类的charsLinesCount()方法

    这部分代码是统计文件中的字符总数以及非空白行数。
  3. Main()方法


    这部分代码调用FileRead类的相关方法得到数据,并进行处理排序最后输出。

6.测试结果及覆盖率


7.心得收获

  • 本次实验整体上难度适中,可是多是由于过久没有使用Java语言进行编程,显得有些生疏,对于起方法名、变量名等都暴露出了很多的问题。再加上前期规划较少,编程起来就显得有些混乱。Mian()里面彷佛也放置了过多的没必要要的代码块,显得极为冗余,背负了太多不属于它的代码。后期可能会这对命名以及代码放置的位置进行调整,把功能都分别装起来,减轻Main()的负担。
  • 收获方面,这一次收获比较大的是第一次接触到PSP表格,了解到了对于工程,是须要有具体的规划设计以及时间评估的,以便于后期可以更高效地完成工程。但由于是第一次接触,因此实际上彷佛并无起到多大的效果,后期会继续增强。
  • 知识点方面,收获比较大的是利用正则表达式,指定多个分隔符来划分文件内容,另外就是第一次代码做业,让我意识到了Java编程方面的能力仍是太弱了,须要增强练习了。
相关文章
相关标签/搜索