zoukankan      html  css  js  c++  java
  • 软件工程-个人项目作业

    个人项目作业

    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.小结

    • 这是学习软件工程课程以来首次较为正式的开发,过去的开发都是直接写代码,而无任何开发规范,经过此次个人项目作业,使我更加近距离体验到以后出来工作后进行正式开发时的情况,让我意识到了规划的重要性。
    • 遗憾的是未能完成其他需求,个人对此不是很满意,希望以后有时间把这个项目补充一下,继续努力。
  • 相关阅读:
    108.将有序数组转换成二叉搜索树
    剑指Offer 09.用两个栈实现队列
    215.数组中的第K个最大元素
    AcWing 845.八数码
    1.两数之和
    迷宫问题
    倒计时
    Redis 红包
    Redis
    EF Api 全套
  • 原文地址:https://www.cnblogs.com/chi8wah/p/12488057.html
Copyright © 2011-2022 走看看