一、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. PAT1034 有理数四则运算 (20分)

    1034 有理数四则运算 (20分)   本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全 ...

  2. 【Storm】编程模型

    元祖(tuple) 元组(Tuple),是消息传递的基本单元,是一个命名的值列表,元组中的字段可以是任何类型的对 象. Storm使用元组作为其数据模型,元组支持所有的基本类型.字符串和字节数组作为字 ...

  3. 【SpringMVC】使用三层架构实现登录,注册。(下篇)

    上篇写了构思与界面层,本篇写一下业务逻辑层.数据访问层 目录 业务逻辑层 包:pojo 用户类(JavaBean):User public class User { private String us ...

  4. 【算法基础】Trie算法

    字符串统计 维护一个字符串集合,支持两种操作: “I x”向集合中插入一个字符串x: “Q x”询问一个字符串在集合中出现了多少次. 共有N个操作,输入的字符串总长度不超过 105105,字符串仅包含 ...

  5. MySQL 高级—— Join 、索引 、优化

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.Join 查询 1.SQL执行顺序(一般情况下) 1.1 手写顺序: SELECT DISTINCT ...

  6. 面试题: Java中各个集合类的扩容机制

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) Java 中提供了很多的集合类,包括,collection的子接口list.set,以及map等.由于它 ...

  7. Java实现 LeetCode 543. 二叉树的直径(遍历树)

    543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1 / \ 2 3 / ...

  8. Java实现 蓝桥杯VIP 基础练习 高精度加法

    java算法 蓝桥杯 高精度加法 问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数 ...

  9. ZSH隐藏命令行前面的用户名和主机名

    修改vim ~/.zshrc文件,在文件底部增加 隐藏用户名和主机名 prompt_context() {} 只保留用户名,隐藏主机名 prompt_context() { if [[ "$ ...

  10. class 类前向声明

    /*   使用前向引用声明虽然可以解决一些问题,但它并不是万能的.需要注意的是,   尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象,   也不能在内联成员函数中使用该类的 ...