软工网络16个人作业2

1.地址

2.PSP表格

PSP2.1个人开发流程预估耗费时间(分钟)实际耗费时间(分钟)
Planning计划4555
· Estimate明确需求和其他相关因素,估计每个阶段的时间成本4555
Development开发365515
· Analysis需求分析 (包括学习新技术)3060
· Design Spec生成设计文档3025
· Design Review设计复审2520
· Coding Standard代码规范1015
· Design具体设计2030
· Coding具体编码150210
· Code Review代码复审2025
· Test测试(自我测试,修改代码,提交修改)3045
Reporting报告5085
·测试报告2035
·计算工作量1020
·并提出过程改进计划2030

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()方法
    1121053-20180917201329390-284185823.png
    这部分代码主要是将文件内容读取出来,并利用正则表达式给定的字符进行单词分割,并存入动态数组。
  2. FileRead类的charsLinesCount()方法
    1121053-20180917201340475-501537495.png
    这部分代码是统计文件中的字符总数以及非空白行数。
  3. Main()方法
    1121053-20180917201350756-149112062.png
    1121053-20180917201356288-1895081496.png
    这部分代码调用FileRead类的相关方法获得数据,并进行处理排序最后输出。

6.测试结果及覆盖率

1121053-20180917201432569-42119492.png
1121053-20180917210136893-1820888360.png

7.心得收获

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

转载于:https://www.cnblogs.com/Fogram-c/p/9664571.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值