要求0
链接 :https://edu.cnblogs.com/campus/nenu/2016CS/homework/2110
要求1
Git链接: https://git.coding.net/Aaronlynxxx/wf.git
要求2
1.PSP表格阶段
PSP2.1 | 内容 | 计划完成时间(min) | 实际完成时间(min) |
Planning | 计划 | 50 | 60 |
Estimate | 明确需求和其他相关因素,指明时间成本以及依赖关系 | 50 | 60 |
Development | 开发 | 900 | 1000 |
Analysis | 分析需求 | 150 | 200 |
Design Spec | 生成设计文档 | 30 | 40 |
Design Review | 设计复审 | 20 | 10 |
Coding Standard | 代码规范 | 30 | 50 |
Design | 具体设计 | 200 | 250 |
Coding | 集体编码 | 200 | 250 |
Code Review | 代码复审 | 60 | 50 |
Test | 自测,修改,提交 | 210 | 150 |
Reporting | 报告 | 120 | 150 |
Test Report | 测试报告 | 20 | 30 |
Size Measurement | 计算工作量 | 20 | 40 |
Postmortem And Process Improvement Plan | 事后总结并提出过程改进计划 | 80 | 80 |
具体功能板块实现
功能板块 | 具体阶段 | 预计时间 | 实际时间 |
功能一 | 具体设计 | 50 | 80 |
具体编码 | 90 | 90 | |
测试完善 | 70 | 70 | |
功能二 | 具体设计 | 70 | 70 |
具体编码 | 110 | 80 | |
测试完善 | 60 | 70 | |
功能三 | 具体设计 | 80 | 100 |
具体编码 | 90 | 80 | |
测试完善 | 80 | 60 |
2.预估耗时与实际耗时的差距原因
1)对于时间的利用没有一个准确的规划和目标。进入大三学年本来应该是集中精力向自己向往的方向努力的一年,也许是自己不必要的琐事比较多,造成没有集中连片的时间进行自己的学习生活。以后我会对自己每天的时间进行规划和总结,争取最好的学习和工作状态这不仅仅只是对于现在的日常学习,也为自己未来的工作养成良好的习惯,提高自己的工作和学习效率。
2)对于所谓“隐藏条件”不够敏感。第一次完成时没有发现所谓的“隐藏条件”,对于这个问题,会在后面有所赘述。
3)对于代码不够熟练。对于某些代码不能一次性搞懂并写好写完整,需要查博客,查书和资料。对于这一点,我会积极学习,查缺补漏,争取能够学到更多。
要求3
1. 解题思路描述
1)对于题目进行分析和计划,确定将要使用的语言及个个部分功能及代码的难易程度,并根据其难易程度进行分配其编写的先后顺序。
2)根据自己自身的情况,更改学习方式,积极向同学询问相关的优秀资料,灵活编写。
2.相关代码介绍
难题:如何读入文件
对于此项功能我个人能力有限,不会就学,相关的学习代码如下:
int main() { char *path = "E:\exemple"; //指定文件目录 vector<string> filesName; ofstream file_out("filename.txt"); //打开文本文件 GetFileName(path, filesName); //获取文件名 for(size_t i = 0 ; i<filesName.size(); i ++) //将文件名写入到文本中 { file_out<<filesName[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()关闭文件夹 } } --------------------- 本文来自 小路孩 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/lsq2902101015/article/details/46551311?utm_source=copy
上述代码中GetFileName()函数的功能是获取指定文件夹中所有文件的名字,不管文件是什么类型。
如果想要获取某种文件类型的所有文件名,比如.txt,可将GetFileName()函数做如下修改:
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) if((hFile = _findfirst(p.assign(path).append("\*.txt").c_str(), &fileinfo)) != -1) //添加文件格式后缀 { do { if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0) filesName.push_back(fileinfo.name); }while(_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } }
本文来自 小路孩 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/lsq2902101015/article/details/46551311?utm_source=copy
如要获取指定文件夹中所有文件名,包括子文件中的所有文件名,修改GetFileName()函数如下:
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) { do { if((fileinfo.attrib&_A_SUBDIR)) //判断文件属性是否是子目录 { if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0) GetFileName(p.assign(path).append("\").append(fileinfo.name), filesName); } else filesName.push_back(fileinfo.name); }while(_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } }
本文来自 小路孩 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/lsq2902101015/article/details/46551311?utm_source=copy
3.总结
我不认为在题目中设置所谓的隐藏条件是一种明智的练习方式,正如邹欣老师所说,老师出题就好像甲方对于一个产品的使用说明书,一定要全面准确地了解描述需求。如果甲方自己都不能够把自己的要求完整清晰地表达出来,又何谈项目的完整准确以及工作的高效呢? 对于这一点,张利彪老师也有所提及,当甲方对于工程项目一窍不通时,我们应该试着学用平常朴实地语言进行讲解,并且应该学会用语言引导他们将自己的需求说出来,所谓“见人说人话,见鬼说鬼话”,对于合适的场合和对象发表合适的言论,这不光对于项目,对于我们日常的人际交往也能起到作用。但是也是因人而异,求同存异。
其次,这次也让我认识到了学习要讲求方式方法以及时间安排的合理性,养成良好的学习工作习惯对于自己未来的工作也有大益处。
对于博客的编写方面,我觉得自己还没有完全适应这种学习方式,尽管这是一种十分主流的方法。我会努力尽量适应的。