计算机软件技术实习02
计算机软件技术实习
第二周学习记录
实验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:以下代码只是雏形,后续可能会因为各种原因增删改查。
//链表
class Node
{public:int data;Node* next;
};//栈
class Stack
{public:Node* Top;Node* Bottom;void Init();//初始化栈void Create();//新建栈void push(char c);//压栈void travers();//遍历bool isEmpty();//栈是否为空void pop();//删除栈顶元素bool getTop(char c);//获取栈顶元素int getLenth();//获取栈的长度
};void Stack::Init()//初始化栈
{this->Top = new Node();if (this->Top == nullptr){exit(1);}this->Bottom = this->Top;this->Top->next = NULL;
}void Stack::Create()//新建栈
{}void Stack::push(char c)//压栈
{Node* newnode = new Node();if (newnode == nullptr){exit(1);}newnode->data = c;newnode->next = this->Top;this->Top = newnode;delete newnode;
}void Stack::travers()//遍历
{Node* p = this->Top;while (p != this->Bottom){//遍历操作p = p->next;}}bool Stack::isEmpty()//栈是否为空
{return this->Top== this->Bottom;
}void Stack::pop()//删除栈顶元素
{if (this->isEmpty()){return;}Node* p = Top;Top = Top->next;delete p;return;
}bool Stack::getTop(char c)//获取栈顶元素
{if (isEmpty()){return false;}c = Top->data;return true;
}int Stack::getLenth()//获取栈的长度
{int len=0;Node* p = Top;while (p != Bottom){len++;p = p->next;}delete p;return len;
}
结语
以上就是我本周的学习总结,有哪些不到位的地方还请多多包涵!
计算机软件技术实习02相关推荐
- 计算机软件技术实习预习日志
计算机软件技术实习预习日志 目录 计算机软件技术实习预习日志 文章目录 实验项目 一.实验要求 二.开发工具 三.实验原理 1.后缀表达式计算法 前缀表达式 中缀表达式 后缀表达式 中缀表达式转换为后 ...
- 计算机软件技术实习 项目一 简单计算器的实现(实验准备)1-(1)
目录 一.需求分析 二.重难点 三.编程语言 四.开发工具/平台 一.需求分析 1. 能通过设计的按钮控件输入并实现算术表达式,表达式在文本框中显示,运算结果输出显示: 2.保存和浏览历史运算记录: ...
- 计算机软件技术实习01
计算机软件技术实习 第一周学习记录 实验1--支持算术表达式求解的计算器 前言 这是我第一次真正接触到计算机软件技术的实战内容,说实话我觉得这次的实习任务对我来说非常具有挑战性,有很多知识都是我目前还 ...
- 计算机软件技术实习项目二(一) 贪吃蛇项目准备
计算机软件技术实习项目二(一) 贪吃蛇项目准备 文章目录 计算机软件技术实习项目二(一) 贪吃蛇项目准备 一.贪吃蛇介绍 二.开发工具 三.实现原理 1.消息与消息队列 2.消息映射 3.设备环境 4 ...
- 22-23学年计算机软件技术实习1——计算器
目录 学习目标 1.1准备工作 1.1.1搭建QT开发环境 1.2用户界面UI设计 1.2.1显示模块 1.2.2按键模块 1.3功能实现 1.3.1输入输出反馈 1.3.2退格与清除功能 1.3.3 ...
- 计算机软件技术实习实验一
实验内容: (1) 学习图形界面的设计,创建基于对话框的应用程序,添加按钮.编辑框等控件: (2) 能通过设计的按钮控件输入并实现简单算术运算,要求表达式在编辑框中显示, 能将运算结果,输出在编辑框内 ...
- 计算机软件技术实习 迷宫游戏(一)
主要内容 1.迷宫游戏是非常经典的游戏,在该题中要求随机生成一个迷宫,并求解迷宫. 2.要求查找并理解迷宫生成的算法,并尝试用两种不同的算法来生成随机的迷宫. 3.要求迷宫游戏支持玩家走迷宫,和系统走 ...
- 计算机软件技术实习:计算器(1)
1.1 所用知识点 Java Swing 界面编程 计算器逻辑运算实现 1.2 基本思路 (1)设置计算器显示窗口 (2)数学运算基本法则:先乘除后加减 (a)正确处理输入字符串判断后进行一一计算 ( ...
- 计算机插件技术应用原理,计算机软件技术中插件技术的运用
计算机软件技术中插件技术的运用 在我国科技水平的不断提升下,计算机软件方面的功能也在持续更新.其中插件技术作为计算机软件中实用性比较强的一项功能,一直被研究分析.下面是小编搜集整理的相关内容的论文,欢 ...
最新文章
- 【Java】Integer.valueOf()
- 关于iOS APP 需要支持ipv6-only 开发者需要做的事情
- TeamToy - 创新团队的效率工具 一个好用的 团队协作软件
- ASP+AJAX制作无刷新新闻评论系统01
- mfc程序转化为qt_小峰的QT学习笔记
- 十七、PHP框架Laravel学习笔记——模型的定义
- linux中c语言常用内嵌汇编
- 训练caffe:registry.count(type) == 0 (1 vs. 0) Solver type Nesterov already registered
- spring mvc + ajax上传文件,页面局部刷新
- Python求解啤酒问题(携程2016笔试题)
- 使用 WinSCP 连接到 VCSA 6.5 失败并显示以下错误:收到的 SFTP 数据包过大
- 访问不了_etherscan访问不了的替代方案
- 临时表空间和数据表空间
- DJ设备市场现状及未来发展趋势
- 分享一个好用的网页pdf打印插件
- Java实验1-1【超市购物小程序】
- 使用HSqlDB的SQL/JRT功能
- Couldn‘t find meta-data for provider with authority xxx.fileProvider
- CTF-加密与解密(十七)
- 转oracle数据库字符集AL32UTF8修改为ZHS16GBK即从超集到子集
热门文章
- paddlenlp调用ERNIE、使用ERNIEKIT
- acm竞赛小结5 BUAA Training 2013 #1
- BFC——通俗理解什么是BFC
- 计算机教师的人生格言,教师人生格言座右铭(精选70句)
- javaweb_(杨)
- 咕咚运动数据存储实践
- webpack command not found 的意外的坑 - 原因是从node开始
- 通过键盘wasd的的点击使按钮移动,通过点击移动按钮
- warning #179-D:variable XXX was declared but never referenced
- java的意思 java语言的优点有什么