windows编程大作业简单计算器
简单计算器Microsoft Word 文档
#include <iostream>#include <iomanip>#include <cmath>#define pi 3.1416using namespace std;float a,b,i,r;int k;char *u="∞";char *v="0";char *w="1";int m,n; //m为菜单代码,n为函数类返回值//声明函数void NumJia(); //加法void NumJian(); //减法void NumCheng(); //乘法void NumChu(); //除法void Jiecheng(); //阶乘void Tan(); //正切void Cos(); //余弦void Sin(); //正弦void ShowScreen(); //初始界面void ClearScreen(); //清除屏幕//定义函数void ClearScreen(){system("cls");}void NumJia(){printf("您选择的是加法运算\n");cin>>a>>b;r=a+b;cout<<a<<"+"<<b<<"="<<r<<endl;printf("输入0,则清除界面;输入1,则返回开始界面。
");cin>>n;if (n==0)ShowScreen();if(n==1)ClearScreen();}void NumJian(){printf("您选择的是减法运算\n");cin>>a>>b;r=a-b;cout<<a<<"-"<<b<<"="<<r<<endl;printf("输入0,则清除界面;输入1,则返回开始界面。
简单计算器
• • • • • • • • • • • • • • • • • • • • • • •
sqrt按键代码如下: void CMyCalculatorDlg::OnButtonSqrt() { m_second = sqrt(m_second); UpdateDisplay(m_second);//开方,对输入的数据进行开方。 } 符号按键代码如下: void CMyCalculatorDlg::OnButtonSign() { m_second = -m_second; UpdateDisplay(m_second);//正负符合标志 } 1/x按键代码如下: void CMyCalculatorDlg::OnButtonReciprocal() { if(fabs(m_second)<0.000001) {m_display = "错误,除数不能为0";//分母不能为0 UpdateData(false); return; } m_second= 1.0/m_second; UpdateDisplay(m_second);//求倒数功能 }
• • • •
void CMyCalculatorDlg::UpdateDisplay(double lVal) { m_display.Format( _T("%f"),lVal); int i=m_display.GetLength();
•
• •
//格式化输出,将输出结果后的零全部截去
while(m_display.GetAt(i-1)=='0') {m_display.Delete(i-1,1);i--;}
• • • • • • • • • • • • • • • • • • • • • • •
Windows程序附件中自带的计算器使用说明
Windows程序附件中自带的计算器使用说明Windows程序附件中自带的计算器,平时只是运用简单的加减乘除运算,其实它分为“标准计算器”和“科学计算器”两种,“标准计算器”即是我们默认打开看到的界面可以完成日常工作中简单的算术运算,“科学计算器”可以完成较为复杂的科学运算,比如正反三角函数运算、求平方及平方根等。
它的使用方法与日常生活中所使用的计算器的方法一样,可以通过鼠标单击计算器上的按钮来取值,也可以通过从键盘上输入来操作,下面是二种计算器的使用方法:1、标准计算器(默认)windows标准型计算器功能键使用说明Backspace 删除当前显示数字的最后一位CE 清除显示数字C 清除当前的计算MC 清除内存中的所有数字MR 重调用存内存中的数字。
该数字保留在内存中MS 将显示数字保存在内存中M+ 将显示的数字与内存中已有的任何数字相加,但不显示这些数字的和0 1 2 3 4 5 6 7 8 9 输入数字+/- 改变显示数字的正负符号. 插入小数点/ 除法* 乘法- 减法+ 加法sqrt 计算显示数字的平方根% 按百分比的形式显示乘积结果。
输入一个数,单击“*”,输入第二个数,然后单击“%”。
例:1000 * 25 % 将显示为 250。
也可执行带百分数的运算,输入一个数,单击运算符(“+”、“-”、“*”或“/”),输入第二个数,单击“%”,然后单击“=”。
例:1000 + 25%(指的是 1000 的 25%)= 12501000 - 25% = 7501/x 计算显示数字的倒数= 对上两个数字执行任意运算。
若要重复上一次的运算,请再次单击“=”例:50+10 按一次“=”号显示60,再按显示70,依次重复加10运算。
2、科学型计算器(点击计算器的“查看”下拉菜单,点中“科学型”,就会出现更大的窗口)windows科学型计算器功能键使用说明十六进制四字(可显示16位数)双字8(可显示8位数)单字(可显示4位数)字节(可显示2位数)八进制(四种位宽显示方式切换)二进制(四种位宽显示方式切换)十进制角度弧度梯度三种显示方式切换弧度在十进制模式下将三角函数输入设置为弧度。
Java语言编写的标准计算器(实现了windows标准型计算器的全部功能)
标准型计算器(Java语言编写)下面的java源码是本人连续工作48小时的成果,也许对于高手来说这只是小菜一碟,但是如果你不是高手,我推荐你研究下面的程序。
程序中包含了Java反射机制、图形界面编程等一系列的知识运用。
研究完后你不一定会变成高手,但对于Java和C语言你都会有更深度的理解。
源码中的注释很详细。
○1建立java工程○2输入工程名○3新建一个包○4输入包名○5新建一个类○6输入类名以上步骤都是基础,会的可以略过。
源码:package three.num1;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Calculator extends JFrame implements ActionListener { /****/private static final long serialVersionUID = 1L;private JTextField text1;// 未实例化private JLabel lable_text;private JButton bt_backspace, bt_ce, bt_c;private JPanel gridpanel;private String str = "";private String str_note = " ";private char operator = '\0';private double data_before;private boolean equal_flag = false;public Calculator() {super("计算器");// 标题栏setBounds(100, 100, 198, 244); // 程序在屏幕上的显示位置(100,100),宽*高=300*233this.setResizable(false);this.getContentPane().setLayout(newFlowLayout(FlowLayout.RIGHT));lable_text = new JLabel(" ", JLabel.RIGHT);this.getContentPane().add(lable_text);text1 = new JTextField("0", 16); // 将文本框text1实例化,并设置文本框的长度text1.setHorizontalAlignment(JTextField.RIGHT); // 文字在文本框中从右边开始显示text1.setEditable(false); // 不可编辑this.getContentPane().add(text1);bt_backspace = new JButton("backspace");bt_backspace.setMargin(new Insets(2, 5, 2, 6));bt_ce = new JButton("CE"); // bt_ce.setMargin(newInsets(2,2,2,2));bt_c= new JButton("C"); // bt_c.setMargin(new Insets(2,2,2,2));this.getContentPane().add(bt_backspace);this.getContentPane().add(bt_ce);this.getContentPane().add(bt_c);bt_backspace.addActionListener(this);bt_ce.addActionListener(this);bt_c.addActionListener(this);keyboard(); // 调用keyboard()this.setVisible(true);}/*** 添加按钮 ***/public void keyboard() {String str[] = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%","1", "2", "3", "-", "1/X", "0", "+/-", ".", "+", "=" };gridpanel = new JPanel();gridpanel.setLayout(new GridLayout(4, 5, 9, 8));// 4行5列,水平间距9,垂直间距7this.getContentPane().add(gridpanel);JButton button[] = new JButton[str.length];for (int i = 0; i < button.length; i++) {button[i] = new JButton(str[i]);button[i].setMargin(new Insets(0, 0, 0, 0));button[i].setForeground(new Color(252, 51, 51));//button[i].setBackground(new//Color(131,95,56));gridpanel.add(button[i]);button[i].addActionListener(this); // 为按钮注册单击事件监听器}}/*** 实现监听器接口 ***/public void actionPerformed(ActionEvent e) {double data_after;String bt = e.getActionCommand();/*** 按0数字键 */if (bt == "0")// bt.equals("0"){if (equal_flag == false) {if (text1.getText().equals("0")) {return;} else {str += bt;text1.setText(str);}} else {equal_flag= false; // 添加这行代码使下次按数字键从if行执行,否则每次按0键都执行本行else语句,即str清空。
简单WINDOWS小程序设计——四则运算计算器
简单WINDOWS小程序设计——四则运算计算器实验一:简单WINDOWS小程序——四则运算计算器题目基本要求:创建一个Windows程序,在文本框中输入两个整数,按“计算”按钮后输出这两个整数的和、差、积、商。
程序运行范例参见所提供的范例。
程序设计的具体要求如下:(1)用户在两个文本框中输入2个整数后单击“计算”按钮,可在标签框中显示计算结果。
(2)要求计算结果标签框中的内容分行显示(3)当除数输入为0以及输入的是非数值时,观察程序的运行状态,为什么?程序提示:(1)每个一在窗体中的控件都应该是一个对象,其中name属性为该控件在程序中的名字。
(不能使用汉字)(2)文本框控件为:Textbox,其中text属性即为用户输入的文本,其类型为字符串类型(3)字符串String 为系统已经定义的一个类,其中有很多可以直接使用的方法,如:字符串连接、字符串复制等等。
(4)通过文本框输入的数据类型是字符串,并不能直接用于数值计算,同理,计算之后的结果也不能直接显示在文本框或者标签中,需要转换!相关代码和使用到的方法如下:int.Parse(txtNumber1.Text)//将字符串txtNumber1.Text转换为相应的整数,不考虑字符串输入错误,不能转换为整数的情况。
int x = 5;txtNumber1.Text =x.ToString();//将整数转换成字符串并赋值给文本框的text属性。
(5)和C语言一样,在C#/C++中,整数和整数相除仍然得整数。
(6)要分行显示,可以使用回车,但它是转义字符,为\n,比如:string s1=”abc”+”\n”+”efg”,可以实现字母的分行显示(7)所谓文本框清空,也就是文本框的text属性值为空串。
也可以使用clear()事件(8)在Windows窗体程序中,经常使用label控件(标签)完成显示和输出,属性text 用于显示,类型为字符串。
(9)C#中,类的全部属性和方法定义都是放在类中的。
windows加法计算器
实验报告1 任务概述(任务说明)设计一个计算器2设计思路(包括技术基础等)先画出文本框EDIT,在画出按键BUTTON,接受数据后再转换成数据类型int,最后将运算后的结果又粘贴到文本框中。
3程序结构描述4源码,文档化加法计算器.h#pragma once#include "resource.h"Resource.h//{{NO_DEPENDENCIES}}// Microsoft Visual C++ generated include file.// Used by 加法计算器.rc//#define IDS_APP_TITLE 103#define IDC_EDIT1 1001#define IDC_EDIT2 1002#define IDC_EDIT3 1003#define IDC_BUTTON1 1004#define IDC_BUTTON2 1005#define IDC_BUTTON3 1006#define IDC_BUTTON4 1007#define IDR_MAINFRAME 128#define IDD_MY_DIALOG 102#define IDD_ABOUTBOX 103#define IDM_ABOUT 104#define IDM_EXIT 105#define IDI_MY 107#define IDI_SMALL 108#define IDC_MY 109#define IDC_MYICON 2#ifndef IDC_STATIC#define IDC_STATIC -1#endif// 新对象的下一组默认值//#ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONL Y_SYMBOLS#define _APS_NO_MFC 130#define _APS_NEXT_RESOURCE_V ALUE 129#define _APS_NEXT_COMMAND_V ALUE 32771 #define _APS_NEXT_CONTROL_V ALUE 1000#define _APS_NEXT_SYMED_V ALUE 110#endif#endif#define IDI_CALWINAPI 107#define IDI_SMALL 108#define IDC_CALWINAPI 109#define IDC_MYICON 2#ifndef IDC_STATIC#define IDC_STATIC -1#define IDC_EDIT1 1001#define IDC_EDIT2 1002#define IDC_EDIT3 1003#define IDC_BUTTON1 1004#define IDC_BUTTON2 1005#define IDC_BUTTON3 1006#define IDC_BUTTON4 1007#endif加法计算器.cpp// 加法计算器.cpp : 定义应用程序的入口点。
从零开始的程序编辑项目创建一个简单的计算器
从零开始的程序编辑项目创建一个简单的计算器从零开始的程序编辑项目:创建一个简单的计算器计算器是我们日常生活中常见的工具,无论是进行简单的加减乘除运算还是复杂的科学计算,它都能满足我们的需求。
在本文中,我将教您从零开始创建一个简单的计算器程序,以便您可以在计算机上方便地进行各种计算。
第一步:项目规划在开始编写代码之前,我们需要先规划项目的结构和功能。
对于这个简单的计算器,我们需要实现以下功能:输入两个数字,选择运算符(加、减、乘、除),然后得到结果。
第二步:创建用户界面在这个项目中,我们可以使用Python编程语言和Tkinter库来创建用户界面。
Tkinter是Python的标准GUI开发库,它提供了创建窗口、按钮和文本框等基本组件的功能。
首先,导入Tkinter库:```pythonimport tkinter as tk```然后,创建一个名为"Calculator"的窗口:```pythonwindow = ()window.title("计算器")```接下来,我们可以在窗口中添加两个文本框用于输入数字,一个标签用于显示结果,并在窗口底部创建四个按钮用于选择运算符(加、减、乘、除)。
```pythonnum1_entry = tk.Entry(window)num1_entry.pack()num2_entry = tk.Entry(window)num2_entry.pack()result_label = bel(window, text="结果:")result_label.pack()add_button = tk.Button(window, text="+")add_button.pack(side="left")subtract_button = tk.Button(window, text="-")subtract_button.pack(side="left")multiply_button = tk.Button(window, text="×")multiply_button.pack(side="left")divide_button = tk.Button(window, text="÷")divide_button.pack(side="left")```最后,我们需要添加一个按钮,当用户点击时,调用计算函数并显示结果。
编程挑战:从零开始编写一个简单的计算器
编程挑战:从零开始编写一个简单的计算器编写一个简单的计算器是一个很好的编程挑战。
计算器可以有基本的加、减、乘和除功能,以及其他一些附加功能,比如取余、平方等。
在这篇文章中,我们将从零开始编写一个简单的计算器,使用简体中文进行说明。
我们将使用Python编程语言来实现这个计算器。
首先,我们需要定义计算器的基本结构。
计算器将有一个显示屏,用于显示输入的数字和计算结果。
我们可以使用Python的Tkinter库来创建一个基本的图形用户界面(GUI)来实现显示屏。
要使用Tkinter库,我们首先需要导入它:```pythonfrom tkinter import *```接下来,我们将创建一个名为"Calculator"的类,并在类中定义计算器的基本结构和功能。
我们可以定义一个构造函数来初始化计算器的界面。
在构造函数中,我们将创建一个顶层窗口,并在窗口中创建一个文本框来模拟显示屏:```pythonclass Calculator:def __init__(self, master):self.master = mastermaster.title("简单计算器")self.display = Entry(master, width=40, justify=RIGHT)self.display.grid(row=0, column=0, columnspan=4)```在上述代码中,我们创建了一个顶层窗口,标题为"简单计算器"。
然后,我们创建了一个文本框,并将其放置在窗口的第一行中,跨越4列。
接下来,我们将定义一些按钮,并将它们放置在计算器窗口中。
我们将使用格子布局来排列这些按钮。
我们可以定义一个名为"createButton"的辅助函数来创建这些按钮:```pythondef createButton(self, text, row, col, rowspan=1,colspan=1, command=None):button = Button(self.master, text=text, command=command)button.grid(row=row, column=col, rowspan=rowspan, columnspan=colspan)return button```在createButton函数中,我们创建一个按钮,并使用grid方法将其放置在指定的行列位置。
windows程序设计codeblocks简易计算器
主要功能实现10以内加减乘除,当所有文本编辑处有输入时点击提交按钮,即可得到对应的计算结果。
当有编辑框无输入时,默认为0当除数为0或者无输入时提示有错误,重新输入以下是程序源码:#include <windows.h>LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; LRESULT CALLBACK ChildWndProc(HWND,UINT,WPARAM,LPARAM); TCHAR szChildClass[]=TEXT("Checker3_Child");int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow){static TCHAR szAppName[] = TEXT ("HelloWin") ;HWND hwnd ;MSG msg ;WNDCLASS wndclass ;wndclass.style = CS_HREDRAW | CS_VREDRAW ;wndclass.lpfnWndProc = WndProc ;wndclass.cbClsExtra = 0 ;wndclass.cbWndExtra = 0 ;wndclass.hInstance = hInstance ;wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION) ; //(HICON) LoadImage(NULL,TEXT("./11.ico"),IMAGE_ICON,0, 0,LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_LOADFROMFILE);wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;HBITMAP back_groud;back_groud =(HBITMAP)LoadImage(hInstance,"F:\1.bmp",IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR _DEFAULTSIZE|LR_LOADFROMFILE); // ??è?í???wndclass.hbrBackground = (HBRUSH)(CreatePatternBrush(back_groud)); //3ìDò±3?°wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1) ;wndclass.lpszMenuName = NULL ;wndclass.lpszClassName = szAppName ;if (!RegisterClass (&wndclass)){MessageBox (NULL, TEXT ("Program requires Windows NT!"),szAppName, MB_ICONERROR) ;return 0 ;}RegisterClass(&wndclass);hwnd = CreateWindow (szAppName, TEXT ("简易计算器"),WS_OVERLAPPEDWINDOW ,100, 150,900, 500,NULL, NULL, hInstance, NULL) ;ShowWindow (hwnd, iCmdShow) ;UpdateWindow (hwnd) ;while (GetMessage (&msg, NULL, 0, 0)){TranslateMessage (&msg) ;DispatchMessage (&msg) ;}return msg.wParam ;}LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {HDC hdc ;PAINTSTRUCT ps ;RECT rect ;static HWND hwndLab1,hwndLab2,hwndLab3,hwndLab4,hwndLab5,hwndLab6,hwndLab7,hwndLab8,hwndLab 9,hwndLab10,hwndLab11,hwndLab12,hwndLab13,childHwnd;static HWND hwndEdt1,hwndEdt2,hwndEdt3,hwndEdt4,hwndEdt5,hwndEdt6,hwndEdt7,hwndEdt8;static HWND hwndcmb1,hwndradiobtn1,hwndradiobtn2,hwndcheckbox1,hwndcheckbox2,hwndcheckbox3,hw ndbtnlogin,hwndbtnreset;static HWND hwndlistbox1,hwndlistbox2,hwndlistbox3,hwndlistbox4;int cxClient,cyClient;HINSTANCE hInstance ;static int cyChar , cxChar ;wchar_t *szUsername[32],*szNumber[32],*szclass[32],*szlistbox[32];wchar_t *radiotext[20],*checkboxtext[20];wchar_t *temp[120];wchar_t *split[]={" + "};wchar_t*NUM1[32],*NUM2[32],*NUM3[32],*NUM4[32],*NUM5[32],*NUM6[32],*NUM7[32],*NUM8[3 2];int res1,res2,res3,res4;wchar_t *tNUM1[32],*tNUM2[32],*tNUM3[32],*tNUM4[32];int itemid,radioindex;char *n;int i1,i2,i3,i4,i5,i6,i7,i8;switch (message){case WM_CREATE:hInstance = (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE) ;hwndLab1 = CreateWindow ( TEXT("static"),"我的计算器",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 15555,hInstance, NULL) ;hwndLab2 = CreateWindow ( TEXT("static"),"NUM1",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 255,hInstance, NULL) ;hwndLab3 = CreateWindow ( TEXT("static"),"NUM2",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 355,hInstance, NULL) ;hwndLab4 = CreateWindow ( TEXT("static"),"NUM3",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 1004,hwndLab5 = CreateWindow ( TEXT("static"),"NUM4",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 105,hInstance, NULL) ;hwndLab6 = CreateWindow ( TEXT("static"),"NUM5",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 36,hInstance, NULL) ;hwndLab7 = CreateWindow ( TEXT("static"),"NUM6",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 77,hInstance, NULL) ;hwndLab8 = CreateWindow ( TEXT("static"),"NUM7",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 87,hInstance, NULL) ;hwndLab9 = CreateWindow ( TEXT("static"),"NUM8",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 95,hInstance, NULL) ;hwndLab10 = CreateWindow ( TEXT("static"),"+",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hInstance, NULL) ;hwndLab11 = CreateWindow ( TEXT("static"),"-",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 98,hInstance, NULL) ;hwndLab12 = CreateWindow ( TEXT("static"),"*",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 99,hInstance, NULL) ;hwndLab13 = CreateWindow ( TEXT("static"),"/",WS_CHILD | WS_VISIBLE | SS_CENTER ,0, 0,0, 0,hwnd, (HMENU) 97,hInstance, NULL) ;/////////////////////////////////////////////////////////////////////////////////// hwndlistbox1=CreateWindow ( TEXT("listbox"),"",WS_CHILD | WS_VISIBLE |WS_VSCROLL | WS_BORDER | LBS_NOTIFY,0, 0,0, 0,hwnd, (HMENU) 14,hInstance, NULL) ;hwndlistbox2=CreateWindow ( TEXT("listbox"),"",WS_CHILD | WS_VISIBLE |WS_VSCROLL | WS_BORDER | LBS_NOTIFY,0, 0,0, 0,hwnd, (HMENU) 14,hInstance, NULL) ;hwndlistbox3=CreateWindow ( TEXT("listbox"),"",WS_CHILD | WS_VISIBLE |WS_VSCROLL | WS_BORDER | LBS_NOTIFY,0, 0,0, 0,hwnd, (HMENU) 14,hInstance, NULL) ;hwndlistbox4=CreateWindow ( TEXT("listbox"),"",WS_CHILD | WS_VISIBLE |WS_VSCROLL | WS_BORDER | LBS_NOTIFY,0, 0,0, 0,hwnd, (HMENU) 14,hInstance, NULL) ;//////////////////////////////////////////////////////////////////////////////////// hwndEdt1 = CreateWindow ( TEXT("edit"),"",WS_CHILD | WS_VISIBLE | ES_LEFT ,0, 0,0, 0,hwnd, (HMENU) 6,hInstance, NULL) ;hwndEdt2 = CreateWindow ( TEXT("edit"),"",WS_CHILD | WS_VISIBLE | ES_LEFT ,0, 0,0, 0,hwnd, (HMENU) 7,hInstance, NULL) ;hwndEdt3 = CreateWindow ( TEXT("edit"),"",WS_CHILD | WS_VISIBLE | ES_LEFT ,0, 0,0, 0,hwnd, (HMENU) 8,hInstance, NULL) ;//上面3个是输入框hwndEdt4 = CreateWindow ( TEXT("edit"),"",WS_CHILD | WS_VISIBLE | ES_LEFT ,0, 0,0, 0,hwnd, (HMENU) 9,hInstance, NULL) ;//上面3个是输入框hwndEdt5 = CreateWindow ( TEXT("edit"),"",WS_CHILD | WS_VISIBLE | ES_LEFT ,0, 0,0, 0,hwnd, (HMENU) 10,hInstance, NULL) ;//上面3个是输入框hwndEdt6 = CreateWindow ( TEXT("edit"),"",WS_CHILD | WS_VISIBLE | ES_LEFT ,0, 0,0, 0,hwnd, (HMENU) 11,hInstance, NULL);hwndEdt7 = CreateWindow ( TEXT("edit"),"",WS_CHILD | WS_VISIBLE | ES_LEFT ,0, 0,0, 0,hwnd, (HMENU) 12,hInstance, NULL);hwndEdt8 = CreateWindow ( TEXT("edit"),"",WS_CHILD | WS_VISIBLE | ES_LEFT ,0, 0,0, 0,hwnd, (HMENU) 13,hInstance, NULL);hwndbtnlogin=CreateWindow ( TEXT("button"),TEXT("提交"),WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,0, 0,0, 0,hwnd, (HMENU) 15,hInstance, NULL) ;hwndbtnreset=CreateWindow ( TEXT("button"),TEXT("重置"),WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,0, 0,0, 0,hwnd, (HMENU) 16,hInstance, NULL) ;cyChar = HIWORD (GetDialogBaseUnits ()) ;cxChar = LOWORD(GetDialogBaseUnits ()) ;return 0;case WM_SIZE:cxClient=LOWORD(lParam);cyClient=HIWORD(lParam);// MoveWindow(hwndRect,cxClient,cyClient,150,200,TRUE);MoveWindow(hwndLab1,3*cxClient/20+1*cxChar,1*cyClient/10,50*cxChar,2*cyChar,TRUE); //我的计算器MoveWindow(hwndLab2,3*cxClient/20,3*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //NUM1MoveWindow(hwndLab3,10*cxClient/20,3*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //NUM2MoveWindow(hwndLab4,3*cxClient/20,4*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //NUM3MoveWindow(hwndLab5,10*cxClient/20,4*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //NUM4MoveWindow(hwndLab6,3*cxClient/20,5*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //NUM5MoveWindow(hwndLab7,10*cxClient/20,5*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //NUM6MoveWindow(hwndLab8,3*cxClient/20,6*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //NUM7MoveWindow(hwndLab9,10*cxClient/20,6*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //NUM8MoveWindow(hwndLab10,8*cxClient/20,3*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE);//+MoveWindow(hwndLab11,8*cxClient/20,4*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //-MoveWindow(hwndLab12,8*cxClient/20,5*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); //*MoveWindow(hwndLab13,8*cxClient/20,6*cyClient/10+cyChar/5,10*cxChar,2*cyChar,TRUE); ///MoveWindow(hwndlistbox1,15*cxClient/20+10*cxChar,3*cyClient/10,20*cxChar,1.5*cyChar,TRU E); //学院显示MoveWindow(hwndlistbox2,15*cxClient/20+10*cxChar,4*cyClient/10,20*cxChar,1.5*cyChar,TRU E);MoveWindow(hwndlistbox3,15*cxClient/20+10*cxChar,5*cyClient/10,20*cxChar,1.5*cyChar,TRU E);MoveWindow(hwndlistbox4,15*cxClient/20+10*cxChar,6*cyClient/10,20*cxChar,1.5*cyChar,TRU E);MoveWindow(hwndEdt1,3*cxClient/20+10*cxChar,3*cyClient/10,20*cxChar,1.5*cyChar,TRUE); //NUM1输入框MoveWindow(hwndEdt2,10*cxClient/20+10*cxChar,3*cyClient/10,20*cxChar,1.5*cyChar,TRUE); //NUM2输入框MoveWindow(hwndEdt3,3*cxClient/20+10*cxChar,4*cyClient/10,20*cxChar,1.5*cyChar,TRUE); //NUM3输入框MoveWindow(hwndEdt4,10*cxClient/20+10*cxChar,4*cyClient/10,20*cxChar,1.5*cyChar,TRUE); //NUM4输入框MoveWindow(hwndEdt5,3*cxClient/20+10*cxChar,5*cyClient/10,20*cxChar,1.5*cyChar,TRUE); //NUM5输入框MoveWindow(hwndEdt6,10*cxClient/20+10*cxChar,5*cyClient/10,20*cxChar,1.5*cyChar,TRUE); //NUM6输入框MoveWindow(hwndEdt7,3*cxClient/20+10*cxChar,6*cyClient/10,20*cxChar,1.5*cyChar,TRUE); //NUM5输入框MoveWindow(hwndEdt8,10*cxClient/20+10*cxChar,6*cyClient/10,20*cxChar,1.5*cyChar,TRUE); //NUM6输入框MoveWindow(hwndbtnlogin,3*cxClient/20+5*cxChar,7*cyClient/10+3*cyChar,15* cxChar,3*cyChar,TRUE); //提交按钮MoveWindow(hwndbtnreset,3*cxClient/20+35*cxChar,7*cyClient/10+3*cyChar,15* cxChar,3*cyChar,TRUE); // 重置按钮return 0;case WM_COMMAND:switch(LOWORD(wParam)) //判断子窗口ID, 根据子窗口ID做出不同响应{case 15: //处理ID为15的子窗口消息switch(HIWORD(wParam)){case BN_CLICKED: //处理的按下通知码i1 = SendMessage(hwndEdt1,EM_LINELENGTH,0,0); //判断长度if(i1==0) NUM1[32]="0";else SendMessage(hwndEdt1,WM_GETTEXT,32,(LPARAM)NUM1);//i2 = SendMessage(hwndEdt2,EM_LINELENGTH,0,0); //判断长度if(i2==0) NUM2[32]="0";else SendMessage(hwndEdt2,WM_GETTEXT,32,(LPARAM)NUM2); //获取NUM2i3 = SendMessage(hwndEdt3,EM_LINELENGTH,0,0); //判断长度if(i3==0) NUM3[32]="0";else SendMessage(hwndEdt3,WM_GETTEXT,32,(LPARAM)NUM3);i4 = SendMessage(hwndEdt4,EM_LINELENGTH,0,0); //判断长度if(i4==0) NUM4[32]="0";else SendMessage(hwndEdt4,WM_GETTEXT,32,(LPARAM)NUM4);i5 = SendMessage(hwndEdt5,EM_LINELENGTH,0,0); //判断长度if(i5==0) NUM5[32]="0";else SendMessage(hwndEdt5,WM_GETTEXT,32,(LPARAM)NUM5);i6 = SendMessage(hwndEdt6,EM_LINELENGTH,0,0); //判断长度if(i6==0) NUM6[32]="0";else SendMessage(hwndEdt6,WM_GETTEXT,32,(LPARAM)NUM6);i7 = SendMessage(hwndEdt7,EM_LINELENGTH,0,0); //判断长度if(i7==0) NUM7[32]="0";else SendMessage(hwndEdt7,WM_GETTEXT,32,(LPARAM)NUM7);i8 = SendMessage(hwndEdt8,EM_LINELENGTH,0,0); //判断长度if(i8==0) NUM8[32]="0";else SendMessage(hwndEdt8,WM_GETTEXT,32,(LPARAM)NUM8);if(atoi(NUM8)==0) MessageBox( hwnd, "信息输入有误", TEXT("除数不能为0"), MB_OK | MB_ICONASTERISK ) ;else{res1=atoi(NUM1)+atoi(NUM2);itoa(res1, tNUM1,32);SendMessage(hwndlistbox1,LB_ADDSTRING,0,(LPARAM)tNUM1);res2=atoi(NUM3)-atoi(NUM4);itoa(res2, tNUM2,32);SendMessage(hwndlistbox2,LB_ADDSTRING,0,(LPARAM)tNUM2);res3=atoi(NUM5)*atoi(NUM6);itoa(res3, tNUM3,32);SendMessage(hwndlistbox3,LB_ADDSTRING,0,(LPARAM)tNUM3);res4=atoi(NUM7)/atoi(NUM8);itoa(res4, tNUM4,32);SendMessage(hwndlistbox4,LB_ADDSTRING,0,(LPARAM)tNUM4);}break ;}break ;case 16: ///重置switch(HIWORD(wParam)){case BN_CLICKED:SendMessage(hwndEdt1,EM_SETSEL,0,20);SendMessage(hwndEdt1,WM_CLEAR,0,0);SendMessage(hwndEdt2,EM_SETSEL,0,20);SendMessage(hwndEdt2,WM_CLEAR,0,0);SendMessage(hwndEdt3,EM_SETSEL,0,20);SendMessage(hwndEdt3,WM_CLEAR,0,0);SendMessage(hwndEdt4,EM_SETSEL,0,20);SendMessage(hwndEdt4,WM_CLEAR,0,0);SendMessage(hwndEdt5,EM_SETSEL,0,20);SendMessage(hwndEdt5,WM_CLEAR,0,0);SendMessage(hwndEdt6,EM_SETSEL,0,20);SendMessage(hwndEdt6,WM_CLEAR,0,0);SendMessage(hwndEdt7,EM_SETSEL,0,20);SendMessage(hwndEdt7,WM_CLEAR,0,0);SendMessage(hwndEdt8,EM_SETSEL,0,20);SendMessage(hwndEdt8,WM_CLEAR,0,0);SendMessage(hwndlistbox1,LB_DELETESTRING,0,0);SendMessage(hwndlistbox2,LB_DELETESTRING,0,0);SendMessage(hwndlistbox3,LB_DELETESTRING,0,0);SendMessage(hwndlistbox4,LB_DELETESTRING,0,0);break ;}break;}return 0 ;case WM_DESTROY:PostQuitMessage (0) ;return 0 ;}return DefWindowProc (hwnd, message, wParam, lParam) ;}。
简单计算器程序操作步骤
简单计算器程序操作步骤一、建立”D\ajsq”文件夹二、用VC6编写“简单计算器程序”1、启动VC6,创建“简单计算器程序”工程。
选择D:\asjq,工程名:jsq,选择基于对话框,下一步,完成。
(介绍:类卡、文件卡、资源卡,代码提示工具卡两个,安装visual assist X)2、设计主界面对话框:IDD_JSQ_DIALOG,删除自生成的控件,添加三个Edit Box文本编辑框控件、一个Button按钮控件。
(1)对EDIT查看属性、增加、关联变量:右击EDIT1,选属性,查看ID号为:IDC_EDIT1。
增加、关联变量,右击EDIT1,建立类向导,选成员变量,选中IDC_EDIT1,单击增加变量,名称:m_a,value:float,单击OK。
右击EDIT2,选属性,查看ID号为:IDC_EDIT2。
增加、关联变量,右击EDIT2,建立类向导,选成员变量,选中IDC_EDIT2,单击增加变量,名称:m_b,value:float,单击OK。
右击EDIT3,选属性,查看ID号为:IDC_EDIT3。
增加、关联变量,右击EDIT3,建立类向导,选成员变量,选中IDC_EDIT3,单击增加变量,名称:m_c,value:float,单击OK。
(2)对BUTTON1修改属性和增加消息映射响应函数:右击BUTTON1,选属性,查看ID号为:IDC_BUTTON1,修改标题为:add;增加消息映射响应函数,右击,建立类向导,选中Message Maps,选中IDC_BUTTON1,选中BN_CLICKED,单击Add Function,名称:OnButton1,单击OK。
单击edit code,编写代码:BUTTON1的OnButton1的代码.txt。
UpdateData(true); //从控件得到值赋给变量,给m_a=5;m_b=8;m_c=0;m_c=m_a+m_b; // m_c=13;UpdateData(false); //从变量值给控件显示,文本框分别显示:5,8,13;三、操作使用所编写的“简单计算器程序”F7,Ctrl+F51。
Windows下自带的计算器使用指导
这个计算器的功能是如此的强大,尤其对于一个程序员,更是相当的上手,不善加利用,简直就是暴殄天物。
下面大概介绍一下其功能与用法。
一、标准计算器这是最常用也是最简单的模式,加减乘除,开方倒数,相信每个人都很熟悉,我觉得需要注意的几点是:1.CE/C:CE表示Clear Error,是指你清楚你当前的错误输入;而C表示Clear,是指清楚整个计算。
比如你输入1+2之后,按CE会清除第二个参数2,你可以继续输入其他数和第一个参数1相加。
而C则整个的删除1+2这个计算,你需要重新开始一个计算。
2.MC/MR/MS/M+/M-:M表示Memory,是指一个中间数据缓存器,MC=Memory Clear,MR=Memory Read, MS=Memory Save, M+=Memory Add, M-=Memory Minus,可以用一个例子来演示:(7-2) * (8-2)=先输入7,按MS保存,输入2,按M-与缓存器中的7相减,此时缓存器中的值为5;然后计算8-2,得出结果为6,输入*相乘,按MR读出之前保存的数5,按=得出结果30,算完后按MC清除缓存器。
3.% :几番尝试,我还是不怎么理解这个操作的意义何在,其规则是将前两个操作数相乘并取其百分值,而与操作符没有任何关系,如下:1.7*8%=7*=2.7+8%=7+=二、科学计算器这是标准模式的扩展,主要是添加了一些比较常用的数学函数,我觉得可以分为三组:1.三角函数:正弦,双曲正弦,按Inv可以计算其反函数反正弦,反双曲正弦,对于余弦,正切也是如此,这样就有4*3一共12个函数。
2.代数函数:高中代数里学过的幂函数(x2, x3, x1/3, x y, x1/y),对数函数(In,log),阶乘(n!),指数函数(10x)3.其他:这里有些函数在编程的时候用的会比较多,比如取整(Int),圆周率(Pi),取模(Mod),以及其他一些表示函数如度分秒表示(dms),科学计数法表示(F-E),和科学计数法输入(Exp)这是需要注意的几点是:1.对于需要一个输入参数(x)的函数,一般先输入参数,再按函数进行计算;对于有两个参数的函数(x,y),一般是先输入x参数,按函数,再输入第二个参数,按=进行计算。
简单计算器
简单计算器1.基本功能描述简单计算器包括基本运算功能。
双目运算符包含基本的四则运算加减乘除。
可对输入任意整数操作数进行以上的所有运算并能连续运算。
出现错误会给出相应提示,退出功能以及有与所有按钮相对应的菜单项。
2.设计思路如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。
子程序开始时m_num为零。
按下数字按钮后,判断m_num的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。
输入数据子函数3.软件设计3.1设计步骤打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名jisuanqi及其所在位置,点击确定,如图3所示。
图3 新建MFC AppWizard[exe]工程将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图4所示。
图4 基本对话框这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图5所示图5 新建的对话框3.2界面设计1、创建控件在图5所示的Resoure View选项卡中打开Dialog资源组,双击IDD_ZHOUTONG_DIALOG,在右边的窗口中显示出待编辑的对话框。
开始摆放控件,包括编辑框和按钮的创建。
按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。
1)在图5中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。
在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图6所示,在该对话框中输入ID属性。
2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。
在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push Button属性对话框,如图7所示,在该对话框中输入控件的ID值和标题属性。
WINDOWS式样的计算器
if (Number2 != "") {
Number2 = answer.toString();
Display(Number2);
} else {
Number1 = answer.toString();
if(NewNumber != "blank") {
Number2 += answer;
} else {
Number1 = answer;
}
NewNumber = "blank";
Display(answer);
}
function MemorySubtract(answer) {
<td><input type="button" name="calc5" class="blue" value=" 5 " onClick="CheckNumber('5'); return false;"></td>
<td><input type="button" name="calc6" class="blue" value=" 6 " onClick="CheckNumber('6'); return false;"></td>
</td></tr>
</table>
windows编程_计算器
华中农业大学实验报告实验课程:实验时间:年月日成绩:专业班级:学号:姓名:批阅教师:实验目的:MFC实现简单计算器的功能。
实验步骤:1.设计出对话框。
2.通过属性,控件,函数设置后在函数中添加代码如下:先定义全局变量double num1=0,num2=0,p=1;int i,j=0;bool flag=0;//flag=0,该数不是小数;flag=1,该数是小数。
j=1,加法;j==2,减法;3 乘法;4 除法;在函数中添加各项功能void CjisuanjiDlg::OnBnClickedoff(){OnOK();}void CjisuanjiDlg::OnBnClickedac(){p=1;m_ee=0;num1=num2=0;UpdateData(FALSE);}自定义的一个函数void CjisuanjiDlg::change(){if(flag==0){ m_ee=m_ee*10+i; UpdateData(FALSE);} else {p=p/10;m_ee=m_ee+i*p;UpdateData(FALSE);}}void CjisuanjiDlg::OnBnClicked1(){i=1;change();}void CjisuanjiDlg::OnBnClicked2(){i=2;change();}void CjisuanjiDlg::OnBnClicked3(){ i=3;change();}void CjisuanjiDlg::OnBnClicked4(){i=4;change();}void CjisuanjiDlg::OnBnClicked5(){i=5;change();}void CjisuanjiDlg::OnBnClicked6(){i=6;change();}void CjisuanjiDlg::OnBnClicked7(){i=7;change();}void CjisuanjiDlg::OnBnClicked8(){i=8;}void CjisuanjiDlg::OnBnClicked9(){i=9;change();}void CjisuanjiDlg::OnBnClicked0(){i=0;change();}void CjisuanjiDlg::OnBnClickeddian() {flag=1;}void CjisuanjiDlg::OnBnClickedfu(){m_ee=-m_ee;UpdateData(FALSE);}void CjisuanjiDlg::Onjia(){j=1;num1=m_ee;m_ee=0;flag=0;p=1;}void CjisuanjiDlg::Onjian(){j=2;num1=m_ee;m_ee=0;flag=0;p=1;}void CjisuanjiDlg::Oncheng(){j=3;num1=m_ee;m_ee=0;flag=0;p=1; }void CjisuanjiDlg::Onchu(){j=4;num1=m_ee;m_ee=0;flag=0;p=1; }void CjisuanjiDlg::Ondengyu(){num2=m_ee;switch(j){case 1:m_ee=num1+num2;break;case 2:m_ee=num1-num2;break;m_ee=num1*num2;break;case 4:m_ee=num1/num2;break;default:break;}UpdateData(FALSE);num2=0;num1=0;m_ee=0;flag=0;}实验运行结果:实验心得:很早照书上的程序写了个很简单的加减乘除,个人觉得太简单啦,于是改为按钮并添加了小数点和正负号,刚开始因为考虑不周总出现错误,特别是小数点这一块。
windows编程大作业_简单计算器
实验报告(2013 / 2014 学年第一学期)课程名称windows 编程实验名称简单计算器实验时间2023 年12 月20 日指导单位计算机、软件学院指导教师王子元学生姓名班级学号学院(系) 计算机学院、软件学院专业计算机软件与服务外包实验报告三、实验原理及内容[实验内容]1. 工程的创建。
使用MFC 创建一个基于对话框的工程;2. 界面设计。
使用控件工具栏为对话框添加所需控件,并设置控件属性;使用界面布局工具栏调整控件布局,完成应用程序界面设计。
3. 创建对话框成员变量和成员函数。
使用ClassWizard为控件添加相关联的对话框成员变量和消息相应函数;在Workspace窗口的ClassView页中,根据需要为对话框添加其他成员变量和成员函数。
4.编写代码。
5.编译、调试程序;运行程序,并对程序功能进行测试功能设计(1)支持加减乘除运算(2+3=5)(2)支持输入正确的乘方运算(如2^3=8)(3)支持混合四则运算(如2+3*2=8)(4)支持正确的表达式运算(如2+3*(2-4/2)=2)(5)计算器的输入方式:支持鼠标点击输入和键盘输入本计算器支持鼠标点击操作和键盘输入。
(鼠标输入是点击按钮,编辑框即显示点击的结果和计算结果,键盘输入是点击编辑框锁定光标后从键盘输入的)。
(6)使用图形界面中的事件委托机制来处理事件响应计算器计算结果的输出方式:在计算器窗口的显示。
(7)本计算器应该要支持退格和清零。
点击C按钮将编辑框清零,点击backspace按钮,退格,清除编辑框中最后一个输入字符。
(8)算术运算的数据类型:整数和浮点数本计算器支持的精度是6位小数,支持的运算是32位,超出即位溢出,同时显示的结果仅保留6位小数。
本计算器默认诸如“(8)=”的表达式有效,不设置错误提示。
出现运算异常的情况为:①.被除数为0的情况,提示用户被除数不能为零!②.输入的表达式不正确时,提示出错。
(9)点击等号按钮,或者键盘输入等号时,计算器在编辑框显示计算结果。
css+div做的简单windows计算器
}
#zhuti_right2 .anniu{
float:left;
width:80px;
line-height:75px;
margin:6px 10px;
border:2px solid #eeeeee;
color:blue;
background:#eeeeee;
width:155px;
height:470px;
}
#zhuti_left #fangkuang{
float:left;
width:120px;
height:75px;
margin:15px 15px;
border:2px solid #eeeeee;
background:#eeeeee;
}
#zhuti_left .anniu{
float:left;
width:130px;
line-height:70px;
margin:10px 10px;
border:2px solid #eeeeee;
color:red;
background:#eeeeee;
}
#zhuti_right{
float:right;
width:550px;
height:480px;
width:750px;
line-height:45px;
//border:2px solid blue;
}
#zhuti_top1 ul{
float:left;
list-style:none;
width:450px;
}
#zhuti_top1 ul li{
C#编写简易计算器(附源代码)超详细
超详细因为计算器设计的控件太多,不便使用控制台应用程序完成,所以这里使用Windows窗体应用程序,并命名为Calc,如下图所示:向窗体中拖入需要的控件,如下图所示:(完成效果图)结果显示区(作者博客左边的文本框)是TextBox控件,并修改其name为txtShow,按键0~9 为Button 控件,并将其name分别修改为btn_O、btn_1、btn_2、btn_3、btn_4、btn_5、btn_6、btn_7、btn_8、btn_9;按键【负数】的name值修改为btn_sign,按键【.】的name修改为btn_dot,按键【+ - * / 】的name 值分别修改为btn_add、btn_sub、btn_mul、btn_div,按键【=】的name值修改为btn_equ,按键【倒数】的name值修改为btn_rev,按键【平方】的name值修改为btn_sqr,按键【开方】的name值修改为btn_sqrt。
右边的计算器图片空间是PictureBox ,作者博客控件是LinkLabel ,可以不添加,以上所有控件均可按照需求添加,只保留自己需要的按钮控件和textbox控件即可。
三、代码部分(含解释),采用switch多分支语句编写using System;using System.Drawing;using System.Collections;using ponentModel;usingusing System.Data;namespace Calc{/// <summary>///温柔一刀C#简易计算器的实现/// </summary>public class CalcFormForm{private Button btnprivate Button btnprivate Button btnprivate Button btnprivate Button btnprivate Button btn_5;private Button btn_6;private Button btn_7;private Button btn_8;private Button btn_9;private Button btn_add;private Button btn_sub;private Button btn_mul;private Button btn_div;private Button btn_sqrt;private Button btn_sign;private Button btn_equ;private Button btn_dot;private Button btn_rev;private TextBox txtShow;private Button btn_sqr;private PictureBox pictureBox1;private LinkLabel linkLabel1;/// <summary>/// 必需的设计器变量。
C#编写的windows计算器的实例代码
C#编写的windows计算器的实例代码复制代码代码如下:using System;using System.Drawing;using System.Windows;using System.Windows.Forms;using System.Collections;using ponentModel;using System.Data;namespace comput{/// <summary>/// 这是⼀个计算器的简单实现。
/// </summary>public class Form1 : System.Windows.Forms.Form{#region 控件声明private System.Windows.Forms.TextBox txtShow;private System.Windows.Forms.GroupBox groupBox1;private System.Windows.Forms.Button btn_rev;private System.Windows.Forms.Button btn_dot;private System.Windows.Forms.Button btn_add;private System.Windows.Forms.Button btn_equ;private System.Windows.Forms.Button btn_sign;private System.Windows.Forms.Button btn_sub;private System.Windows.Forms.Button btn_mul;private System.Windows.Forms.Button btn_0;private System.Windows.Forms.Button btn_3;private System.Windows.Forms.Button btn_2;private System.Windows.Forms.Button btn_1;private System.Windows.Forms.Button btn_6;private System.Windows.Forms.Button btn_5;private System.Windows.Forms.Button btn_4;private System.Windows.Forms.Button btn_sqrt;private System.Windows.Forms.Button btn_div;private System.Windows.Forms.Button btn_7;private System.Windows.Forms.Button btn_8;private System.Windows.Forms.Button btn_9;private System.Windows.Forms.MainMenu mainMenu1;private System.Windows.Forms.MenuItem menuItem1;private System.Windows.Forms.Button btn_sqr;private System.Windows.Forms.MenuItem menuItem2;private System.Windows.Forms.MenuItem menuItem3;private System.Windows.Forms.MenuItem menuItem4;private System.Windows.Forms.MenuItem menuItem5;private System.Windows.Forms.MenuItem menuItem6;private System.Windows.Forms.Button c;private System.Windows.Forms.Button ce;private System.Windows.Forms.MenuItem menuItem8;private System.Windows.Forms.MenuItem menuItem9;private System.Windows.Forms.MenuItem menuItem10;/// <summary>/// 必需的设计器变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告(2013 / 2014 学年第一学期)课程名称windows 编程实验名称简单计算器实验时间2023 年12 月20 日指导单位计算机、软件学院指导教师王子元学生姓名班级学号学院(系) 计算机学院、软件学院专业计算机软件与服务外包实验报告实验名称简单计算器指导教师王子元实验类型设计实验学时实验时间2013.2.20 一、实验目的和要求要求:实现一个简单计算器,其类似于Windows附件中自带的计算器。
要求界面简洁大方,具有一个菜单栏,一个编辑框及若干按键。
按钮控件具有对鼠标敏感的功能,当鼠标位于不同的位置和状态时,控件会显示不同的颜色。
1.编程思路清晰,图像美观2.代码书写规范,关键部分有注释3.功能实现全面,计算结果正确4.文档书写规范完整,有测试过程5.实现按钮控件对鼠标的敏感处理功能小组成员背景计算器的功能和界面我们都是十分熟悉的。
虽然目前我们电脑上基本都配置得有windows附件自带的计算器,相较于系统自带的计算器,我们想要开发的计算器是要求能实现复杂表达式(如2*3+4-(3+2/2)之类的)运算的,并能准确快速的显示计算结果的软件。
本软件的应用目标是准确快速的计算表达式运算。
本软件的作用范围是面向中小学生的简单的表达式计算类型。
本软件全部内容自含。
该项目开发的周期为两周二、实验环境(实验设备)硬件:微型计算机软件:Microsoft Visual Studio 2010三、实验原理及内容[实验内容]1. 工程的创建。
使用MFC 创建一个基于对话框的工程;2. 界面设计。
使用控件工具栏为对话框添加所需控件,并设置控件属性;使用界面布局工具栏调整控件布局,完成应用程序界面设计。
3. 创建对话框成员变量和成员函数。
使用ClassWizard为控件添加相关联的对话框成员变量和消息相应函数;在Workspace窗口的ClassView页中,根据需要为对话框添加其他成员变量和成员函数。
4.编写代码。
5.编译、调试程序;运行程序,并对程序功能进行测试功能设计(1)支持加减乘除运算(2+3=5)(2)支持输入正确的乘方运算(如2^3=8)(3)支持混合四则运算(如2+3*2=8)(4)支持正确的表达式运算(如2+3*(2-4/2)=2)(5)计算器的输入方式:支持鼠标点击输入和键盘输入本计算器支持鼠标点击操作和键盘输入。
(鼠标输入是点击按钮,编辑框即显示点击的结果和计算结果,键盘输入是点击编辑框锁定光标后从键盘输入的)。
(6)使用图形界面中的事件委托机制来处理事件响应计算器计算结果的输出方式:在计算器窗口的显示。
(7)本计算器应该要支持退格和清零。
点击C按钮将编辑框清零,点击backspace按钮,退格,清除编辑框中最后一个输入字符。
(8)算术运算的数据类型:整数和浮点数本计算器支持的精度是6位小数,支持的运算是32位,超出即位溢出,同时显示的结果仅保留6位小数。
本计算器默认诸如“(8)=”的表达式有效,不设置错误提示。
出现运算异常的情况为:①.被除数为0的情况,提示用户被除数不能为零!②.输入的表达式不正确时,提示出错。
(9)点击等号按钮,或者键盘输入等号时,计算器在编辑框显示计算结果。
当用户通过计算或者输入得到一个含有等号的表达式之后,再次点击等号或者键盘输入等号均不再经行计算。
(10) 以上所有的运算都是在10进制下进行。
(11) 用户不输入任何表达式,直接点击或者键盘输入等号时,默认在编辑框显示0。
实验结果:注:关于鼠标敏感的实现无法截图,请看程序。
进入界面计算界面输入除数为0输入:6/0=运算结果溢出输入:9666666666666666666666666666666666666666*999999999999999999999999999999999999=表达式有误输入:6*(*4=实现视图内指定区域内对鼠标点击和移动的敏感处理功能需要新加入函数:BOOL CMFCDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message){BOOL bRes=CDialog::OnSetCursor(pWnd, nHitTest, message);HCURSOR h;if(nHitTest==HTCLIENT&&message==WM_RBUTTONDOWN){h=AfxGetApp()->LoadCursor(IDC_CURSOR1);bRes=TRUE;}if(message==WM_LBUTTONDOWN){h=AfxGetApp()->LoadCursor(IDC_CURSOR5);bRes=TRUE;}if(nHitTest==HTCAPTION&&message!=WM_RBUTTONDOWN&&mess age==WM_LBUTTONDOWN){h=AfxGetApp()->LoadStandardCursor(IDC_SIZEALL);bRes=TRUE;}if(nHitTest==HTMENU&&message!=WM_RBUTTONDOWN){h=AfxGetApp()->LoadCursor(IDC_CURSOR4);bRes=TRUE;}SetCursor(h);return bRes;}关键代码如下:void CMfcTESTDlg::OnBTdian(){// TODO: Add your control notification handler code here// int leng;int key=0; //key来ぁ?标括?记?是?否?已?经-存?在ú等台?号?// leng=s.GetLength(); //判D断?是?否?存?在ú等台?号?// for (int i=0;i<leng;i++) {// if (s.GetAt(i)=='=') {// key=1;// }// }if (s.Find('=')!=-1) {key=1;}if(key==1){s="";}CString s1;char panduandian;//判D断?是?否?能ü输?入?小?数簓点?// 标括?示?s的?最?后ó一?位?,?并¢判D断?是?否?为a数簓字?0-9,?同?时骸?满ú足?标括?示?符?前°移?至á距à离?最?近ü的?小?数簓点?中D间?有瓺操ù作痢?符?。
£int length=s.GetLength();// 有瓺可é能ü出?现?的?情é况? 1.2.1,?opt.,if(length>0){panduandian=s.GetAt(length-1);for(;panduandian>='0'&&panduandian<='9';length=length-1) {if(length<=0) //检ì验éGetAt参?数簓是?否?合?法ぁ?break;else {panduandian=s.GetAt(length-1);}} //长¤度è减?少Θ?if (length<s.GetLength()&&panduandian=='.') {;}else if(length==s.GetLength()){;}else{GetDlgItem(IDC_BTdian)->GetWindowText(s1);s=s+s1;GetDlgItem(IDC_EDIT1)->SetWindowText(s);}}else{GetDlgItem(IDC_BTdian)->GetWindowText(s1);s=s+'0'+s1;GetDlgItem(IDC_EDIT1)->SetWindowText(s);}}void CMfcTESTDlg::OnBtc(){// TODO: Add your control notification handler code heres="";GetDlgItem(IDC_EDIT1)->SetWindowText("0");}void CMfcTESTDlg::OnBtadd(){//函ˉ数簓功|能ü:阰判D断?是?否?输?入??:阰++,?+-,?+/之?类え?的?运?算?,?并¢显?示?输?入?// TODO: Add your control notification handler code here// int leng;int key=0; //key来ぁ?标括?记?是?否?已?经-存?在ú等台?号?// leng=s.GetLength(); //判D断?是?否?存?在ú等台?号?// for (int i=0;i<leng;i++) {// if (s.GetAt(i)=='=') {// key=1;// }// }if (s.Find('=')!=-1) {key=1;}if(key==1){s="";}CString s1;char panduandian;int length=s.GetLength();if (length>0) {panduandian=s.GetAt(length-1);if (panduandian>='0'&&panduandian<='9'||panduandian==')') {GetDlgItem(IDC_BTADD)->GetWindowText(s1);s=s+s1;GetDlgItem(IDC_EDIT1)->SetWindowText(s);}else{//CMfcTESTDlg.OnBtback();int length=s.GetLength(); // onbtback功|能ü重?用?s.Delete(length-1,1);GetDlgItem(IDC_EDIT1)->SetWindowText(s);GetDlgItem(IDC_BTADD)->GetWindowText(s1);s=s+s1;GetDlgItem(IDC_EDIT1)->SetWindowText(s);}}else{GetDlgItem(IDC_BTADD)->GetWindowText(s1);s=s+'0'+s1;GetDlgItem(IDC_EDIT1)->SetWindowText(s);}}void CMfcTESTDlg::OnBtsub(){// TODO: Add your control notification handler code here// int leng;int key=0; //key来ぁ?标括?记?是?否?已?经-存?在ú等台?号? // leng=s.GetLength(); //判D断?是?否?存?在ú等台?号?// for (int i=0;i<leng;i++) {// if (s.GetAt(i)=='=') {// key=1;// }// }if (s.Find('=')!=-1) {key=1;}if(key==1){s="";}CString s1;char panduandian;int length=s.GetLength();if (length>0) {panduandian=s.GetAt(length-1);if (panduandian>='0'&&panduandian<='9'||panduandian==')') {GetDlgItem(IDC_BTSUB)->GetWindowText(s1);s=s+s1;GetDlgItem(IDC_EDIT1)->SetWindowText(s);}else{//CMfcTESTDlg.OnBtback();int length=s.GetLength(); // onbtback功|能ü重?用?s.Delete(length-1,1);GetDlgItem(IDC_EDIT1)->SetWindowText(s);GetDlgItem(IDC_BTSUB)->GetWindowText(s1);s=s+s1;GetDlgItem(IDC_EDIT1)->SetWindowText(s);}}/* else if (length==0) {GetDlgItem(IDC_BTSUB)->GetWindowText(s1);s=s+s1;GetDlgItem(IDC_EDIT1)->SetWindowText(s);}*/else{GetDlgItem(IDC_BTSUB)->GetWindowText(s1);s=s+'0'+s1;GetDlgItem(IDC_EDIT1)->SetWindowText(s);}}bool flag_opt; //标括?记?是?否?有瓺除y0操ù作痢?,?默?认?为a0,?没?有瓺bool flag_input; //标括?记?是?否?有瓺输?入?错洙?误ó,?默?认?为a0,?没?有瓺bool flag_maxout; //标括?记?是?否?有瓺溢?出?,?默?认?为a0,?没?有瓺void CMfcTESTDlg::OnBteq(){// TODO: Add your control notification handler code hereint length;CString s1;char sout[100];char str[25];memset(str,0,sizeof(str)); //申Θ?请?空?间?flag_opt=0;flag_input=0;flag_maxout=0;int key=0; //key来ぁ?标括?记?是?否?已?经-存?在ú等台?号?// length=s.GetLength(); //判D断?是?否?存?在ú等台?号?// for (int i=0;i<length;i++) {// if (s.GetAt(i)=='=') {// key=1;// }// }if (s.Find('=')!=-1) {key=1;}if (s.GetLength()==0||s=='0') { //什?么′都?没?输?入?,?按恪?等台?号?的?结á果?。