个人项目作业

一、Github项目地址

 https://github.com/005088/Aries/tree/master

二、.在程序的各个模块的预计开发时间

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

   

· Estimate

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

10

 

Development

开发

   

· Analysis

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

30

 

· Design Spec

· 生成设计文档

10

 

· Design Review

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

10

 

· Coding Standard

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

10

 

· Design

· 具体设计

60

 

· Coding

· 具体编码

60

 

· Code Review

· 代码复审

10

 

· Test

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

30

 

Reporting

报告

   

· Test Report

· 测试报告

60

 

· Size Measurement

· 计算工作量

10

 

· Postmortem & Process Improvement Plan

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

20

 

 

合计

320

 

 

三、解题思路 
 
设计语言:C语言 

 题目中的需求进行分析:该题目是对wc.exe 功能中各项功能的模拟,采用命令形式输出各模块结果。

四、设计实现过程

 通过main函数连接3个不同功能的接口,并给出相应命令得出的结果。

五、代码说明

  (1)头文件:

#include "stdio.h"
#include "stdlib.h"

  (2)功能函数:

   获取字符数:

int CountcCharacter(FILE* fp)  //文件中字符数 
{
    char c; 
    int count = 0;
    while ((c = fgetc(fp)) != EOF)
        count++;
    return count;  //返回字符数 
}

    获取词数:

int CountWord(FILE* fp) { //文件中词数 
    char c;
    int count = 0, mark = 0;    //标记:mark为0不是词,mark为1是词
    while ((c = fgetc(fp)) != EOF) {
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
            if (mark == 0) {
                mark = 1;
                count++;
            }
        }
        else {
            if (mark == 1)
                mark = 0;
        }
    }
    return count;
}

    获取行数:

int CountLine(FILE* fp) //文件中行数 
{
    char c;
    int count = 0;
    if (fp == NULL)return 0;    //判断文件内是否为空
    count = 1;        //不为空,首行为1
    while ((c = fgetc(fp)) != EOF)
        if (c == '\n')  //用数换行符的方式计算文件中的行数 
            count++;
    return count; //返回行数
}

 (3)主函数:

int main() {
    while (1) {
        FILE* fp;
        errno_t err = 0;
        int count, order;    //count:计数,order:控制命令 
        err = fopen_s(&fp, "D:\\test.txt", "r");    // 测试文件位置
        if (err) {             
            printf("文件读取失败!\n");
            exit(0);
        }
        printf("wc.exe模仿功能: 1.-c(获取字符数)2.-w(获取词数)3.-l(获取行数)0.exit\n请选择您要进行的操作: ");
        scanf_s("%d", &order);    //命令输入
        do {
            switch (order) {
            case 1: count = CountcCharacter(fp); printf("该文件字符数为%d。\n", count); break;
            case 2: count = CountWord(fp); printf("该文件词数为%d。\n", count); break;
            case 3: count = CountLine(fp); printf("该文件行数为%d。\n", count); break;
            default:if (order == 0)exit(0); printf("输入错误,请重新选择您要进行的操作: "); scanf_s("%d", &order); break;
            }
        } while (order != 1 && order != 2 && order != 3 && order != 0);
        printf("\n");
        fclose(fp);
    }
}

 六、测试运行

 测试文件:

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

 运行结果:

七、PSP表

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

   

· Estimate

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

10

10

Development

开发

   

· Analysis

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

30

50

· Design Spec

· 生成设计文档

10

10

· Design Review

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

10

10

· Coding Standard

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

10

5

· Design

· 具体设计

60

40

· Coding

· 具体编码

60

120

· Code Review

· 代码复审

10

5

· Test

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

30

15

Reporting

报告

   

· Test Report

· 测试报告

60

60

· Size Measurement

· 计算工作量

10

5

· Postmortem & Process Improvement Plan

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

20

20

 

合计

320

350

八、项目小结 

本次项目中,编写了wc.exe的模仿功能,结合PSP表,我意识到了:

1.编写代码能力不足,效率低下

2.知识的漏洞会在开发过程中明显的显示出来

3.开发编程需要有耐心

posted @ 2020-03-16 01:50  Oliver_L  阅读(138)  评论(0编辑  收藏  举报