一、GitHub的网络地址:https://github.com/qiannai/WC.git

二、PSP图表:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

·Planning

·计划

30

20

· Estimate

· 估计这个任务需要多少时间

30

10

·Development

·开发

1440

760

· Analysis

· 需求分析

60

80

· Design Spec

· 生成设计文档

30

20

· Design Review

· 设计复审

20

20

· Coding Standard

· 代码规范

70

110

· Design

· 具体设计

40

20

· Coding

· 具体编码

750

700

· Code Review

· 代码复审

20

18

· Test

· 测试(自我测试,修改代码,提交修改)

200

300

·Reporting

·报告

100

140

· Test Report

· 测试报告

60

50

· Size Measurement

· 计算工作量

20

18

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

40

50

合计

2910

2316

三、解题思路:

1.总体思路:对题目进行需求分析与方法设计,该题目主要是由5个功能组成的[-c|-l|-w|-a|-s|-x],个人想法是建立类在类中对每一个功能进行实现。最后通过WC的主类对所有的功能进行集成。而且对于难度实现进行分块,所以一期实现[-c|-l|-w]三个功能,因为功能的操作具有一定的相似性;二期逐步实现[-a][-s]功能;其次实现[-w]功能。在功能实现的同时对该功能进行功能测试,保证功能的准确性,在后期调用的过程中保证返回的数据是正确的。减少查找错误位置跟错误返工的时间。

2.对于-c,-l,-w三个功能,即是处理文档路径输入后,读取文件,对文件的字符数行数单词数计数。通过readLine()方法读取文件每一行计算行数。对整个文档去除掉空格跟换行符则可以读出文档字符数。对于单词,对于连续一段字母组成则判断为一个单词,对文档用非字母进行分割,利用正则表达式则可以判断是否是连续一段字母,可以判断是否是单词,并对其计数。

3.对于-a功能则是利用正则表达式对读取的一行做出判断,在判断/**/组成的注释块时添加标记flag,当读出是/*做出标记,遇到*/时标记结束,在这段标记过程中,注释行加1。

4.对于-s功能,则是将判断是否是有输入-s分开,只实现对文档的递归。在这里又建立了一个类判断后缀名是否一致,一致则对文档输出否则不输出。文档的接口为 文件类型的递归文件夹、String类型的含通配符的绝对路径,还有对输入的[-c|-l|-w|-a]的Boolean值。对文件路径调用listFiles()方法遍历文件,如果路径存在且符合则运行否则判断是否是文件夹,对文件夹进行递归调用。运行结果为输出为该通配符下的符合文件的[-c|-l|-w|-a]选择的方法。

5.对于-x功能,则建立一个类用于可视化。主要是可以选择文件,也是扩展了一下,-x功能可以对文件的[-c|-l|-w|-a]进行选择,也不是全部输出。而且-x对-s有覆盖功能,只要出现-x则-s功能不可用。在可视化类Visual中,添加一个文本框用于输出结果,一个按钮调用JFileChooser调用GUI界面,并保存选择文件的路径,对路径下的文件输出选择的结果到文本框中。

6.对所有的功能集成到WC类中,需要有一个方法对用户输入进行判断用户的输入格式,通过正则表达式判断格式,并将输入切割出来,将功能选择的切割出来,通过构造isChoose()方法判断用户选择了什么功能,将路径切割出来用path保存。用if……else if语句对-x和-s方法分类。-x则调用Visual类,-s则判断是否路径输入是通配符格式还是非通配符格式。其余的输入则分为一类判断并调用相对应的方法。

四、设计与实现:

主类先对[-x][-s]判断,[-s]对输入的路径的多重判断,再调用CharCounter和LineCounter类返回各个结果。

五、测试:

1、输入wc.exe输出功能介绍

2、建立测试文档

3、手工一个测试空文件、一个字符文件、一个单词文件、一行数据文件、一个任意源文件

4、使用-s对输入绝对路径处理,并且与通配符比较结果

4、通配符与对行数计数,对整个盘符递归查询

5、使用-x实现基本的Windows GUI 程序操作,支持通过图形界面选取文件,支持通过图形界面展现文件的信息

在是否是单一测试还是递归测试下结果都是一样的。

六、总结:

一开始觉得按照模块化的开发方式可以比较好,因为将每个功能分开来,对每一个功能都可以建立一个main函数对该功能进行测试,不过最后的时候,在将所有功能集成到主函数上的时候就出现了非常混乱的情况,主要是对于模块化对接口与返回没有做好规范,结果导致调用得多了出现了很混乱的情况。所以后面在做代码优化的时候也是耗费了很多时间,不过每个功能一开始就做大量的测试,所以集成在一起的时候去考虑最后结果的正确性所花费的时间比较少,不用花费很多时间去判断结果的正确性。但是这次作业中因为代码比较不规范造成了很多的时间上的浪费,可见还要学习的东西还有很多。

