码迷,mamicode.com
首页 > 其他好文 > 详细

个人项目

时间:2020-03-24 23:41:08      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:back   数据   基本   href   http   过程   同事   design   repo   

                               个人项目

github地址:https://github.com/GMloria/GGMYING/blob/master/%E4%B8%AA%E4%BA%BA%E9%A1%B9%E7%9B%AE.cpp

 

一,题目要求

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

二,项目要求        

   wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。      

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

三,.基本功能实现

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

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

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

四,.扩展功能实现  

  -s   递归处理目录下符合条件的文件。    

-a   返回更复杂的数据(代码行 / 空行 / 注释行)。

空行:本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的字符

代码行:本行包括多于一个字符的代码。

注释行:本行不是代码行,并且本行包括注释。一个有趣的例子是有些程序员会在单字符后面加注

五,基本思路

拿到题目后,说实话有点懵,完全不知道如何下手,项目内容在刚开始也没有完全的理解,在熟读了项目要求以及在网上搜索了wc项目之后,对于需求有了一定的了解,由于目前我的能力较弱,还没有掌握其他高级的语言,所以决定用c语言写该项目,确定了语言之后,我开始逐个功能函数进行写代码,进行调试,在功能函数中,通过对库函数的资料查阅,知道了fgetc(),fclose()等函数的原理,通过多次测试最后得到了结果。

六,设计实现过程

 

技术图片

七,代码说明

统计字符数函数代码:

int charnum(char *filename)     //统计字符数 
{
    FILE *fp;
    char ch;
    int numc=0;
    fp=fopen(filename,"r");
    ch = fgetc(fp);
    while(ch != EOF)
    {
          numc++;
          ch=fgetc(fp);
    }
    printf("该文件的字符数为:%d\n",numc);
    fclose(fp);
    return 0;
}

统计行数函数:

int linenum(char *filename)    //统计行数 
{
    FILE *fp;
    char lp;
    int linenum = 0;
    fp = fopen(filename,"r");
    lp = fgetc(fp);
    while(lp != EOF)
    {
        if(lp == \n)             
          {
             linenum++;
        }
        lp = fgetc(fp);
    }
    linenum++; 
    printf("该文件行数为:%d\n",linenum);
    fclose(fp);
    return 0;    
}

统计单词数函数:

int wordnum(char *filename)              //统计单词数 
{
    FILE *fp;
    char wp;
    int wordnum=0;
    fp = fopen(filename,"r");
    wp = fgetc(fp);
    while (wp != EOF)   
    {
        if((wp>=a&&wp<=z) || (wp>=A&&wp<=Z))
        {
             wp = fgetc(fp);    
        }
        else
        {
            wordnum++;
            wp = fgetc(fp);
        }
    }
    wordnum++; 
    printf("该文件中单词数为:%d\n",wordnum);
    fclose(fp);
    return 0;
}

主函数:

int main()
 {
     int countc=0;
     FILE *file;
     char filename[50];
     printf("请输入将要查询的文件名:");
     scanf("%s",filename);
    charnum(filename);
    linenum(filename); 
    wordnum(filename);
    return 0;
}

 

八,测试结果

可执行文件:

技术图片

 

 

 

 

空文件:

    技术图片              技术图片

只含一个字符:

   技术图片技术图片

只含有一个词的文件:

技术图片技术图片

只含有一行的文件:

技术图片技术图片

一个典型的源文件:(该个人项目源文件)

技术图片

 

 九,PSP表

 

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

十,收获

第一次像这样完成一个个人项目,真的收获了很多,也知道了很多以前不知道的知识,由于现在其他高级语言只是有点匮乏,没有用其他高级语言实现该项目,在深入理解其他高级语言的知识之后,会尝试着用其他语言编写该个人项目,在写代码的过程中也出现了一些问题,第一次编写进行运行时,无论输入什么文件,字符数以及行数和单词数都是不变的,当我把后缀名改为cpp之后,才有了正确答案,在此次项目中,我明显感觉自己的知识储备不足,很多项目可能完成不了,在今后的时间里,我会增加自己的知识储备,多学新知识。之后会利用其他语言进行wc操作的实现。

个人项目

标签:back   数据   基本   href   http   过程   同事   design   repo   

原文地址:https://www.cnblogs.com/yyyy118/p/12562013.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!