要求0:作业博客链接:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2110
要求1:git仓库地址:https://git.coding.net/ArielX/wf.git
要求2:PSP阶段表格:
功能模块 |
具体阶段 |
预计时间(min) |
实际时间(min) |
功能1 |
具体设计 具体编码 测试完善 |
30 120 20 |
40 300 30 |
功能2 |
具体设计 具体编码 测试完善 |
40 150 20 |
50 350 40 |
PSP2.1 |
任务内容 |
预估耗时(min) |
实际耗时(min) |
Planning |
计划 |
40 |
60 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
40 |
60 |
Development |
开发 |
800 |
1200 |
Analysis |
需求分析 |
60 |
65 |
Design Spec |
生成设计文档 |
45 |
50 |
Design Review |
设计复审 |
0 |
0 |
Coding Standard |
代码规范 |
30 |
50 |
Design |
具体设计 |
90 |
120 |
Coding |
具体编码 |
300 |
500 |
Code Review |
代码复审 |
10 |
0 |
Test |
测试 |
30 |
50 |
Reporting |
报告 |
210 |
240 |
Test Report |
测试报告 |
120 |
140 |
Size Measurement |
计算工作量 |
45 |
45 |
Postmortem & Process Improvement Plan |
事后总结, 提出过程改进计划 |
45 |
55 |
预估耗时和实际耗时的差距的原因:
1.自己有想法但是实际操作能力不足;
2.在查阅资料的过程中有格外去了解该知识点的其他用处,在这里也有耗时。
要求3:
拿到题目之后,第一反应是用C或C++写。涉及到排序,应该会使用到关于数据结构的知识。这是看到题目最直观的反应,不知道想法对不对,尝试一点点写下去。
介绍代码片段:
写功能一收获最大的就是map容器了,在输出的时候刚开始格式是乱的,后来查到了在C++的输出当中用到了left左对齐和setw
map<string,int>::iterator it; printf(" "); printf(">wf -c input.txt "); cout<<"total"<<" "<<n-1<<endl<<endl<<endl; for(it=my_map.begin(),i=1;it!=my_map.end();it++,i++) { if(it->first=="") continue; cout<<left<<setw(10)<<it->first<<it->second<<endl;//输出格式为左对齐 } cout<<' '; return 0;
这段代码是在博客中找到的,因为不会C/C++读取文件名,之前只会简单的fopen这种,也算学到了新知识。
using namespace std; void GetFileName(string path, vector<string>& files); int main() { char *path = "E:\exemple"; //指定文件目录 vector<string> filesName; ofstream file_out("input.txt"); //打开文本文件 GetFileName(path, filesName); //获取文件名 for(size_t i = 0 ; i<input.size(); i ++) //将文件名写入到文本中 { file_out<<input[i].c_str()<<endl; } file_out.close(); //关闭文本文件 return 0; } void GetFileName(string path, vector<string>& filesName) { long hFile = 0; //文件句柄 struct _finddata_t fileinfo; //定义文件信息结构体 string p; if((hFile = _findfirst(p.assign(path).append("\*").c_str(),&fileinfo)) != -1) //使用函数_findfirst()打开文件并获取第一个文件名 { do { if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0) //"."表示当前目录,".."表示父目录 filesName.push_back(fileinfo.name); }while(_findnext(hFile, &fileinfo) == 0); //使用函数_findnext()继续获取其他文件名 _findclose(hFile); //使用函数_findclose()关闭文件夹 } }
解决项目的心路历程与收获:
心路历程就是之前只对C了解,C++印象中只有一节课,自己格外也没有学过这个。自己格外学的对完成这个作业好像一点没用…所以这个作业我做起来真的是不容易,花费了很多时间并且知识也是一知半解,同时也打乱了我从本学期开始以来一直坚持的学习计划。但还是有收获的:收获就是通过菜鸟教程的C++教程中,找到了STL(标准模板库)并了解了容器组件的map,加了#include<map>的头文件,尝试用map写。期间有查阅资料和借鉴博客。用map的好处就是在需要扩展大小的时候,会自动处理它自己的存储需求。在书写过程中也通过菜鸟教程用到了C++向量容器的一个模板,链接:http://www.runoob.com/cplusplus/cpp-stl-tutorial.html IT行业有很多方向,不知道这个软件工程属于啥方向?反正我绝对不会选这个方向就是了。