一、项目Github地址

https://github.com/huangzihaohzh/WordCounter

二、PSP表格


PSP2.1 Personal
Software Process Stages
预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 90
· Estimate · 估计这个任务需要多少时间 60 90
Development 开发 1260 1320
· Analysis · 需求分析  60 45
· Design Spec · 生成设计文档 60 90
· Design
Review
· 设计复审  60 45
· Coding
Standard
· 代码规范 30 90
· Design · 具体设计 60 150
· Coding · 具体编码 540 480
· Code Review · 代码复审 90 60
· Test · 测试(自我测试,修改代码,提交修改) 360 360
Reporting 报告 180 160
· Test Report · 测试报告 120 120
· Size
Measurement
· 计算工作量 30 20
· Postmortem
& Process Improvement Plan
· 事后总结, 并提出过程改进计划 30 20
合计   1500 1570

三、解题思路

  1. 阅读需求文档(个人项目文档),大致了解题目的要求。由需求文档可知,题目要求编写一个根据用户输入的参数,对文本文件进行字符、单词、行数的技术并显示。此外还需要对所编程序进行测试,并按要求填写PSP表格以及撰写博文;
  2. 为了更合理地进行设计,决定先阅读下《构建之法》,了解了PSP表格的制订、回归测试的设计以及软件工程的工作量和质量的衡量标准等;
  3. 对于本项目,对用户的输入需要进行检查和分为参数组和文件名两项,考虑用正则表达式来进行处理,对于各类计数功能的实现也考虑用正则表达式去实现,对于“-a”选项对应的代码行 / 空行 / 注释行的处理则相对复杂一点,需要进一步寻找资料。

四、设计实现过程

主要涉及与实现

  1. 用户输入检查:使用正则表达式对用户输入的参数和地址进行检查,检查输入是否符合参数格式以及地址格式是否正确;
  2. 参数提取与存储:对用户输入进行分类存储,用户输入参数存到参数列表中,地址/文件名存入到一个字符串字段中。
  3. 按用户参数进行不同的操作:遍历参数列表,对不同的参数调用对应的方法获取计数值并加以显示。

流程图如下

五、测试

单元测试

测试代码

public class Test {
private TextFile textFile = null; //Constructor
public Test(String filePath) throws Exception{
this.textFile = new TextFile(filePath);
} //测试TextFile.charNumCounter()
public void testCharNumCounter(){
int charNum = textFile.charNumCounter();
if(charNum>=0)
System.out.println("文件字符数为:"+charNum);
else
System.out.println("字符数计算出错");
} //测试TextFile.wordNumCounter()
public void testWordNumCounter(){
int wordNum = textFile.wordNumCounter();
if(wordNum>=0)
System.out.println("文件单词数为:"+wordNum);
else
System.out.println("单词计算出错");
} //测试TextFile.lineNumCounter()
public void testLineNumCounter() throws IOException {
int lineNum = textFile.lineNumCounter();
if(lineNum>=0)
System.out.println("文件行数为:"+lineNum);
else
System.out.println("行数计算错误");
}
}

测试结果

D:\123.txt
文件字符数为:80
文件单词数为:6
文件行数为:2

整体测试

空文件测试(内有一空行,文件大小0KB)

命令:java -jar wc.jar -c -w -l "D:\test_txt\Empty.txt"

测试结果:

文件字符数为:0
文件单词数为:0
文件行数为:1

只有一个字符的文件测试

命令:java -jar wc.jar -c -w -l "D:\test_txt\OnlyOneChar.txt"

测试结果:

文件字符数为:1
文件单词数为:0
文件行数为:1

只有一个词的文件测试

命令:java -jar wc.jar -c -w -l "D:\test_txt\OnlyOneWord.txt"

测试结果:

文件字符数为:4
文件单词数为:1
文件行数为:1

只有一行的文件测试

命令:java -jar wc.jar -c -w -l "D:\test_txt\OnlyOneLine.txt"

测试结果:

文件字符数为:59
文件单词数为:3
文件行数为:1

一个典型的源文件测试

命令:java -jar wc.jar -c -w -l "D:\test_txt\Current.txt"

测试结果:

文件字符数为:27
文件单词数为:6
文件行数为:2

-x参数测试

命令:java -jar wc.jar -x -c -w -l

测试结果:

D:\test_txt\OnlyOneChar.txt
文件字符数为:1
文件单词数为:0
文件行数为:1

测试图片



