zoukankan      html  css  js  c++  java
  • 软件工程第二次作业

    一、

    1.本周PSP, 类型、任务、开始时间、结束时间、中断时间,delta时间。要求开始和结束时间包括日期。

     

    2.本周进度条: 代码行,博文字数,用到的知识点

    3.累积进度图: 到本周为止的代码累积折线图,到本周为止的博文字数累积折线图

    4.本周PSP饼状图,按任务类别分类,给出时间所占比例

     

    二、本次软件工程作业主要以C#进行编译,大致内容为:

      1.编写一个程序实现一个文件中单词统计。

      2.从控制台输入文件的名字,然后统计单词的数目。

      3.指定文件目录进行遍历,分别对每一个文件中的单词进行统计,输入前十个出现频次最高的单词及相应的次数。

      4.控制台显示数据。

      Coding代码链接地址:https://coding.net/u/MR__Chen/p/Demo/git

      本程序中主要编写了两个方法,一个statis(char s[])的统计方法,一个sort()的排序方法。statis()方法主要是对单词数目进行统计,sort()对单词出现的频次进行排序,然后在main()函数中先读取文件中的单词数据,然后调用statis()和sort()方法,输出数据在控制台显示。

    (一)、statis(char s[])统计方法,具体代码显示如下:

    void statis(char s[])
    {  
          int i,j;  
          int flag=0;  //flag为零时没有重复的
          for(i=0;i<=sum;i++)  
        {   
           if(strcmp(A[i].str,s)==0)   
           {             
                A[i].num++; //重复单词个数加一   
                flag=1;   //有重复
                //sum++;      
             }     
         }  
          if(flag==0)  
           {   
             for(j=0;j<30;j++)       
               A[sum].str[j]=s[j];  
               A[sum].num++;   
               sum++;  
           }       
       }

    (二)、sort()排序方法,具体代码显示如下:

      void sort()
    {    
          int i,j;    
          struct word a;  
          for(i=0;i<sum;i++)  
        {   
            for(j=i+1;j<sum;j++)      
              if(A[i].num<A[j].num)    
             {     
                 a=A[j];          
                 A[j]=A[i];
                 A[i]=a; 
               }
          }
    }

     (三)、main()函数调用statis(char s[])和sort()方法实现程序,具体代码如下:

    void main()
    {  
          char ch,plan[30],s[30];  
          int i,m=1,flag=0;
          FILE *fp;
         while(m<10)
    {      scanf(
    "%s",&plan);      getchar();      if((fp=fopen(plan,"r+"))==NULL){         printf("Open the file failure... ");            }        fp=fopen(plan,"r");
    sum
    =0;       ch=NULL;        for(i=0;i<1000;i++)        A[i].num=0;
        while(ch!=-1)  {      for(i=0;i<30;i++)       s[i]='';       ch=fgetc(fp);      if((65<=ch&&ch<=90)||(ch>=97&&ch<=122))   {         for(i=0;;i++)       {          s[i]=ch;          ch=fgetc(fp);          if((65<=ch&&ch<=90)||(ch>=97&&ch<=122))continue;          else break;        }        statis(s);       }     }        sort();        printf("total %d  words ",sum);        for(i=0;i<10;i++)         printf("%s %d ",A[i].str,A[i].num);     printf("--- ");       m++;    } }

     (四)通过以上代码实现,具体的截图分为以下三个部分:

    功能一

    功能描述:test.txt中包括单词 My English is very very poor.计数total数值,对于重复出现的very只显示一次。

    具体实现截图如下:

     

    功能二

    功能描述:支持命令行输入英文作品的文件名,以runbinson.txt文件为例。

    具体实现截图如下:

    功能三

    功能描述:支持命令行输入存储有英文作品文件的目录名,批量统计。(在此,特此说明因为C语言编程能力差,对于C格式调试不擅长,所以没有完全一次性实现添加多个目录后进行集体显示,只实现了一个文件一个文件进行输入,可输入多个文件。)

    具体实现截图如下:

     (五)本项目的psp图,功能实现因为只达到了功能三,前期功能四有尝试编译,但是发现编译出来后和要求不太符合,所以后期测试也就没有了。

      总结:本次作业通过C语言进行编程,目的测试文件中单词不重复总数和TOP10的单词数量,通过本次编程也暴露出自己的C编程的能力较差,只能尽可能去完成自己可以做完的功能。但愿以后可以运用所学在这些短处有所弥补。

  • 相关阅读:
    [RxSwift教程]14、其他操作符:delay、materialize、timeout等
    [RxSwift教程]13、连接操作符:connect、publish、replay、multicast
    Java虚拟机类加载机制及双亲委派模式分析
    面试系列-如何设计一个类
    谈谈 MySQL 的 JSON 数据类型
    Java 多线程编程(2-异步中包含同步)
    还堵在高速路上吗?带你进入Scratch世界带你飞
    SQL Server SSIS相关介绍
    SQL Server开启READ_COMMITTED_SNAPSHOT
    SqlServer中select语句引起的死锁
  • 原文地址:https://www.cnblogs.com/chjy/p/7532906.html
Copyright © 2011-2022 走看看