使用MFC做一个简单的‘能自动生成小学生四则运算的软件’
这是软件工程的第一次作业!但由于我们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做一个简单的‘能自动生成小学生四则运算的软件’的更多相关文章
- 一个简单的加减乘除自动生成小程序升级版(JAVA)
import java.util.Scanner; public class Suan { public static void main(String[] args) { int []b;//设置数 ...
- js/html/css做一个简单的图片自动(auto)轮播效果//带注释
FF(firefox)/chrom/ie稳定暂无bug...注意:请自己建立一个images文件,放入几张900*238的图片(注意图片格式和名字与程序中一致). 1. [图片] 1.JPG 2. [ ...
- 一个简单的加减乘除自动生成小程序(JAVA)
在学习软件工程的时候,遇到一个这样的问题,一个程序员的儿子上小学二年级,老师让家长每天出30道加减题目给学生做,由于家长是个程序员,所以呢,他就自己写了个程序实现,我们可爱的老师于是也叫我们写了一个类 ...
- 使用React并做一个简单的to-do-list
1. 前言 说到React,我从一年之前就开始试着了解并且看了相关的入门教程,而且还买过一本<React:引领未来的用户界面开发框架 >拜读.React的轻量组件化的思想及其virtual ...
- 【 D3.js 入门系列 --- 3 】 做一个简单的图表!
前面说了几节,都是对文字进行处理,这一节中将用 D3.js 做一个简单的柱形图. 做柱形图有很多种方法,比如用 HTML 的 div 标签,或用 svg . 推荐用 SVG 来做各种图形.SVG 意为 ...
- Jmeter初步使用二--使用jmeter做一个简单的性能测试
经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍 ...
- 用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。
最近学习了MFC一些比较基础的知识,所以打算通过做一个简单的数字游戏来理解MFC的流程并进一步熟悉其操作. 在这里,我做了一个猜数字的小游戏.第一步当然是设计主界面,先给大家展示一下游戏界面: 主界面 ...
- 【 D3.js 入门系列 — 3 】 做一个简单的图表!
图1. 柱形图 1. 柱形图 前几章的例子,都是对文字进行处理.本章中将用 D3 做一个简单的柱形图.制作柱形图有很多种方法,比如用 HTML 的 <div> 标签,或在 SVG 上绘制 ...
- Windows Phone开发(21):做一个简单的绘图板
原文:Windows Phone开发(21):做一个简单的绘图板 其实我们今天要说的就是一个控件--InkPresenter,这个控件并不是十分强大,没办法和WPF中的InkCanvas相比,估计在实 ...
随机推荐
- Java入门系列(六)方法
方法返回多个值 使用集合类 /** * 方法1:使用集合类 (Map以外的集合类也可以随意使用) * 目标:返回一个数组的最大值和最小值 */ public Map<String, Intege ...
- MongoDB-3.4搭建副本集
搭建副本集 1:首先创建3台虚拟机作为配置环境 IP1:192.168.101.175 IP2:192.168.101.176 IP3:192.168.101.177 2.下载MongoDB 3.4版 ...
- php拾遗: 类型约束
突然间什么都不想干,感觉就像来大姨夫一样..但是又不能断了每个工作日都写博客的习惯..所以今天水一下吧. PHP用了快2年了,但是这东西竟然第一次看到,突然间,觉得自己有掉回战五渣的行列了.翻开官方文 ...
- html5 canvas在线文本第二步设置(字体边框)等我全部写完,我会写在页面底部
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 基于canvas将图片转化成字符画
字符画大家一定非常熟悉了,那么如何把一张现有的图片转成字符画呢?HTML5让这个可能变成了现实,通过canvas,可以很轻松实现这个功能.其实原理很简单:扫描图片相应位置的像素点,再计算出其灰度值,根 ...
- ie8下jquery改变PNG的opacity出现黑边
复制网上的,没有他们那个类型的博客,所以就直接复制了 这些天在做一个效果,鼠标经过,PNG图片由透明变成不透明,jquery代 码:$(element).animate({"opacity& ...
- Wireshark按照域名过滤
HTTP协议 http.host == "http://baidu.net" DNS协议 dns.qry.name=="www.baidu.com"
- 修改history记录数门限
你的 Bash 命令历史保存的历史命令的数量可以在 ~/.bashrc 文件里设置.在这个文件里,你可以找到下面两行: HISTSIZE=1000 HISTFILESIZE=2000 HISTSIZE ...
- IDEA配置文件的配置文件配置
IDEA配置文件的配置文件配置: 路径 /Applications/IntelliJ IDEA 3.app/Contents/bin/idea.vmoptions (/IntelliJ IDEA 3. ...
- IPsec学习笔记
IPsec是什么 IPsec(IP Security)是一系列为IP通信提供安全性的协议和服务的集合,工作在IP层,可以为上层协议和应用提供透明的安全服务.IPsec提供两种安全机制:认证和加密. 认 ...