第二次作业
GIT地址 https://github.com/Lobooi//AchaoCalculator
GIT用户名 Lobooi
学号后五位 24235
博客地址 https://home.cnblogs.com/u/lobooi/
作业链接 https://www.cnblogs.com/lobooi/p/11541450.html

作业内容

1. git与VS2013安装配置

git: 修改了安装路径,其他默认。

VS2013: 以前安装好的,支持C#。

2. GitHub项目克隆

1.首先克隆项目到自己GitHub仓库,结果:Lobooi/AchaoCalculator

2.建立新文件夹,使用Git Bash Here输入:git clone https://github.com/Lobooi/AchaoCalculator.git 将项目克隆到本地。(注意:复制链接到Git Bash Here,使用 insert 键)

3.代码编写与测试:

1.小五的简单四则运算编写:主要思路是随机产生规定数量题目和运算数字以及运算符,并组合在一起,同时保留记录答案以便查看。产生题目专门设计出一个SiZeYuanSuan类,这里是代码:(代码进行了修改,并已经更新,处理了减法结果会出现负数的情况。)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; //xiaowu 简单四则运算 namespace Calculator
{
public class SiZeYuanSuan
{
int num_g, num_f;
double[] Result;
Random rdm = new Random();
//构造函数,传值
public SiZeYuanSuan(int num_g, int num_f)
{
this.num_g = num_g;
this.num_f = num_f;
Result = new double[num_g];
}
//产出随机运算
public void YunSuanSC()
{
for (int i = 0; i < num_g; i++)
{
int a = rdm.Next(num_f) + 1;//生成第一个数
int b = rdm.Next(num_f) + 1;//生成第二个数
char f = YunSuanFu();//取出运算符
//打印题目
//Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b);修改前的语句 if (f == '+')
{
Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b);
Result[i] = a + b;
}
else if (f == '-')
{
if(a<b) {a=a+b;b=a-b;a=a-b; } //交换a-b,确保不会出现负数
Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b);
Result[i] = a - b;
}
else if (f == '*')
{
Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b);
Result[i] = a * b;
}
else
{
Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b);
Result[i] = Math.Round(Convert.ToDouble(a) / b, 3);
} }
}
//产出随机运算符
char YunSuanFu()
{
int k = rdm.Next(4);
char fu = '+';
switch (k)
{
case 0: fu = '+';break;
case 1: fu = '-';break;
case 2: fu = '*';break;
case 3: fu = '/';break;
}
// Console.WriteLine(fu);
return fu;
}
//查看答案
public void SeeResult()
{
foreach (double i in Result)
{
Console.WriteLine(i.ToString());
}
}

然后再通过main来创建SiZeYuanSuan对象调用方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; //xiaowu 简单四则运算 namespace Calculator
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入题目个数:");
int num_g = int.Parse(Console.ReadLine());//确定题目个数 Console.WriteLine("请输入运算数字范围:");
int num_f = int.Parse(Console.ReadLine());//运算范围 SiZeYuanSuan YS = new SiZeYuanSuan(num_g, num_f);
YS.YunSuanSC(); Console.WriteLine("是否查看答案(YorN):");
char See = char.Parse(Console.ReadLine());
if (See == 'Y' || See == 'y')
{
Console.WriteLine("答案如下");
YS.SeeResult();
}
else
{
Console.WriteLine("感谢使用!");
}
string str = Console.ReadLine();
}
}
}

实际上,第一次编译未通过,问题在于产出随机运算符时,所定义的char fu; 需要初始化。

2.代码测试: 首先,基于最开始的代码,检查错误之后,我又进行了,逐语句的调试,来检查每个随机产生的值,以及调用情况,并同时进行了代码优化,结果如图:



优化情况主要是,对除法运算的结果进行优化,将范围控制在小数点后三位,对结果的存储IF语句进行优化,以及输出答案的循环for进行了修改。

下面是对功能的单元测试:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Calculator; namespace CalculatorTest
{
[TestClass]
public class YuanSuanTest
{
[TestMethod]
public void TestMethod1()
{
int[] a = { 11, 46, 23, 48, 92, };//测试题目数
int[] b = { 122, 530, 462, 799, 1500};//测试计算数范围 SiZeYuanSuan YStest;//引用测试对象
//测试循环
for (int i = 0; i < 5; i++)
{
YStest = new SiZeYuanSuan(a[i],b[i]);
if (YStest.Result.Length == a[i]) { Console.WriteLine("通过!"); }
else Console.WriteLine("不通过!");
} }
}
}

结果是正确的,如图:



实际上来说,写单元测试的过程并不复杂,但由于采用的代码写法,使得单元测试有些困难,所以,我也有进行手动的测试(比如上面的逐语句调试,之后的,手动输入等)。

下面进行能效分析:

预测一下应该是产生题目的for循环耗时最多,看图:



好吧,看样子是在输入输出耗时高,不过也可能出的题太少了,再来一次:



这下就明显了,上一次测试为20题1-200数范围,这一次是50000(五万)题1-999999(一百万)数范围,效果明显,还挺好玩……

4.GIT项目上传:

