Git地址 我的Git
Git用户名 dwyy666
学号后五位 62307
博客地址 我的博客
作业链接 个人第2次作业:熟悉使用工具

作业背景简介

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

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

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

    练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。当程序接收的参数为4时,以下为一个输出文件示例。

    13+17-1=2911*15-5=1603+10+4-16=115÷5+3-2=4

Part1、配置环境

   1. VS2017安装与配置

     由于之前的学习过程中已经安装过VS2017,这里就不再展示安装过程,除了安装比较耗时之外(它太庞大了),安装起来应该没有什么难度。

   2. Git安装

     由于之前没有操作过Git,所以每一步都是走的小心翼翼,参考ChildishChange助教的教程一步步操作。没想到,上来就遇到了让我抓狂的问题!!在下载Git的时候,从官网给定的链接下载巨慢,而且还下载失败!!在这里耽误了很久很久,最后通过面向百度解决问题,终于找到一种可行的办法。

     即通过浏览器f12查看网页源代码,找到下载链接网址,直接复制网址到迅雷新建下载任务,十秒钟搞定!接下来就傻瓜式安装疯狂next就完事儿了!Git安装成功!

   3. Github项目克隆

    虽然之前使用过Github,但是仅限于在上面学习前辈的代码,从没使用Github的仓库上传代码,所以,这次就体验了代码仓库的拷贝以及代码上传管理。首先,进入阿超的仓库,点击右上角的Fork,将阿超的四则运算库拷贝到自己的同名仓库,如下图所示

    可以看到,自己也拥有了一个同名仓库

    再利用Git将项目克隆到本地,在这里最好是在一个新目录下创建一个文件夹

    体验完从Github上克隆项目,就准备开始新建自己的项目吧!

