附录:
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 880 | 1170 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 100 | 120 |
• Design Spec | • 生成设计文档 | 20 | 10 |
• Design Review | • 设计复审 | 10 | 10 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 20 | 60 |
• Design | • 具体设计 | 60 | 100 |
• Coding | • 具体编码 | 400 | 510 |
• Code Review | • 代码复审 | 60 | 90 |
• Test | • 测试(自我测试,修改代码,提交修改) | 100 | 180 |
Reporting | 报告 | ||
• Test Repor | • 测试报告 | 30 | 30 |
• Size Measurement | • 计算工作量 | 20 | 15 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 60 | 45 |
合计 | 880 | 1170 |
import requests from urllib.request import urlopen from bs4 import BeautifulSoup txt = open(r‘C:\Users\Administrator\Desktop\result.txt‘,‘w‘,encoding=‘utf-8‘) #打开文件 i = 0 def getPaper(newsUrl): #获取相关信息的函数 res = requests.get(newsUrl) #打开链接 res.encoding = ‘utf-8‘ soup = BeautifulSoup(res.text,‘html.parser‘) #把网页内容存进容器 Title = soup.select(‘#papertitle‘)[0].text.strip() #找到标题元素爬取 print("Title:",Title,file=txt) Abstract = soup.select(‘#abstract‘)[0].text.strip() #找到摘要元素爬取 print("Abstract:",Abstract,"\n\n",file=txt) return sUrl = ‘http://openaccess.thecvf.com/CVPR2018.py‘ res1 = requests.get(sUrl) res1.encoding = ‘utf-8‘ soup1 = BeautifulSoup(res1.text,‘html.parser‘) for titles in soup1.select(‘.ptitle‘): #返回每个超链接 t = ‘http://openaccess.thecvf.com/‘+ titles.select(‘a‘)[0][‘href‘] print(i,file=txt) getPaper(t) #循环打开每个子页面并进行爬取 i=i+1
while (1) //循环判断命令行参数 { i++; if (i == argc) break; if (argv[i][0] == ‘-‘) //判断当前参数首字符是否为‘-‘ { switch (argv[i][1]) //判断当前参数第二个字符 { case ‘i‘: { i++; input = argv[i];//第二个字符为i时输入下一个参数赋值给input break; } case ‘o‘: { i++; output = argv[i];//第二个字符为o时输入下一个参数赋值给output break; } case ‘w‘: { i++; judgeW = atoi(argv[i]);//第二个字符为w时judgeW为下一个参数的整数值留作输出判断 break; } case ‘m‘: { i++; judgeM = atoi(argv[i]);//第二个字符为m时judgeM为下一个参数的整数值留作输出判断 break; } case ‘n‘: { i++; judgeN = atoi(argv[i]);//第二个字符为n时judgeN为下一个参数的整数值留作输出判断 break; } default: cout << "输入参数有误" << endl; break; } } }
if (judgeW == 0) { if (judgeM == 0) //非权重词频统计 { f1 = f1.countline(input, f1); f1.Abstract = changeDx(f1.Abstract); f1.Title = changeDx(f1.Title);//大小写转换 f1 = f1.countword(f1, f1.Title, 1); f1 = f1.countword(f1, f1.Abstract, 1); } else //非权重词组词频统计 { f1 = f1.outputByLine(input, f1, 1, judgeM); } } else { if (judgeM == 0) //权重词频统计 { f1 = f1.countline(input, f1); f1.Abstract = changeDx(f1.Abstract); f1.Title = changeDx(f1.Title);//大小写转换 f1 = f1.countword(f1, f1.Title, 10); f1 = f1.countword(f1, f1.Abstract, 1); } else //权重词组词频统计 { f1 = f1.outputByLine(input, f1, 10, judgeM); } } if (judgeN == 0)//如果没有定义n那么按默认输出 outCome1(ww, num, output, f1); else { if (judgeN > f1.getwords()) { cout << "输入的n值超过了文本的所有单词数,将为您按序输出文本的所有单词" << endl;//对于参数过大的错误判断 outCome2(ww, f1.getwords(), output, f1); } else { outCome2(ww, judgeN, output, f1);//如果定义了n那么输出前n个 } }
testfile testfile::phrasecounts(string temp, int t, int quan, testfile f1) { int word = 0; int i = 0; int j = 0; long int n = 0; int m = 0; string sumwr = "";//初始化一个存放词组的字符串 n = temp.length(); char x[10]; for (j = 0; j < n; j++) { if (temp[j] >= ‘A‘&&temp[j] <= ‘Z‘) { temp[j] += 32; } } string phrase; int flag = 0, k = 0; int mark = 0, al = 0;//mark用来记录存储的单词数,al用来记录成词组的第二个单词的首字母序号 for (i = 0; i < n; i++) { if (!((temp[i] >= 48 && temp[i] <= 57) || (temp[i] >= 97 && temp[i] <= 122))) { if (mark > 0) { sumwr = sumwr + temp[i];//如果此时已记录一个及以上的单词,将此分隔符也录入词组字符串 } continue; } else { for (j = 0; j < 4 && i < n; j++) { if (!((temp[i] >= 48 && temp[i] <= 57) || (temp[i] >= 97 && temp[i] <= 122))) { mark = 0; sumwr = "";//检测到非法单词,重新初始化mark和词组字符串 break; } else { if (j == 0 && mark == 1) { al = i; } x[j] = temp[i++];//temp中存入四个非空格字符 } } if (j == 4) { for (m = 0; m < 4; m++) { if (x[m] < 97 || x[m]>122) { flag = 1; mark = 0; sumwr = ""; break;//判断这四个字符是否都是字母,检测到非法单词,重新初始化mark和词组字符串 } } if (flag == 0)//判断为一个单词 { char *w = new char[100];//存放单词 for (m = 0; m < 4; m++) { w[k++] = x[m];//temp中字符存入w } while (((temp[i] >= 48 && temp[i] <= 57) || (temp[i] >= 97 && temp[i] <= 122)) && i < n)//继续存入单词剩余字符 { w[k++] = temp[i++]; } w[k] = ‘\0‘; sumwr = sumwr + w;//将单词存入词组字符串数组 mark++; delete[]w; k = 0; if (mark == t) { loadword(sumwr, quan);//如果此时单词存入达到所需数量,将此词组字符串存入map函数,并初始化mark和字符串 word++; mark = 0; i = al;//让i等于存入字符串的第二个单词的第一个字母序号,重新开始查询词组 sumwr = ""; } i--; } else { flag = 0; j = 0; mark = 0; sumwr = ""; } } } } i = 0; f1.words += word; return f1; }
#include "stdafx.h" #include "CppUnitTest.h" #include "C:\Users\Administrator\Desktop\软工实践\结对作业2\单元测试\WordCount2\WordCount2\WordCount2\WordCount2.h" #include <iostream> using namespace Microsoft::VisualStudio::CppUnitTestFramework; namespace WordCountTest1 { TEST_CLASS(UnitTest1) { public: TEST_METHOD(phraseCount) { testfile f1; f1=f1.outputByLine("C:\\Users\\Administrator\\Desktop\\result.txt", f1, 1, 3);//按行输出后进行词组词频统计 } TEST_METHOD(wordCount) { testfile f1; f1 = f1.countline("C:\\Users\\Administrator\\Desktop\\result.txt", f1); f1 = f1.countword(f1, f1.Abstract, 1); f1 = f1.countword(f1, f1.Title, 1); } TEST_METHOD(countCharacters) { testfile f1; string a; f1 = f1.countcha("C:\\Users\\Administrator\\Desktop\\result.txt", f1); Assert::AreEqual(f1.getcharacters(), (int)1220332); } TEST_METHOD(countLine) { testfile f1; f1 = f1.countline("C:\\Users\\Administrator\\Desktop\\result.txt", f1); Assert::AreEqual(f1.getlines(), (int)2937); } }; }
第N周 | 新增代码行 | 累计代码行 | 本周学习(时) | 重要成长 |
---|---|---|---|---|
2 | 255 | 255 | 11 | 熟悉了c++的一些函数使用以及c++输入输出流 |
3 | 105 | 350 | 13 | 初步接触了代码性能分析以及一些调试方法。学习了RP制作原型的方法。 |
4 | 0 | 350 | 6 | 本周主要是看邹欣老师的《构建之法》,第一章到第三章。以及组队讨论项目。 |
5 | 60 | 410 | 8 | 看网课学习写爬虫。 |
6 | 176 | 586 | 12 | 熟悉了命令行参数的传递。初步了解代码单元测试。 |
原文:https://www.cnblogs.com/cwabc/p/9780888.html