第一次的个人编程作业

丁虹杰 2023-03-08 23:50:45

目录

  • 一、Gitcode仓库
  • 二、作业基本信息
  • 三、PSP表格
  • 四、计算模块接口的设计与实现过程
  • 流程图
  • 核心算法
  • 五、计算模块接口部分的性能改进
  • 六、计算模块部分单元测试展示
  • 测试模块

一、Gitcode仓库

Gitcode仓库

二、作业基本信息

这个作业属于哪个课程软件工程
这个作业要求在哪里第一次编程作业
这个作业的目标1.学会使用PSP表格
2.学会使用Code Quality Analysis工具
3.学会使用性能分析工具Studio Profiling Tools
4.学会使用Gitcode来管理源代码和测试用例
5.学会使用单元测试对项目进行测试
其他参考文献

三、PSP表格

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

四、计算模块接口的设计与实现过程

流程图

img

核心算法

暴力匹配法:逐个比较两个字符串里的每个位的字符

img

五、计算模块接口部分的性能改进

CPU使用率

img

消耗最大的函数

int similar(char* a, char* b)//得到两个数组里相同字符的个数的函数
{
    int n = strlen(a);
    int m = strlen(b);
    for (int i = 0; i <= n - m; i++)
    {
        int j;
        for (j = 0; j < m; j++)
        {
            if (a[i + j] != b[j]) {
                break;
            }
        }
    if (j == m) 
      {
        return i;
       }
    }
}

六、计算模块部分单元测试展示

测试模块

字符串重复函数

#include "pch.h"
#include "CppUnitTest.h"
#include <string.h>
#define LEN 10
#define CHAR_MIN 'a'
#define CHAR_MAX 'z' 
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{
    TEST_CLASS(UnitTest1)
    {
    public:
        
        TEST_METHOD(similar)
        {
            char a[LEN + 1] = { 0 }, b[LEN + 1] = {0};
            for (int k = 0; k<10; k++)

            {

                a[k] = rand() % (CHAR_MAX - CHAR_MIN + 1) + CHAR_MIN;

            }
            for (int k = 0; k < 10; k++)

            {

                b[k] = rand() % (CHAR_MAX - CHAR_MIN + 1) + CHAR_MIN;

            }
            int n = strlen(a);
            int m = strlen(b);
            for (int i = 0; i <= n - m; i++)
            {
                int j;
                for (j = 0; j < m; j++)
                {
                    if (a[i + j] != b[j]) {
                        break;
                    }
                }
                if (j == m)
                {
                    Assert::IsTrue(i);
                }
            }
        }
    };
}


img

...全文
48 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

192

社区成员

发帖
与我相关
我的任务
社区描述
广工软工21级3、4班,软件工程课程学习、训练、讨论交流社区
软件工程 高校 广东省·广州市
社区管理员
  • ryue.zh
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