这是软件工程的第一次作业!但由于我们python还没入门,所以这次的要求是‘语言不限’。

  小学期做过一个关于MFC的‘资金管理系统’,也正好可以有界面,所以就选择了自己很熟悉的MFC来做这个作业!

1.题目简介

  花20分钟写一个能自动生成小学四则运算题目的“软件”,要求:除了整数以外,还要支持真分数的四则运算。将代码上传至coding.net,并将地址发布至自己的博客。

2.题目分析

  软件要求是自动生成小学生四则运算题目!既然这样,我首先想到了,四则运算对吧!

  那四则运算也分为  四则混合运算(即生成加减乘除的一个等式!例如:2*3+6*9,2/3+9 等等之类的)【这种的特点是操作数不确定】   和    普通的已经确定了操作数的四则运算【这种的特点是操作数定,操作数之间的符号(+,-,*,/)可以随机生成】 。

  刚开始一直以为是第一种思路呢,这样在不知道操作数是几个的情况下,要写成这个东西还真是有些困难呐!

  后来仔细阅读了课后的要求发现是第二种思路,顿时放心了许多呢

3.界面展示

  

  我自己写的就一个‘双目运算’,他的下面又包括两个部分:整形四则运算和分数四则运算。

  这个是点整形四则运算之后的截图:

  

  可以看出,它实现的功能有:开始生成,判断正误,核对答案,查看练习结果。【这里需要解释的是,每个白色框框上面改的‘cstring f’,'e int '的含义,这些是对应的‘edit control’框控制的变量的名字和类型,怕自已之后遗忘,所以就用一个‘静态文本框’存下来,显示出来了】

  

  这个是分数部分的截图,和整数部分长的一样,连功能就相同,那有疑问了——为啥要这么费劲,直接整一个框不就行了嘛??!

  针对这个问题的答案有二

    1.如果混合起来的话,那如果小学生想要只做整数的题呢?那样的程序实现不了

    2.这样分开的话,优点还有‘比如以后要增加新的功能了’,我的这个里面还可以加界面,那混合的岂不是就不能用了嘛!所以考虑到以后(虽然有可能以后就换语言写了,单考虑到中不是坏事吧!),用了这种方式。

4.难点分析

    难点啊!刚开始就遇到了不小的问题!

    a)我只会写只有一个框的,怎么样才能实现选择呢??

      怎么说吧,这个问题困扰了我将近三个小时,我上网收资料,去图书馆找有关MFC的书看,但都没有进展!!!一直找不到来着!【信息检索能力就是不行呐】

      后来,后来,真正取得突破性进展的还是因为一份PPT!!

      

      这份PPT不是我做的,确恰恰解决我的疑惑!我就是这点不会啊!看了这份PPT之后,不由得发出感慨‘天无绝人之路’!!

5.具体实现

  这个分为两部分,整数和分数!

  怎么说呢,分数部分要考虑的东西比整数的多!

    整数需要考虑的是:随机生成两个数,随机生成符号,还有各种按钮的共能等等。

    而分数需要考虑的是:首先需要注意的是,分数的加减乘除运算本身就比整数要难,还需要考虑到每次随机生成的分数都是真分数,并且加减乘除的结果还要求是一个最简分数,所以每一次运算后都要化简约分。那么,譬如:结果是‘1/1’。分母是一的情况,也要单独考虑等等。

    但我这里重点说解释一个整数:

    

    使用说明: 1,3框是两个操作数;  2框是要执行的操作;  4框是输入框,需要手动输入答案;

    开始执行时候,先点击‘开始生成’按钮,之后每一次点击都会重新生成数据。      之后,输入自己的结果,可以点击判断正误,或者核对答案!      最后,练习结束之后,可以查看自己的分数【一题一分制】以及正答率(正答率使用百分数表示的)等等

6.代码的链接

  整个程序的可执行文件(.exe):https://coding.net/s/8f34eca0-beec-4686-8caf-9429f45ac45b

  整个项目的链接(.rar):https://coding.net/s/4ebe9f1a-3617-4a94-9f7a-51a6a0b7a566

 我疏忽了,谢谢一位同学的提醒! 原来Coding上的链接直接放上来是访问不到的,必须要把文件设置成要分享的格式才行。上面链接已可以正常运行

软工的其他作业,请参见另一篇博客:http://www.cnblogs.com/inuyasha1314/p/8628692.html

