git地址 https://github.com/microwangwei
git用户名 microwangwei
学号后五位 62214
博客地址 https://www.cnblogs.com/westweishao/
作业链接 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign/homework/7584

声明:

本次博客部分排版以及内容参考了一些博客

博客地址:https://www.cnblogs.com/ChildishChange/p/10398212.html

https://www.cnblogs.com/harry240/p/11515697.html

Part 0. 背景

阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。

作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:

程序接收一个命令行参数 n,然后随机产生 n 道加减乘除(分别使用符号+-*/来表示)练习题,每个数字在 0 和 100 之间,运算符在 2 个 到 3 个之间。由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现 3÷5+2=2.6 这样的算式。

练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。

Part 1. 配置环境

Visual Studio (简称VS)是微软公司旗下最重要的软件集成开发工具产品。是目前最流行的 Windows 平台应用程序开发环境,也是无数人学习编程的入门软件之一。Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件,目前还可开发安卓平台应用及IOS平台应用。

1.百度云下载Visual Studio2017

(Visual Studio2017百度网盘下载地址:pan.baidu.com/s/1_HycbxXqRfptMYEaho02bg    提取密码:srpx )

2.详细安装步骤关注后面的内容

(1)打开安装软件中的Visual Studio Installer

(2)选择我们需要安装的组件,这里由于我是学过一点java,c#,python的所以我安装了和这几个相关的组件

(3)等待安装完成后,打开Visual Studio2017,点击c#控制台应用

(4)创建一个简单的c#代码程序

(5)正如大家都知道,在学C语言的时候我们写的第一个程序,这里也是写了一个Hello world。

Tips: 这里强烈给大家安利一个微信公众号:软件安装管家,这里面有很多需要的软件,例如ps、pr、Linux、Windows以及一些编程软件等,每一个软件都给出了百度网盘的下载地址,后台回复想要安装的软件名字,就会有详细的安装步骤。

Part 2. 克隆项目

一.关于GitHub的申请

(1)在 https://github.com/join 这个网址处申请注册一个 Github 账号

(2)申请成功以后,登录进入GitHub

(3)登录完成界面。

 二.克隆项目到自己的仓库

(1)输入阿超仓库的网址 https://github.com/ChildishChange/Calculator

(2)点击右上角的 Fork ,将阿超的四则运算库拷贝到自己的同名仓库中,如下图所示:

注意:由于班级的特殊要求,因此仓库发生了变化,班级仓库地址 https://github.com/Cherish599/AchaoCalculator(具体步骤和上面是一样的)

三.Git安装以及与Visual Studio2017共同配合使用

(1)在自己的电脑上安装 Git 软件,Git 的安装教程在这里

