计算与软件工程作业二
作业要求
https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10402
作业1
预习第二节
1.单元测试主要步骤:
(1)设置数据(一个假想的正确的E-mail地址);
(2)使用被测试类型的功能(用E-mail地址来创建一个User类的实体);
(3)比较实际结果和预期的结果(Assert.IsTrue(target!= null);)。
单元测试应有最熟悉代码的人(程序的作者)来写。
2.回归测试
在单元测试的基础上, 我们就能够建立关于这一模块的回归测试 (Regression Test). 在软件项目中,如果一个模块或功能以前是正常工作的,但是在一个新的构建中出了问题,那这个模块就出现了一个“退步”(Regression),从正常工作的稳定状态退化到不正常工作的不稳定状态。
3.效能分析
分析方法:
(1)抽样法(Sampling)
当程序运行时,IDE工具记录程序的运行情况,输出程序运行时间的分布情况。
(2)代码注入(Instrumentation)
将检测的代码插入到每一函数中,记录程序的一举一动,精确的测量程序的各个效能数据。
常规做法:
先抽样,找出热点所在,后对热点模块进行代码注入的方法进行详细分析。
4.PSP
个人软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。
完成结果
代码
#include<iostream>
#include<stdlib.h>
#include<string>
#include<time.h>
using namespace std;
using std::fixed;
#define MIN 1
#define MAX 10
string to_string(int n)
{
int m=n;
int i=0,j=0;
char s[MAX];
char ss[MAX];
while(m>0)
{
s[i++]= m%10 + '0';
m/=10;
}
s[i]='\0';
i=i-1;
while(i>=0)
{
ss[j++]=s[i--];
}
ss[j]='\0';
return ss;
}
string oper1(char op,int integer,int numerator,int denominator)//整数和分数的运算
{
string rst;
int temp1;
if(op=='+')
{
return rst=to_string(integer*denominator+numerator)+'/'+to_string(denominator);
}
if(op=='-')
{
return rst=to_string(integer*denominator-numerator)+'/'+to_string(denominator);
}
if(op=='*')
{
for(int i=2;(integer*numerator)>=i;i++)
if((integer*numerator)%i==0 && denominator%i==0)
{
temp1=(integer*numerator);
temp1/=i;
denominator/=i;
i--;
}
return rst=to_string(temp1)+'/'+to_string(denominator);
}
if(op=='/')
{
for(int i=2;(integer*denominator)>=i;i++)
if((integer*denominator)%i==0 && numerator%i==0)
{
temp1= integer*denominator;
temp1/=i;
numerator/=i;
i--;
}
return rst=to_string(temp1)+'/'+to_string(numerator);
}
}
string oper2(char op,int integer1,int integer2)//整数和整数的运算
{
string rst;
if(op=='+')
{
return rst = to_string(integer1 + integer2);
}
if(op=='-')
{
return rst = to_string(integer1 - integer2);
}
if(op=='*')
{
return rst = to_string(integer1 * integer2);
}
if(op=='/')
{
for(int i=2;integer1>=i;i++)
if(integer1%i==0 && integer2%i==0)
{
integer1/=i;
integer2/=i;
i--;
}
return rst = to_string(integer1) + '/' + to_string(integer2);
}
}
string oper3(char op,int numerator1,int denominator1,int numerator2,int denominator2)//分数和分数的运算
{
string rst;
int temp1,temp2;
if(op=='+')
{
temp1 = numerator1 * denominator2 + numerator2 * denominator1;
temp2 = denominator1 * denominator2;
for(int i=2;temp1>=i;i++)
if(temp1%i==0 && temp2%i==0)
{
temp1/=i;
temp2/=i;
i--;
}
return rst=to_string(temp1)+'/'+to_string(temp2);
}
if(op=='-')
{
temp1 = numerator1 * denominator2 - numerator2 * denominator1;
temp2 = denominator1 * denominator2;
for(int i=2;temp1>=i;i++)
if(temp1%i==0 && temp2%i==0)
{
temp1/=i;
temp2/=i;
i--;
}
return rst=to_string(temp1)+'/'+to_string(temp2);
}
if(op=='*')
{
temp1 = numerator1 * numerator2;
temp2 = denominator1 * denominator2;
for(int i=2;temp1>=i;i++)
if(temp1%i==0 && temp2%i==0)
{
temp1/=i;
temp2/=i;
i--;
}
return rst=to_string(temp1)+'/'+to_string(temp2);
}
if(op=='/')
{
temp1 = numerator1 * denominator2;
temp2 = denominator1 * numerator2;
for(int i=2;temp1>=i;i++)
if(temp1%i==0 && temp2%i==0)
{
temp1/=i;
temp2/=i;
i--;
}
return rst=to_string(temp1)+'/'+to_string(temp2);
}
}
int main()
{
int grade;
char level;
int n,integer1,integer2,numerator1,denominator1,numerator2,denominator2;
int rightNum=0,wrongNum=0;
string result;
float CorrectRatio=0.0;//定义正确率;
char operation[]={'+','-','*','/'}; //定义运算符号
int operand[]={1,2,3,4};//定义操作数;
char tempOperation;
int tempOperand;
srand((unsigned)time(NULL));
cout<<"请输入数字选择年级 一年级或二年级(输入'1'),三年级或四年级或五年级(输入'2')"<<endl;
cin>>grade;
cout<<"请选择难易程度 难(输入'A'),中(输入'B'),易输入('C')"<<endl;
cin>>level;
cout<<"选择题目数量"<<endl;
cin>>n;
while(n)//选择题目数量;
{
integer1 = rand()%(MAX-MIN+1)+MIN;
integer2 = rand()%(MAX-MIN+1)+MIN;
numerator1 = rand()%(MAX-MIN+1)+MIN;
denominator1 = rand()%(MAX-MIN+1)+MIN;
numerator2 = rand()%(MAX-MIN+1)+MIN;
denominator2 = rand()%(MAX-MIN+1)+MIN; //随机生成两个整数和两个分数的分子和分母;
tempOperation = operation[rand()%4];
tempOperand = operand[rand()%4];//随机生成一个运算符和两个运算数的随机组合
if(tempOperand==3)//两个操作数分别为整数和分数
{
cout<<integer1<<tempOperation<<numerator1<<"/"<<denominator1<<"="<<endl;
cin>>result;
if(result==oper1(tempOperation,integer1,numerator1,denominator1))
{
rightNum++;
CorrectRatio=float(rightNum)/float(rightNum+wrongNum);
cout<<"回答正确!"<<"目前正确率为:"<<fixed<<CorrectRatio<<endl;
}
else
{
wrongNum++;
CorrectRatio=float(rightNum)/float(rightNum+wrongNum);
cout<<"回答错误!"<<"正确答案为:"<<oper1(tempOperation,integer1,numerator1,denominator1)<<endl;
cout<<"目前正确率为:"<<fixed<<CorrectRatio<<endl;
}
}
if(tempOperand==1||tempOperand==2)//两个操作数分别为整数和整数
{
cout<<integer1<<tempOperation<<integer2<<"="<<endl;
cin>>result;
if(result==oper2(tempOperation,integer1,integer2))
{
rightNum++;
CorrectRatio=float(rightNum)/float(rightNum+wrongNum);
cout<<"回答正确!"<<"目前正确率为:"<<fixed<<CorrectRatio<<endl;
}
else
{
wrongNum++;
CorrectRatio=float(rightNum)/float(rightNum+wrongNum);
cout<<"回答错误!"<<"正确答案为:"<<oper2(tempOperation,integer1,integer2)<<endl;
cout<<"目前正确率为:"<<fixed<<CorrectRatio<<endl;
}
}
if(tempOperand==4)//两个操作数分别为分数和分数
{
cout<<numerator1<<"/"<<denominator1<<tempOperation<<numerator2<<"/"<<denominator2<<"="<<endl;
cin>>result;
if(result==oper3(tempOperation,numerator1,denominator1,numerator2,denominator2))
{
rightNum++;
CorrectRatio=float(rightNum)/float(rightNum+wrongNum);
cout<<"回答正确!"<<"目前正确率为:"<<fixed<<CorrectRatio<<endl;
}
else
{
wrongNum++;
CorrectRatio=float(rightNum)/float(rightNum+wrongNum);
cout<<"回答错误!"<<"正确答案为:"<<oper3(tempOperation,numerator1,denominator1,numerator2,denominator2)<<endl;
cout<<"目前正确率为:"<<fixed<<CorrectRatio<<endl;
}
}
n--;
}
system("pause");
return 0;
}
作业2
git学习与码云代码托管平台gitee
在登录gitee之后,应先创建一个仓库,用于存放自己的代码。在安装好git之后,可以利用git bash对git进行管理。