个人项目-WC(Java实现)
一、Github项目地址:
https://github.com/kestrelcjx/-WC-Java-
二、PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 28 |
| Estimate | 估计这个任务需要多少时间 | 10 | 11 |
| Development | 开发 | 600 | 480 |
| Analysis | 需求分析 | 120 | 150 |
| Design Spec | 生成设计文档 | 30 | 60 |
| Design Review | 设计复审 | 40 | 55 |
| Coding Standard | 代码规范 | 20 | 40 |
| Design | 具体设计 | 60 | 40 |
| Coding | 具体编码 | 480 | 480 |
| Code Review | 代码复审 | 30 | 20 |
| Test | 测试(自我测试,修改代码,提交修改) | 60 | 120 |
| Reporting | 报告 | 60 | 120 |
| Test Report | 测试报告 | 20 | 30 |
| Size Measurement | 计算工作量 | 10 | 15 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 120 | 60 |
| 合计 | 1690 | 1709 |
三、解题思路
使用Java语言设计三个模块,分别实现下列功能:
- 主类wc,在主类main方法中接受传入参数,并根据参数分类讨论,使用function类中各静态方法实现功能,或调用GUI类打开图形界面;
- GUI类,继承JFrame类,实现图形界面程序,通过按钮选择文件并调用function类中各静态方法统计信息;
- function类,在类中包含各静态方法,分别实现统计信息功能。
流程图:

四、设计实现
- 统计字符数
通过逐个读取字符,统计字符数。 - 统计行数
通过逐行读取字符串,统计行数。 - 统计单词数
通过逐行读取字符串,再以空格分隔字符串,统计单词数。 - 统计空行数
通过逐行读取字符串,判断是否为空字符串,统计空行。 - 统计注释数
通过逐行读取字符串,判断以“//”开头的行或“/”至“/”的行数量。 - 统计代码行数
总行数减去为注释行或空行的行数。 - 递归访问目录所有子文件夹,并记录文件路径
如果readFiles方法的path参数为文件,记录文件路径;
如果为文件夹,递归访问文件夹下所有文件和子文件夹。
五、运行测试
使用“手动测试,手工比较”方式。
测试空文件

测试一个字符的文件

测试一个词的文件

测试一行的文件

测试一个典型的源文件

测试GUI

代码覆盖率
"-c -w -l -a -s C:\Users\Administrator\Desktop\Test*.cpp"命令:

"-x"命令:

六、项目总结
由于学习了软件工程课程,了解在项目开发前期应做好需求分析和设计文档,所以仔细阅读了项目要求,并对开发流程有了清晰的思路,因此在整个开发过程中各阶段都比较顺利,这也让我了解了学习软件工程的意义所在。本次项目各功能其实并不难实现,主要将程序分成各模块实现,并协调好各模块之间的联系。WC项目开发,让我学到了软件工程知识在实际项目开发中的具体应用,也复习了Java编程知识。
个人项目-WC(Java实现)的更多相关文章
- 个人项目-WC (java实现)
一.Github地址:https://github.com/734635746/WC 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) ...
- 个人项目 wc(java实现)
一.Github网址: https://github.com/Clarazhangbw/Wc.exe 二.PSP表 PSP2.1 Personal Software Process Stages 预估 ...
- 个人项目:Java实现WC
Java实现WC Github项目地址:https://github.com/auxshaw/WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...
- 个人项目wc(Java)
个人项目(Java) 一丶Github地址:https://github.com/SAH2019/S ...
- 个人项目-wc
个人项目-WC (C语言) 一.Github地址:https://github.com/Lin-J-F/WC 二.PSP表格 PSP2.1 Personal Software Process St ...
- [转载]将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,解决办法
eclipse 代码中文注释乱码 求解决 将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclips ...
- Java web项目引用java项目,类型找不到
Java web项目引用java项目,类型找不到 错误信息: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapp ...
- ubuntu下eclipse新建项目没有java project的解决办法
装好了eclipse之后却发现新建项目没有java project的选项,大致搜索了一下,并没有发现很好的解决方案(大都是让你重新安装什么的),于是开始瞎鼓捣,并且找到了一个方案: 在终端切换到roo ...
- Maven项目中java类报错-Cannot resolve symbol
电脑蓝屏了,强制重启之后再打开IDEA里面的项目,所有Java类文件都在报Cannot resolve symbo错误,可以确定所有依赖的包都有引用且jar包没有冲突. 经查询找到这个解决方法: 在I ...
- 【MyEcplise】导入项目报错:Errors running builder 'JavaScript Validator' on project '项目名'. java.lang.ClassCastException
导入项目报错:Errors running builder 'JavaScript Validator' on project '项目名'. java.lang.ClassCastException ...
随机推荐
- Maven 生命周期的阶段与插件的目标之间的绑定关系
clean 生命周期 clean 生命周期的阶段 插件的目标 pre-clean clean maven-clean-plugin:clean post-clean default 生命周期的内置插件 ...
- 用Jetpack的Site Accelerator为网站CDN加速
Jetpack 的Site Accelerator站点加速器(前身为 Photon,注意:“Photon”现在是站点加速器的一部分)允许 Jetpack 优化图像并通过他们的全球服务器网络CDN提供图 ...
- volatile关键字及Java内存模式
参考文档:https://www.cnblogs.com/_popc/p/6096517.html volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情.它与Java的内存 ...
- koa中的路由
原生路由 网站一般都有多个页面.通过ctx.request.path可以获取用户请求的路径,由此实现简单的路由. const main = ctx => { if (ctx.request.pa ...
- 集合 List ,Set
https://www.cnblogs.com/jmsjh/p/7740123.html
- 6.Vue的Axios异步通信
1.什么是Axios Axios 是一个开源的可以用在浏览器端和 NodeJS 的异步通信框架,主要作用就是实现 AJAX 异步通信,其功能特点如下: 从浏览器中创建 XMLHttpRequests ...
- [LeetCode] 737. Sentence Similarity II 句子相似度之二
Given two sentences words1, words2 (each represented as an array of strings), and a list of similar ...
- Asp.Net Core 减少Controller获取重复注入对象
原文:Asp.Net Core 减少Controller获取重复注入对象 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012770274/art ...
- WebSocket--客户端
WebSocket 是 HTML5 提供的一种在单个TCP连接上进行全双工通讯的协议. WebSocket 使得客户端和服务端通讯,数据交换更加简单,而且允许服务端主动向客户端发送数据.在WebSoc ...
- Linux中Too many open files 问题分析和解决
今天某个服务的日志中出现了大量的异常: [WARN ] 2018-06-15 16:55:20,831 --New I/O server boss #1 ([id: 0x55007b59, /0.0. ...