zoukankan      html  css  js  c++  java
  • 2018软工实践第五次作业

    结对作业 Round2

    前言

    • stay hungry, stay foolish

    黄鸿杰的博客

    刘一好的博客

    Github项目地址

    I 分工

    • 黄sir ------------->> WordCount.exe 功能的更新和升级
    • 刘sir ------------->> 编写爬虫程序,生成文件

    II PSP表格

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

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

    • 爬虫使用

      使用 C++ 编写了一段类似爬虫的程序

      在知道这个结对项目我要负责的部分之后我就想了:这估计是我现阶段的遇到第二棘手的问题,第一棘手的问题是‘穷’。还好本次作业给的时间足够长,不然真的要崩溃了。

      在编写爬虫程序的初期,首先想到的是助教姐姐提到的 “在 C++ 中调用 Python 的脚本” 来运行,查了好长时间后,由于没找到合适的文章再加之自己并没有 Python 的基础,放弃了这一想法。
      后来给予我灵感的是 知乎下巴的这篇文章,在这篇文章中,博主运用 java 语言,使用正则表达式匹配这一方法将知乎的编辑推荐内容输出到 IDE 的界面上。但是由于我们打算使用
      C++ 来编写爬虫程序,遂弃之。苦思良久,某一日突发奇想,为何不使用我最熟悉的 C++ 来进行上篇博主的工作呢?博主是直接对网页的源码遍历后进行匹配,我亦可以使用 C++ 对网页源码进行筛选!
      抱着试一试的心态,我尝试着使用网上的教程来对网页源码进行分析,后来发现自己这方面的基础过于薄弱,无法理解更具体的遍历和匹配问题,也就无法进行信息的爬取。但这个问题几乎在两秒后就解决了,
      “我不是之前有一个 WordCount 程序吗?把网页当文本传进来不就行了?”,哇,似乎我做爬虫和队友的工作没有任何一点关系,但正是前面的工作对我这个项目的完成起到了至关重要的作用,nice兄dei!
      于是接下来的任务就轻松了很多,首先是查找使用 C++ 获取网页源码的程序,再将找到的 html 输出到文本中,再对输出的文本进行筛选、匹配和输出等工作。

    • 代码组织与内部实现设计(类图)

    • 算法的关键与关键实现部分流程图

      算法的关键是我从网上找到的一段能够显示网页源码的代码,C++实现http协议,这段代码使用了微软提供的Winnet类,Winnet类一个应用层的网络通信组件,它可以使应用程序很容易的实现http、ftp、gopher等协议而不需要去深入的了解协议本身的规范。有了这段代码后,我学习了将输出写到文件的方法,将找到的html写到一个txt文件中。至于其他工作,在前面这些看来也是微乎其微了。

    IV 附加题设计与展示

    • 设计的创意独到之处

      可以输出每个月发表的论文的数量并且输出每个月对应的论文题目

    • 实现思路

      新建一个名为 month 的类,对输出文件进行遍历,如果找到某月的论文,就将对应月份论文的数量加一,在将论文题目输出到对应月份下面。

    • 实现成果展示

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

    • 问题描述

      遇到很多次没有考虑到输入字符串长度的问题

    • 做过哪些尝试

      百度,然后通过设置断点的方法解决

    • 是否解决

      解决了

    • 有何收获

      做题要细心啊,要把所有情况考虑进去

    VI 评价你的队友

    • 值得学习的地方

      黄鸿杰同学是一个非常认真的同学,题目比我看得仔细,代码组织方面也比我谨慎

    • 需要改进的地方

      希望黄鸿杰同学之后可以及时和我探讨项目问题,不要等自己的部分都快做完了,才通知我要做什么,这样我鸭梨很大

    VII 学习进度条

    第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
    1 300 300 25 25 C++熟悉,对文件读取分析方法
    2 0 300 7 32 Axure rp 8使用 熟悉NABCD模型
    3 300 600 44 76 使用C++编写爬虫程序
  • 相关阅读:
    linux驱动开发学习一:创建一个字符设备
    如何高效的对有序数组去重
    找到缺失的第一个正整数
    .NET不可变集合已经正式发布
    中国人唯一不认可的成功——就是家庭的和睦,人生的平淡【转】
    自己动手搭建 MongoDB 环境,并建立一个 .NET HelloWorld 程序测试
    ASP.NET MVC 中如何用自定义 Handler 来处理来自 AJAX 请求的 HttpRequestValidationException 错误
    自己动手搭建 Redis 环境,并建立一个 .NET HelloWorld 程序测试
    ServiceStack 介绍
    一步一步实战扩展 ASP.NET Route,实现小写 URL、个性化 URL
  • 原文地址:https://www.cnblogs.com/howtoloveyou/p/9763869.html
Copyright © 2011-2022 走看看