20194602自动生成四则运算题第一版报告

 1.需求分析

(1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内

(2)剔除重复算式。  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式

(3)题目数量可定制

(4)相关参数可控制

          是否包含乘法和除法

          操作数数值范围可控(如操作数 在100以内   还是1000以内)

          操作数是否含负数    

 (5)生成的运算题存储到外部文件result.txt中

   2. 功能设计

      基本功能:满足功能需求

3. 设计实现    

     我设计了两个函数,主函数接收用户提出的出题要求,函数根据提出要求输出题目。

 4. 测试运行 (动图)

 

  5.代码

int PrintfTimu(int Tinumber, int resultT, int numberA, int numberB, int YN, int sign1)
{
    int i = 0;
    srand((unsigned)time(NULL));
    int sign[] = { 1, -1 };//符号控制数组;
    int sign2;//符号控制;数字一符号控制
    int sign4;//符号控制;数字二符号控制
    int sign3 = 0;//乘除符号控制;
    int a, b;//接收数字1,2;
    if (YN == 1)
    {
        sign3 = 4;
    }
    else
    {
        sign3 = 2;
    }

    if (sign1 == 1)
    {
        sign2 = 2;
        sign4 = 2;
    }
    else
    {
        sign2 = 1;
        sign4 = 1;
    }
    FILE *fpWrite = fopen("d:\\result.txt", "w");
    if (fpWrite == NULL)
    {
        return 0;
    }
    while (i < Tinumber)
    {
        switch (rand() % sign3)//随机加减乘除代码段
        {
        case 0:
            if (resultT < (a = sign[rand()%sign2]*(rand() % numberA + 1)) + (b = sign[rand() % sign4] * (rand() % numberB + 1)))
            {
                break;
            }
            else
            {
                if (b < 0)
                {
                    printf("%d+(%d)= ", a, b);
                    fprintf(fpWrite, "%d+(%d)= ", a, b);
                    fprintf(fpWrite, "\n");
                    i++;
                    printf("\n");
                    break;
                }
                printf("%d+%d= ", a, b);
                fprintf(fpWrite, "%d+%d= ", a, b);
                fprintf(fpWrite, "\n");
                i++;
                printf("\n");
            }; break;
        case 1:
            if (resultT < (a = sign[rand() % sign2] * (rand() % numberA + 1)) - (b = sign[rand() % sign4] * (rand() % numberB + 1)))
            {
                break;
            }
            else
            {
                if (b < 0)
                {
                    printf("%d-(%d)= ", a, b);
                    fprintf(fpWrite, "%d-(%d)= ", a, b);
                    fprintf(fpWrite, "\n");
                    i++;

                    printf("\n");
                    break;
                }
                printf("%d-%d= ", a, b);
                fprintf(fpWrite, "%d-%d= ", a, b);
                fprintf(fpWrite, "\n");
                i++;
                printf("\n");
            }; break;
        case 2:
            if (resultT < (a = sign[rand() % sign2] * (rand() % numberA + 1)) * (b = sign[rand() % sign4] * (rand() % numberB + 1)))
            {
                break;
            }
            else
            {
                if (b < 0)
                {
                    printf("%d*(%d)= ", a, b);
                    fprintf(fpWrite, "%d*(%d)= ", a, b);
                    fprintf(fpWrite, "\n");
                    i++;
                    printf("\n");
                    break;
                }
                printf("%d*%d= ", a, b);
                fprintf(fpWrite, "%d*%d= ", a, b);
                fprintf(fpWrite, "\n");
                i++;
                printf("\n");
            }; break;
        case 3:
            b = rand() % (numberB + 1);
            if (b == 0)
            {
                break;
            }
            if (resultT < (a = sign[rand() % sign2] * (rand() % numberA+1)) / (b = sign[rand() % sign4] * b))
            {
                break;
            }
            else
            {
                if (b < 0)
                {
                    printf("%d/(%d)= ", a, b);
                    fprintf(fpWrite, "%d/(%d)= ", a, b);
                    fprintf(fpWrite, "\n");
                    i++;

                    printf("\n");
                    break;
                }
                printf("%d/%d= ", a, b);
                fprintf(fpWrite, "%d/%d= ", a, b);
                fprintf(fpWrite, "\n");
                i++;
            
                printf("\n");
            }; break;
        }
    }
}

 

          6. 总结

             主函数完成参数控制,输出函数根据参数完成输出。

 

     

       7:psp

PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 15 25
   .Estimate ·  估计这个任务需要多少时间,并规划大致工作步骤 15 13
Development 开发 120 135
   . Analysis . 需求分析 (包括学习新技术) 5 10
   .Design Spec ·  生成设计文档 8 12
   .Design Review . 设计复审 (和同事审核设计文档) 12 10
 Coding Standard . 代码规范 (为目前的开发制定合适的规范) 10 10
   . Design . 具体设计 25 25
   . Coding . 具体编码 40 48
   . Code Review . 代码复审 10 22
Test . 测试(自我测试,修改代码,提交修改) 10 22
Reporting 报告 12 20
  ·Test Report . 测试报告  4  6
  .Size Measurement . 计算工作量  3  10
  .Postmortem & Process Improvement Plan . 事后总结 ,并提出过程改进计划  5  8
posted on 2019-09-16 21:04  申佳栋  阅读(208)  评论(5编辑  收藏  举报