Part2、代码设计

  • 大概思路:产生随机数,拼接算式,打印文件

  • 首先创建一个getNum类,来产生随机数,这里需要产生四组随机数,两组作为数值,一组作为运算符数组的标记下标,一组作为运算符个数。

      private static char[] size = { '+', '-', '*', '/' };public string getnum(){int x, y, z, t;Random random = new Random();z = random.Next(2, 4);//作为随机运算符个数string str;x = random.Next(0, 100);//作为随机数值str = Convert.ToString(x);for (int i = 0; i < z; i++){t = random.Next(0, 4);//作为随机运算符下标y = random.Next(0, 100);str += size[t] + Convert.ToString(y);//拼接字符串System.Threading.Thread.Sleep(50);//由于时间间隔太短,需要设置程序睡眠}return str;}
  • 然后创建一个写入文件writeFile类,调用StreamWriter方法,在这里加入一个容错判断机制,如果成功,则写入文件,否则写入失败。

      public void writefile(string str){try{StreamWriter sw = new StreamWriter("e:\\test.txt", true);sw.WriteLine(str);sw.Close();}catch (Exception e){Console.WriteLine("文件写入失败!");}  }
  • 最后写的是调用方法主函数,在这里判断除数为0以及结果为负数的时候,重新生成

      //如果结果含有小数点,或者表达式中有除以0,或者结果为负数则再次获取一个计算式if (result.ToString().Contains(".") || str.Contains("/0") || int.Parse(result.ToString()) < 0)continue;
  • 运行结果如图所示

Part3、单元测试

  • 首先创建一个单元测试项目,通过在现在项目的解决方案右键—>添加—>新建项目选择单元测试项目。如图

  • 在单元测试项目里,还需要添加对被测试项目的引用

  • 在这里通过学习书上内容,需要将所有的类写成public共有类,才可以进行单元测试
  • 开始测试,如图

Part4、断点调试及回归测试

   1. 断点调试

  • 设断点调程序应该是从我们开始编程就在使用了,刚开始可能用的编译器是vc++,后面到vs2017,这里就不得不提vs2017这个IDE,虽然他非常庞大,但是整体的使用体验真的很棒!断点调试功能非常强大(稍微感慨了一下,言归正传)
  • 首先设置起始断点,在对应代码行左边栏轻轻一点,断点就设置好了!可以选择快捷键F5进入调试界面,如图

  • 下一步,根据逻辑可以选择逐语句、逐过程进行调试

  • 这里还可以调出很多监视器,可以查看内存、cpu使用、监视变量等等

   2.回归测试

  • 回归测试是一种系统范围的测试,旨在确保系统某个部分的微小变化不会破坏系统中其他地方的现有功能。这很重要,因为没有回归测试,很有可能将预期的修复程序引入到一个系统中,这个系统会产生比他们解决的问题更多的问题。——百度

  • 在我看来,就是在单元测试优化程序过后再次进行的单元测试,所以,在我修改完代码之后再次运行单元测试程序,步骤与上文一致,就不再贴图了(贴图好难)

Part5、效能分析

  • VS 自带性能分析工具,可以执行直接在VS中执行书写的项目,也可以追踪生成的可执行文件(需要其它文件,如pdb),两者的操作差不多,主要在执行分析时有点区别。

  • 性能分析首先要执行分析并生成分析报告。VS开始性能分析的快捷键为 ALT+F2,也可以使用菜单工具栏,有两处入口,如下图所示:
  • “分析” -> “性能探查器”

  • 开始分析

  • 诊断报告

  • 这里我们还可以生成详细诊断报告

  • 点击函数,可以查看函数内方法被调用占CPU的效率

Part6、上传代码

  • 首先通过Git输入git add .和git commit -m "魏家田201731062307"命令对本地仓库进行修改,如图

  • 利用git push上传Git hub,在这里需要登录一下Git hub的账号

  • push完之后,登录Git hub账号可以看到我的仓库已经有了刚刚上传的文件,然后我们就可以向源仓库发起Pull Request,如图,上传成功,到这里,阿超的四则运算项目告一段落。

Part7、总结感悟

    终于写完了,说实话,c#有点生涩了。编程测试上传再加写博客,耗费了我所有的课余时间,通宵写代码,开始掉头发??

    收获

    1.再一次锻炼我的心理承受能力,下载Git、程序调不通,尤其是当百度寻求解决办法无解的时候,心态是真的爆炸,不过还好,耐着凌晨3:00实验室空无一人的孤独总算是写完了。

    2.初步了解了程序的测试流程,以及根据测试结果调整代码优化的作用,但是距离熟练利用还需要深入学习,

    3.近一年没写c#了,通过这次学习,又一次加深了对语言理解,不论是java还是c#,思想都是一样的,就是需要一点时间去适应c#和vs,get到了一个非常强大的dataTable.compute()方法,它可以用来计算传递筛选条件的当前行上的给定表达式,免去了手写算法的困难。

转载于:https://www.cnblogs.com/dwyy666/p/11550601.html

世上无难事,只要肯攀登相关推荐

  1. openalyers6.x源码解读-1(世上无难事只要肯放弃)

    openalyers6.x源码解读-1(世上无难事只要肯放弃) 第一步.下载源码 第二步.查找入口文件 第三步.先强行解析一个方法 第三步.Object 第一步.下载源码 源码下载地址 https:/ ...

  2. Keras 世上无难事只要肯放弃(3)

    函数式API指引 Keras函数式API是定义复杂模型(如多输出模型.有向无环图.或具有共享层的模型)的方法. 例一:全连接层 from keras.layers import Input, Dens ...

  3. keras 世上无难事只要肯放弃(2)

    "sample", "batch", "epoch" 分别是什么? 为了正确地使用 Keras,以下是必须了解和理解的一些常见定义: Sam ...

  4. Keras 世上无难事只要肯放弃(1)

    所有的内容都是从Keras中文文档看的 重新打一遍是因为想督促自己 不知道能坚持多久. Keras sequential顺序模型 顺序模型是多个网络层的线性堆栈. from keras.models ...

  5. php是什么博客园,PHP 架构之路 - Richards - 博客园

    PHP 架构之路 - Richards - 博客园 PHP 架构之路 鉴于最近跟小伙伴聊了很多 PHP 架构发展方向的问题, 相关技术整理了一下, 也顺便规划了一下自己的 2019 年. 一. 常用的 ...

  6. PEEKABOO——团队展示

    这个作业属于哪个课程 软件工程实践2022年春-F班 这个作业要求在哪里 软件工程实践团队作业一 这个作业的目标 完成组队.确定选题.ppt制作.团队展示 其他参考文献 CSDN.博客网 目录 一.队 ...

  7. 英语中常见的123个中国习语

    1.爱屋及乌 Love me, love my dog.   2.百闻不如一见 (眼见为实 )Seeing is believing. 3.比上不足比下有余 worse off than some, ...

  8. 王瑜琪:数据科学助力我捕捉研究生教育的宏观效应 | 提升之路系列

    导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的"π"型人才,由清华大学研究生院.清华大学大数据研究中心及相关院系共 ...

  9. 一个人,开始变得优秀,就会渐渐地从这些圈子消失了

    推荐一篇励志文章<一个人,开始变得优秀,就会渐渐地从这些圈子消失了>,作者冰封洋  情感达人,优质原创作者 人,没有无缘无故的改变,所有的改变,都是蓄谋已久. 谁都想获得成长,谁都想获得成 ...

最新文章

  1. 二维指针删除单向链表
  2. QIIME 2教程. 23图形界面q2studio(2021.2)
  3. 手把手教你安装VMtools
  4. c语言怎么定义一个条件变量,C++ 条件变量(condition_variable)
  5. spring aop如何在切面类中获取切入点相关方法的参数、方法名、返回值、异常等信息
  6. 数据库设计方法、规范和技巧
  7. 尚学堂马士兵Oracle教程笔记
  8. 《认识我们人类自己》江湖一剑客
  9. 学习方法-北大学霸(01)学习方法基础
  10. LeetCode刷题小技巧-错题记录本-C++版本
  11. linux进程3种状态,进程的三种状态及转换
  12. 《基于卷积神经网络(CNN)的网络流量分类》优秀本科毕设实验总结
  13. STM8S编译错误unable to allocate space for sections/blocks with a total
  14. php源码之路第一章(环境配置及常用代码)
  15. 区块链在个性化推荐系统中的应用研究综述
  16. 吹响重型战争号角:美国的基建支持计划会带动技术升级吗?
  17. esp32-s2 wifi
  18. 同盾李晓林:打造互联互通机制,化解数据安全保护与数据共享矛盾
  19. 【单片机】单片机课程设计(测温打铃)附完整代码和电路图
  20. Qimage颜色显示反色总结

热门文章

  1. 数组子序列累加和求余数之后的最大值问题详解
  2. ios的qq分享接入流程
  3. 逻辑Flask——Flask模板
  4. 愿家乡的教育走出一片新天地!
  5. python学习笔记 存储爬到的数据
  6. 如何查询网页游戏服务器记录,如何查询网页游戏服务器记录
  7. 璀璨之蓝“引爆”全场 讯飞录音笔SR502宝石蓝科技感爆棚
  8. int 字节在32位 64位系统的区别
  9. 微软亚洲研究院电话面试
  10. PCB设计中的MARK点,你知道怎么放?