熟悉使用工具
GIT地址 | git地址 |
---|---|
GIT用户名 | believe001 |
学号后五位 | 61218 |
博客地址 | 博客地址 |
作业链接 | 作业链接 |
二,熟悉使用工具
1,环境配置:
微信上关注软件安装管家,发送vs2017里面有详细教程
笔者就是通过这个方法下载的vs,里面教程超级详细哟!
2,代码设计的思路:
(1),设计一个calculator类,类中私有数据成员包括
int Quenumbers;//出题数量
float answers[100];//题目的答案
公有成员包括:
void calculator();//设置输入题目数量
void showQuestions();//将题目内容显示在屏幕中
void showResult();//将题目结果显示在屏幕上
bool Is_int(float a);//判断结果是否为整数
然后在主函数中声明一个类对象,进行相关功能的实现。
(2),代码如下:
包含三部分:Calculator.h
,Calculator.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的一些知识。在做这个作业过程中遇到很多问题,但在这个过程中最大的收获就是如何自我学习新技术,老师说得对,作为计算机专业的学生,有些技术老师没法交给你,需要你自己不断搜寻资料,主动去弄懂你不懂的东西,不能等着老师教给你。一定要学会自己做自己的老师,这个过程可能很痛苦,但当摸索出来后你会收益匪浅。