软件测试第二周作业

Posted stephenxlc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试第二周作业相关的知识,希望对你有一定的参考价值。

一,github地址

https://github.com/lc-xie/WordCount

二,PSP表格

PSP2.1

PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

Planning

计划

 25  25

· Estimate

· 估计这个任务需要多少时间

 25   25

Development

开发

200  240

· Analysis

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

 30  30

· Design Spec

· 生成设计文档

 -  -

· Design Review

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

 -  -

· Coding Standard

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

 -  -

· Design

· 具体设计

 40  40

· Coding

· 具体编码

 200 240

· Code Review

· 代码复审

 60  60

· Test

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

60  100

Reporting

报告

 150  180

· Test Report

· 测试报告

 60  60

· Size Measurement

· 计算工作量

 30  20

· Postmortem & Process Improvement Plan

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

 60  60
 

合计

 940  1080

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三,思路

  1. 先将基本功能实现,再考虑扩展功能
  2. 实现WordCountTool工具类,这个类用于计算各种数值,将结果写入文件
  3. 实现命令行参数解析

四,程序的实现过程

程序只实现了基本功能,包含两个类,一个Main类和一个工具类。在Main类中获取输入,并将数据传入工具类进行计算,工具类有两个函数,一个用于计算单词数、行数和字符数,一个用于输出结果到文件。

五,代码

1、main函数

  第一步获取目标文件的地址

  第二步获取操作序列

  第三步获取导出结果的文件地址,若不导出则直接回车

  第四步调用工具类进行计算

import java.io.File;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入目标文件地址:");
        String filePath=scanner.nextLine();
        System.out.print("请输入操作需求(以空格隔开,如:c l):");
        String[] charArr=scanner.nextLine().split(" ");
        System.out.print("若需要输出到本地文件,请输入目标文件地址,不需要请直接回车:");
        String outputFile=scanner.nextLine();
        File file=new File(outputFile);
        CountTool countTool=new CountTool();
        countTool.count(filePath);

        for (String c:charArr){
            switch (c){
                case "c":
                    System.out.println("字符数:"+countTool.charCount);
                    break;
                case "l":
                    System.out.println("行数:"+countTool.lineCount);
                    break;
                case "w":
                    System.out.println("单词数:"+countTool.wordCount);
                    break;
                default:break;
            }
        }

        if (file.exists()){
            countTool.ouputToFile(file,charArr);
        }
    }
}

2、CountTool类

  主要存有三个计算结果的变量和两个函数

/**
 * Created by stephen on 18-3-19.
 * 统计文件的单词数,字符数,行数
 */
public class CountTool {
    private String aimFile;
    public int lineCount=0;//行数
    public int charCount=0;//字符数
    public int wordCount=0;//单词数
    
    .....

}

 

3、count()函数

  此函数用于计算行数、单词数和字符数

  首先判断目标文件是否存在,不存在则输出“目标文件不存在!请重新输入”并返回

  然后一行行读文件,每读一行,lineCount++;同时通过s.length计算本行的字符数,再通过遍历循环找到所有的“ ”和‘,"来判断单词数量。

  最后关闭文件读写流。

/**
     * 计算各个值
     * @param filePath 代码文件的路径
     */
    public void count(String filePath){
        try {
            File file=new File(filePath);
            if (!file.exists()){
                System.out.println("目标文件不存在!请重新输入");
                return;
            }
            aimFile=file.getName();

            FileInputStream fis=new FileInputStream(file);
            InputStreamReader isr=new InputStreamReader(fis, "UTF-8");
            BufferedReader br = new BufferedReader(isr);
            String s="";
            while ((s=br.readLine())!=null) {
                charCount += s.length();//字符个数就是字符长度
                //wordCount += s.split(" ").length;//split() 方法用于把一个字符串分割成字符串数组,字符串数组的长度,就是单词个数
                for (int i=1;i<s.length();i++){
                    if ((s.charAt(i)==‘ ‘&&s.charAt(i-1)!=‘ ‘&&s.charAt(i-1)!=‘,‘)||
                            (s.charAt(i)==‘,‘&&s.charAt(i-1)!=‘ ‘&&s.charAt(i-1)!=‘,‘)){
                        wordCount++;
                    }
                    if (s.charAt(i)!=‘ ‘&&s.charAt(i)!=‘,‘&&i==s.length()-1)wordCount++;
                }
                lineCount++;//因为是按行读取,所以每次增加一即可计算出行的数目
            }
            br.close();
            isr.close();
            fis.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }

4、ouputToFile()函数

  将结果输出到指定文件

  获取结果后,遍历操作序列,将对应的数据写入

/**
     * 将数据写入文件
     * @param filePath
     * @param arr 输入的操作数组,‘o‘,‘c‘,‘w‘,‘s‘
     * @return
     */
    public boolean ouputToFile(File filePath,String[] arr){

        BufferedWriter bw=null;
        try {
            FileWriter fw = new FileWriter(filePath.getAbsoluteFile());
            bw = new BufferedWriter(fw);
        }catch (IOException e){
            e.printStackTrace();
            return false;
        }
        for (String c:arr){
            switch (c){
                case "c":
                    try {
                        bw.write(aimFile+",字符数:"+charCount+‘\\n‘);
                    }catch (IOException e){
                        e.printStackTrace();
                        return false;
                    }
                    break;
                case "l":
                    try {
                        bw.write(aimFile+",行数:"+lineCount+‘\\n‘);
                    }catch (IOException e){
                        e.printStackTrace();
                        return false;
                    }
                    break;
                case "w":
                    try {
                        bw.write(aimFile+",单词数:"+wordCount+‘\\n‘);
                    }catch (IOException e){
                        e.printStackTrace();
                        return false;
                    }
                    break;
                default:break;
            }
        }
        try {
            bw.close();
        }catch (IOException e){
            e.printStackTrace();
        }
        return true;
    }

六,测试设计过程

  明天完善

 

七,参考文献

  http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html 

以上是关于软件测试第二周作业的主要内容,如果未能解决你的问题,请参考以下文章

20165306课下作业(第二周)

软件项目管理第二周作业

软件过程与项目管理第二周作业

第二周作业

《实时控制软件设计》第二周作业

软件工程(第二周)