在之前克隆的文件夹下,右键打开Git Bash Here,输入一系列命令(参考:CKTim的博客-Git使用



然后会有登陆框(没弹出就注意看下面任务栏),然后登陆,就OK了。(补充一下:还需要到GitHub仓库里去new pull request,到班级仓库。)

总结感悟:

总的来说,从一头雾水,到大概知道,到了解使用,再到理解。只想说一句:我太难了~

自学是真的麻烦和难以理解,没有人带领的话,就会就更小心翼翼,但好在,现在网络给力,有问题只要耐心查询总能解决,这里感谢各位大佬的博客。

结论:基本掌握了项目从GitHub到本地再到GitHub的过程,和一些代码的的测试能力,over~

Lobooi第二次作业:熟悉使用工具的更多相关文章

  1. 第二次作业&熟悉使用工具

     GIT地址  我的地址  GIT用户名  995020892w  学号后五位  81105  博客地址  我的博客  作业链接  第二次作业 一.环境配置过程 安装vs2017 因为以前学习C#相关 ...

  2. 第二次作业-熟悉git

    GIT地址 https://github.com/gentlemanzq/yunsuanhomework GIT用户名  gentlemanzq 学号后五位  62320 博客地址 https://w ...

  3. 20169212《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...

  4. 软件工程(QLGY2015)第二次作业点评(随机挑选20组点评)

    相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 说明:随机挑选20组点评,大家可以看看blog名字,github项目名字,看看那种是更好的,可以学习,每个小组都会反应出一些问题,希望能 ...

  5. 软件工程(GZSD2015)第二次作业小结

    第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...

  6. OO第二单元作业小结

    前言 转眼已是第九周,第二单元的电梯系列作业已经结束,终于体验了一番多线程电梯之旅. 第一次作业是单电梯的傻瓜调度,虽然是第一次写多线程,但在课程PPT的指引下,写起来还是非常容易:第二次作业是单电梯 ...

  7. 软件工程(GZSD2015) 第二次作业小结

    第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...

  8. OO第二单元作业总结【自我反思与审视】

    第二单元作业的完成史,就是一部心酸的血泪史…… 多线程的出现为我(们)打开一片广阔的天地,我也在这方天地摸爬滚打,不断成长!如果说第一单元之前还对Java语法有所了解的话,那么这单元学习多线程则完全是 ...

  9. 《Coderxiaoban团队》第二次作业:团队项目选题报告

    <Coderxiaoban团队>第二次作业:团队项目选题报告 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验六 团队作业2:团队项目选题 团队名称 Co ...

随机推荐

  1. python简单小程序

    #足球队寻找10 到12岁的小女孩(包含10岁和12岁),编写程序询问用户性别和年龄,然后显示一条消息指出这个人是否可以加入球队,询问10次,输出满足条件的总人数#询问10次,输出满足要求的总人数 o ...

  2. 24.configparser&hashlib

    转载:https://www.cnblogs.com/yuanchenqi/article/5732581.html configparser 来看一个好多软件的常见文档格式如下: [DEFAULT] ...

  3. 计算机专业如何高质量的走完大学四年?毕业成为Offer收割机

    前言:迷茫本就是青春该有的模样,但不要让未来的你讨厌现在的自己. "就要毕业了. 回头看自己所谓的大学生活, 我想哭,不是因为离别,而是因为什么都没学到. 我不知,简历该怎么写,若是以往我会 ...

  4. 洛谷$P$3301 $[SDOI2013]$方程 $exLucas$+容斥

    正解:$exLucas$+容斥 解题报告: 传送门! 在做了一定的容斥的题之后再看到这种题自然而然就应该想到容斥,,,? 没错这题确实就是容斥,和这题有点儿像 注意下的是这里的大于和小于条件处理方式不 ...

  5. 使用ASP.NET Core 3.x 构建 RESTful API - 4.3 HTTP 方法的安全性和幂等性

    什么样的HTTP方法是安全的? 如果一个方法不会该表资源的表述,那么这个方法就被认为是安全的. 例如 HTTP GET 和 HTTP HEAD 就被认为是安全的,但需要注意的是,这并不意味着执行GET ...

  6. DNS服务器红帽5.4搭建图文教程!!!

    DNS服务器 挂载光盘 mount 查看光盘所在位置 mount -t iso9660 设备目录 /mnt 表示挂载 软件包安装 所有软件包都在Server目录下 rpm -ivh /mnt/Serv ...

  7. JVM之GC(一)

    Java较C而言,最大的区别在于内存管理.JVM设有无用内存空间自动回收复用机制,也就是我们所说的GC. 之前说过,栈是为线程.为函数的执行分配内存的地方,用完即“销毁”,这里留待以后做深入探讨:堆是 ...

  8. ASP.NET Core Web程序托管到Windows 服务

    前言 在 .NET Core 3.1和WorkerServices构建Windows服务 我们也看到了,如何将workerservices构建成服务,那么本篇文章我们再来看看如何将web应用程序托管到 ...

  9. nor flash之写保护

    背景 没有电池的嵌入式设备,很容易发生随机掉电.因此要让产品可靠稳定,就必须保证各种场景下的掉电安全. 例如系统更新过程随机掉电,不能导致系统无法启动.例如正常读写flash过程中掉电,最多正在传输的 ...

  10. 【Java基础总结】多线程

    1. 实现多线程的两种方式 //第一种:继承Thread类,重写run()方法 class ThreadTest1 extends Thread{ public void run(){ String ...