c++的可视化计算器

2023-10-26

学生党的一个课程设计,希望可以对有些人有些帮助大笑大笑大笑,第一次发,不好的话请多多原谅


c++:

一.题目要求:

 

设计一个可视化的计算器,可以执行+,-,*,/,.,%,()等操作。要求使用API来编写程序。(我的计算器输入的时候是以#号开始)。

 

二.需求分析:

 

1.问题描述:

①——用api来编写一个可视化的计算器程序,首先我们要用界面来实现它,所以我们要设计一个计算器的可执行的界面,我使用了2个界面(具体请见第四条的测试),第一个是菜单界面,这个界面是可有可无的,我使用它是为了给用户一个选择,从file退出或从start开始进入,这个不是很重要;第二个界面是计算器的执行界面,这是本次实践的主要目的,我们需要在dialog中添加一个输入与输出列表框,许多button(数字的,运算符的,clear,cancel等),首先在纸上画出理想图,列出个数;因此我们要设计好界面,要注意界面之间,button之间的关系。

②——其次我们需要考虑的是之前的c++计算器代码与api界面代码之间的融合,这是没有做过的,要想好它们之间的关系,比如点击什么按钮的时候执行什么操作,会出来啥界面,啥提示,都要在程序中注意;还要把整个程序做成多文件的形式,不能都弄在一起,要便于编译与改错。

 

三.详细设计(由于c++计算器运算部分不是本次实践的主要目的,在此主要讨论界面实现部分的详细设计):

 

1.resource.h头文件(只是一部分,重复部分省略):

//{ {NO_DEPENDENCIES}}

// Microsoft Visual C++ 生成的包含文件。

// 供 Resource.rc使用

//

#define IDR_MYMENU                      101  //菜单的定义

#define IDD_START                       102  //START的定义

#define IDC_BUTTON1                     1000  //BUTTON1的定义

#define IDC_BUTTON2                     1001  //BUTTON2的定义

#define IDC_BUTTON3                     1002  //BUTTON3的定义

#define IDC_BUTTON4                     1003  //BUTTON4的定义

#define IDC_BUTTON5                     1004  //BUTTON5的定义

#define IDC_LIST1                       1018  //列表框的定义

#define ID_FILE_EXIT                    40001  //File中Exit的编译

#define ID_START_START                  40002  //Start中Start中Start的定义

 

// Next default values for newobjects

// 以下是生成资源文件时自生成的,都是一些定义

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE        103

#define _APS_NEXT_COMMAND_VALUE         40003

#define _APS_NEXT_CONTROL_VALUE         1021

#define _APS_NEXT_SYMED_VALUE           101

#endif

#endif

 

2.Resource.rc头文件(部分重要):

IDR_MYMENU MENU      //定义标识符MENU

BEGIN

   POPUP "&File"     //点File

   BEGIN

        MENUITEM "E&xit",                       ID_FILE_EXIT      //点Exit

   END

   POPUP "&START"     //点START

   BEGIN

        MENUITEM"&START...",                  ID_START_START      //点START中的START

   END

END

// Dialog

//

 

IDD_START DIALOGEX 0, 0, 339, 182//IDD_START为资源的标识.DIALOG是资源的类型

 

//以STYLE开头然后在后面跟上用来创建此对话框的窗口风格

STYLE DS_SETFONT | DS_MODALFRAME |WS_POPUP | WS_CAPTION | WS_SYSMENU

 

//dialog的名字

CAPTION "My Calculator"

 

//创建此对话框的字体的大小和名字

FONT 8, "MS Sans Serif", 0,0, 0x1

BEGIN

 

//代表cancel按钮(定义,位置,大小)

PUSHBUTTON     "Cancel",IDCANCEL,261,135,63,28

 

//代表BUTTON0-9按钮(定义,位置,大小)

   PUSHBUTTON     "1",IDC_BUTTON1,7,47,50,39

   PUSHBUTTON     "2",IDC_BUTTON2,7,84,50,39

   PUSHBUTTON     "3",IDC_BUTTON3,7,122,50,43

   PUSHBUTTON     "4",IDC_BUTTON4,57,48,50,37

   PUSHBUTTON     "5",IDC_BUTTON5,57,86,50,36

   PUSHBUTTON     "6",IDC_BUTTON6,58,123,50,42

   PUSHBUTTON     "7",IDC_BUTTON7,108,49,50,35

   PUSHBUTTON     "8",IDC_BUTTON8,108,85,50,37

   PUSHBUTTON     "9",IDC_BUTTON9,108,124,50,41

   PUSHBUTTON     "0",IDC_BUTTON10,159,49,50,35

  

 //代表操作符按钮(定义,位置,大小)

   PUSHBUTTON     ".",IDC_BUTTON11,159,86,50,38

   PUSHBUTTON     "=",IDC_BUTTON12,159,124,50,41

   PUSHBUTTON      "+",IDC_BUTTON13,210,49,50,30

   PUSHBUTTON     "-",IDC_BUTTON14,210,79,50,28

   PUSHBUTTON     "*",IDC_BUTTON15,210,108,50,26

   PUSHBUTTON     "/",IDC_BUTTON16,209,135,50,29

   PUSHBUTTON     "(",IDC_BUTTON17,260,50,32,28

PUSHBUTTON     ")",IDC_BUTTON18,293,51,32,27

   PUSHBUTTON     "%",IDC_BUTTON19,261,80,63,28

 

//列表框

   LISTBOX        IDC_LIST1,8,0,316,49,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL| WS_TABSTOP

  

//代表Clear按钮(定义,位置,大小)

   PUSHBUTTON     "Clear",IDC_BUTTON20,262,108,62,27

END

 

// DESIGNINFO

//dialog的风格

#ifdef APSTUDIO_INVOKED

GUIDELINES DESIGNINFO

BEGIN

   IDD_ABOUT, DIALOG

   BEGIN

        LEFTMARGIN, 7

        RIGHTMARGIN, 332

        TOPMARGIN, 7

        BOTTOMMARGIN, 175

   END

END

#endif    // APSTUDIO_INVOKED

 

3.Win.cpp文件:

#include <windows.h>

#include "resource.h"      //包含资源文件

 

char buf1[20];      //类外定义

//将double转换成string

string DoubleToString(double d){

    stringstr;

    stringstreamss;

    ss<< d;

    ss>> str;

    returnstr;

}

char buf[100];      //类外定义

int i = 1;      //类外定义

核心部分为(dialog的实现):

BOOL CALLBACK AboutDlgProc(HWND hwnd,UINT Message, WPARAM wParam, LPARAM lParam)

{

    buf[0]='#';      //以#开始

    switch(Message)      //接收消息

    {

    caseWM_INITDIALOG:

        return TRUE;

    caseWM_COMMAND:

        switch (LOWORD(wParam))

        {

//当点击BUTTON1(1)的时候:

        case IDC_BUTTON1:{

//清空,相当于刷新输出到界面

            SendDlgItemMessage(hwnd,IDC_LIST1, LB_RESETCONTENT, 0, 0);

            buf[i]= '1';

            buf[++i]= '\0';

//显示

            SendDlgItemMessage(hwnd,IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)buf);      }

            break;

......

//当点击BUTTON12(=)时,要执行c++计算器的计算工作,在背后执行,不再界面显示

        case IDC_BUTTON12:{

            SendDlgItemMessage(hwnd,IDC_LIST1, LB_RESETCONTENT, 0, 0);

            buf[i]= '=';

            buf[++i]= '\0';

            SendDlgItemMessage(hwnd,IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)buf);

            CalculatorCalcul;      //定义类对象

           Calcul.Cal(buf);      //使用类函数成员

            stringstr1 = DoubleToString(Calcul.a);

//将string转换成char类型的数组(buf1[]用于输出)

            for(inti=0;i<str1.size();i++){

                buf1[i]=str1[i];

            }

            SendDlgItemMessage(hwnd,IDC_LIST1, LB_ADDSTRING, 0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++的可视化计算器 的相关文章

  • 更改 WinForms 按钮突出显示颜色

    I found 这一页 https stackoverflow com questions 9260303 how to change menu hover color winforms 其中概述了如何更改 MenuStrip 及其项目的呈
  • SIGKILL 和 SIGSTOP 信号无法被捕获、阻止或忽略,为什么?

    我想知道为什么这两个信号在一个进程中不能被捕获 阻止或忽略 可以使用 signal 更改其余信号的操作 这两个信号和其余信号有什么区别 如果您谈论它们被阻止的原因 那么原因已经提到了 Adam B https stackoverflow c
  • 此上下文中仅支持实体类型、枚举类型或基本类型

    我目前正在开发一个搜索页面 我只需要返回主题的主题详细信息列表 其中包含存储在 int ST 中的所有主题标签 id 目前 ST null true ST Contains b ThemeTagID 行似乎给了我一个错误 附加信息 无法创建
  • 验证码怎么写?

    我正在开发一个注册表 我想放置验证码 我生成一个随机字符串 但如何将其转换为图像 否则我如何开发验证码或任何参考 谢谢 Try out 验证码 http recaptcha net plugins aspnet 或查看博客文章 使用 Asp
  • 如何在 ASP.NET 5/vNext/Core 中使用 Elmah?

    我对如何在 ASP NET 5 MVC 6 项目中使用 Elmah 有点困惑 我从 nuget 得到了包 它添加了 Elmah Mvc 2 1 2 到project json 中的依赖项 我不知道从这里到哪里去 以前 nuget 会向 we
  • 如何使用 PowerShell 使用 C# DLL 中存在的类的 New-Object

    例如 我有一个 C 类 public class MyComputer PSObject public string UserName get return userName set userName value private strin
  • 无法将方法组分配给 asp.net、linq、c# 中的隐式类型局部变量

    public void selectqueryasso CustomerOrderResult cso new CustomerOrderResult var a from as1 in ds orders from as2 in ds o
  • WinForms TreeView - 如何手动“突出显示”节点(就像被单击一样)

    我需要知道如何让以编程方式选择的节点以图形方式处于 选定 状态 就像用户单击它一样 SelectedNode 仅使这一节点在内部被选中 非常感谢 它没有显示为突出显示的原因是由于树视图没有焦点 这是我的测试表单上的按钮单击事件 TreeVi
  • GCC 和 -Wconversion

    让我们编译以下程序 int main uint16 t data 0 data uint16 t std round 3 14f return 0 with g Wconversion prog cpp 我们会得到warning conve
  • 使用来自不同线程的实时数据更新 QTableView 的最佳策略

    我的应用程序现在启动几个线程 如 5 10 个 来从不同源收集数据 它们与主 GUI 线程分离 因此我在 GUI 中感觉不到任何缓慢 并且我可以在后台线程工作时继续工作 一切都很棒 但现在我希望能够在我的主 GUI 中的 QTableVie
  • 最佳实践:从属性中抛出异常

    什么时候适合从属性 getter 或 setter 中抛出异常 什么时候不合适呢 为什么 关于这个主题的外部文档的链接会很有帮助 谷歌搜索结果出奇的少 Microsoft 在以下位置提供了有关如何设计属性的建议 http msdn micr
  • 让 AutoMapper 自动映射前缀属性

    我希望 AutoMapper 自动映射成员 如下所示 class Model public int ModelId get set class ModelDto public int Id get set 在这里 我会做一个 CreateM
  • 如何使用 Xamarin 应用程序开发自动注销

    我必须在 App xaml cs 上添加功能才能使其正常工作 我在 OnStart 上添加了功能 但现在它会间歇性地一次又一次地将我从应用程序中注销 根据下面的代码 我需要做什么才能让它停止这样做 或者我的代码有问题 这是我最新的代码 na
  • 将 KeyUp 作为参数传递 WPF 命令绑定文本框

    我有一个文本框 KeyUp 事件触发器连接到 WPF 中的命令 我需要将按下的实际键作为命令参数传递 该命令执行得很好 但处理它的代码需要知道按下的实际键 记住这可能是一个回车键或不仅仅是一个字母的任何键 所以我无法从 TextBox te
  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • 模板是如何实例化的?

    这是一个练习 来自C 入门第五版 练习 16 27 对于每个带标签的语句 解释什么 如果有 实例化发生 如果实例化了模板 请解释原因 如果 不 请解释为什么不 第677页 template
  • 使用 CryptUnprotectData 解密 WEP wlan 配置文件密钥

    我正在尝试使用解密 WEP 配置文件的密钥加密解除数据保护 http msdn microsoft com en us library windows desktop aa380882 28v vs 85 29 aspx 我获取配置文件密钥
  • 在 asp.net MVC 控制器中调用异步外部 Web 服务

    在 Asp net MVC 控制器 GET 方法 中 我调用外部 Web 服务 用于 IP 地理定位 返回 IP 位置的 json 数据 如何使调用异步 以便堆栈可以在等待服务响应时继续 当 GEO IP 请求完成后 我希望能够更新数据库
  • WCF - IsOneway 的行为不像 Oneway 操作

    我已在服务的某些方法上定义了 OneWay 属性 但它们的行为并不像 Oneway 调用 我的客户等待呼叫完成并从服务返回 我假设单向操作是非阻塞操作 并且客户端不关心被调用函数会发生什么 它只是调用并忘记它 这是对的吗 问题 调用 Ope
  • 如何包装实体框架以在执行前拦截 LINQ 表达式?

    我想在执行之前重写 LINQ 表达式的某些部分 我在将重写器注入正确的位置时遇到问题 实际上根本没有 查看实体框架源代码 在反射器中 它最终归结为IQueryProvider Execute在 EF 中 它通过以下方式耦合到表达式Objec

随机推荐

  • 数学中的导数

    导数 Derivative 是微积分学 微积分学是研究极限 微分学 积分学和无穷级数等的一个数学分支 中重要的基础概念 一个函数在某一点的导数描述了这个函数在这一点附件的变化率 导数的本质是通过极限的概念对函数进行局部的线性逼近 当函数f的
  • python代码,两个4*4旋转矩阵之间的位姿变化,相对旋转矩阵

    python代码 两个4 4旋转矩阵之间的位姿变化 也就是求两个旋转矩阵之间的相对旋转矩阵 import numpy as np def get transform matrix rot mat1 rot mat2 Calculate th
  • asp.net毕业设计题目选择

    1 asp net 超市管理系统 rar 2 客户关系系统 rar 3 ASP NET BS结构的城市酒店入住信息管理系统的设计 源代码 论文 rar 4 asp net FTP客户端设计与开发 源代码 论文 rar 5 ASP NET 网
  • DNS 配置错误

    curl 6 Could not resolve host 今天看 ttrss 的时候发现文章都是两天前的了 感觉不太对劲 经过查验提示curl 6 Could not resolve host 在查找过资料后 是 DNS 出现了 下面给出
  • 前端工程化(2):postCss 和 babel的使用

    前端工程化 2 postCss 和 babel的使用 本文例子可以点击这里 0 前言 babel是什么 官网给出的定义 Babel 是一个工具链 主要用于将 ECMAScript 2015 版本的代码转换为向后兼容的 JavaScript
  • eclipse was unable to locate its companion shared library

    当转移或者Copy工程时 eclipse was unable to locate its companion shared library eclipse ini 里面的路径配置错误导致 launcher library C Users
  • 三个好用前端编辑工具推荐+推荐原因(VSCode、WebStrom、HbuilderX 的推荐对比,不纠结 !)

    市面上编辑器挺多的 之前写过一期 一年了 更新一下 先上结论 如果 电脑配置差 颜狗 建议用VSCode 如果 你认为你0基础还笨 建议用Hbuider培养兴趣 否则 WebStorm 暂时是前端写代码的无二选择 或者 我全都要 以下是个人
  • 泛型类, 泛型接口的继承, 委托, 反射

    使用泛型定义一个父类 using System using System Collections Generic using System Linq using System Text using System Threading Task
  • 编译原理之LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比

    欢迎关注我的个人博客 www zuzhiang cn 考完编译原理有一段时间了 记得当时都被以上这五种文法搞懵了 所以希望写篇文章帮助那些正在学习的人 以下内容是依据龙书中文版讲解的 由于老师不同可能某些地方大同小异 如有什么纰漏之处还请指
  • 【更新中】目标检测——梳理,准备面试

    最近在准备找工作面试 本文在此梳理了目标检测中涉及的面试要用的知识点 包含了一下几方面 My paper reading 过程总结 实际步骤 所花时间 评价 改进 先看了abstract 1 introduction 以及 4 relate
  • 【图像处理】Hough直线变换

    I 直线篇 1 直线是如何表示的 对于平面中的一条直线 在笛卡尔坐标系中 常见的有点斜式 两点式两种表示方法 然而在hough变换中 考虑的是另外一种表示方式 使用 r theta 来表示一条直线 其中r为该直线到原点的距离 theta为该
  • web前端进化之路(一)——小程序开发

    最近学习前端感觉很多知识学起来容易 但是很多知识点很容易忘记 想做一个工具来方便自己来学习 正好结合小程序 分享给大家 照顾初学者 可能讲的比较细 理解哈 准备工具 小程序一个 已申请 名称是 web前端进化之路 比目后端云 作为服务器后端
  • linux下创建多线程执行

    linux下创建多线程执行 线程 thread 台湾称 执行绪 是 进程 中某个单一顺序的控制流 也被称为轻量进程 lightweight processes 计算机科学术语 指运行中的程序的调度单位 线程是操作系统能够进行运算调度的最小单
  • 在嵌入式学习困惑:做驱动开发还是做应用开发更有前途

    在嵌入式学习过程中 很多人都有这样的困惑 意思就是说 你告诉我哪个更有前途 我就好好学哪个 另外一个就不用学了 问这种问题的同事往往会同时问另外一些问题 我以后就想做驱动开发 你教我这些应用开发的技术有什么用 C 用得多吗 学了有什么用 我
  • 黑苹果必备技能之一:升级OC(open core)引导

    目前来说 安装黑苹果的用户大部分应该都是采用的clover以及OC引导 目前由于OC引导的不断完善以及配置方法更简单 有不少用户都已经从clover引导转变到了OC引导 而关于使用OC引导安装黑苹果的教程大家可以去参考之前发布的文章 此篇文
  • 实现回到顶部功能的三种方法

    1 使用锚点 页面顶部放置一个锚点链接 然后在页面下方放置一个返回到该锚点的链接 用户点击该链接即可返回到该锚点所在的顶部位置 锚点方式 div div a href topAnchor 回到顶部 a 2 监听浏览器的scollTop事件
  • VHDL程序:四位乘法器

    VHDL程序 四位乘法器 1 IF语句行为级描述 library ieee use ieee std logic 1164 all use ieee std logic unsigned all entity multip 4 is por
  • 前端 echarts 导出图片到excel中

    这里演示的demo是基于react的 yarn add exceljs file saver echarts 首先安装以上三个包 直接使用下列代码即可 import React Component from react import App
  • FISCO BCOS(二十一)——— 实现对byte32[]数组类型的输入

    如果对一个byte32 类型的数组进行传参 我们先看一下一个string类型转成16进制是什么样的 字符串与进制转换http www ku51 net ox2str 在区块链中地址一般是0x开头 也就是16进制标识 比特币不是 所以在这里要
  • c++的可视化计算器

    学生党的一个课程设计 希望可以对有些人有些帮助 第一次发 不好的话请多多原谅 c 一 题目要求 设计一个可视化的计算器 可以执行 等操作 要求使用API来编写程序 我的计算器输入的时候是以 号开始 二 需求分析 1 问题描述 用api来编写