热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

个人项目WC(java实现)

一、Github地址:https:github.comsilakamiwc.exe二、PSP表格三、解题思路1、分析题目,并进行需求分析:这个软件可以分成三个模块,第一个模块是各种

一、Github地址:https://github.com/silakami/wc.exe


二、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 30
   Estimate 估计这个任务需要多少时间 30 30
Development 开发 880 960
   Analysis 需求分析  50 40
   Design Spec 生成设计文档 40 40
   Design Review 设计复审  40 50
   Coding Standard 代码规范 30 30
   Design 具体设计 30 40
   Coding 具体编码 600 650
   Code Review 代码复审 40 40
   Test 测试(自我测试,修改代码,提交修改) 50 70
Reporting 报告 120 140
   Test Report 测试报告 60 70
   Size Measurement 计算工作量 20 30
   Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 40 40
Total 合计 1030 1130

三、解题思路

1、分析题目,并进行需求分析:这个软件可以分成三个模块,第一个模块是各种非递归的功能,第二个模块是文件的通配符和递归查找,第三个模块是可视化界面,并且包含着各种功能,除此之外,这个程序还要求和用户进行交互,即需要从命令行读入用户输入的指令(参数和文件路径)。分析完各个模块,就可以进行分析得到各个模块和模块内不同功能的联系。

2、各种非递归功能(即文本统计功能):实现字符,单词,行数,空行,注释行,代码行的统计功能,使用字符流进行IO操作,每次读入一行,并对读入的行数进行相应的统计,直到读入的返回值为null,而且对IO错误进行捕捉,并提示用户相关信息,让用户修改输入。

3、文件的递归查找和通配符:支持通配符,获得用户输入信息,如果输入是一个文件夹,则获取该文件夹下的所有文件路径列表,进行递归查找,为了避免得到一些无法读取的文件(如.exe文件),对部分文件进行了过滤,如果输入是查询某类型的或者是某名称的文件,则先拆分输入的文件路径,得到文件所在目录和文件名,然后把文件名中的通配符替换成正则表达式,并作为匹配条件,使用正则表达式来对目录下的文件进行匹配,同样是使用递归查找的方法,最终得到一个文件名集合,同时,为了防止递归过深导致程序卡死,这里还对递归深度进行了限制,提供更好的用户交互体验。

4、可视化界面:该功能是让用户通过图形界面进行交互,让用户手动选择文件,返回所有统计信息,这里采用JFrame容器。

5、命令行交互:该功能通过Scanner来实现,然后通过正则表达式和文件判断类来对输入进行检测,查看是否有非法输入。

6、模块的整合:编写main函数,理清各个模块内和模块间的调用关系,同时要考虑如何应对各种非法输入,增强程序的健壮性。


四、设计过程

  代码主要分成主类,文本统计模块,文件处理模块,界面模块四个部分,下面是简要的关系:

技术图片


五、测试运行

1、空文件

技术图片

2、只有一个字符的文件

技术图片

3、只有一个单词的文件

技术图片

4、标准的java源文件

技术图片 技术图片

5、多目录嵌套文件

技术图片 技术图片 技术图片

6、通配符测试

技术图片  技术图片

7、可视化界面

 技术图片 技术图片

 技术图片

8、各种输入错误的处理(并非全部)

技术图片

有上图可见,该程序基本实现了项目的需求,并且具有一定的健壮性,抵御众多不正确的输入。

六、项目小结

  本次项目使用了java进行开发,第一次遵循一定的代码开发规范来做项目,比起以往自己做的课设之类的练习,所花的时间比以前更长,但是考虑到的东西确实比以往更多,各个模块的联系变得更加清晰,做好需求分析确实能让项目的目标更加明确,而不是写着写着代码才突然想到要加多几个功能进去,哪个地方有问题导致整个类甚至程序要重写。通过这次练习,我体验到了软件的需求分析,设计,开发,测试的过程,总体来说,我确实收获了很多东西,以后还需要样成这种规范化编程的习惯。

个人项目-WC(java实现)


推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
author-avatar
dwxa520恋歌_261
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有