软工第五次作业

一、博客链接以及Github项目地址

王锦扬的博客地址
何家健的博客链接
Github项目地址

具体分工

王锦扬负责解决方法思路的提供,何家健负责具体设计的实现

PSP表格

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

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

1.爬虫使用

本次作业中论文的爬取我们是用爬虫工具“后羿采集器”来从网页上爬取论文题目以及摘要,下图是爬取论文信息的过程
1405173-20181009233535343-465127886.png

1405173-20181009233641745-1363968479.png

但是爬取下来之后,虽然可以导出为txt,但是却会是不符合要求的,实例如下:
1405173-20181009233852227-1783088565.png

所以后来就直接导出为excle:
1405173-20181009234459450-1322809850.png

经过手动排版,最后转换为符合条件的txt形式。
1405173-20181010215739381-1582762482.png

代码组织与内部实现设计

1405173-20181010215459964-2070344858.png

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

1405173-20181010215549204-1494464180.png

此用来判断哪一些单词可以构成词组
···
if (mm == true)
{
for (i = num - linewordsize; i < num; i++)
{
if (num - i >= m)
{
if (word[i].flag1 == 1)
{
string temp = word[i].content;
for (j = 1; j <= m - 1; j++)
{
if (word[i + j].flag1 == 1)
word[i].content = word[i].content + " " + word[i + j].content;
else if (word[i + j].flag1 == 0)
{
i = i + j; word[i].content = temp; break;
}
if (j == m - 1) word[i].flag1 = 2;
}
}
}
else break;
}
}
···

附加题设计与展示

关键代码解释

if (mm == true)
        {
            for (i = num - linewordsize; i < num; i++)
            {
                if (num - i >= m)
                {
                    if (word[i].flag1 == 1)//判断是否为合法单词
                    {
                        string temp = word[i].content;
                        for (j = 1; j <= m - 1; j++)
                        {
                            if (word[i + j].flag1 == 1)//如果为合法单词就拼成词组
                                word[i].content = word[i].content + " " + word[i + j].content;
                            else if (word[i + j].flag1 == 0)//如果不是合法单词就break,继续遍历
                            {
                                i = i + j; word[i].content = temp; break;
                            }
                            if (j == m - 1) word[i].flag1 = 2;//如果构成合法词组,对词组的第一个合法单词做上标记
                        }
                    }
                }
                else break;
            }
        }

性能分析与改进

描述你改进的思路

用数组储存单词难以判断需要多少空间,导致有可能在测试样例巨大的情况下,导致系统的奔溃,而且运行速度回受到极大的影响,用链表可能会好一点

展示性能分析图和程序中消耗最大的函数

消耗最大的还是main函数
1405173-20181010212359336-1290030915.png

单元测试

//判断不同情况下的不同权值
        if (linewordsize >= 1)
        {
            linenumber++;
        }
        if (d.find("title: ") != string::npos)
        {
            count = count - 7;
        }
        if (d.find("abstract: ") != string::npos)
        {
            count = count - 10;
        }
        if (d[0] >= 48 && d[0] <= 57) { count = count - d.size()-1;}
        if ((d[0] >= 48 && d[0] <= 57) && (linenumber >= 2)) {  count = count - 2; }

贴出Github的代码签入记录

1405173-20181010212608639-697457199.png

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

问题描述

最先是数组的问题,一遇到文章多的情况基本上就会奔溃,然后是如何判断词组

做过哪些尝试

想改为链表,但因为代码比较混乱所以最终只是改变了算法的结构,判断词组用了遍历的方法跟布尔参数同时使用

是否解决

均已解决

有何收获

多做思考,多做尝试

评价你的队友

值得学习的地方

很会刻苦,愿意花很多时间在作业上面,对自己的不足会很快意识到并及时解决

需要改进的地方

并没有

学习进度条

第N周新增代码(行)累计代码(行)本周学习耗时(小时 )累计学习耗时(小时)重要成长
10018.518.5熟悉Axure的使用方法、对软件的原型设计有了更深刻的理解
22862864866.5学会了爬虫工具的使用,对C++string等类的功能有了更深的认识
...

转载于:https://www.cnblogs.com/hjj455/p/9769425.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值