计算机软件技术实习
第二周学习记录
实验1——支持算术表达式求解的计算器
前言
上周说到,我选择用MFC来完成本次实验。那么,现在我来总结一下本周的学习成果。
退格功能的实现
由于我设置的文本框是通过一个CString全局变量str来存储字符串的,所以退格功能就相对简单,只需要把str储存的字符串最后面的一个字符删除然后再通过文本框显示出来就能实现退格功能。
其中删除字符串最后一个字符的方法很容易实现,利用CString类里面的GetLength函数来获取字符串长度,再用Delete函数删掉长度减1下标的字符就完成了。
void CCalculator01Dlg::OnBnClickedButton5()//退格
{
str.Delete(str.GetLength() - 1);
windows1.SetWindowTextW(str);
}
清除功能的实现
有了前面退格功能的经验,那么清除功能也非常容易实现,并且相对于退格来说更加简单。只需要将str赋值为空字符串,再通过对话框显示就能实现该功能。
不过值得注意的是,本次实验的计算器是通过堆栈和队列把中缀表达式转化成后缀表达式来计算的,所以大部分代码都会在等号“=”函数下面,这里就只需要将文本框里面的字符串清空就行。
void CCalculator01Dlg::OnBnClickedButton7()//清除
{
str = "";
windows1.SetWindowText(str);
}
链表栈的框架
除了实现了剩下的这些按钮的基本功能,我还写好了链表栈的大部分框架。本次用链表栈的原因是链表栈由于通过链表来实现,其中含有指针,而指针则是C/C++最强力的工具,能方便实现很多功能,所以链表栈相对比较合适。
链表栈的代码如下,其中Create函数目前似乎并不会用到,所以只是留了一个函数名,方便后序补写。
PS:以下代码只是雏形,后续可能会因为各种原因增删改查。
//链表
c