软工个人设计(Java)的更多相关文章

  1. 软工作业(JAVA)

    github传送门:https://github.com/hhg52516/WC.git 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序 ...

  2. 软工作业1—java实现wc.exe

    github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c     //返回文件 file.c 的字符数 ...

  3. 软工团队 - UML设计

    软工团队 - UML设计 分工 对于分工我们没有不是按"自己负责部分的核心模块做练习"(每个人对每个图的某一模块来依次做完四个UML)的原因,是在于画这些图并不是都能彻底分成各个& ...

  4. [2018福大至诚软工助教]UML设计小结

    [2018福大至诚软工助教]UML设计小结 一.得分 总分(50分) 团队信息 (4分) 队名 (1分) 团队成员的学号与姓名(需要标注队长)(1分) 本次作业的博客链接(1分) 三者完全,4分 团队 ...

  5. 2018软工项目UML设计(团队)

    团队信息 队名:火箭少男100 本次作业课上成员 短学号 名 本次作业博客链接 2507 俞辛(临时队长) https://www.cnblogs.com/multhree/p/9821080.htm ...

  6. 软工之 NABCD 模型分析及 Web of Paper 原型设计结对作业

    目录 写在前面 NABCD 模型 N -- Need,需求 A -- Approach,方法 B -- Benefits,好处 C -- Compettors,竞争 优势 劣势 D -- Delive ...

  7. 软工之词频统计器及基于sketch在大数据下的词频统计设计

    目录 摘要 算法关键 红黑树 稳定排序 代码框架 .h文件: .cpp文件 频率统计器的实现 接口设计与实现 接口设计 核心功能词频统计器流程 效果 单元测试 性能分析 性能分析图 问题发现 解决方案 ...

  8. 软工实践原型设计——PaperRepositories

    软工实践原型设计--PaperRepositories 写在前面 本次作业链接 队友(031602237吴杰婷)博客链接 pdf文件地址 原型设计地址(加载有点慢...) 结对成员:031602237 ...

  9. 关于软工项目beta版本

    项目总结 项目成员: 黄丰润 031302307 王旭銮 031302320 张家俊 031302329 张晓燕 031302343 项目完成度:实现了专业信息填写.查看,教师信息填写,报课和查看课表 ...

随机推荐

  1. 关于hover与after,before已及first-letter,first-line的联用

    0920自我总结 关于hover与after,before已及first-letter,first-line的联用 一.写法 元素:hover::after{样式} 元素:hover::before{ ...

  2. C#关于反序列化实例时,接收实体字段少于或大于原实体对象 解析测试

    在项目中总会用到son解析,比如RabbitMQ中使用json串解析,比如发过来的实体对象有50个字段,而实际只需要用到里面的几个字段,这时我们创建实体时,只需要创建需要的几个字段即可. 测试实例,首 ...

  3. textarea中文本高亮选中

    最近在实现原文/译文句段高亮对比显示,和有道翻译类似,如下图所示: 最初的解决方案是采用富文本编辑器,把所有句段信息都用HTML标签包裹,操作空间比较大,页面上需要的功能几乎都可以实现,但是由此带来了 ...

  4. 这些Android系统样式中的颜色属性你知道吗?

    Android 系统样式中的颜色属性 推荐阅读看完后彻底搞清楚Android中的 Attr . Style .Theme 几个常用的颜色属性 先放上一张经典的图片,图片来自网络. 这张图在网上很是流传 ...

  5. GitHub访问速度慢的一种优化方法

    GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名GitHub. 由于GitHub是一个国外网站,在国内访问速度如何呢? 我们通过浏览器访问下ht ...

  6. The Preliminary Contest for ICPC Asia Nanjing 2019

    传送门 A. The beautiful values of the palace 题意: 给出一个\(n*n\)的矩阵,并满足\(n\)为奇数,矩阵中的数从右上角开始往下,类似于蛇形填数那样来填充. ...

  7. The Preliminary Contest for ICPC Asia Shanghai 2019

    传送门 B. Light bulbs 题意: 起初\(n\)个位置状态为\(0\),\(m\)次操作,每次操作更换区间状态:\(0\)到\(1\),\(1\)到\(0\). 共有\(T,T\leq 1 ...

  8. MSYQL主从复制-Gtid方式

    目录 1.MYSQL主从复制-Gtid方式 1.环境准备 2.Master配置 3.Slave配置 4.报错&解决 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和 ...

  9. acwing 517. 信息传递

    地址 https://www.acwing.com/problem/content/description/519/ 有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏. 在游戏里每人都有一 ...

  10. 创意编程,Python开发多功能壁纸自动切换工具!

    import ctypes import time import requests import os from threading import Thread from tkinter import ...