zoukankan      html  css  js  c++  java
  • 第二次作业:熟悉使用工具

    熟悉使用工具

    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的一些知识。在做这个作业过程中遇到很多问题,但在这个过程中最大的收获就是如何自我学习新技术,老师说得对,作为计算机专业的学生,有些技术老师没法交给你,需要你自己不断搜寻资料,主动去弄懂你不懂的东西,不能等着老师教给你。一定要学会自己做自己的老师,这个过程可能很痛苦,但当摸索出来后你会收益匪浅。

    --不忘初心,不负期许
  • 相关阅读:
    10 个让人惊讶的 jQuery 插件
    URL编码方法比较
    Java大文件分片上传/多线程上传源码
    Java大文件分片上传/多线程上传代码
    Java大文件分片上传/多线程上传插件
    Java大文件分片上传/多线程上传控件
    python函数
    关于言谈
    Sql语句之select 5种查询
    openstack之网络基础
  • 原文地址:https://www.cnblogs.com/-believe-me/p/11561388.html
Copyright © 2011-2022 走看看