1. Link:

  Partner:丁水源       点我

  GitHub:       点我

 

2.Division of labor:

    丁水源: 

              字符统计;行数统计;单词统计;(不同于个人项目的做法。)主函数接口整合。

   黄毓明:

              单词及词组词频统计;附加题;爬取;

3.PSP  Table:

    

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


   
 爬取思路:4.Key Code & its Explanation:

  运行环境Windows 10 64 bit专业版

  IDE:Anaconda3(64 bit)

            我们选择用Python来完成网页信息爬取,主要思路是先解析出CVPR2018的网址结构,然后用select()通过类名'.ptitle'筛选出title对应元素,再遍历select()返回的list,筛选出href,得到相对网址,对所得到的网址进行内容爬取,也是利用select()进行筛选,将得到的Title与Abstract按指定格式写入result.txt

   爬取代码及输出文件截图:

            

   软件工程实践第五次作业

软件工程实践第五次作业

 

 

主要代码组织及其框架:

         软件工程实践第五次作业

 

 

关键函数代码内部主要组织思想流程图:

  软件工程实践第五次作业

                                             (WordFrequency()  :带权重单词词频统计)

 

软件工程实践第五次作业

                                             (PhraseFrequency() 带权重的词组词频统计)

 

 

 

main():整体内部函数框架及其命令行随机出现的实现:

int main(int argc,char **argv) {
      
    int   flag_m = -1, flag_n = -1,flag_i=-1,flag_o=-1,flag_w=-1;
    int  m = 0, n = 0,judgevalue = 0;
    string input;
    string output;
    string buffer[20];
    // 预先处理命令行传入参数: 用flag_x  进行记录:
    for (int i = 0; i < argc; i++) {
        buffer[i] = argv[i];
        if (buffer[i] == "-i") {
            flag_i = i;
            input = argv[i + 1];
        }
        else if (buffer[i] == "-o") {
            flag_o = i;
            output = argv[i + 1];
        }
        else if (buffer[i] == "-w") {
            flag_w = i;
            if (argv[flag_w + 1] == "0")  judgevalue = 0;
            if (argv[flag_w + 1] == "1")  judgevalue = 1;
        }
        else if (buffer[i] == "-m") {
            flag_m = i;
            m = atoi(argv[flag_m + 1 ]) ;
        }
        else if (buffer[i] == "-n") {
            flag_n = i;
            n = atoi(argv[flag_n + 1]) ;
        }
    }
    // 初始化各个函数的输出;并赋值;
    int cnt_char=CountChar(argv[flag_i + 1]);
    int cnt_line=CountLine(argv[flag_i + 1]);
    int cnt_word=CountWord(argv[flag_i + 1]);
    //将部分结果先输出到result.txt文档
    ofstream fout(output, ios::app);
    fout << "characters: " << cnt_char << endl;
    fout << "words: " << cnt_word << endl;
    fout << "lines: " << cnt_line << endl;
    fout.close();
    //单词词组词频的统计分类(共分为4类) 如下所示;
    if (flag_n == -1 && flag_m == -1) {                                        //未出现 - n 参数时,不启用自定义词频统计输出功能,默认输出10个
        int jj = 10;
        int a = WordFrequency(input,output, judgevalue, jj);
    }                                                                          
    if (flag_n != -1 && flag_m == -1) {                                        //未出现 - m 参数时,不启用词组词频统计功能,默认对单词进行词频统计
        int jj = n;
        WordFrequency(input,output, judgevalue, jj);
    }                                                                            
    if (flag_n != -1 && flag_m !=-1) {
        int jj = 10;
        PhraseFrequency(input, output,m,judgevalue,10 );
    }
    if (flag_n == -1 && flag_m != -1) {
        PhraseFrequency(input, output, m, judgevalue,n);
    }
    //结束:
    return   0;
}
View Code

相关文章:

猜你喜欢
  • 2021-12-30
相关资源
相似解决方案