使用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相比,估计在实 ...
随机推荐
- shell 循环数组
循环数组 ;i<${#o[*]};i++)) do echo ${o[$i]} done
- Jquery常用方法合集,超实用
转自:十分钟玩转 jQuery.实例大全 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库. ...
- LVTTL与LVCMOS区别
TTL电平的VIH/VIL一般是2V/0.8V,VOH/VOL一般是 2.4V/0.4V,不论是3.3V还是5V的TTL都一样的:CMOS的VIH/VIL一般是70%VCC/30%VCC,VOH/VO ...
- Windows命令-系统木马取样
1.前言 工作中偶尔会遇到去现场提取木马样本回公司分析的情况.如果是生产环境下,不方便安装各类抓包.安全软件时.能用系统自带的命令去定位出木马程序相关的信息是最理想不过的状态. 2.Windows常用 ...
- 【译】ASP.NET Identity Core 从零开始
原文出自Rui Figueiredo的博客,原文链接<ASP.NET Identity Core From Scratch> 译者注:这篇博文发布时正值Asp.Net Core 1.1 时 ...
- Robotium_断言方法assert、is、search
下面的这些方法都主要用来判断测试结果是否与预期结果相符,一般把is和search方法放在assert里面判断.assert最常用的还是assertThat方法,是Junit的判断,这里就不多说了.断言 ...
- (转)javascript方法--bind()
地址:https://www.cnblogs.com/xxxxBW/p/4914567.html bind方法,顾名思义,就是绑定的意思,到底是怎么绑定然后怎么用呢,下面就来说说我对这个方法的理解. ...
- HTML5练习3
1.输入问题,判断答案,按钮倒计时 主要代码: <!doctype html> <html> <head> <meta charset="utf-8 ...
- oracle的sql语句大小写
我相信大家都知道,oracle数据库是区分大小写的,而且oracle的默认为大写的,也就是说你在sql脚本上面写的sql语句,oracle运行的时候,它会自动转化为大写的.注意一下,我这里举例子的计算 ...
- Spring AOP实现原理-动态代理
目录 代理模式 静态代理 动态代理 代理模式 我们知道,Spring AOP的主要作用就是不通过修改源代码的方式.将非核心功能代码织入来实现对方法的增强.那么Spring AOP的底层如何实现对方法的 ...