项目要求:

实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。

具体功能

-c 返回文件字符数

-w 返回词的数目

-l 返回行数

扩展功能

-s 递归处理目录下符合条件的文件

-a 返回更复杂的数据(代码行 / 空行 / 注释行)

高级功能

-x 命令行输入-x参数,程序显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。

解题思路描述:

看到这个题目,我首先想到的就是利用java里面的IO流,要统计文件中的行数,可以选择利用BufferReader来按行读出文件中的内容,然后设置一个整型变量来统计行数,直到整个文件全部读完;统计字符数可以通过将读出的文件内容变成字符串的形式,然后计算字符串的长度及为字符的数量。至于统计单词的数量这个功能,每个人大概都不一样吧,因为每个人对单词的定义都不一样,究竟怎么样才算一个单词,每个人有每个人的看法,正如那句老话,一千个人,就有一千个哈姆雷特。我对单词的定义是利用空格以及换行来界定单词,只要是连续的字符,就算一个单词。然后利用字符串的分割,返回一个数组,单词数量就等于数组的长度。这样,就粗略的实现了基本的三个功能。

设计实现过程:

这个项目因为比较简单,所以我只写了了一个类,里面有四个方法,分别是统计字符数、单词数、行数的方法及检测文件是否存在并执行统计的方法;main方法就是调用执行方法,作为一个程序入口的存在。

代码说明:

主要的代码部分就是三个统计方法:

(1)统计行数的方法 c()

设计思路:使用BufferedReader(),按行读入,并将读到的内容赋值给字符串"s",之后计算字符串的长度即为字符的数量。

具体实现:

(2)统计单词的方法 w()

设计思路:使用BufferedReader(),按行读入,每读完一行就将内容赋值给字符串"s"并加一个换行符,然后进行字符串的分割,计算分割后返回数组的长度。

具体实现:

(3)统计行数的方法 l()

设计思路:这个方法相对来说比较简单,直接使用BufferedReader()按行读入,每次读入时进行计数,直到全部的行全部读完。

具体实现:

除了以上的统计方法,还有一个fileExist()方法,这个方法是对用户的输入的文件路径进行判断,若文件存在,则运行三个统计方法,若不存在,则报错。

测试运行:

测试文件:

测试结果:

各部分预计耗费时间和实际耗费时间:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

30

50

· Estimate

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

50

70

Development

开发

600

800

· Analysis

· 需求分析 (包括学习新技术)

180

200

· Design Spec

· 生成设计文档

30

60

· Design Review

· 设计复审 (和同事审核设计文档)

120

150

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

60

50

· Design

· 具体设计

60

80

· Coding

· 具体编码

180

200

· Code Review

· 代码复审

30

50

· Test

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

50

30

Reporting

报告

60

90

· Test Report

· 测试报告

30

60

· Size Measurement

· 计算工作量

20

30

· Postmortem & Process Improvement Plan

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

20

30

合计

1520

1950

代码覆盖率:

项目小结:

这次的项目只实现了基本的功能,因为好久没有使用Java编程,对java的相关知识有点遗忘,通过这次的项目,又重新拿起书本,复习了一遍java的相关知识,对Java有了新的理解,也算收获良多。这次项目的实现起来并不复杂,主要是IO流与字符串的种种方法,采用控制台输出的方式显示结果,并没有专门设计图形界面。

虽然项目不是很复杂,但是体验了如何从零开始做一个项目,并不只是简单的编程,更包括对测试,估计项目耗时的,对软件编写有了新的认识。同时,还学会了使用GitHub来记录项目开发过程,这是之前没有接触过的,也算是一个重大收获。

原文:https://www.cnblogs.com/2youyou/p/9638032.html

