189
社区成员




这个作业属于哪个课程 | 构建之法-2021秋-福州大学软件工程 https://bbs.csdn.net/forums/fzuSoftwareEngineering2021?category=0 |
---|---|
这个作业要求在哪里 | 2021秋软工实践第一次个人编程作业 https://bbs.csdn.net/topics/600574694 |
这个作业的目标 | <实现一个程序功能,它可以对读入的C或C++代码文件进行不同等级的关键字提取。> |
学号 | 031902201 |
psp表格
Personal software process stages | 预估耗时(分钟) | 预估耗时(分钟) |
---|---|---|
Planning 计划 | 40 | 30 |
Estimate 估计这个任务需要多少时间 | ||
Development开发 | ||
Analysis 需求分析 (包括学习新技术) | 300 | 420 |
Design Spec生成设计文档 | 40 | 90 |
Design Review 设计复审 | 20 | 20 |
Coding Standard 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
Design具体设计 | 60 | 40 |
Coding具体编码 | 300 | 420 |
Code Review代码复审 | 60 | 90 |
Test测试(自我测试,修改代码,提交修改) | 120 | 120 |
Reporting报告 | ||
Test Report 测试报告 | 20 | 30 |
Size Measurement计算工作量 | 30 | 30 |
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划 | 40 | 40 |
Total合计 | 1060 | 1360 |
解题思路
1.读取文件
首先需要对整个文件进行读取。在网上查阅了相关资料才掌握了ifstream的相关用法。然后是对文件中的内容进行读取。在这个地方我使用了getline一行一行地读取文件中的内容,将其存放在vector之中。代码如下
vector lines;
char path[1000];int level;cin>>path>>level;
ifstream ifs;
ifs.open(path,ios::in);
if(!ifs.is_open())
{
cerr<<"can not open file"<<endl;
exit(0);
}
迭代过程
1.读取每一行并统计关键词总个数,代码如下
while(getline(ifs,line))
{
lines.push_back(line);
for(i=0;i<32;i++)
{
if(line.find(keyword[i])!=line.npos&&keyword[i]!="double")num=num+1;
}
}
2.统计switch个数及其内嵌的case个数,代码如下
for(j=0;j<lines.size();j++)
if(lines[j].find("switch")!=lines[j].npos)
{
snum=snum+1;
for(k=j+1;k<lines.size();k++){
if(lines[k].find("switch")!=lines[k].npos){temp=2;break;}
if(lines[k].find("case")!=lines[k].npos){temp=1;sno[snum]=sno[snum]+1;}
if(temp==2)break;}
}
3.后续的ifelse结构由于能力有限还暂时无法完成。
运行结果
总结;
本次作业个人认为是较难的。在实验过程中也曾多次因为不会写代码,而直接放弃到第二天再来写。本次的作业中的代码,比较杂,很多地方不规范,但还是磕磕绊绊的完成了一部分,学习到了一些相关算法的使用,受益良多。
未看到提交的代码
本次的作业中的代码,比较杂,很多地方不规范,但还是磕磕绊绊的完成了一部分
什么时候可以全部写规范,并全部完成呢?