软件工程项目基于java的wc实现
WC软件工程项目JAVA实现博客
github地址:https://github.com/liudaohu/myrepository.git
功能实现
· -w 统计单词数
-c 统计字符数
-l 统计行数
-a 统计复杂数据
-s 递归处理
-v 可视化窗口
项目相关要求
· 【编程语言】不限
· 【项目设计】分析并理解题目要求,独立完成整个项目,并将最新项目发布在Github上。
· 【项目测试】使用单元测试对项目进行测试,并使用插件查看测试分支覆盖率等指标。
· 【源代码管理】在项目实践过程中需要使用Github管理源代码,代码有进展即签入Github。签入记录不合理的项目会被助教抽查询问项目细节。
- 【博客发布】按照要求发布博客,利用在构建之法中学习到的相关内容,结合个人项目的实践经历,撰写解决项目的心路历程与收获。博客与Github项目明显不符的作业将取消作业成绩。
遇到的困难及解决方法
- 对于项目要求的不理解,例如在命令行的实现等问题
- 向经验丰富的同学请教
- 已解决
- 大体明白需求
- 实现-w功能时,原想使用read()方法,但返回参数是int,不方便判断
- 改用readline()方法,并使用正则表达式实现
- 已解决
- 对正则表达式的使用更加熟悉
- 仍希望挑战用read()方法实现-w功能
- 强行把read()方法返回的int值转成char,再加到string里面
- 已解决
- 能用多种方法解决问题
- 递归实现时发现前面搭建的框架不合理
- 重新构思框架
- 已解决
- 刚开始搭建框架时考虑不周,下次注意
- 报错时找不到错误源
- 对不同报错区别处理
- 已解决
- 下次注意对不同报错区别处理
- 计算注释行时,无法处理同行多个块注释的特殊情况
- 尝试构思各种方法,包括设sign,包括数块注释起始和块注释结束的个数等
- 未解决,目前认为堆栈方法可行,但最后没执行
- 挫败感
- 计算代码行
- 没有
- 未解决
- 注释行都没计算,代码行就算了
- 计算空白行统计结果错误
- 用了多种方法最后定位bug原因在于字符串后是否有空格
- 已解决
- 无法理解,但懂得了妥协的办法,反正字符串后面加个空格就行了
- 想把文本框设为只读
- 百度
- 未解决
- 百度不是万能的
- 递归执行时覆盖了原结果
- 延时
- 未解决
- 尚未搞懂延时的效果,不过传参部分本来有问题,延时解决不了
- 重启电脑后,窗口类无法打开
- 各种尝试,就剩把电脑砸了
- 新建一个项目,把原来代码一个不差地剪过去,已解决
- eclipse文件关联的问题,并非我代码内问题,至今未搞懂
 
 
 
 
 
 
 
 
 
 
关键代码or设计说明
贴出你认为的关键代码或者设计图,并进行解释
 public static int countl(File file) throws IOException {//数行数
         BufferedReader br = new BufferedReader(new FileReader(file));
         int ln=0;
         while((br.readLine())!=null) {
             ln++;
         }
         br.close();
         return ln;
     }
     public static int countc(File file) throws IOException {//数字符数
         BufferedReader br = new BufferedReader(new FileReader(file));
         int cn=0;
         while((br.read())!=-1) {
             cn++;
         }
         br.close();
         return cn;
     }
     public static int countw(File file) throws IOException {//数单词数第一种方法
         BufferedReader br = new BufferedReader(new FileReader(file));
         String c;
         int wn=0;
         while((c=br.readLine())!=null) {
             String[] s = c.split("\\W");//按行正则匹配按非词字符拆分成数组
             wn+=s.length;//数组元素数即为单词数
         }
         br.close();
         return wn;
     }
     public static int countw2(File file) throws IOException {//第二种
         BufferedReader br = new BufferedReader(new FileReader(file));
         String c;
         int cc;
         int s=0;//这个sign是关键,表示上一个是否为空
         int wn=1;
         while((cc=br.read())!=-1) {//正则只能匹配字符串
             c=(char)cc+"";//所以把读到的int强行转为char
             //System.out.println(c);
             if(c.matches("\\S")&s==0) {s=1;wn++;}
             if(c.matches("\\s")&s==1) {s=0;};
         }
         br.close();
         return wn;
     }
     public static int counta(File file) throws IOException {//数空白行
         BufferedReader br = new BufferedReader(new FileReader(file));
         String c;
         int ccca = 0;
         while((c=br.readLine())!=null) {
             c+=" ";//这个原理我也不懂,反正实测不加空格的话会数错
             String[] s = c.split("\\S");  //就算两个相邻字符也分开,中间为空集
             if(s.length<=2) {ccca++;}//按需求,一行内只有单一字符算空行
         }
         br.close();
         return ccca;
     }
 public static void scan(File file) throws IOException{
         if(file!=null){
             if(file.isDirectory()){
                 File[] fileArray=file.listFiles();//列出里面的文件目录
                 if(fileArray!=null){
                     for (int i = 0; i < fileArray.length; i++) {
                         //递归调用
                         scan(fileArray[i]);
                     }
                 }
             }
             else{
                 all(file);//这个方法没贴上来,内容很简单的,就是分别调用前面的wcl方法
             }
         }
     }
 void run(File file) throws IOException {//这个是窗口界面里面的执行实现
         int ww=Method.countw2(file);
         int wc=Method.countc(file);
         int wl=Method.countl(file);
         int wa=Method.counta(file);
         wordArea.setText("代码文件路径:"+path+"\n单词数目为:"+ww+"\n字符数目为:"+wc+"\n总行数为:"+wl+
                 "\n空白行数为:"+wa);
     }




