软件工程 结对编程

一. Fork仓库地址

GIT地址

     链接   

队友姓名  

    徐鹏

队友学号

  201831061230

队友博客链接

   链接

 

 

 

 

 

 

.  PSP表格

 

三. 计算模块接口的设计与实现过程

流程图

功能的实现

 

void WordText::GetFile(string path)
{
    WordText text;
    int num_word[200];
    int Max = 0;
    fp.open(path);
    int k, j, max = 0;
    int number = 0;
    char zm[2000];
    int num_blank[200], Num, min = 0;
    int num = 0;
    int num_row = 0;
    //int num_word = 0;
    vector<char> ch;
    ch.push_back(' ');
    char character[1000];
    int length = 0;
    int i;
    while (!fp.eof())
    {
        fp.getline(character, 100);
        length=text.Ascii_Num(character) + length;
        if (strlen(character) > 0)
            num_row++;
        for (int i = 0; i < strlen(character); i++)/      /这段循环的作用是将从文件中读出的字符串中的大写字母转化为小写字母
        {
            if (isupper(character[i]))
            {
                character[i] = tolower(character[i]);
            }
        }
        for (int i = 0; i < strlen(character); i++)         //对vexter类进行写入操作
        {
            ch.push_back(character[i]);
        }
        ch.push_back(' ');
    }
    cout << "lines:" << num_row << endl;                     //输出有效行数
    cout << "charactere: "<< length << endl;                 //输出Ascii码字符数
    for (i = 0; i < ch.size(); i++)                           //判断单词的个数
    {
        if (i != (ch.size() - 1))
        {
            if (ch.at(i) == ' '&&ch.at(i + 1) >= 97 && ch.at(i + 1) <= 122)
            {
                num = 0;
                for (j = i + 1; j <= i + 4; j++)
                {
                    if (ch.at(j) >= 97 && ch.at(j) <= 122)
                        num++;
                }
                if (num == 4)
                {
                    //num_word++;
                    for (j = i; j < ch.size(); j++)
                    {
                        if (j > i&&ch.at(j) == ' ')
                            break;
                            zm[max] = ch.at(j);
                            max++;
                    }
                }
                //i = j;
            }
        }
    }
    for (vector<char>::iterator iter = ch.begin(); iter != ch.end(); iter++)
    {
        if ((iter+1)!=ch.end()&&(*iter) == ' ' && (*(iter + 1) == ' '))
        {
            iter = ch.erase(iter);
            iter--;
        }
    }
    for (int i = 0; i < max; i++)
    {
        if (i != 0 && zm[i] == ' ')
        {
            num_blank[min] = i;
            min++;
        }
    }
    int SUM = 0;
    for (i = 0; i < max; i++)
    {
        if (zm[i] == ' ')
        {
            SUM++;
        }
    }
    cout << "words:" << SUM << endl;         //输出单词的总数
    Word_Hz(zm,max);                        //调用计算单词频数的函数
}

 这是一个总的函数,为外部提供了一个接口。其中包括了对文件的读取,对文件内容中Ascii码字符数的统计,单词数量的计算,有效行数的统计,最后通过筛选,调用了单词出现的频数的函数Word_Hz,实现了基本的功能。

四. 代码规范

 我们编写的代码涉及到了C和C++语言,所以参考的该博客介绍的编程规范

五. 代码互审

在编程的同时进行审查,及时解决了出现的问题。

六. 测试

一.性能测试

二.单元测试

七.结对总结与反思

   此次编程作业的进程并不是我们想象中那么顺利流畅,遇到许多的问题。在面对一个需求时,我们的思路并不是那么一致,存在一定的分歧。与此同时,我们两人的代码风格也有很大差别。我以前的代码命名很是随意,自己看懂就行,但在结对编程中,命名规范的重要性就体现出来了,依照代码的规范之后,两人阅读代码的速度提高了很多,效率增加。在这次结对编程实践中,我深刻地体会到了1+1的力量,在编程遇到困难后,两个人有更多的思路来思考、解决问题,而不是像一个人时那样茫然、不知所措。在经过一段时间的磨合后,我们两人明确分工,各自完成自己的部分,最后顺利完成作业。总的来说,我们的配合比较有默契,和徐鹏的结对编程经历让我学到了很多,认识到了自己很多的不足的,对以后的学习有了一个警醒。

 

posted @ 2019-10-13 23:53  会飞的DOG  阅读(250)  评论(0编辑  收藏  举报