计算与软件工程作业二

作业要求

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进行管理。

托管于gitee上的链接

https://gitee.com/yzzzw/yzwcode

posted @ 2020-02-29 11:40  Meinhof  阅读(194)  评论(1编辑  收藏  举报