【注意】不得贴项目无关代码,一经发现,算抄袭。
例:
void selection_sort(int* array, int n) {
    for (int i = 0; i < n; ++i) {
        int min_idx = n - 1;
        for (int j = n - 2; j >= i; --j) {
            if (array[j] < array[min_idx])
                min_idx = j;
        }
        if (min_idx != i)
            swap(array, min_idx, i);
    }
}PSP
- 实现之前先在PSP中预估时间
- 实施后各个环节实际花费多少时间也请做记录
- 表中有一项: Estimate 指的“预估”这个活动,“预估时间”也是一项任务。
- 例如:我估计自己需要花30分钟来估算出整个项目需要多少时间完成,结果我花了20分钟估算出整个项目需要6个小时完成。Estimate这一项应该在“预估耗时”填写30分钟,实际耗时填写“20”分钟。
 
- 一级和二级活动的包含关系:
- Planning 这个一级活动包含了1个二级活动(Estimate)
- Development 这个一级活动包含了8个二级活动
- Reporting 这个一级活动包含了3个二级活动
 
- 大家在记录时间的时候, 只用记录二级活动, 然后把总数加了, 就是相应的一级活动的时间
- 这个时间的长短并不会对分数有直接影响,这是为了大家自己总结。
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) | 
|---|---|---|---|
| Planning | 计划 | ||
| · Estimate | · 估计这个任务需要多少时间 | 5 | 2 | 
| Development | 开发 | ||
| · Analysis | · 需求分析 (包括学习新技术) | 120 | 240 | 
| · Design Spec | · 生成设计文档 | 60 | 0 | 
| · Design Review | · 设计复审 (和同事审核设计文档) | 60 | 0 | 
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 0 | 
| · Design | · 具体设计 | 60 | 120 | 
| · Coding | · 具体编码 | 180 | 720 | 
| · Code Review | · 代码复审 | 60 | 120 | 
| · Test | · 测试(自我测试,修改代码,提交修改) | 60 | 60 | 
| Reporting | 报告 | ||
| · Test Report | · 测试报告 | 60 | 120 | 
| · Size Measurement | · 计算工作量 | 60 | 10 | 
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 60 | 
| 合计 | 865 | 1452 | 
PSP2.1 Markdown Source
| PSP2.1                                  | Personal Software Process Stages        | 预估耗时(分钟) | 实际耗时(分钟) |
|-----------------------------------------|-----------------------------------------|------------------|------------------|
| Planning                                | 计划                                    |                  |                  |
| · Estimate                              | · 估计这个任务需要多少时间              |                  |                  |
| Development                             | 开发                                    |                  |                  |
| · Analysis                              | · 需求分析 (包括学习新技术)             |                  |                  |
| · Design Spec                           | · 生成设计文档                          |                  |                  |
| · Design Review                         | · 设计复审 (和同事审核设计文档)         |                  |                  |
| · Coding Standard                       | · 代码规范 (为目前的开发制定合适的规范) |                  |                  |
| · Design                                | · 具体设计                              |                  |                  |
| · Coding                                | · 具体编码                              |                  |                  |
| · Code Review                           | · 代码复审                              |                  |                  |
| · Test                                  | · 测试(自我测试,修改代码,提交修改)  |                  |                  |
| Reporting                               | 报告                                    |                  |                  |
| · Test Report                           | · 测试报告                              |                  |                  |
| · Size Measurement                      | · 计算工作量                            |                  |                  |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划          |                  |                  |
| 合计                                    |                                         |                  |                  |记录自己的学习进度条(每周追加)
| 第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 | 
|---|---|---|---|---|---|
| 1 | 500 | 500 | 5 | 5 | 熟悉x语言1、2、3特性 | 
| 2 | 1000 | 1500 | 12 | 17 | 通过练习xxx,掌握了xxx用法 | 
| … | 
参考
- 项目博客模板:http://www.cnblogs.com/vertextao/p/7469789.html
- 别人的博文工
- http://www.cnblogs.com/pramy/p/9607743.html
- https://www.jb51.net/article/102424.htm
- https://www.cnblogs.com/LFBlog/p/6240906.html
- https://blog.csdn.net/lxasmall_white/article/details/78649747
- https://blog.csdn.net/Rookie_Or_Veteran/article/details/78151513
 
