博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《面向对象程序设计》课程作业六
阅读量:5102 次
发布时间:2019-06-13

本文共 3397 字,大约阅读时间需要 11 分钟。

作业描述:1. 本次作业要求将四则运算的核心部分采取栈的知识进行解决。即表达式生成的合法性检验、表达式结果计算。 2. 学习C++界面编程,可以学QT、MFC或者VS,选择其一即可,用博客记录学习到的知识以及心得体会。

不知道为什么当时做作业四的时候要解释算法……就不重复贴了。请点:

代码里也有很详尽的注释,流程图也很清楚,不赘述了。


重点讲一下C++界面编程吧。

我先花了点时间去看了一下MFC,MFC全称Microsoft Foundation Classes,也就是微软基础类库。它是VC++的核心,VC++全称是Visual C++,是由微软提供的C++开发工具。MFC很彻底的用C++封装了Windows SDK(Software Development Kit,软件开发工具包)中的结构和功能,提供了一个应用程序框架,此应用程序框架为软件开发者提供了方便的操作手段,完成一些例行工作,提高开发效率。

下面是MFC的画风:

void CAdditionDlg::OnBnClickedAddButton()   {       // TODO: Add your control notification handler code here       // 将各控件中的数据保存到相应的变量       UpdateData(TRUE);         // 将被加数和加数的加和赋值给m_editSum       m_editSum = m_editSummand + m_editAddend;         // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值       UpdateData(FALSE);   }

效果图如下:

1092156-20170529204500024-377271203.png

MFC是很典型的C++语法。在稍微了解了MFC中,我认为C#完全可以替代MFC的功能。而且C#也是面向对象的语言,写C#时也能,并且很多语法比纯C++的MFC简易许多。之前看过C#的网络公开课,然而很多东西当时还没有理解,现在借着这个作业的机会重拾了那堂公开课。

我实现了一个非常简易的“自动出题器”,功能是这样的:有三个按钮——出题、判定和清空。

1092156-20170529204510446-527995501.png

按下出题后,产生一个很简单的算式,然后用户可以在旁边的空白文本框中输入答案。然后按下判定,会在下面的文本列表中显示本次答题的情况,如果回答错误还会显示正确答案,并统计做题的情况。

1092156-20170529204543274-839040339.png

清空后会清空所有数据。

1092156-20170529204547383-1403829463.png

下面贴上代码:

namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        int a, b;        string op;        int result;        static int numright = 0, numwrong = 0;                Random rnd = new Random();        private void btnNew_Click(object sender, EventArgs e)        {            labelright.Text = numright.ToString();            labelwrong.Text = numwrong.ToString();            a = rnd.Next(9) + 1;            b = rnd.Next(9) + 1;            int c = rnd.Next(4);            switch (c)            {                case 0: op = "+";result = a + b;break;                case 1: op = "-";result = a - b;break;                case 2: op = "*";result = a * b;break;                case 3:                     while(a%b!=0)                    {                        /*这里防止了除不尽的情况*/                        a = rnd.Next(9) + 1;                        b = rnd.Next(9) + 1;                    }                    op = "/";result = a / b;break;            }            label1.Text = a.ToString();            label2.Text = op;            label3.Text = b.ToString();            textBox1.Text = "";        }        private void btnJudge_Click(object sender, EventArgs e)        {            string ans = textBox1.Text;            if (ans == "") return;            double d = double.Parse(ans);            string display = "" + a + op + b + "=" + ans + " ";            if (d == result)                { display += "√"; numright++; }            else                { display += "╳ 正确答案是: " + result.ToString() ; numwrong++; }            listBox1.Items.Add(display);            labelright.Text = numright.ToString();            labelwrong.Text = numwrong.ToString();        }          private void btnClear_Click(object sender, EventArgs e)        {            label1.Text = "";            label2.Text = "";            label3.Text = "";            textBox1.Text = "";            listBox1.Items.Clear();            numright = 0;            numwrong = 0;            labelright.Text = numright.ToString();            labelwrong.Text = numwrong.ToString();        }    }}

C#的界面编程,很基础的部分都是很好学的。C#代码的书写也是行云流水(很多都是系统自动生成,不需要写很多代码),也有图形化操作界面帮助设置各种属性等等。

看到上面的简易出题器,之后的工作只需要把我们之前写的生成复杂表达式的逻辑整合到新的C#程序中即可。

那最后安利一波我以前看过,现在重拾的。MOOC是好东西呀,要多看MOOC。

转载于:https://www.cnblogs.com/ZCplayground/p/6918979.html

你可能感兴趣的文章
python3----练习题(图片转字符画)
查看>>
java封装
查看>>
vscode设置背景图片
查看>>
关于time_wait状态的理解
查看>>
HDU 1312 Red and Black(最简单也是最经典的搜索)
查看>>
2018年省赛热身赛第4场
查看>>
apktook 反编译错误
查看>>
数据库实例: STOREBOOK > 用户
查看>>
vue 及sass安装
查看>>
4、flag
查看>>
linux 常用命令
查看>>
docker已证书方式访问harbor
查看>>
(转)闭包与柯里化
查看>>
扩展二叉树 (根据特殊的前序遍历建树)
查看>>
CSS color设置与调色板
查看>>
SQL_SERVER 导oracle(转)
查看>>
VirtualDub - 开源视频捕捉及线性处理软件
查看>>
Lyft Level 5 Challenge 2018 - Elimination Round题解【待补】
查看>>
Whctf 2017 -UNTITLED- Writeup
查看>>
基于Docker的Mysql主从复制
查看>>