• 个人项目-wordcount(C语言)


    WordCount.exe(C语言)

    Github链接:https://github.com/Maxwell-Who/own-shit/blob/master/wc.exe

    一、题目描述

    实现一个简单而完整的软件工具(源程序特征统计程序)。
    进行单元测试、回归测试、效能测试,在实现上述程序的过程中使用相关的工具。
    进行个人软件过程(PSP)的实践,逐步记录自己在每个软件工程环节花费的时间。

    wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。
    实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
    具体功能要求:程序处理用户需求的模式为:wc.exe [parameter] [file_name]

    二、解题思路

    由于在此前没有学过其它语言,只能用大家似乎不那么推荐的C语言来写,并且要赶在下一节软工课前写完的话,只能一切从简。
    (主要还是因为我太菜了)
    我深知自己的代码没有什么亮点…单纯地只读一个文件,用以前C语言anyview-C的蹩脚计算方法统计。

    三、设计实现过程

    四、代码分析

    -主函数

    #include<stdio.h>
    #include<stdlib.h>
    
    int charc(char *file);
    int wordc(char *file);
    int linec(char *file);
    
    int main(){
    	FILE *fp;
    	int ch,wo,li;
    	char ad[150];//这里是文件地址 
    	printf("这是用来统计程序文件中的
    字符数、单词数、行数
    的东西");
    	printf("
    请输入文件地址:
    ");
    	scanf("%s",ad);
    	
    	if((fp=fopen(ad,"r"))==NULL)
    		{
    			printf("根本不存在这个文件啊!");
    			exit(-1); 
    		} 
    	else{
    		ch=charc(ad);
    		wo=wordc(ad);
    		li=linec(ad);
    		printf("
    该文件字符数为%d
    单词数为%d
    行数为%d
    ",ch,wo,li);
    		}
    }
    

    -字符统计

    int charc(char *ad){//计算字符数 
    	int n=0;
    	char ch;
    	FILE *fp;
    	if ((fp=fopen(ad,"r"))== NULL)
    	{
    		exit(-1);
    	}
    	ch = fgetc(fp);
    	while (!feof(fp))
    	{
    		ch = fgetc(fp);
    		n++;
    	}
    	return n;
    }
    

    -单词统计

    int wordc(char *ad){//计算单词数 
    	int n=0,word=0;
    	char ch;
    	FILE *fp;
    	if ((fp = fopen(ad,"r")) == NULL)
    	{
    		exit(-1);
    	}
    	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;
    			n++;
    		}
    	}
    	return n;
    }
    

    -行数统计

    int linec(char *ad){//计算行数 
    	int n=0;
    	char ch,li=0;
    	FILE *fp;
    	if ((fp=fopen(ad,"r"))==NULL)
    	{
    		exit(-1);
    	}
    	ch = fgetc(fp);
    	while((ch=fgetc(fp))!=EOF)
    	{
    		if(ch=='
    ')
    			n++;
    		li=ch;
    	}
    	if (li!='
    ')
    		n++;
    	return n;
    }
    

    五、项目测试

    -空文件

    -只有一个字符的文件

    -只有一个词的文件

    -只有一行的文件

    -一个典型的源文件

    六、项目总结

    -发现自己对自己熟识的唯一一门语言——C语言,都认知如此贫乏
    -从来没有写过博客,写博客的时间差点要比打码的时间长
    -决定要学好java,以及继续研究前端
    -现在是3月19日周四晚上23:03,由于拖延症发作,自己写了那么一点点代码还是花了很长时间,需要更好的时间规划

    七、PSP

    PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 45 120
    · Estimate 估计这个任务需要多少时间 5 5
    Development 开发 120 200
    Analysis 需求分析 (包括学习新技术) 20 20
    ·Design Spec 生成设计文档 10 30
    ·Design Review 设计复审 (和同事审核设计文档) 0 0
    · Coding Standard 代码规范 (为目前的开发制定合适的规范) 5 5
    ·Design 具体设计 30 40
    ·Coding 具体编码 60 120
    ·Code Review 代码复审 30 45
    ·Test 测试(自我测试,修改代码,提交修改) 30 20
    Reporting 报告 10 60
    ·Test Report 测试报告 10 10
    ·Size Measurement 计算工作量 10 10
    ·Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 20 30
    合计 435 725
  • 相关阅读:
    字符编码、文件处理
    列表、字典、元祖、集合
    数字类型、字符串、列表
    学习python的第一天作业
    python基础day2-函数基础2,2019-6-25
    python基础day2-函数基础,2019-6-25
    python基础day2-文件处理,2019-6-25
    python基础day2-流程控制,2019-6-25
    python基础day2-字典类型已内置方法,2019-6-25
    python基础day2-可变类型与不可变类型,2019-6-25
  • 原文地址:https://www.cnblogs.com/maxwell-who/p/12528075.html
Copyright © 2020-2023  润新知