个人作业改

1、Github项目地址:

2、估计开发时间:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 60

 

· Estimate

· 估计这个任务需要多少时间

60 

 

Development

开发

60 

 

· Analysis

· 需求分析 (包括学习新技术)

60 

 

· Design Spec

· 生成设计文档

60 

 

· Design Review

· 设计复审 (和同事审核设计文档)

60 

 

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

60 

 

· Design

· 具体设计

60 

 

· Coding

· 具体编码

60 

 

· Code Review

· 代码复审

60 

 

· Test

· 测试(自我测试,修改代码,提交修改)

60 

 

Reporting

报告

60 

 

· Test Report

· 测试报告

60 

 

· Size Measurement

· 计算工作量

60 

 

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

60 

 

合计

 

900 

 

 

3、解题思路

  由于本人的基础较为薄弱,所以选择用c来写。一开始就明确了要用多个子函数的方式来实现各个功能。

  遇到最大的问题是有很多c语言的函数我之间没有学过,如如何调用文件夹中的文件,后来在百度的方式之下学到了很多新函数的用法

4.设计实现流程

  先写出主函数,再依据各个功能写出对应子函数

5.代码说明

  主函数

int main()
{char a[2];        //a是用户输出操作量
FILE *load;    //load指向要测试的文件
int num;    //num用于记录客户所要的数据
load=fopen("D:\\hello.c","r");
if(load==NULL)
    {printf("该文件不存在,请检查您的文件存储位置");
    exit(-1);
    }

printf("此程序的功能为\n1、返回文件字符数,按-c执行\n2、返回文件词的数目,按-w执行\n3、返回文件行数,按-l执行\n");
scanf("%s",a);
if(a[0]!='-')
    {printf("输入错误\n");
    exit(-1);
    }
if(a[1]=='c')
{    num=charnum(load);
    printf("文件字符数为%d",num);
    return 0;
}
if(a[1]=='w')
{    num=wordnum(load);
    printf("文件词数为%d",num);
    return 0;
}
if(a[1]=='l')
{    num=linenum(load);
    printf("文件行数为%d",num);
    return 0;
}
else printf("输入错误\n");
exit(-1);
}

  三个基础功能函数

int charnum(FILE *fp)    //统计字符数
{    int n1=0;
    char ch;
    fgetc(fp);
     while(!feof(fp))
     {
         ch=fgetc(fp);
         n1++;
     }
     fclose(fp);
     return n1;
}

int wordnum(FILE *fp)//统计单词数
{
int n2=0,word=0;
char ch;

     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;
             n2++;
         }
     }
     fclose(fp);
     return n2;
 }


int linenum(FILE *fp)//统计行数
{
    int n3=0;
    char ch,lc=0;

    ch=fgetc(fp);
    while((ch=fgetc(fp))!=EOF)
    {
        if(ch=='\n')
            n3++;
        lc=ch;
    }
    fclose(fp);
    if(lc!='\n')
        n3++;
    return n3;
}

6.测试运行

 

 

 

7、估计开发时间:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 60

 60

· Estimate

· 估计这个任务需要多少时间

60 

60 

Development

开发

480 

480 

· Analysis

· 需求分析 (包括学习新技术)

60 

60 

· Design Spec

· 生成设计文档

60 

60 

· Design Review

· 设计复审 (和同事审核设计文档)

60 

60 

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

60 

60 

· Design

· 具体设计

60 

60 

· Coding

· 具体编码

60 

60 

· Code Review

· 代码复审

60 

60 

· Test

· 测试(自我测试,修改代码,提交修改)

60 

60 

Reporting

报告

180

180 

· Test Report

· 测试报告

60 

60 

· Size Measurement

· 计算工作量

60 

60 

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

60 

60 

合计

 

720 

 720

 

 

8、项目小结

  通过这次项目,最大的收获是了解了几个之前不知道的函数,对软件工程有了初步的了解

 

posted @ 2020-03-19 01:30  小杨的博客~  阅读(131)  评论(0编辑  收藏  举报