软工作业——结对编程

项目网址
结对伙伴地址

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 120
· Estimate · 估计这个任务需要多少时间 2400 2625
Development 开发 300 200
· Analysis · 需求分析 (包括学习新技术) 100 100
· Design Spec · 生成设计文档 30 30
· Design Review · 设计复审 (和同事审核设计文档) 80 80
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 40 30
· Design · 具体设计 200 100
· Coding · 具体编码 800 900
· Code Review · 代码复审 100 200
· Test · 测试(自我测试,修改代码,提交修改) 100 50
Reporting 报告 60 50
· Test Report · 测试报告 60 40
· Size Measurement · 计算工作量 30 45
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 40 50
合计 1900 1995

具体流程(我负责NumEssay和main函数)

软工作业——结对编程_第1张图片

实现过程

统计行数

int NumEssay::linenum() // 输出行数
{
    in.open(file_name, std::ios::in);
    int count = 0;
    if (in.is_open()) //检查文件是否打开
    {
        while (!in.eof())
        {
            if (in.good()) ///如果文件流对,就继续运行
            {
                getline(in, buffer);
                if (buffer != "")
                    ++count;
            }
            else
            {
                std::cout << "Error:读取的文件可能过大内存无法存储" << std::endl;
            }
        }
    }
    else
    {
        std::cout << "Open " << file_name << "failing!!!" << std::endl;
    }
    in.close();
    return count;
}

统计字符数

int NumEssay::charnum()
{
    in.open(file_name, std::ios::in);
    int count = 0;
    if (in.is_open())//检查文件是否打开
    {
        while (!in.eof())
        {
            if (in.good())//如果文件流对,就继续运行
            {
                getline(in, buffer);
                if (buffer != "")
                {
                    count += buffer.size();
                    if (!in.eof())
                        count += 1; //加上换行符
                }
                else if (!in.eof())//buffer为空,但是为换行符, 
                {
                    count += 1;
                }
            }
            else
            {
                std::cout << "Error:读取的文件有错误" << std::endl;
            }
        }
    }
    else
    {
        std::cout << "Open " << file_name << "failing!!!" << std::endl;
    }
    in.close();
    return count;
}

mian函数

main函数

#include"pch.h"
#include"NumEssay.h"
#include"myText.h"
#include
    
     
#include
     
      
#include
      
       
#include
       
        
#include
        
          using namespace std; int flag[4] = { 0 }, sum=0; vector
         
           pd(4); int CheckArgs() { if(sum <=0 || sum > 4) { cout << "请输入正确的参数格式" << endl; exit(-1); } if(!flag[0] || pd[0] != "input.txt") { cout << "请输入正确文件名" << endl; exit(-1); } if(!flag[3]) { cout << "请输入正确输出文件" << endl; exit(-1); } } int main(int argv, char *args[]) { char str[][3] = { "-i", "-m", "-n", "-o" }; //参数操作 for (int i = 0; i < 4; i++) { for (int j = 1; j < argv; j++) { if (!strcmp(str[i], args[j])) { flag[i] += 1; sum++; try { j++; if (j >= argv) throw -1; pd[i] = args[j]; //后面下标越界或者是一个错误值 } catch (int e) { cout << "输入的参数有误或者有为空的" << endl; exit(e); } break; } } } //检查参数是否正确 CheckArgs(); NumEssay Essay;//功能类名 myText T; int NChar=0, NLin=0;//存储字符数 行数 cout << "======================" << endl; if (flag[0]) //-i 0 写的多一些 输入文件名, 打印基本信息 { Essay.read(pd[0]); NChar = Essay.charnum(); NLin = Essay.linenum(); Essay.print(NLin, NChar); T.getfile(pd[0]); T.frequency(); } if (flag[1]) //-m 1 { T.nWords(stoi(pd[1])); } if (flag[2]) //-n 2 { T.frequency(stoi(pd[2])); } if (flag[3]) //-o 3 打印进文件中 { Essay.print(pd[3], NLin, NChar); T.writeToFile(pd[3]); } return 0; } 
         
        
       
      
     
    

感悟

这次结对伙伴虽然是第一次组队,但我们对对方能力都是肯定的,在结对过程中难免会遇到参数不符合要求的时候,但我们都能很快解决问题

除此之外,在编码的过程我再一次理解了 c++ 的文件操作,也从队友的代码中看到了不曾了解的操作,增加了知识,以后有空再把他们整理出来发表,主要是关于c++文件操作的换行符问题,也有一遍复习了相关工具与流程

你可能感兴趣的:(软工作业——结对编程)