一、实验目的和要求
在实验-03、实验-05的作业内容基础上
(1)增加图形交互功能。
(2)增加3个逻辑运算符 &&、||、 !,并能处理逻辑运算符和算术运算符的混合运算。
(3)增加容错功能,能进行异常处理。
说明:
(1)其中牵涉到数据结构相关的可复用代码,可自行选择。
(2)提交时间:3周至4周左右时长,具体时间节点另行通知。
(3)其它要求同实验-01 。
二、实验环境
VisualStudio
三、实验内容
设计一个具有图形交互功能且支持逻辑运算,并具有异常处理机制的简单计算器。
- 实验过程
4.1 任务定义和问题分析
①图形交互:Qt编程
②逻辑运算:在之前作业的基础上增加逻辑与、或、非运算符。
③异常处理机制:对用户的错误输入进行调整并提示用户。
4.2 数据结构的选择和概要设计
①Qt ui界面布局:上方为一个输入文本框,下方设计按钮,进行输入
②代码处理:在原来代码上微改,增加功能,但依旧基于栈的应用。
③报错机制:在按钮的槽函数中添加输入检查,进行同步报错。
4.3 详细设计
1、首先我们要想一个问题 如何把计算器按钮上面输入的式子和自己的计算器源码连接起来?
我们可以创立一个 QString 类型的字符串s(QT的头文件一般都是QString,QStack什么的)每输入一个字符,就把他加入到s中
这样最后再把s传入你的源码中,进行后面的计算
那他的结果我们也可以用一个QString 类型来记录,我们记为 res
在widget.h文件中就有这样一段代码
private:
Ui::Widget *ui;
QString s;
QString res;
在widget.cpp文件中的构造函数对它们初始化
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
s=""; //初始化
res=""; //初始化
setWindowTitle("计算器"); //改变界面名称
}
2、再说三个特殊的键
①后退键 :
void Widget::on_pushButton_20_clicked()
{
s=s.left(s.length()-1);
ui->textEdit->setText(s);
}
②清除键 :
void Widget::on_pushButton_19_clicked()
{
s="";
res="";
ui->textEdit->setText(s);
ui->textEdit_2->setText(res);
}
res是在第二个文本框中的字符串
③ 等号键 :
下面 “= ”的按钮是个特例
我们有两种想法
第一就是直接把你的计算器源码整个放在这个槽函数里面
也可以在外面单独写一个函数,最后return一个值,把这个值传入 = 的槽函数
3、QT界面
五、测试及结果分析
对各种数据运行程序和算法的结果记录和分析,并对错误所作的修改和结果。
5.1 实验数据
①12+5*(2+3)*6/2-4
②7+!(!3+5&&!4)||!0&&(4+7)
六、实验收获
学会了QT操作,痛并快乐着,QT的下载就观看了很多视频,下载了一天才好,后面可以正式运行更是大费周章。还有两点也要注意一下:第一就是我们在写槽函数的时候 输入文本框的字符一定时英文键盘下的字符,不然程序不会进行的。第二就是QT有的错误不会报错,只会警告,尽量把所有的警告也改了,有的警告不影响结果,有的警告会让最后的程序异常关闭,虽然能编译通过。
(这个实验也是根据大佬 的教程完成的,想要原图的可以私)