软件工程项目基于java的wc实现的更多相关文章
- 小学生四则运算出题软件-基于java控制台的实现
		.题目描述: 1. 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 -o Exercise.txt 将生成10个题目. 2. 使用 -r 参数控制题目中数值(自然数.真分数和 ... 
- 软件设计之基于Java的连连看小游戏(二)——游戏基础界面的制作及事件的添加
		上次完成到游戏首页的制作,今天完成了游戏基础界面的制作以及事件的简单添加.由于功能尚未完全实现,因此游戏界面的菜单列表只是简单地添加了一下,其余菜单列表以及倒计时等在后续的制作中逐一完善. 1.首先在 ... 
- 软件设计之基于Java的连连看小游戏(三)——所有功能的实现
		新年快乐!期末接二连三的考试实在太忙了忘记连连看没有更新完,今天想要学习生信时才发现.所以这次直接把连连看所有功能全部放上. 在传统的连连看的基础上,我增加了上传头像的功能,即可以自行上传图片作为游戏 ... 
- 基于java平台的常用资源整理
		这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ... 
- 基于Java的打包jar、war、ear包的作用与区别详解
		本篇文章,小编为大家介绍,基于Java的打包jar.war.ear包的作用与区别详解.需要的朋友参考下 以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.cla ... 
- 这里整理了基于java平台的常用资源
		这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ... 
- 基于java的设计模式入门(1)——为什么要学习设计模式
		大年初一,楼主在这里给大家拜年,祝大家码上升职加薪,码上有对象结婚,码上有车有房,幸福安康. 过完年,回学校注册报道之后,大概就要回深圳到公司开始实习了.提高自己,无非就有两种方式,一是看书学习,二是 ... 
- Atitit.提升软件稳定性---基于数据库实现的持久化  循环队列 环形队列
		Atitit.提升软件稳定性---基于数据库实现的持久化 循环队列 环形队列 1. 前言::选型(马) 1 2. 实现java.util.queue接口 1 3. 当前指针的2个实现方式 1 1.1 ... 
- 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写
		基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ... 
随机推荐
- bootstrap中给表格设置display之后表格宽度变小问题解决
			问题描述:bootstrap中给表格设置display之后表格宽度变小了 解决方案:给表格加上 display:table样式就可以了. 
- \extras\intel\Hardware_Accelerated_Execution_Manager   HAXM 未安装导致AndroidStudio新建了模拟器开启不了
			之前安装过 bios模式也是正常的.所以按照下面的步骤操作. https://software.intel.com/en-us/android 在这个界面 选择右侧的, 下载后解压到下面图上的路径: ... 
- Zookeeper—学习笔记(一)
			1.Zookeeper基本功能 (增 删 改 查:注册,监听) 两点: 1.放数据(少量). 2.监听节点. 注意: Zookeeper中的数据不同于数据库中的数据,没有表,没有记录,没有字段: Z ... 
- VCP考试系统
			题目的格式如下,题目和题目之间用“==”隔开,每个题目的“题干”,“选项”,“答案”用“*”号隔开 An administrator wants to provide users restrict ... 
- 文件Move操作
			#coding=utf-8 import os import shutil stra = "G:/should/v3/a" strb = "G:/should/v3/b& ... 
- JFinal开发框架简介
			JFinal 中的Controller Controller是JFinal核心类之一,该类作为MVC模式中的控制器.基于JFinal的Web应用的控制器需要继承该类.Controller是定义Acti ... 
- linux安装json
			安装Json库 1.下载JsonCpphttp://sourceforge.net/projects/jsoncpp/files/ 2.下载sconshttp://sourceforge.net/pr ... 
- OAuth 2.0 学习
			OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R ... 
- Java数据结构和算法(一)线性结构之单链表
			Java数据结构和算法(一)线性结构之单链表 prev current next -------------- -------------- -------------- | value | next ... 
- mathematica里面清除全部变量
			基本在一个独立代码开始都写: Clear["Global`*"] (*Clear all variables*) 就可以了 
