WC项目 (JAVA实现)

1.Github网址:

https://github.com/Flying123haha/Software_engineer.git

2.PSP表

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划4060
· Estimate· 估计这个任务需要多少时间4060
Development开发10601200
· Analysis· 需求分析 6060
· Design Spec· 生成设计文档4060
· Design Review· 设计复审 4060
· Coding Standard· 代码规范6060
· Design· 具体设计100100
· Coding· 具体编码400480
· Code Review· 代码复审6050
· Test· 测试(自我测试,修改代码,提交修改)300300
Reporting报告250290
· Test Report· 测试报告100140
· Size Measurement· 计算工作量5050
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划100100
合计 13501850

 

 3.解题思路

一、这是软工课程布置的第一个作业,也就是编写出一个程序WC.exe可以直接统计出一个文件的字符数、词数和行数;一开始我觉得真的是很简单,因为之前学过java的String类,使用这个类能轻易地计算出一个字符串的各种长度因此我很有信心、但是因为是软工的作业,因此我希望能好好利用已学知识:加强PSP的时间安排以及代码的规范。

二、我起初编了两个类,分别一个是主类一个是函数类,但是后来我发现函数类只是为了使用方法而没有其他意义、然后如果这样调用方法就还需要在主类实例化一个对象来实现,于是我将类中的方法都迁移到了主类,从而直接实现类中的方法而无需定义新类。

三、为了实现程序的GUI体验,我重温了一边Java的Swing各种组件的知识,还记得去年Java课程曾经要求我们写过一个记事本,但是这次我就只实现了一个功能,窗口就显得特别简陋。

四、为了对目录进行查询,我使用了一个函数lists对目录进行递归的查询。

五、在命令中,可以输入最多两个指令的融合:第一个指令为[-calhe],第二个指令为[-sa],具体可见下面的测试。

4.设计流程

5、测试

一、命令行初始界面:

 

 

 

二、查询某一文件的字符数:

 

三、查询不存在文件的字符数:

 

 

四、查询一个目录中各个文件词数:

 

 

 

 

 

 五、查询一个文件的各个行数及词数:

 

 

 六、使用GUI查询文件的数据信息

 

七、代码覆盖率检测

 

 

 

 

 6、个人总结

  这次的软工作业让我受益匪浅,虽然这次的作业并不复杂,但是我从中学习到了许多软件工程的知识:

1、使用PSP表记录各个流程的时间,这使我对psp中各个流程加深了印象;在完成工程时,当我觉得迷茫时我就会打开流程表进行核对、这让我顿时回到了工作状态;

2、这次的作业我为了避免麻烦只使用了一个类就完成了各个函数的定义以及主函数的实现,后来经过与别人的交流我发现原来我这样是忽略了Java经典的面向对象的思想,使用多个类定义方法主要是为了能让外部类也能更好地使用该对象的方法、可以直接使用接口,希望下次我使用面向对象的思想去完成作业。

 

转载于:https://www.cnblogs.com/Flying666/p/11586925.html

以下是Java实现wc函数功能的完整源码: ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class WordCount { public static int countLines(String fileName) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(fileName)); int lines = 0; while (reader.readLine() != null) { lines++; } reader.close(); return lines; } public static int countWords(String fileName) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(fileName)); int words = 0; String line = reader.readLine(); while (line != null) { String[] parts = line.split("\\s+"); words += parts.length; line = reader.readLine(); } reader.close(); return words; } public static int countCharacters(String fileName) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(fileName)); int characters = 0; int c = reader.read(); while (c != -1) { characters++; c = reader.read(); } reader.close(); return characters; } public static void main(String[] args) { String fileName = "test.txt"; try { int lines = countLines(fileName); int words = countWords(fileName); int characters = countCharacters(fileName); System.out.println("Lines: " + lines); System.out.println("Words: " + words); System.out.println("Characters: " + characters); } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } } } ``` 这个程序可以接受一个文件名作为输入,并计算文件中的行数、单词数和字符数。它通过使用BufferedReader读取文件内容,并通过调用Java的String类中的split()方法来计算单词数。最后,它将结果输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值