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

熟悉使用工具

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值