使用MFC做一个简单的‘能自动生成小学生四则运算的软件’的更多相关文章

  1. 一个简单的加减乘除自动生成小程序升级版(JAVA)

    import java.util.Scanner; public class Suan { public static void main(String[] args) { int []b;//设置数 ...

  2. js/html/css做一个简单的图片自动(auto)轮播效果//带注释

    FF(firefox)/chrom/ie稳定暂无bug...注意:请自己建立一个images文件,放入几张900*238的图片(注意图片格式和名字与程序中一致). 1. [图片] 1.JPG 2. [ ...

  3. 一个简单的加减乘除自动生成小程序(JAVA)

    在学习软件工程的时候,遇到一个这样的问题,一个程序员的儿子上小学二年级,老师让家长每天出30道加减题目给学生做,由于家长是个程序员,所以呢,他就自己写了个程序实现,我们可爱的老师于是也叫我们写了一个类 ...

  4. 使用React并做一个简单的to-do-list

    1. 前言 说到React,我从一年之前就开始试着了解并且看了相关的入门教程,而且还买过一本<React:引领未来的用户界面开发框架 >拜读.React的轻量组件化的思想及其virtual ...

  5. 【 D3.js 入门系列 --- 3 】 做一个简单的图表!

    前面说了几节,都是对文字进行处理,这一节中将用 D3.js 做一个简单的柱形图. 做柱形图有很多种方法,比如用 HTML 的 div 标签,或用 svg . 推荐用 SVG 来做各种图形.SVG 意为 ...

  6. Jmeter初步使用二--使用jmeter做一个简单的性能测试

    经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍 ...

  7. 用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。

    最近学习了MFC一些比较基础的知识,所以打算通过做一个简单的数字游戏来理解MFC的流程并进一步熟悉其操作. 在这里,我做了一个猜数字的小游戏.第一步当然是设计主界面,先给大家展示一下游戏界面: 主界面 ...

  8. 【 D3.js 入门系列 — 3 】 做一个简单的图表!

    图1. 柱形图 1. 柱形图 前几章的例子,都是对文字进行处理.本章中将用 D3 做一个简单的柱形图.制作柱形图有很多种方法,比如用 HTML 的 <div> 标签,或在 SVG 上绘制 ...

  9. Windows Phone开发(21):做一个简单的绘图板

    原文:Windows Phone开发(21):做一个简单的绘图板 其实我们今天要说的就是一个控件--InkPresenter,这个控件并不是十分强大,没办法和WPF中的InkCanvas相比,估计在实 ...

随机推荐

  1. [转载]JavaScript异步编程助手:Promise模式

    http://www.csdn.net/article/2013-08-12/2816527-JavaScript-Promise http://www.cnblogs.com/hustskyking ...

  2. [整理]x=x++和x=++x

    最近看java面试题,再次遇到x=x++,之前一直按照C语言中对自增运算符++的解释去理解.殊不知自己犯了严重的错误. (1)不同的语言的编译器,会导致相同的代码最终执行的结果不确定; (2)而且就算 ...

  3. 用phpStorm的数据库工具来管理你的数据库

    phpStorm是一个功能强大的IDE,不仅对PHP提供了支持,而且对前端HTML.CSS.JavaScript的支持也是非常不错的.此外,phpStorm还集成了很多实用的功能,下面就phpStor ...

  4. Linux 网络操作

    Linux 基础网路操作  ifconfig eth0 down # 禁用网卡 ifconfig eth0 up # 启用网卡 ifup eth0: # 启用网卡 mii-tool em1 # 查看网 ...

  5. windows常用设置

    1.截图   A.QQ打开,ctrl + Alt + A   B. cmd 输入  截图工具 2.录制windows操作步骤    命令行输入:psr.exe

  6. 关联查询resultMap使用规则总结——(十一)

    resultType: 作用: 将查询结果按照sql列名pojo属性名一致性映射到pojo中. 场合: 常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用re ...

  7. VMware下centos桥接模式静态ip配置

    声明:本文转载自http://blog.csdn.net/ltr15036900300/article/details/48828207,非原创. 一.配置虚拟机centos网络 备份网络文件 [ro ...

  8. (maven项目)使用java -jar命令遇到的小问题|xx.jar中没有主清单或Error:Invalid or corrupt jarfile xx.jar

    xx.jar中没有主清单或Error:Invalid or corrupt jarfile xx.jar 遇到这个问题,是因为你的jar包没有设置主类的入口. 即在META-INF文件夹的MANIFE ...

  9. Eclipse的git插件冲突合并方法

    Eclipse有一个git的插件叫EGit,用于实现本地代码和远程代码对比.合并以及提交.但是在本地代码和远程代码有冲突的时候,EGit的处理方案还是有点复杂.今天就彻底把这些步骤给理清楚,并公开让一 ...

  10. kafka脚本

    为了便于使用,kafka提供了比较强大的Tools,把经常需要使用的整理一下 开关kafka Server bin/kafka-server-start.sh config/server.proper ...