软件工程-个人项目作业

个人项目作业

1.Github项目地址

https://github.com/Chi8wah/wc

2.实现程序前,预计开发时间

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

3.思路

语言选择

通过观察原程序及需求,发现项目量不是很大,可直接使用C语言快速开发。

需要学的新知识

文件读写已经忘得差不多了,需要重新学习。

结构思路

  1. 命令行操作 可用C的命令行参数实现
  2. 计算行数 可通过读取' '计数
  3. 计算字符 逐一读取字符即可,注意排除换行及结束符
  4. 计算词数 可通过读取连续字符计数

遇到的困难

C语言的文件输入输出比较麻烦,写的时候有不少小bug需要修改。

4.关键代码

  • 获取字符数
void CountLetter(FILE *fp)
{
    int ltr=0,count=0;
    while(!feof(fp))
    {
        ltr=fgetc(fp);
        if(ltr=='
') continue;//识别非换行符
        count++;
    }
    count--;//减去末尾eof
    printf("共%d字符
",count);
}
  • 获取词数
void CountWord(FILE *fp)
{
    int ltr=0,count=0;
    int mk=0;//判断当前状态:0为空,1为字符串
    while(!feof(fp))
    {
        ltr=fgetc(fp);
        if(ltr=='.') continue;//防止误判
        if((ltr>='a'&&ltr<='z')||(ltr>='A'&&ltr<='Z')||ltr=='_')
        {
            if(mk==0) mk=1;
        }
        else
        {
            if(mk==1)
            {
                count++;
                mk=0;
            }
            else continue;
        }
    }
    printf("共%d词
",count);
}
  • 获取行数
void CountLine(FILE *fp)
{
    int ltr=0,count=0;
    while(!feof(fp))
    {
        ltr=fgetc(fp);
        if(ltr=='
')
            count++;
    }
    printf("共%d行
",count);
}

5.测试运行

测试功能

本程序完成了基本需求-c -w -l。

测试样例

#include <stdio.h>
int main()
{
printf( "Hello,World!
" );
return 0;
}

测试效果

6.实际花费时间

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

7.小结

  • 这是学习软件工程课程以来首次较为正式的开发,过去的开发都是直接写代码,而无任何开发规范,经过此次个人项目作业,使我更加近距离体验到以后出来工作后进行正式开发时的情况,让我意识到了规划的重要性。
  • 遗憾的是未能完成其他需求,个人对此不是很满意,希望以后有时间把这个项目补充一下,继续努力。
原文地址:https://www.cnblogs.com/chi8wah/p/12488057.html