• 个人项目-wc


    个人项目-WC   (C语言)

    一、Github地址:https://github.com/Lin-J-F/WC

    二、PSP表格

    PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
    Planning 计划 30 30
    · Estimate · 估计这个任务需要多少时间 240        400
    Development 开发 120 160
    · Analysis · 需求分析  30 45
    · Design Spec · 生成设计文档 40 50
    · Design Review · 设计复审  40 60
    · Coding Standard · 代码规范 20 30
    · Design · 具体设计 60 60
    · Coding · 具体编码 160  300
    · Code Review · 代码复审 30 30
    · Test · 测试(自我测试,修改代码,提交修改) 60 60
    Reporting 报告 120 130
    · Test Report · 测试报告 60 50
    · Size Measurement · 计算工作量 20 30
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 40 40
    合计   1070 1475

    三、解题思路

         1、拿到项目,我首先确定我想要用的语言,因为我对C语言的熟悉程度比JAVA高,所以我先思考了一下如何用C语言来写。对比发现C语言上手比较简单,并且已经有了部分思路,就确定用C来写。

         2、首先确定整体框架,确定用C语言写后,决定直接把-w、-l、-c 的统计方法写出来,然后直接在主程序中调用方法,来实现这三个功能。(后面在写 -a 的时候,发现自己将统计空白行、代码行和注释行的代码写在同一个方法里面的时候,互相之间条件的影响导致里面存在BUG,修复后还是不能正确统计三个数据,所以后来重新写 -a 的代码,将三种方法分开,使他们的条件不会互相影响,然后在主程序中,触发了 --a 的条件后,直接调用三种方法各自计算自己的数据)。

         3、由于对文件操作函数不是很熟悉,所以我又花了大概40分钟上网查了C语言文件操作函数的相关资料。

         4、在做图形界面的时候找不到很好的方法来解决,加上时间上稍微有点赶,就鸽了这个内容。(做了一大半发现后面要弄图形界面,没有看好要求,用JAVA做图形界面简单多了)

    四、设计实验过程

        1、一开始先将基本需求写出来,写了统计字符、单词和行数的三个函数出来,然后用主函数main 调用这三个函数,将所要求的结果值返回到主程序中。

        2、根据要求写拓展功能,返回更复杂的数据。跟第三大点提到的一样,一开始写了一个Complex的函数。来直接求那三组数据,后面因为各自条件的影响,无法解决导致不能求出正确的数据,后面将Complex函数分成三个函数,然后在主函数中,收到“-a”的条件时,直接调用这三个函数,将结果值返回到主函数。

    五、测试运行

    测试不存在文件:

             

    测试空文件:

                

    测试只有一个词的文件:

            

               

    测试只有一行的文件:

                    

                 

     测试一个典型的源文件:

                 

                 

        

    主函数:

    int main(){
    char in[2], file[10];
    while(1){
    printf("请用户输入命令: WC exe -");
    scanf("%s",&in);
    if(in[0]=='c'){
    printf("请输入文件名:");
    scanf("%s",&file) ;
    int count=0;
    count=Count(file);
    printf("文件的字符数为: %d ",count);
    continue;
    }
    if(in[0]=='w'){
    printf("请输入文件名:");
    scanf("%s",&file) ;
    int world=0;
    world=World(file);
    printf("文件单词数为: %d ",world);
    continue;
    }
    if(in[0]=='l'){
    printf("请输入文件名:");
    scanf("%s",&file) ;
    int line=0;
    line=Line(file);
    printf("文件行数为: %d ",line);
    continue;
    }
    if(in[0]=='a'){
    printf("请输入文件名:");
    scanf("%s",&file) ;
    int blank,code,explain,line;
    blank=Blank(file),line=Line(file) ,explain=Explain(file);
    printf("空白行数为: %d ",blank);
    printf("代码行数为: %d ",line-blank);
    printf("注释行数为: %d ",explain);
    continue;
    }
    }
    getchar();
    system("pause");
    }

    六、项目总结:

      1、对C语言相关知识点遗忘得有点厉害,查找资料的时间花得有点多,但是经过这次的作业,又捡回了C语言的相关知识。

      2、做项目之前要仔细看所给出的要求,根据需求选择更好的语言,然后整理好自己的思路,再慢慢通过代码实现,不要想着一蹴而就。

      3、写代码的时候逻辑不够严谨,而且容易顾此失彼,因为某些改动导致程序出错,后来发现改动的地方在前面相应位置没有改动。

      4、好好利用PSP,调整自己在整个工程中相应板块所用的时间,不要再不重要的地方放过多的时间。

  • 相关阅读:
    遗传算法的几种改进
    python3中让程序暂停运行的语句
    python内存增长问题
    关于编程思路
    关于程序中delay函数带来的繁琐问题
    python一切皆对象的理解
    Inspector did not run successfully.
    ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthor.
    决策树的升入浅出-视频
    -bash: /opt/cslc/jdk1.8.0_144/bin/jps: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
  • 原文地址:https://www.cnblogs.com/Lin-J/p/11574618.html
Copyright © 2020-2023  润新知