• 软工第五次作业


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

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

    具体分工

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

    PSP表格

    PSP2.1 Personal 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.爬虫使用

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

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

    所以后来就直接导出为excle:

    经过手动排版,最后转换为符合条件的txt形式。

    代码组织与内部实现设计

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

    此用来判断哪一些单词可以构成词组
    ···
    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函数

    单元测试

    //判断不同情况下的不同权值
    		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的代码签入记录

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

    问题描述

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

    做过哪些尝试

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

    是否解决

    均已解决

    有何收获

    多做思考,多做尝试

    评价你的队友

    值得学习的地方

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

    需要改进的地方

    并没有

    学习进度条

    第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时 ) 累计学习耗时(小时) 重要成长
    1 0 0 18.5 18.5 熟悉Axure的使用方法、对软件的原型设计有了更深刻的理解
    2 286 286 48 66.5 学会了爬虫工具的使用,对C++string等类的功能有了更深的认识
    ...
  • 相关阅读:
    输入框组
    下拉菜单
    地毯文(立足根本的基础细节篇)
    按钮组 button group
    offices web apps server2013 部署
    appium学习
    python练习
    Jmeter分布式测试
    centos安装远程桌面
    进程与线程
  • 原文地址:https://www.cnblogs.com/hjj455/p/9769425.html
Copyright © 2020-2023  润新知