zoukankan      html  css  js  c++  java
  • 第五次作业

    github项目地址

    github项目地址

    具体分工

     队伍里只有我一个人。
    

    PSP表格

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

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

    • 爬虫的使用
      使用Jsoup的select语法进行元素查找。通过select("[id=papertitle]")和select("[id=abstract]")得到论文题目和论文摘要。

      得到作者和pdf的链接。并都输出到result.txt中。
      result.txt文件地址

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

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

      • 算法的关键
        先判断命令行的参数。读取到一个符合标准的词①后,设词首的位置为begin。从这个词往后找m-1个词来构成词组。如果往后找的词符合标准则继续往后找,直到找到m-1个连续的符合标准的词。并把最后一个词的最后一个字母的位置设为end。从begin复制到end。并把得到的词组存入新的map中。如果往后找到的词是不符合标准的,则跳出查找,并回到行中从词①后继续查找。

    • 附加题设计与展示

    新增了作者与pdf的地址
    result.txt文件地址

    • 关键代码解释
    	int fir = y;
    				while ((temp[y] >= 'a'&&temp[y] <= 'z') || (temp[y] >= '0'&&temp[y] <= '9')) {
    					word.append(temp, y, 1);
    					y++;
    					if (y > temp.size())break;
    				}
    				if (Judge(word)) {
    					pos = fir;
    					string tempword;
    					int flag = 0;
    					int flag1 = 0;
    					int flag2 = 0;
    					int cc = 0;
    					m = 1;
    					maa[word]++;
    					if (w == 0)	ma[word] ++;
    					else if (w == 1)
    					{
    						if (x == 7) {
    							for (int u = 0; u < 10; u++) {
    								ma[word] ++;
    							}
    						}
    						else if (x == 10)
    						{
    							ma[word] ++;
    						}
    					}
    					while (m != mm)
    					{
    						if (m != mm && y >= temp.size()) break;
    						for (int k = y; k < temp.size(); ) {
    							if (temp[k] < 48 || ((57 < temp[k]) && (temp[k] < 97)) || temp[k]>122)
    							{
    
    								k++; if (k >= temp.size()) { flag1 = 1; break; }
    								continue;
    							}
    							else {//发现一个单词
    while ((temp[k] >= 'a'&&temp[k] <= 'z') || (temp[k] >= '0'&&temp[k] <= '9')) {
    									tempword.append(temp, k, 1);
    									k++;
    									if (k > temp.size())break;
    								}
    								if (Judge(tempword)) {
    									m++;
    									if (m != mm && k >= temp.size()) {
    										flag = 1;
    										break;
    									}
    									if (m == mm) {
    										words.append(temp, pos, k - pos);
    										//pos = y + 1;
    										if (w == 0) mas[words]++;
    										if (w == 1) {
    											if (x == 7)
    												for (int u = 0; u < 10; u++)
    													mas[words]++;
    											if (x == 10)
    												mas[words]++;
    										}
    										break;
    									}
    								}
    								else
    								{
    									pos = k + 1;
    									tempword.clear();
    									flag2 = 1;
    									break;
    								}
    								tempword.clear();
    							}
    						}
    						if (flag == 1) break;
    						if (flag1 == 1) break;
    						if (flag2 == 1) break;
    					}
    					words.clear();
    				}
    

    先判断命令行的参数。读取到一个符合标准的词①后,设词首的位置为begin。从这个词往后找m-1个词来构成词组。如果往后找的词符合标准则继续往后找,直到找到m-1个连续的符合标准的词。并把最后一个词的最后一个字母的位置设为end。从begin复制到end。并把得到的词组存入新的map中。如果往后找到的词是不符合标准的,则跳出查找,并回到行中从词①后继续查找。

    输入

    WordCount.exe -i input.txt -m 3 -n 3 -w 1 -o output.txt
    

    运行结果

    characters:1184323
    words:120299
    lines:1958
    <convolutional neural networks>: 196
    <generative adversarial networks>: 178
    <convolutional neural network>: 159
    
    

    性能分析

    输入的命令行为:

    WordCount.exe -i input.txt -m 3 -n 3 -w 1 -o output.txt
    /*
     *统计input.txt文件中的字符数、单词数、有效行数、出现次数排在前3的3个单词长的词组,并采用权重累计频数,最终统计结果输出到output.txt
     */ 
    


    共花费8.054秒,countword函数中其中四个将词存入map中的花费最多时间。

    • Github的代码签入记录

    • 遇到的代码模块异常或结对困难及解决方法
      问题:命令行输入时发生错误。解决:先输入字符串试一下。结果:解决了。
      问题:获取词组时程序会发生死循环。解决:设置断点,找到死循环的地方。

    • 评价你的队友
      队伍里只有我一个人。
      需要提高的地方:代码的规范性。

    • 学习进度条

      第N周 |新增代码(行)| 累计代码(行)| 本周学习耗时(小时) |累计学习耗时(小时)| 重要成长
      ---|---|---|---|---|---
      1|100|100|3|3|学习了map和vector的操作
      4|50|150|3|6|学习了简单的爬虫
      5|100|250|3|9|

  • 相关阅读:
    selenium自动化测试CSS定位
    思想重铸(转自知乎)
    闭环思维
    20170503xlVBA房地产数据分类连接
    20170517xlVBA添加数据透视表
    20170617xlVBA销售数据分类汇总
    20170621xlVBA跨表转换数据
    20170612xlVBA含方框文档填表
    20170612xlVBA多文件多类别分类求和匹配
    20170617xlVBA调查问卷基础数据分类计数
  • 原文地址:https://www.cnblogs.com/031602401chl/p/9758090.html
Copyright © 2011-2022 走看看