结对第2次作业

作业博客链接

队友博客链接

分工:

队友:爬虫、博客


ME:C++、查找相关资料

PSP表格

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

解题思路描述与设计实现说明

新增功能:

1.爬取网页论文信息

使用Python爬取网页的信息,用正则式匹配论文标题和摘要的代码,爬取相关信息至result.txt

2.自定义输入输出文件

int main(int argc, const char* argv[])
for (int i = 1; i < argc; i++)

输入文件前面有-i,输出文件前面有-o所以只要在循环分别判断-i,-o即可实现自定义输入输出文件。

3.加权重的词频统计

将Title和Abstract分别放入两个map(存放单词和出现次数)中,在统计时对提取的单词就可按不同的权重计算放入一个新的map(存放单词和权重值)当中。

4.词组词频统计

查找符合的词组,采用双重循环方式,在外围循环中找到符合的单词,在内从循环查找出符合的词组。题目要求不能跨越title和abstract,所以就分开识别统计。

5.自定义词频统计输出

 int main(int argc, const char* argv[])
  for (int i = 1; i < argc; i++)

在循环中判断是否出现-n,用一个循环将已经排好顺序的单词输出即可

6.多参数的混合使用

  int main(int argc, const char* argv[])
 for (int i = 1; i < argc; i++)
在循环中判断出现相应的参数是做相应的操作,未出现则采用默认输出方式
 

旧功能:

1.字符数统计

2.单词数统计

3.有效行数统计

4.单词出现频率统计

  • 爬虫使用
    使用Python爬虫爬取网页信息

部分爬取结果

 0
Title: Embodied Question Answering
Abstract: We present a new AI task -- Embodied ...
1
Title: Learning by Asking Questions
Abstract: We introduce an interactive learning framework ...
2
Title: Finding Tiny Faces in the Wild With Generative Adversarial Network
Abstract: Face detection techniques have been developed for ...
3
Title: Learning Face Age Progression: A Pyramid Architecture of GANs
Abstract: The two underlying requirements of face age progress...
  • 代码组织与内部实现设计(类图)
  • 说明算法的关键与关键实现部分流程图

关键代码解释

 int main(int argc, const char* argv[])
{

    for (int i = 1; i < argc; i++)
    {
        ifstream file;
        if (argv[i] == "-i")
        {
            file.open(argv[i], ios::in);
            if (!file) {
                cout << "无法打开文件\n";
                return -1;
            }
            file.close();
            string mInputFileName = argv[i];
            int sum = CountChar(mInputFileName);
            int wordnum = CountWordnumber();
            int lines = CountLines(mInputFileName);
            TenFrequency();
        }
        if (argv[i] == "-o")
        {
           ofstream out(argv[i+1]);
           out << "characters: " << sum << endl;
           out << "words: " << wordnum << endl;
          out << "lines: " << lines << endl;
          int size = 10;
           if (word.size() < 10) 
             {
                size = word.size();
             }
           vector<pair<string, int>>::iterator vit;
           for (vit = word.begin(); vit != word.begin() + size; vit++) 
            {
              out << "<"<<vit->first <<">:"<< " " <<  
              }
            out.close();
        }
    
    
    
    
    
}

自定义输入输出文件,设置参数实现自定义输入输出文件。

性能分析与改进

  • 描述你改进的思路
  • 展示性能分析图和程序中消耗最大的函数

单元测试

  • 部分单元测试代码
  • 测试的函数
  • 构造测试数据的思路

Github的代码签入记录

遇到的代码模块异常或结对困难及解决方法

问题描述 做过哪些尝试 是否解决 有何收获
经常会理不清解题思路,思路会比较混乱 和队友相互沟通,寻求队友和同学的建议 适当解决了 解决问题前还是要先分析好问题理清思路
与队友时间对不上 明确分工,分开同时进行 解决 不管与时间能否对上,都应该要明确分工,需要商讨的部分在有限的重叠时间时讨论。
还是基础的问题... 查阅相关的博客以及文章 不能说解决了吧... 依然是好吃力啊T T

评价你的队友

  • 值得学习的地方
    乐于学习新知识,相对我来说会比较主动,学习能力比较强,做事效率高
  • 需要改进的地方
    和我一样会有点拖延症.相对于其他人来说,和我一样基础不是很好.

学习进度条

第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
1 315 315 26 学用vs编写程序,性能分析,单元测试;学用Git,尝试些博客
2 0 315 18 学习《构建之法》,理解NABCD模型,尝试用Axure RP 8做原型开发
3 396 711 学习Python基本用法,进而学习用Python编写爬虫代码。

猜你喜欢

转载自www.cnblogs.com/yummyu/p/9781134.html