软件项目管理第一次作业

一 自我简介

  我叫高宇,来自吉林辽源,虽然本科阶段接触过一些小的项目,但是除了本科毕设还没有独立完成过一个比较系统的项目,对于编程自认为能力不强,从毕业到现在写过的代码更是寥寥无几,通过这门课的学习,也是对自己的一种提升,会尽自己最大努力跟下来,也想看看自己在这方面到底能不能坚持下来,能积累一点是一点。

二 github学习  

     我和曹春娇共同完成的,上传代码分为客户端直接上传,还有命令行上传(我使用的是命令行上传),由于没有成功建立仓库(邮件验证不成功,问题截图如下)

,所以代码还没有上传成功,

词频统计代码如下:

#include <string>
#include "Word.h"
#include <regex>
#include <iostream>
#include <fstream>
using namespace std;

bool sortByNum(Word* w1, Word* w2)
{
    if (w1 && w2) {
        return w1->getNum() > w2->getNum();
    }
    return true;
}

void sortVector(std::vector<Word*> vec)
{
    std::sort(vec.begin(), vec.end(), sortByNum);
}

void printAllObject(std::vector<Word*> vec)
{ortVector(vec);
    for (auto p : vec) {
        if (p) {
            std::cout << p->getWord() << " : " << p->getNum() << endl;
        }
    }
}

void delectAllObject(std::vector<Word*> vec)
{
    for (int i = 0; i < vec.size(); ++i) {
        auto p = vec.at(i);
        if (p) {
            delete p;
        }
    }
}

int main(int argc, const char * argv[]) {
    const char* filename = "/Users/ericwang/Desktop/WordsFrequency/WordsFrequency/word.txt";        //绝对文件路径
    char* buffer;
    long size;
    ifstream file(filename, ios::in|ios::binary|ios::ate);      //打开文件
    size = file.tellg();        //获取文件长度
    file.seekg(0, ios::beg);
    buffer = new char[size];
    file.read(buffer, size);        
    file.close();
    
    std::vector<Word*> vec;       
    
    
    const std::regex pattern("\w+");               //正则表达式匹配模式  
    std::string target = buffer;
    const std::sregex_token_iterator end;
    for (std::sregex_token_iterator i (target.begin(), target.end(), pattern); i != end; ++i) {             
        std::string s = *i;                 
        Word* p = new Word();      
        p->setWord(*i);                
        p->setNum();                       
        bool isExist = false;            
        for (auto p: vec) {                 //快速遍历vector 用来查看是否已经存在该单词 , auto 是自动获取vector里面存储的对象类型. p代表取出一个对象
            if (p && (p->getWord() == *i)) {            //如果取出的p不为空并且p的单词是当前匹配到的*i
                isExist = true;                                       //把isExist设置为true代表已经存在该单词
                p->setNum();                                       //把该单词的使用次数加1
                break;                                                    //已经找到该单词结束快速遍历
            }
        }
        if (!isExist) {                             //如果快速遍历结束, isExist的值还是false, 代表这是个新找到的单词, 需要存到vector里面
            vec.push_back(p);            //push到vector的最后一个位置
        }
    }
    
    printAllObject(vec);    //输出结果
    delectAllObject(vec);       //删除所有创建的对象
    delete buffer;          //删除缓冲字符串
    return 0;
}




#include <stdio.h>
#include "Word.h"

Word::Word():
word("")
,num(0)
{
}
Word::~Word()
{
    
}
void Word::setWord(std::string s)
{
    word = s;
}
std::string Word::getWord()
{
    return word;
}
void Word::setNum()
{
    ++num;
}
uint16_t Word::getNum()
{
    return num;
}
bool Word::operator > (const Word& pinfo) const
{
    return num > pinfo.num;
}

bool Word::operator < (const Word& pinfo) const
{
    return num < pinfo.num;
}




#ifndef WordsFrequency_Word_h
#define WordsFrequency_Word_h

#include <iostream>
using namespace std;

class Word {
public:
    Word();
    ~Word();
    void setWord(std::string s);
    std::string getWord();
    void setNum();
    uint16_t getNum();
    bool operator > (const Word& pinfo) const;
    bool operator < (const Word& pinfo) const;
private:
    std::string word;
    uint16_t num;
};

#endif

  

还需要继续完成代码上传功能。

原文地址:https://www.cnblogs.com/gaogaoupc/p/5259824.html