第二次作业:熟悉使用工具

熟悉使用工具

GIT地址 git地址
GIT用户名 believe001
学号后五位 61218
博客地址 博客地址
作业链接 作业链接

二,熟悉使用工具

1,环境配置:

微信上关注软件安装管家,发送vs2017里面有详细教程

VS安装

笔者就是通过这个方法下载的vs,里面教程超级详细哟!

2,代码设计的思路:

(1),设计一个calculator类,类中私有数据成员包括

int Quenumbers;//出题数量
float answers[100];//题目的答案

公有成员包括:

void calculator();//设置输入题目数量
void showQuestions();//将题目内容显示在屏幕中
void showResult();//将题目结果显示在屏幕上
bool Is_int(float a);//判断结果是否为整数

然后在主函数中声明一个类对象,进行相关功能的实现。
(2),代码如下:

包含三部分Calculator.hCalculator.cpp源.cpp

Calculator.h:

//calculator.h的实现
#ifndef CALCULATOR_H_
#define CALCULATOR_H_
#include "pch.h"
class Calculator {
public:
	Calculator() {};
	void calculator();//设置输入题目数量
	void showQuestions();//将题目内容显示在屏幕中
	void showResult();//将题目结果显示在屏幕上
	bool Is_int(float a);//判断结果是否为整数
private:
	int Quenumbers;
	float answers[100];
};
#endif

Calculator.cpp:

// calculator.cpp的实现
#include "pch.h"
#include"calculator.h"
#include <iostream>
#include<fstream>
#include<stdlib.h>
#include<time.h>

std::ofstream OutFile;
using namespace std;
//输入题目数量
void Calculator::calculator()

{
	cout << "Please input how many quetions you want to set:";
	cin >> Quenumbers;
}

//将题目内容显示在屏幕中
void Calculator::showQuestions()
{
	int a, b, c, d;//参与运算的数字
	int key;//用于控制随机式子
	srand((unsigned)time(NULL));



	for (int i = 0; i < Quenumbers; i++)
	{
		do
		{
			a = rand() % 101;
			b = rand() % 101;
			c = rand() % 101;
			d = rand() % 101;
			key = rand() % 10 + 1;
			switch (key)
			{
			case 1:
				answers[i] = a + b * c;
				if (Is_int(answers[i]))
				{
					cout << a << "+" << b << "*" << c << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "+" << b << "*" << c << "=" << endl;
					OutFile.close();
				}
				break;
			case 2:
				answers[i] = a + b - c;
				if (Is_int(answers[i]))
				{
					cout << a << "+" << b << "-" << c << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "+" << b << "-" << c << "=" << endl;
					OutFile.close();
				}
				break;
			case 3:
				answers[i] = a * 1.0*b / c;
				if (Is_int(answers[i]))
				{
					cout << a << "*" << b << "÷" << c << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "*" << b << "÷" << c << "=" << endl;
					OutFile.close();
				}
				break;
			case 4:
				answers[i] = a - 1.0*b / c;
				if (Is_int(answers[i]))
				{
					cout << a << "-" << b << "÷" << c << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "-" << b << "÷" << c << "=" << endl;
					OutFile.close();
				}

				break;
			case 5:
				answers[i] = a * b - c;
				if (Is_int(answers[i]))
				{
					cout << a << "*" << b << "-" << c << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "*" << b << "-" << c << "=" << endl;
					OutFile.close();
				}
				break;
			case 6:
				answers[i] = a * b - c + d;
				if (Is_int(answers[i]))
				{
					cout << a << "*" << b << "-" << c << "+" << d << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "*" << b << "-" << c << "+" << d << "=" << endl;
					OutFile.close();
				}
				break;
			case 7:
				answers[i] = a + b * c - d;
				if (Is_int(answers[i]))
				{
					cout << a << "+" << b << "*" << c << "-" << d << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "+" << b << "*" << c << "-" << d << "=" << endl;
					OutFile.close();
				}
				break;
			case 8:
				answers[i] = a * b + c - d;
				if (Is_int(answers[i]))
				{
					cout << a << "*" << b << "+" << c << "-" << d << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "*" << b << "+" << c << "-" << d << "=" << endl;
					OutFile.close();
				}
				break;
			case 9:
				answers[i] = a - 1.0*b / c + d;
				if (Is_int(answers[i]))
				{
					cout << a << "-" << b << "÷" << c << "+" << d << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "-" << b << "÷" << c << "+" << d << "=" << endl;
					OutFile.close();

				}
				break;
			case 10:
				answers[i] = 1.0*a / b - c * d;
				if (Is_int(answers[i]))
				{
					cout << a << "÷" << b << "-" << c << "*" << d << "=" << endl;
					OutFile.open("subject.txt", ios::app);
					OutFile << a << "÷" << b << "-" << c << "*" << d << "=" << endl;
					OutFile.close();
				}
				break;

			}
		} while (!Is_int(answers[i]));
	}

}


//判断结果是否为整数
bool Calculator::Is_int(float a)
{
	return a == static_cast<int>(a);
}




//将题目结果显示在屏幕上
void Calculator::showResult()
{


	cout << "The answers of these questions are as follows:" << endl;
	OutFile.open("subject.txt", ios::app);
	OutFile << "The answers of these questions are as follows:" << endl;
	OutFile.close();

	for (int i = 0; i < Quenumbers; i++)
	{
		cout << "Question" << i + 1 << ":" << answers[i] << endl;
		OutFile.open("subject.txt", ios::app);
		OutFile << "Question" << i + 1 << ":" << answers[i] << endl;
		OutFile.close();
	}
}