(2)在 我的电脑 中任意找一个目录,打开 Git 命令行软件(Windows上可在空白处右键打开 Git Bash ),输入 git clone <clone url> ,其中 <clone url> 即我们刚刚复制的项目地址。(这里 https://github.com/microwangwei/AchaoCalculator.git 就是我们 Fork 后仓库的地址):

(3)进入刚刚下好的项目,然后按照班级要求新建了一个文件夹以GitHub账号命名。

(4)以 Github 账号命名的文件夹作为项目目录,打开 VS2017(我的是最新版2019的),点击左上角的 文件 -> 新建 -> 项目 ,如下图所示,选择 Visual C#中的 控制台应用程序 。注意更改 位置 参数到刚刚新建的文件夹所在的路径。比如我的账户名为 microwangwei ,刚刚新建的文件夹路径为E:\GitHub project\AchaoCalculator\microwangwei,解决方案的名称也可以是 Calculator ,自定义即可。

(5)新建项目后会出现一些默认的头文件。找到与解决方案同名的文件,比如解决方案为 ConsoleApplication1 ,那么会有一个名叫 ConsoleApplication1.cpp 的文件。将 src 目录下 Calculator.cpp 文件的内容拷贝到该文件中。右键点击 头文件 ,新建一个头文件,修改名称为 Calculator.h ,并将 src 目录下 Calculator.h 文件的内容拷贝到新的头文件中。此时,右键点击 Calculator解决方案,选择 编译解决方案,成功后点击  即可运行,示意图如下:

(6)提交

注:该项参考博客地址 https://www.cnblogs.com/ChildishChange/p/10398212.html (具体内容可以到大佬的博客中查看)

对于Github平台有疑问的,可以在 http://github.com/help 找到解决方案。

注意:本次实验过程中代码的提交采用GitHub提交方式,未采用Git命令提交。

这里附上部分四则运算代码(写的比较简陋,但是目前只能做到这么多):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Calculator
{
class Program
{
static void Main(string[] args)
{
Console.Write("Please input how many question you want:");
int n = int.Parse(Console.ReadLine());
string[] s1 = { "+", "-", "*", "/" };
string[] s2 = { "*", "/" };
for (int i = 0; i < n;)
{
Random B= new Random(Guid.NewGuid().GetHashCode());
Random A = new Random(Guid.NewGuid().GetHashCode());
double a = A.Next(0, 100);
double b = A.Next(0, 100);
double c = A.Next(0, 100);
int x = B.Next(0, 2);
int y = B.Next(0, 4);
double sum = 0;
switch (x)
{
case 0:
sum = a * b;
break;
case 1:
sum = a / b;
break; }
if (sum == (int)sum)
{
switch (y)
{
case 0:
sum = sum + c;
break;
case 1:
sum = sum - c;
break;
case 2:
sum = sum * c;
break;
case 3:
sum = sum / c;
break;
} if (sum == (int)sum&&sum>=0&&sum<=10000)
{
Console.WriteLine(a + s2[x] + b + s1[y] + c + "=" + sum);
i++;
} }
}
Console.ReadKey();
}
}
}

运行效果截图

Part 3. 单元测试

《构建之法》一书中单元测试这章节提到了一个合格的单元测试应满足的条件

·单元测试应该满足在最基本功能/参数上验证程序的正确性

·单元测试过后,机器状态保持不变

·单元测试应该产生可重复、一致的结果

·单元测试应该覆盖所有的代码路径

·单元测试应该集成到自动测试的框架当中

·单元测试必须和产品代码一起保存和维护

要想在 VS20179里对 C# 项目进行单元测试,首先要新建一个测试项目。右键单击解决方案,可以添加一个新建项目,在类型里选择 单元测试,我们这里新建了一个名为 CalculatorUnitTest 的单元测试项目。

接着右键点击测试项目选择属性

然后更改一些配置、依赖,添加一些东西,即可完成

问题:当我把上面的步骤写完之后发现没有配置属性等选项,查看百度还有博客后发现,那是c++里面的,c#中没有。但是c#可以直接右键单击创建单元测试,因此,可以通过单独创建来检验,但是发现在右键选项中没有,查阅资料找到方法

点击工具---->自定义

然后选择命令——>上下文菜单,然后点击tfs选择编辑上下文|代码窗口

把创建单元测试的选项,上移到运行测试附近,这样就可以看到创建单元测试选项了

创建单元测试选项,测试代码

最后编写测试代码,验证代码是否编写成功,得出验证代码运行成功

Part 4. 基本操作

下面为大家演示一些这个IDE集成开发环境的一些基本操作

1.断点以及单步执行

右键设置断点

单机Windows解决方案,运行查看效果

设置监视哨,可以单步执行,查看变量值得变化

2.反汇编代码查看

设置断点运行程序,右键选项反汇编

查看反汇编的代码,更容易理解代码的执行过程,也可以在内存中查看某个变量的地址和值(以16进制显示)

Part 5. 回归测试

本人理解的回归测试,就是当对一个系统或者软件更新升级或者添加新功能后,重新测试代码。为了验证是否引入了新的错误,或者版本升级后是否出现一些代码、功能无法实现的情况。

百度百科解释回归测试为: (具体内容参加百度百科:回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
 

Part 6. 效能工具介绍

一.效能分析概念

效能分析:让程序跑得又快又好

意义:在一个程序中,优化一些耗费量大的代码,可以让软件的性能得到更好的优化

工具:Visual Studio 2019

分析方法

1.抽样法

当程序运行时,IDE工具记录程序的运行情况,输出程序运行时间的分布情况

2.注入代码

将检测的代码插入到每一个函数中,记录程序的一举一动,精确的测量程序的各个效能数据

二.工具介绍

1.点击顶部分析,可以看到性能查探器

2.选择CPU使用率

分析完成(由于四则运算这个程序代码较少,所以观察到的比较简单,当有1000000行需要进行分析的数据之后,运行几十秒后,数据会更直观地体现在上面)

一开始也是没能成功,经查看原来是少安装了一个组件,安上之后重启,Windows诊断成功

Part 7. 提交代码

1.首先找到代码所在的文件夹,和GitHub仓库所在的本地位置

然后把自己的代码放入仓库中

打开GitHub desktop选择需要上传的文件夹

登录查看是否上传成功

在仓库里面发现上传的文件,上传代码成功

最后,我想要说在整个环境的安装和配置过程中,遇到了很多问题,有的上网查了,有的问了同学,参考了被人的博客是如何解决这个问题的,出现了很多问题,就算是同样的操作也会由于电脑或者软件一些不同的环境导致不同的结果。

但是遇到这些问题,在解决的过程我也学到了很多知识,也看到了很多人写的博客,我现在的博客和他们的差距还是很大的,不管是从描述操作还是在代码编写上。也有点学会了GitHub的使用。

还是要多看看大佬的博客,多实际动手操作,不然连Hello World都快要写不出来了。

《构建之法》——GitHub和Visual Studio的基础使用的更多相关文章

  1. 通过TortoiseGit来使用Github或Visual Studio Online版本控制管理

    一.前言 关于Git源码不再多阐述,它就是一款开源分布式版本控制工具,它在源码管理领土上目前为止,使用者比例很大,越来越多的人使用该工具来管理项目源码,且相当多的开源的项目都移步到Github中,如: ...

  2. GitHub for Visual Studio使用讲解

    从VS2015起(应该是吧?),微软已经在VS中集成了GitHub,方便开发者对项目进行版本控制. 扩展包下载地址:https://aka.ms/ghfvs 其实VS2015的安装包中已经自带了这个扩 ...

  3. GitHub在Visual Studio 2015中获得TFS/VSO同等地位

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 在Visual Studio 2015中微软为GitHub提供了扩展插件,从而让GitHub ...

  4. 博客搬家到 http://fresky.github.io/ - Visual Studio的插件Pdbproj可以把pdb转换成C++项目

    博客搬到了Dawei XU,请各位看官挪步.最新的一篇是:Visual Studio的插件Pdbproj可以把pdb转换成C++项目.

  5. Visual Studio插件开发基础

    Visual Studio插件主要有两种:Add-in 和 VSX(Visual Studio eXtensibility) 两者区别可参考这篇文章:Visual Studio Extensions ...

  6. 使用git版本控制器C#工程,git托管到GitHub和visual studio on line

    类比TFS, 托管到了VS online,为私有.GitHub上托管的代码为开源. 新建工程选择版本控制器"Git" VS online: 本地: GitHub,下载github ...

  7. 使用Visual Studio Team Services持续集成(四)——使用构建运行测试

    使用Visual Studio Team Services持续集成(四)--使用构建运行测试 使用构建来运行测试来验证集成是一个很好的实践. MyHealth.API.IntegrationTests ...

  8. 使用Visual Studio Team Services进行压力和性能测试(一)——创建基础的URL压力测试

    使用Visual Studio Team Services进行压力和性能测试(一)--创建基础的URL压力测试 概述 压力测试使应用程序更加健壮,并审核在用户负载下的行为,这样我们可以在当前的基础设施 ...

  9. Visual Studio 2017版本15.9现在可用

    本文转自 https://blogs.msdn.microsoft.com/visualstudio/2018/11/19/visual-studio-2017-version-15-9-now-av ...

随机推荐

  1. 43、内置函数及每日uv、销售额统计案例

    一.spark1.5内置函数 在Spark 1.5.x版本,增加了一系列内置函数到DataFrame API中,并且实现了code-generation的优化.与普通的函数不同,DataFrame的函 ...

  2. (33)Vue购物车

    computed:{ lists(){ return this.$store.state.list }, }, 用v-model来双向绑定input控制checkbox是否选中 Vue中双向数据绑定是 ...

  3. js 中的方法注入(aop)

    js 中的方法注入 java中很多框架支持 apo 的注入, js中也可以类似的进行实现 主要是通过扩展js中方法的老祖 Function 对象来进行实现. Function.prototype.af ...

  4. hive(2)数据类型和文件格式

    基本的数据类型 Hive支持关系型数据中大多数基本的数据类型,同时也支持关系型数据库中很少出现的三种集合数据类型. 集合数据类型 Hive中的列支持使用struct.map.array集合数据类型,下 ...

  5. abp zero bug

    web host 项目中ChatController GetUploadedObject 使用:using (CurrentUnitOfWork.SetTenantId(null)) 图片刷新出错,改 ...

  6. java 静态数组 和非静态数组的区别

    区别:1,数组创建时间不同,静态的是一定义出来就创建了,动态的则是定义时不创建,使用时才创建,一定意义上节省了内存空间.2,使用场景不同,一开始就知道数组长度的使用静态初始化,反之,动态初始化. 静态 ...

  7. SetThreadAffinityMask windows下绑定线程(进程)到指定的CPU核心

    原帖地址:https://www.cnblogs.com/lvdongjie/p/4476766.html 一个程序指定到单独一个CPU上运行会比不指定CPU运行时快.这中间主要有两个原因:1)CPU ...

  8. 基于CentOS7系统添加自定义脚本服务及参数说明【转】

    概述 centos6如果要添加自定义脚本服务只需要把脚本放到/etc/init.d然后授权后用chkconfig添加后就可以管理了,那么centos7又是怎么添加自定义脚本服务呢? CentOS7添加 ...

  9. [root@offical nginx]# nginx -t nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_geoip_module.so" version 1012002 instead of 1016001 in /usr/share/nginx/modules/mod-http-geoip.conf:1 nginx: con

    [root@offical nginx]# nginx -tnginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_geoip_mo ...

  10. JEECG hibernate.hbm2ddl.auto

    配置hibernate根据实体类自动建表功能 - lixuyuan的专栏 - CSDN博客https://blog.csdn.net/lixuyuan/article/details/8057119 ...