总结

在本次项目开发过程中,有以下几点总结与教训:

  1. 要加大前期计划与分析的时间投入
  2. 拒绝拖延症,早开始,早结束

软件工程个人作业(wc.exe项目)的更多相关文章

  1. 个人项目作业——wc.exe

    一.Github项目地址 https://github.com/PIPIYing/wc 二.项目概况 项目描述 Word Count 1. 实现一个简单而完整的软件工具(源程序特征统计程序). 2. ...

  2. 软工作业1:wc.exe项目开发(java)

    Github地址:https://github.com/Zzhaomin/learngit 项目相关要求 : wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...

  3. 软件工程团队作业-Alpha阶段项目复审

    Alpha阶段项目复审 复审人:黄杰 复审总结表 小组的名字和链接 优点 缺点,bug/140字 最终名次 项目 一个普通的团队 https://www.cnblogs.com/clsgghost/p ...

  4. 【软件工程Ⅱ】作业四 |个人项目-小学四则运算 “软件”之初版(C语言)

    本次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186 本次作业代码的github地址:https://gith ...

  5. 软件工程 wc.exe 代码统计作业

    软件工程 wc.exe 代码统计作业分享 1. Github 项目地址 https://github.com/EdwardLiu-Aurora/WordCount 更好地阅读本文,可点击这里 基本要求 ...

  6. 个人项目作业(wc.exe)

    1.GitHub项目地址 https://github.com/QiuBin666/WC 项目介绍: 题目描述 Word Count1. 实现一个简单而完整的软件工具(源程序特征统计程序).2. 进行 ...

  7. 个人项目作业WC(JAVA)

    GitHub地址:https://github.com/1666403186/WC 一.题目描述 Word Count1. 实现一个简单而完整的软件工具(源程序特征统计程序).2. 进行单元测试.回归 ...

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

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

  9. 软工作业No.1。Java实现WC.exe

    网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...

随机推荐

  1. css伪类实现行号自动填充

    css伪类实现行号自动填充 大多数时候我们需要行号自动填充的时候我们可以 大多数时候是插入元素, 在元素里用js填入行号,或者用 ol > li 实现行号填充, 对于上面的方式,都不太灵活,而且 ...

  2. 安装quickLook插件以及解决如何不能读取offic问题

    目录 @(安装quickLook插件) quickLook插件是Mac上的快速浏览的一个功能,现在win10系统上也能安装插件,这个插件可以快速浏览txt,doc,图片,表格等文件如下图: 我认为最方 ...

  3. [20191010]bash行计算器.txt

    [20191010]bash行计算器.txt --//写一个bash行计算器,为了避免冲突,函数命名为2个=,1个=感觉不是很好(心里上^_^).--//使用bc计算器,里面函数不能使用圆括号,使用中 ...

  4. PyQt5-TableWidget 表格视图

    基于PyQt5 postgreSQL实现简单的数据插入.数据表格查询. 运行前需要安装psycopg2 模块,配置好postgerSQL. 先看效果图: 第1列为日期时间.第2列为自增1的编号.第3到 ...

  5. 6、zabbix自定义监控

    一.概述 为什么需要自定义监控呢? 虽然zabbix已经给我们准备好了很多的模板,但是有的东西还是无法监控,这时候就要我们自定义监控了. 自定义监控的思路? 比如我们现在想要监控这个值,如下所示,模板 ...

  6. 《Dapper》

    最近看了google的分布式追踪系统dapper的论文:http://static.googleusercontent.com/external_content/untrusted_dlcp/rese ...

  7. CF915E Physical Education Lessons 珂朵莉树

    问题描述 CF915E LG-CF915E 题解 \(n \le 10^9\) 看上去非常唬人. 但是这种区间操作的题,珂朵莉树随便跑啊. \(\mathrm{Code}\) #include< ...

  8. JAVA多线程间隔时间段执行方法

    import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class ManyProject ...

  9. mac使用技巧和快捷键

    mac快捷键 shift+command+delete 清除缓存 shift+command+. 查看隐藏文件 ctrl+空格 切换输入法 shift+option+F11/F12 精细调节声音 fn ...

  10. Spring Cloud和Spring Boot的版本问题

    很多人在使用springboot和springcloud,但是对于这两者之间的版本关系不是很清楚,特别是在面临升级的时候不知道该如何操作.本文简要摘录的官方文档的部分内容作为依据,供广大同行参考. 问 ...