个人项目WordCount

时间:2020-03-24
本文章向大家介绍个人项目WordCount,主要包括个人项目WordCount使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

个人项目WordCount

Github项目地址:https://github.com/Towito2/WC

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30
· Estimate · 估计这个任务需要多少时间 30
Development 开发 600
· Analysis · 需求分析 (包括学习新技术) 180
· Design Spec · 生成设计文档 30
· Design Review · 设计复审 (和同事审核设计文档) 30
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 40
· Design · 具体设计 30
· Coding · 具体编码 180
· Code Review · 代码复审 30
· Test · 测试(自我测试,修改代码,提交修改) 80
Reporting 报告 80
· Test Report · 测试报告 30
· Size Measurement · 计算工作量 20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30
合计 710

一、题目描述

Word Count

  1. 实现一个简单而完整的软件工具(源程序特征统计程序)。
  2. 进行单元测试、回归测试、效能测试,在实现上述程序的过程中使用相关的工具。
  3. 进行个人软件过程(PSP)的实践,逐步记录自己在每个软件工程环节花费的时间。
    wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。

实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
具体功能要求:
程序处理用户需求的模式为:

wc.exe [parameter] [file_name]

基本功能列表:

wc.exe -c file.c //返回文件 file.c 的字符数

wc.exe -w file.c //返回文件 file.c 的词的数目

wc.exe -l file.c //返回文件 file.c 的行数

二、解题思路

看见题目的时候,首先想到的是这个项目应该是与文件的操作相关的,由于之前没有学习过相关的知识,因此我先到网站上面搜索相关的资料进行学习。因为c语言的文件操作学习起来比较简单,所以我选择了使用c语言。

三、实现过程

主要用了4个函数,其中一个主函数,另外通过3个函数来实现3个基本功能。

四、代码说明

主函数


void main() {

	int WordCount(FILE *p);
	int CharCount(FILE *p);
	int LineCount(FILE *p);
	int number;
	char FileName[100];
	FILE *fp;
	char se;
	printf("请输入用户命令:wc.exe -");
	scanf("%c", &se);
	if (se == 'c') {
		printf("请输入文件名:");
		scanf("%s", &FileName);
		fp = fopen(FileName, "r");
		number = CharCount(fp);
		printf("字符数为:%d\n", number);
		fclose(fp);
	}
	else if (se == 'w') {
		printf("请输入文件名:");
		scanf("%s", &FileName);
		fp = fopen(FileName, "r");
		number = WordCount(fp);
		printf("词的数目为:%d\n", number);
		fclose(fp);
	}
	else if (se == 'l') {
		printf("请输入文件名:");
		scanf("%s", &FileName);
		fp = fopen(FileName, "r");
		number = LineCount(fp);
		printf("行数为:%d\n", number);
		fclose(fp);
	}
	else {
		printf("输入错误!");
	}

}

返回文件的字符数

int CharCount(FILE *p) {
	if (NULL == p) {
		printf("找不到该文件!");
	}
	char a;
	int charcount = 0;
	while (!feof(p)) {
		a = fgetc(p);
		if (a != '\n') {
			charcount++;
		}
	}
	return --charcount;
}

返回文件的词的数目

int WordCount(FILE *p) {
	if (NULL == p) {
		printf("找不到该文件!!");
	}
	char b;
	int wordcount = 1;
	b = fgetc(p);
	if (feof(p)) return 0;
	while (!feof(p)) {
		b = fgetc(p);
		if (b == ' ') {
			wordcount++;
		}
	}
	return wordcount;
}

返回文件的行数

int LineCount(FILE *p) {
	if (NULL == p) {
		printf("找不到该文件!");
	}
	char c[100];
	int linecount = 0;
	fgetc(p);
	while (!feof(p)) {
		fgets(c, 100, p);
		linecount++;
	}
	return linecount;
}

五、测试运行

测试样例:1.空文件

2.只有一个字符的文件

3.只有一个词的文件

4.只有一行的文件

5.一个典型的源文件

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30
· Estimate · 估计这个任务需要多少时间 30
Development 开发 720
· Analysis · 需求分析 (包括学习新技术) 200
· Design Spec · 生成设计文档 20
· Design Review · 设计复审 (和同事审核设计文档) 20
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30
· Design · 具体设计 60
· Coding · 具体编码 300
· Code Review · 代码复审 30
· Test · 测试(自我测试,修改代码,提交修改) 60
Reporting 报告 70
· Test Report · 测试报告 30
· Size Measurement · 计算工作量 10
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30
合计 790

六、项目小结

通过这次的项目,我对文件的一些基本的操作有了不少的了解,学习到了许多相关的知识。在一开始查找资料的过程中,由于没有很好的搞清楚项目的目标,耗费了不少的时间。实际的项目耗费的时间比预估的时间要多出一些,同时也与预期有不少的不符,这对我以后对项目所需时间的评估有了一定的帮助。

原文地址:https://www.cnblogs.com/zjh233/p/12561394.html