软件工程 java实现_软件工程作业——WC Java实现相关推荐

  1. Java是什么软件-详细解答Java到底是什么

    许多想要接触计算机编程的朋友对于开发语言没有一个系统性的概念,会问出类似于Java是什么软件?这类问题,实际上我们通常不把Java定义为软件,那么Java到底是什么?Java开发用什么软件?请容我细细 ...

  2. oracle java 并发_【转】JAVA并发教程(ORACLE官网资料)

    本文是Oracle官方的Java并发相关的教程,感谢并发编程网的翻译和投递. 计算机的使用者一直以为他们的计算机可以同时做很多事情.他们认为当其他的应用程序在下载文件,管理打印队列或者缓冲音频的时候他 ...

  3. java项目_好程序员Java分享从入门到服务端项目开发的过程

    好程序员Java分享从入门到服务端项目开发的过程,对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫.结合前人经验,就从入门到进阶对于Java的学习而 ...

  4. java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!

    点击蓝色"程序员书单"关注我哟 加个"星标",每天带你读好书! ​ 在介绍本书单之前,我想先问一下各位读者,你们之前对于Java并发编程的了解有多少呢.经过了1 ...

  5. 来电通java版_还在玩JAVA版《我的世界》?教你怎么转换存档玩光追!

    简介 如果你一直在花时间扩展和开发"我的世界 (Minecraft)" Java 版世界,那下面为你公布一则好消息:此版本现可转换为"我的世界 (Minecraft)&q ...

  6. 南通大学java期末_南通大学生学Java,掌握这20%知识点至关重要!

    南通大学生学Java,掌握这20%知识点至关重要! 嗨,南通的同学们,又见面了!今天我们来谈谈关于Java学习的那点事儿.不管手机前的你,是选择自学Java还是参加Java培训班,建议都来看看这篇文章 ...

  7. php服务器能运行java吗_将PHP与Java服务器接口

    我有一个游戏服务器应用程序(Java),并希望PHP与之直接通信. 例如,发送命令(从PHP)返回用户列表. 从游戏服务器等踢出特定玩家 如何将Java与PHP交互? 我已经想到了几件事,其中任何一项 ...

  8. java风控_【A0538】[java视频教程]金融信贷风控的机器学习实战视频教程 it教程

    Java视频教程名称:金融信贷风控的机器学习实战视频教程  java自学   风控视频教程   it教程 7 E" b1 z7 `/ _& G百度网盘下载链接:8 }, g4 o5 ...

  9. 我的世界java路径_我的世界java路径怎么设置?java路径设置攻略

    我们想要在电脑上玩我的世界,是需要下载启动器的,运行启动器还需要在电脑上安装好java.那么我的世界java路径怎么设置呢?下面巴士小编就给大家带来java路径设置攻略. 我的世界java路径怎么设置 ...

最新文章

  1. 关于for循环里边是否可以用return语句
  2. C# Bitmap类型与Byte[]类型相互转化
  3. 哈希表及哈希表查找相关概念(转)
  4. vim关闭下一行也是注释_在Vim中注释/取消注释行的快速方法是什么?
  5. 这才是厉害程序员的标配!
  6. 程序员如何通过 Git 来更好地提交消息?
  7. 英语作文计算机和ai作用,ai智能对生活的改变英语作文
  8. 达梦数据库的表空间及用户管理
  9. Microsoft OLE DB Provider for ODBC Drivers 错误 ‘80004005‘ 兼容
  10. LoRa亿佰特 E22-400T22S 临时寄存器和无线配置的详细解释
  11. 暑假训练---三棱锥内切球公式及海伦公式
  12. HTML粒子旋涡特效代码
  13. Web开发技术选型之JSP与PHP
  14. python飞机场安检功能
  15. winhex部分汉语模板
  16. 最全的8种 Python 程序定时任务程序!
  17. Unity资源管理——使用UnityWebRequest从云端下载Assetbundle包
  18. Java毕业设计_基于JAVAWeb和Android的随堂练习软件
  19. 约瑟夫环问题【java实现】
  20. 使用极域电子教室远程批量处理

热门文章

  1. php可以单干吗_拉伸膜包装机适合包装牛肉干吗?
  2. 推动数字化智能化转型 中关村数智经济发展论坛成功举办
  3. Kubernetes 上容器的启动顺序如何把控?
  4. 红帽急了:新年的 RHEL 将有低成本或免费版
  5. 如何将日志系统切换到 Logback?
  6. 求锤得锤,你要的一致性 hash 来了! | 附代码
  7. 如何像高级开发人员一样思考?
  8. 为什么 C 语言仍然占据统治地位?
  9. 马云电脑水平曝光;快狗打车回应裁员50% ;华为邀请开发者加入应用商店 | 极客头条...
  10. 为什么阿里腾讯们都在抢夺 LoRa?| 技术头条