源.cpp:

#include<iostream >

#include"calculator.h"
//#include "pch.h"
using namespace std;
int main()
{
	Calculator a;
	a.calculator();
	a.showQuestions();
	a.showResult();
	return 0;
}

(3)运行结果截图:
运行截图
在文件中截图:
文件截图

文件内容:

文件截图
三,使用github克隆项目以及提交代码的整个过程:

1,在 https://github.com/join申请注册一个 Github 账号,申请成功后在 https://github.com/login 进行登录。
2,成功登录后,输入阿超仓库的网址 https://github.com/ChildishChange/Calculator ,点击右上角的 Fork,将阿超的四则运算库拷贝到自己的同名仓库中,如下图所示:

在这里插入图片描述
3.然后点击Clone or download ,复制链接,接着在D盘中建立一个文件夹,点击右键 ,选择git bash here ,弹出一个黑窗口,里面输入git clone +复制的链接,
在这里插入图片描述
文件就被克隆到文件夹里面啦,然后新建一个属于以自己github名字命名的文件夹(笔者的是believe001),如下图:
在这里插入图片描述
然后点击以自己名字为名的文件,用visual C++打开后,选择windows控制台应用程序,注意更改默认位置,可更改至以自己命名的文件夹里面,名称可设为Calculator
在这里插入图片描述
然后就可以编写代码啦!当完成代码编写工作后,编译测试通过后,就可以准备上传。首先打开自己最初进行克隆工作的文件夹,将要上传文件与后缀名.git的文件并列,因为只有.git文件才能上传。然后右键点击git bash ,输入git add . ,然后再输入git commit -m "Message"(Message是你要写的内容)利用git记录所有的改动,如下图:在这里插入图片描述
当git status 出现nothing to commit.working tree clean 即可进行上传git push ,git push 后,会弹出一个窗口要求登录 Github,此时输入 Github 的 用户名或邮箱 与 密码 即可成功 push。

在这里插入图片描述
git push 成功后如下
在这里插入图片描述
然后在完成 push 后,我们就可以开始向源仓库(即阿超的仓库)发起 Pull Request(简称 PR ,指发起请求给仓库贡献代码)。打开你 Fork 后的项目主页,如图所示,点击按钮 New pull request
在这里插入图片描述
成功后出现下面画面:
在这里插入图片描述
点击creat pull request后,在下图框中输入备注就可以啦!
在这里插入图片描述
至此上传就大功告成啦,!

4.我所遇到的问题:

关于提交代码:
1)提交代码过程我是参照[2019BUAA软工助教]第0次代码作业经行操作的,我说一下在这个过程中所遇到的问题吧:
当我第一次使用 push 命令后,按照教程应该会弹出一个窗口要求登录 Github,此时输入 Github 的 用户名或邮箱与密码,但并没有弹出来如下图:
在这里插入图片描述
,这是怎么回事呢,原来我并没有根据下面命令配置个人邮箱与用户名 ,如下图:在这里插入图片描述

按照上图操作后,就成功解决问题了,如下图:

在这里插入图片描述

四,记录对项目进行单元测试和回归测试的过程:

首先,现在原有的项目上新建一个测试项目,点击下图中的添加->新建项目
在这里插入图片描述

点击本机单元测试项目

在这里插入图片描述

建好后就会出现calculatorUnitTest这个项目,在项目创建成功后,为单元测试项目calculatorUnitTest 增加对原项目的引用,勾选calculator ,然后点击左下角确定
在这里插入图片描述测试项目的附加依赖项。选中单元测试项目,右键点击选择属性,然后点击链接器->输入 ->在附加依赖项编辑
在这里插入图片描述
在这里插入图片描述
附加依赖项编辑内容如下:
在这里插入图片描述
在这里插入图片描述

这个完成后,点击unittest1.cpp,添加头文件引用#include"../Calculator/Calculator.h"(根据自己的.h文件路径添加)
在这里插入图片描述
在这里插入图片描述

然后点击调试就不会报错啦,注意头文件一定要引用正确,不然会出现报错的,(无法解析的错误,我搞了好久)
然后就可以书写测试代码了,代码如下:

#include "stdafx.h"
#include "CppUnitTest.h"
#include"../Calculator/Calculator.h"


using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace CalculatorUnitTest
{		
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
			// TODO: 在此输入测试代码
			Calculator c;
			Assert::AreEqual(true,c.Is_int(3));
		}

	};
}

然后点击测试运行,所有测试如下图
在这里插入图片描述
然后出现如下图:
在这里插入图片描述
之后点击左侧测试资源管理器,就会出现绿色勾勾,表示测试成功
在这里插入图片描述
单元测试完成后如果再次对代码进行了修改,可以重复测试一次(称为回归测试),看是不是满足之前所有的单元测试样例,因为这个工程并不复杂,笔者随便改了一点代码,重新测试了一次
在这里插入图片描述

测试结果依然正确
在这里插入图片描述

五,对于此次作业的感想:

这是我第一次接触github ,由于对其不了解,导致花费大部分时间去熟悉运用这个工具,通过不断百度,询问同学,向学长请教等,了解到了github的一些知识。在做这个作业过程中遇到很多问题,但在这个过程中最大的收获就是如何自我学习新技术,老师说得对,作为计算机专业的学生,有些技术老师没法交给你,需要你自己不断搜寻资料,主动去弄懂你不懂的东西,不能等着老师教给你。一定要学会自己做自己的老师,这个过程可能很痛苦,但当摸索出来后你会收益匪浅。

--不忘初心,不负期许
原文地址:https://www.cnblogs.com/-believe-me/p/11561388.html