1、Github项目地址:
2、估计开发时间:
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
60 |
|
· Estimate |
· 估计这个任务需要多少时间 |
60 |
|
Development |
开发 |
60 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
60 |
|
· Design Spec |
· 生成设计文档 |
60 |
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
60 |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
60 |
|
· Design |
· 具体设计 |
60 |
|
· Coding |
· 具体编码 |
60 |
|
· Code Review |
· 代码复审 |
60 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 |
|
Reporting |
报告 |
60 |
|
· Test Report |
· 测试报告 |
60 |
|
· Size Measurement |
· 计算工作量 |
60 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
60 |
|
合计 |
900 |
3、解题思路
由于本人的基础较为薄弱,所以选择用c来写。一开始就明确了要用多个子函数的方式来实现各个功能。
遇到最大的问题是有很多c语言的函数我之间没有学过,如如何调用文件夹中的文件,后来在百度的方式之下学到了很多新函数的用法
4.设计实现流程
先写出主函数,再依据各个功能写出对应子函数
5.代码说明
主函数
int main() {char a[2]; //a是用户输出操作量 FILE *load; //load指向要测试的文件 int num; //num用于记录客户所要的数据 load=fopen("D:\hello.c","r"); if(load==NULL) {printf("该文件不存在,请检查您的文件存储位置"); exit(-1); } printf("此程序的功能为 1、返回文件字符数,按-c执行 2、返回文件词的数目,按-w执行 3、返回文件行数,按-l执行 "); scanf("%s",a); if(a[0]!='-') {printf("输入错误 "); exit(-1); } if(a[1]=='c') { num=charnum(load); printf("文件字符数为%d",num); return 0; } if(a[1]=='w') { num=wordnum(load); printf("文件词数为%d",num); return 0; } if(a[1]=='l') { num=linenum(load); printf("文件行数为%d",num); return 0; } else printf("输入错误 "); exit(-1); }
三个基础功能函数
int charnum(FILE *fp) //统计字符数 { int n1=0; char ch; fgetc(fp); while(!feof(fp)) { ch=fgetc(fp); n1++; } fclose(fp); return n1; } int wordnum(FILE *fp)//统计单词数 { int n2=0,word=0; char ch; ch=fgetc(fp); while(!feof(fp)) { ch=fgetc(fp); if(ch<'A'||(ch>'Z'&&ch<'a')||ch>'z') word=0; else if(word==0) { word=1; n2++; } } fclose(fp); return n2; } int linenum(FILE *fp)//统计行数 { int n3=0; char ch,lc=0; ch=fgetc(fp); while((ch=fgetc(fp))!=EOF) { if(ch==' ') n3++; lc=ch; } fclose(fp); if(lc!=' ') n3++; return n3; }
6.测试运行
7、估计开发时间:
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
60 |
60 |
· Estimate |
· 估计这个任务需要多少时间 |
60 |
60 |
Development |
开发 |
480 |
480 |
· Analysis |
· 需求分析 (包括学习新技术) |
60 |
60 |
· Design Spec |
· 生成设计文档 |
60 |
60 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
60 |
60 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
60 |
60 |
· Design |
· 具体设计 |
60 |
60 |
· Coding |
· 具体编码 |
60 |
60 |
· Code Review |
· 代码复审 |
60 |
60 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 |
60 |
Reporting |
报告 |
180 |
180 |
· Test Report |
· 测试报告 |
60 |
60 |
· Size Measurement |
· 计算工作量 |
60 |
60 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
60 |
60 |
合计 |
720 |
720 |
8、项目小结
通过这次项目,最大的收获是了解了几个之前不知道的函数,对软件工程有了初步的了解