一、Github项目地址:

https://github.com/Heiofungfming/xiaoming01

二、PSP表格

PSP2.1

任务内容

计划完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

  45 

40

Estimate

估计这个任务需要多少时间,并规划大致工作步骤

45

40

Development

开发

880

800

Analysis

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

60

90

Design Spec

生成设计文档

30

-

Design Review

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

10

-

Coding Standard

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

40

40

Design

具体设计

60

80

Coding

具体编码

400

510

Code Review

代码复审

30

30

est

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

250

200

Reporting

报告

450

180

Test Report

测试报告

300

370

Size Measurement

计算工作量

30

-

Postmortem & Process

Improvement Plan

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

60

80

Summary

合计

2690

  2460

 

三、解题思路描述

 

刚拿到题目的时候,题目要求是要求是写一个命令行程序,初步的想法是在cmd命令行里调用所写的程序,然后便回想了一下,好像之前刚开始学Java的时候,就是用cmd命令行进行调用程序的,便用eclipse写了程序运行开头部分的功能部分进行打印,发现并不能用cmd调用程序,后来百度了一下,才发现需要把代码刚开始的包去掉才可以调用。

解决这个问题之后便开始逐一实现各个功能,先是基本功能,这三个功能在大二学Java的时候写文本编译器的时候实现过(运用字符的输入输出流实现的),所以就翻之前的代码找到了,再略微更改一下直接拿来用了。功能有了,但运行这个功能还缺一个可手动输入的文件路径(原本的文件路径是敲代码直接固定好的),刚好这段时间在重新Java,刚好温习到IO流,就用文件流和字节数组进行文件路径的输入了。

基本功能解决后就是,扩展功能,先是递归目录下的子文件,然后输出符合指定文件的信息这一功能。这一功能有几个点要解决的:

  1. 递归读取目录下的子文件
  2. 找到符合条件的子文件
  3. 读取文件里面的信息

列出问题后就找解决方法:

  1. 在之前温习IO流的时候写过一个方法递归调用一个目录下的所有子文件,并输出文件的名字,所以递归这部分相当于解决了
  2. 找符合条件的文件无非是判断文件类型,先想到的是判断文件名,判断文件名也就是文件的后缀名,所以用endwish()判断递归读出的子文件后缀名是否符合条件就可以了。中间遇到一个问题是如何在输入路径+\\*c或\?c这个给拿去判断,原本的想法是分别把路径和后缀符分开输入,但舍友说这样不符合题目要求,在和舍友讨论过后,用正则表达式分隔成两个字符串分别拿去输入就可以了。
  3. 加入基本功能中的方法就OK了。

再是返回文件注释行,空行,代码行数目的功能,类似基本功能,对不同类型的行存在什么元素,读取后就使对应的变量加一,元素的判断我也百度了一下,需要用到正则表达式,然后过了一遍,再嵌套使用if语句

最后到高级功能,阅读要求后,要解决的问题:

  1. 图形界面
  2. 可对文件进行选择,并得到该文件的路径
  3. 对文件获取信息

解决方法:

  1. 图形界面用windowBuilder直接生成
  2. 用一个JFileChooser按钮对文件进行选择,然后用文件流得到文件路径
  3. 整合基本功能和扩展功能,调用2获得的文件路径

四、设计实现过程

  1. 流程图:

 

2.类的目录结构

3.测试文件

4.功能测试

4.1 -c功能测试

4.2 -w功能

4.3  -l功能

4.4 -s功能

4.5 -a功能

4.6 -x功能

五.总结

通过这次个人项目的练习,发现自生还存在着各种不足

  1. 对语言的应用程度不熟悉,时不时的翻看之前的代码,查看自己是否语句有错,或是逻辑出错
  2. 项目刚开始观看的时候没有构建好各种思路,使之后的程序开发出现各种停滞
  3. 代码的规范(总得来说代码的重复率挺多的,原本想构建方法减少代码的重复率,但怕出错耽误时间而选择不采取措施)
  4. 针对以上几点,今后还是要抓紧时间把Java这门语言学精,学深,代码的规范性也要加强。

个人项目-Wc-Java的更多相关文章

  1. 个人项目-WC (java实现)

    一.Github地址:https://github.com/734635746/WC 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) ...

  2. 个人项目 wc(java实现)

    一.Github网址: https://github.com/Clarazhangbw/Wc.exe 二.PSP表 PSP2.1 Personal Software Process Stages 预估 ...

  3. 个人项目:Java实现WC

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

  4. 个人项目wc(Java)

                                                      个人项目(Java) 一丶Github地址:https://github.com/SAH2019/S ...

  5. 个人项目-wc

    个人项目-WC   (C语言) 一.Github地址:https://github.com/Lin-J-F/WC 二.PSP表格 PSP2.1 Personal Software Process St ...

  6. [转载]将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,解决办法

    eclipse 代码中文注释乱码 求解决 将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclips ...

  7. Java web项目引用java项目,类型找不到

    Java web项目引用java项目,类型找不到 错误信息: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapp ...

  8. ubuntu下eclipse新建项目没有java project的解决办法

    装好了eclipse之后却发现新建项目没有java project的选项,大致搜索了一下,并没有发现很好的解决方案(大都是让你重新安装什么的),于是开始瞎鼓捣,并且找到了一个方案: 在终端切换到roo ...

  9. Maven项目中java类报错-Cannot resolve symbol

    电脑蓝屏了,强制重启之后再打开IDEA里面的项目,所有Java类文件都在报Cannot resolve symbo错误,可以确定所有依赖的包都有引用且jar包没有冲突. 经查询找到这个解决方法: 在I ...

  10. 【MyEcplise】导入项目报错:Errors running builder 'JavaScript Validator' on project '项目名'. java.lang.ClassCastException

    导入项目报错:Errors running builder 'JavaScript Validator' on project '项目名'. java.lang.ClassCastException ...

随机推荐

  1. 02 . Prometheus告警处理

    Prometheus告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分.如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告 ...

  2. Rocket - jtag - JtagStateMachine

    https://mp.weixin.qq.com/s/cFXVOBHayV2w27jpT5RglA 简单介绍JtagStateMachine的实现. 1. 简单介绍 根据IEEE 1149.1-200 ...

  3. Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)

    ** 算法训练 字符串的展开 ** 题目: 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于"d-h" ...

  4. Java实现 蓝桥杯 算法训练 相邻数对(暴力)

    试题 算法训练 相邻数对 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 输入的第一行包含一个整数n,表示给定整数的个数. 第二行包含所给定的n个整数. 输出格式 ...

  5. Java实现 LeetCode 106 从中序与后序遍历序列构造二叉树

    106. 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序 ...

  6. Java实现LeetCode 139 单词拆分

    public boolean wordBreak(String s, List<String> wordDict) { if(s.length() == 0){ return false; ...

  7. java实现第五届蓝桥杯生物芯片

    生物芯片 X博士正在研究一种生物芯片,其逻辑密集度.容量都远远高于普通的半导体芯片. 博士在芯片中设计了 n 个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮. 这些光源的 ...

  8. java实现第六届蓝桥杯垒骰子

    垒骰子 题目描述 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰 ...

  9. Hive的基本介绍以及常用函数

    一.Hive的简介: Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能. 优点: ) 操作接口采用类SQL语法,提供快速开发的能力(简单.容易上 ...

  10. repo 导出本地 git tag 给他人

    背景 使用 repo 管理了多个 git 仓库,有时需要将本地仓库的tag同步给其他人,但又不能直接推到远程(例如权限问题). 实际场景举例 本地复现了一个问题,需要让其他人回退到相同环境来排查. 本 ...