MFC计算器设计

MFC计算器设计
MFC计算器设计

课程名称:Visual C++面向对象与可视化程序设计

实验项目:计算器设计

姓名:

专业:计算机科学与技术

班级:

学号:

计算机科学与技术学院

实验教学中心

2016 年11月19日

哈尔滨理工大学计算机科学与技术学院实验报告

实验项目名称:计算器设计( 2课时)

一、实验目的

1.灵活使用MFC应用程序设计

2.设计计算器

二、实验内容

设计一个简单的计算器,可以实现加法,减法,除法,乘法,取模,开平方,输入数字要求可以输入小数,可以连加。具有清空,回退功能。

三、实验步骤

1.启动VS打2012开新建项目

2.出现的New对话框的Projects标签内选择MFC应用程序

3.Projects Name指定项目的名字,在Location中指定路径后按OK按钮

4.选择创建类型,(例如基于对话框),确定项目类型后按Finish完成。

5.编写实验代码

四、实验结果

五、程序代码

// project_1Dlg.h : 头文件

//

#pragma once

#include "afxwin.h"

// Cproject_1Dlg 对话框

class Cproject_1Dlg : public CDialogEx

{

// 构造

public:

Cproject_1Dlg(CWnd* pParent = NULL); // 标准构造函数void Equal2();

void Cproject_1Dlg::AddDigit(char numKey);

// 对话框数据

enum { IDD = IDD_PROJECT_1_DIALOG };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持

// 实现

protected:

HICON m_hIcon;

long double m_op1,m_op2,m_result;

int m_operation;

int i,s;

long double r;

long double m_m;

long double data[50];

bool st1,st2;

bool pflag;

long double p;

// 生成的消息映射函数

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

public:

double m_num;

CEdit m_control_e;

BOOL m_inv;

BOOL m_hp;

// CString m_sd;

CString m_sd;

afx_msg void OnClicked1x();

afx_msg void OnClickedAdd();

afx_msg void OnClickedB1();

afx_msg void OnClickedB2();

afx_msg void OnClickedB3();

afx_msg void OnClickedB4();

afx_msg void OnClickedB5();

afx_msg void OnClickedB6();

afx_msg void OnClickedB7();

afx_msg void OnClickedB8();

afx_msg void OnClickedB9();

afx_msg void OnClickedB10();

afx_msg void OnClickedClaer();

afx_msg void OnClickedClaer2();

afx_msg void OnClickedBp();

afx_msg void OnClickedBp2();

afx_msg void OnClickedBsp();

afx_msg void OnClickedM();

afx_msg void OnClickedMc();

afx_msg void OnClickedMm();

afx_msg void OnClickedMod();

afx_msg void OnClickedSqrt();

afx_msg void OnClickedMr();

afx_msg void OnClickedSubract();

afx_msg void OnClickedMul();

afx_msg void OnClickedDevide();

afx_msg void OnChangeEdit1();

afx_msg void OnClickedEqual();

};

// project_1Dlg.cpp : 实现文件

//

#include "stdafx.h"

#include "project_1.h"

#include "project_1Dlg.h"

#include "afxdialogex.h"

#include

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx

{

public:

CAboutDlg();

// 对话框数据

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)

END_MESSAGE_MAP()

// Cproject_1Dlg 对话框

Cproject_1Dlg::Cproject_1Dlg(CWnd* pParent /*=NULL*/) : CDialogEx(Cproject_1Dlg::IDD, pParent)

, m_num(0)

, m_sd(_T(""))

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void Cproject_1Dlg::DoDataExchange(CDataExchange* pDX) {

CDialogEx::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT1, m_num);

DDX_Control(pDX, IDC_EDIT1, m_control_e);

DDX_Text(pDX, IDC_sd, m_sd);

}

BEGIN_MESSAGE_MAP(Cproject_1Dlg, CDialogEx)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_1x, &Cproject_1Dlg::OnClicked1x)

ON_BN_CLICKED(IDC_ADD, &Cproject_1Dlg::OnClickedAdd) ON_BN_CLICKED(IDC_b1, &Cproject_1Dlg::OnClickedB1)

ON_BN_CLICKED(IDC_b2, &Cproject_1Dlg::OnClickedB2)

ON_BN_CLICKED(IDC_b3, &Cproject_1Dlg::OnClickedB3)

ON_BN_CLICKED(IDC_b4, &Cproject_1Dlg::OnClickedB4)

ON_BN_CLICKED(IDC_b5, &Cproject_1Dlg::OnClickedB5)

ON_BN_CLICKED(IDC_b6, &Cproject_1Dlg::OnClickedB6)

ON_BN_CLICKED(IDC_b7, &Cproject_1Dlg::OnClickedB7)

ON_BN_CLICKED(IDC_b8, &Cproject_1Dlg::OnClickedB8)

ON_BN_CLICKED(IDC_b9, &Cproject_1Dlg::OnClickedB9)

ON_BN_CLICKED(IDC_b10, &Cproject_1Dlg::OnClickedB10)

ON_BN_CLICKED(IDC_claer, &Cproject_1Dlg::OnClickedClaer)

ON_BN_CLICKED(IDC_claer2, &Cproject_1Dlg::OnClickedClaer2) ON_BN_CLICKED(IDC_bp, &Cproject_1Dlg::OnClickedBp)

ON_BN_CLICKED(IDC_bp2, &Cproject_1Dlg::OnClickedBp2)

ON_BN_CLICKED(IDC_bsp, &Cproject_1Dlg::OnClickedBsp)

ON_BN_CLICKED(IDC_M, &Cproject_1Dlg::OnClickedM)

ON_BN_CLICKED(IDC_MC, &Cproject_1Dlg::OnClickedMc)

ON_BN_CLICKED(IDC_MM, &Cproject_1Dlg::OnClickedMm)

ON_BN_CLICKED(IDC_MOD, &Cproject_1Dlg::OnClickedMod)

ON_BN_CLICKED(IDC_sqrt, &Cproject_1Dlg::OnClickedSqrt)

ON_BN_CLICKED(IDC_MR, &Cproject_1Dlg::OnClickedMr)

ON_BN_CLICKED(IDC_SUBRACT, &Cproject_1Dlg::OnClickedSubract) ON_BN_CLICKED(IDC_mul, &Cproject_1Dlg::OnClickedMul)

ON_BN_CLICKED(IDC_devide, &Cproject_1Dlg::OnClickedDevide) ON_EN_CHANGE(IDC_EDIT1, &Cproject_1Dlg::OnChangeEdit1)

ON_BN_CLICKED(IDC_EQUAL, &Cproject_1Dlg::OnClickedEqual) END_MESSAGE_MAP()

// Cproject_1Dlg 消息处理程序

BOOL Cproject_1Dlg::OnInitDialog()

{

CDialogEx::OnInitDialog();

// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

BOOL bNameValid;

CString strAboutMenu;

bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

// 执行此操作

SetIcon(m_hIcon, TRUE); // 设置大图标

SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码

m_result=0;m_op1=0,m_op2=0;

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE

}

void Cproject_1Dlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialogEx::OnSysCommand(nID, lParam);

}

}

// 如果向对话框添加最小化按钮,则需要下面的代码

// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,

// 这将由框架自动完成。

void Cproject_1Dlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // 用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);

// 使图标在工作区矩形中居中

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

// 绘制图标

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialogEx::OnPaint();

}

}

//当用户拖动最小化窗口时系统调用此函数取得光标//显示。

HCURSOR Cproject_1Dlg::OnQueryDragIcon()

{

return static_cast(m_hIcon);

}

void Cproject_1Dlg::Equal2()

{

UpdateData(TRUE);

m_op2=m_num;

switch(m_operation)

{

case 1:

m_result = m_op1 + m_op2;

break;

case 2:

m_result = m_op1 - m_op2;

break;

case 3:

m_result = m_op1/m_op2;

break;

case 4:

m_result = m_op1*m_op2;

break;

case 5:

m_result = pow(m_op1,m_op2);

break;

case 6:

m_result = (m_op1||m_op2);

break;

case 7:

{

m_op2=1/m_op2;

m_result = pow(m_op1,m_op2);

}

break;

case 8:

{

// m_result = int(m_op1) bitor int(m_op2) ;

break;

}

break;

case 9:

{

//m_result = int(m_op1) bitand int(m_op2) ;

break;

}

case 10:

m_result=int(m_op1) % int(m_op2) ;

break;

case 12:

// m_result=int(m_op1) compl ~ int(m_op2) ;

break;

default :

//AfxMessageBox(" NO OPERATION TO DO ");

;

}

m_num = m_result;

st1=0;

m_op1=m_result;

pflag=0;

m_control_e.SetFocus();

// m_control_e.SetSel(0,-1);

UpdateData(FALSE);

}

void Cproject_1Dlg::AddDigit(char numKey)

{

// TODO: Add your control notification handler code here CString str, tmp;

tmp.Format(L"%c", numKey);

m_control_e.GetWindowText(str);

if(str == '0'||st1==0)

str = tmp;

else

str += tmp;

st1=1;

m_control_e.SetWindowText(str);

}

void Cproject_1Dlg::OnClicked1x()

{

// TODO: 在此添加控件通知处理程序代码

UpdateData(TRUE);

m_num=1/m_num;

UpdateData(FALSE);

st1=0;

m_control_e.SetFocus();

pflag=0;

}

void Cproject_1Dlg::OnClickedAdd()

{

// TODO: 在此添加控件通知处理程序代码

if(st2==0)

{

UpdateData(TRUE);

m_op1 = m_num;

m_operation = 1;

m_control_e.SetFocus();

st1=pflag=0;

st2=1;

}

else

{

UpdateData(TRUE);

m_operation = 1;

m_control_e.SetFocus();

Equal2();

}

}

void Cproject_1Dlg::OnClickedB1()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('1');

void Cproject_1Dlg::OnClickedB2()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('2');

}

void Cproject_1Dlg::OnClickedB3()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('3');

}

void Cproject_1Dlg::OnClickedB4()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('4');

}

void Cproject_1Dlg::OnClickedB5()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('5');

}

void Cproject_1Dlg::OnClickedB6()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('6');

}

void Cproject_1Dlg::OnClickedB7()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('7');

}

void Cproject_1Dlg::OnClickedB8()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('8');

}

void Cproject_1Dlg::OnClickedB9()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('9');

}

void Cproject_1Dlg::OnClickedB10()

{

// TODO: 在此添加控件通知处理程序代码

AddDigit('0');

}

void Cproject_1Dlg::OnClickedClaer()

{

// TODO: 在此添加控件通知处理程序代码

m_op1 = 0.0;

m_op2 = 0.0;

m_result = 0.0;

m_operation =0;

m_num = 0.0;

m_inv = FALSE;

m_hp = FALSE;

UpdateData(FALSE);

m_control_e.SetFocus();

st1=st2=0;

pflag=0;

}

void Cproject_1Dlg::OnClickedClaer2() {

// TODO: 在此添加控件通知处理程序代码

m_num = 0;

UpdateData(FALSE);

st1=0;

pflag=0;

}

void Cproject_1Dlg::OnClickedBp()

{

// TODO: 在此添加控件通知处理程序代码

if(pflag==0)

AddDigit('.');

//st2=1;

pflag=1;

}

void Cproject_1Dlg::OnClickedBp2()

{

// TODO: 在此添加控件通知处理程序代码

UpdateData(TRUE);

m_num=-m_num;

UpdateData(FALSE);

st1=0;

}

void Cproject_1Dlg::OnClickedBsp()

{

// TODO: 在此添加控件通知处理程序代码

CString str, tmp;

//tmp.Format("%c", numKey);

m_control_e.GetWindowText(str);

int a;

a=str.GetLength();

if(a!=0)

str.Delete(a-1,1);

m_control_e.SetWindowText(str);

}

void Cproject_1Dlg::OnClickedM()

{

// TODO: 在此添加控件通知处理程序代码

UpdateData(TRUE);

m_m=m_num;

//m_num=NULL;

UpdateData(FALSE);

m_control_e.SetFocus();

st1=0;

m_control_e.SetSel(0,-1);

pflag=0;

}

void Cproject_1Dlg::OnClickedMc()

{

// TODO: 在此添加控件通知处理程序代码

m_m=0;

m_control_e.SetFocus();

st1=0;

m_control_e.SetSel(0,-1);

i=0;

s=0;

r=0;

pflag=0;

}

void Cproject_1Dlg::OnClickedMm()

{

// TODO: 在此添加控件通知处理程序代码

UpdateData(TRUE);

m_m=m_m+m_num;

m_num=NULL;

UpdateData(FALSE);

m_control_e.SetFocus();

st1=0;

}

void Cproject_1Dlg::OnClickedMod()

{

// TODO: 在此添加控件通知处理程序代码

UpdateData(TRUE);

m_op1 = m_num;

m_operation= 10;

st1=0;

pflag=0;

m_control_e.SetFocus();

m_control_e.SetSel(0,-1);

}

void Cproject_1Dlg::OnClickedSqrt()

{

// TODO: 在此添加控件通知处理程序代码

UpdateData(TRUE);

m_num=sqrt(m_num);

UpdateData(FALSE);

m_control_e.SetFocus();

st1=0;

m_control_e.SetSel(0,-1);

}

void Cproject_1Dlg::OnClickedMr()

{

// TODO: 在此添加控件通知处理程序代码

m_num=m_m;

UpdateData(FALSE);

m_control_e.SetFocus();

st1=0;

m_control_e.SetSel(0,-1);

pflag=0;

}

void Cproject_1Dlg::OnClickedSubract() {

// TODO: 在此添加控件通知处理程序代码

if(st2==0)

{

UpdateData(TRUE);

m_op1 = m_num;

m_operation = 2;

m_control_e.SetFocus();

st1=pflag=0;

st2=1;

// m_control_e.SetSel(0,-1);

}

else

{

UpdateData(TRUE);

m_operation = 2;

m_control_e.SetFocus();

Equal2();

}

}

void Cproject_1Dlg::OnClickedMul()

{

// TODO: 在此添加控件通知处理程序代码

if(st2==0)

{

UpdateData(TRUE);

m_op1 = m_num;

m_operation = 4;

m_control_e.SetFocus();

st1=pflag=0;

st2=1;

// m_control_e.SetSel(0,-1);

}

else

{

UpdateData(TRUE);

m_operation = 4;

m_control_e.SetFocus();

st1=pflag=0;

Equal2();

}

}

void Cproject_1Dlg::OnClickedDevide()

{

// TODO: 在此添加控件通知处理程序代码

UpdateData(TRUE);

m_op1 = m_num;

m_operation = 3;

m_control_e.SetFocus();

st1=0;

st2=1;

pflag=0;

}

void Cproject_1Dlg::OnChangeEdit1()

{

// TODO: 如果该控件是 RICHEDIT 控件,它将不

// 发送此通知,除非重写 CDialogEx::OnInitDialog() // 函数并调用 CRichEditCtrl().SetEventMask(),

// 同时将 ENM_CHANGE 标志“或”运算到掩码中。

//#1015

// TODO: 在此添加控件通知处理程序代码

}

void Cproject_1Dlg::OnClickedEqual()

{

// TODO: 在此添加控件通知处理程序代码

if(st2==0)

{

UpdateData(TRUE);

m_op2 = m_num;

}

else

{

UpdateData(TRUE);

m_op2=m_num;

}

switch(m_operation)

{

case 1:

m_result = m_op1 + m_op2;

break;

case 2:

m_result = m_op1 - m_op2;

break;

case 3:

m_result = m_op1/m_op2;

break;

case 4:

m_result = m_op1*m_op2;

break;

case 5:

m_result = pow(m_op1,m_op2);

break;

case 6:

m_result = (m_op1||m_op2);

break;

case 7:

{

m_op2=1/m_op2;

m_result = pow(m_op1,m_op2);

}

break;

case 8:

{

//m_result = int(m_op1) bitor int(m_op2) ;

break;

}

break;

case 9:

{

break;

}

case 10:

m_result=(int(m_op1)) % (int(m_op2)) ;

break;

default :

//AfxMessageBox(" NO OPERATION TO DO ");

;

}

m_num = m_result;

st1=0;

m_op1=m_result;

st2=0;

pflag=0;

m_control_e.SetFocus();

// m_control_e.SetSel(0,-1);

UpdateData(FALSE);

}

MFC课程设计报告一个简单的计算器应用程序样本

设计一个简单的计算器应用程序 一、设计目标与内容 1.了解Windows编程的基础知识, 掌握MFC应用程序的基本知识; 2.基本掌握面向对象程序设计的基本思路和方法; 3.掌握用VC++开发应用程序的的一般步骤和方法; 4.能够利用所学的基本知识,设计一个简单的计算器应用程序, 实现基本的加、减、乘、除、求平方根, 求倒数等基本运算( 必须实现的功能) , 实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常见对数等基本运算( 这部分功能选做) 。 5.在程序中注意处理数据和运算符的输入, 计算结果的显示。二,设计要求 1.用VC++进行编码, 实现应用程序的功能。注重编码质量, 代码要有适当的注释; 2.提交设计报告一份( 课程设计任务书、目录、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献) 。

一个简单的计算器应用程序 总体设计 能够利用所学的基本知识,设计一个简单的计算器应用程序, 实现基本的加、减、乘、除、求平方根, 求倒数等基本运算( 必须实现的功能) , 实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常见对数等基本运算( 这部分功能选做) 。在程序中注意处理数据和运算符的输入, 计算结果的显示。 详细设计 ◆新建工程Counter 新建工程, 选择对话框应用程序。 ◆程序运行主界面

图2-1 在对话框内添加相应的控件, 分别给编辑框添加三个变量m_N1,m_N2和m_Result。 然后添加一个组合框, 在里面添加十二个单选按钮设置第一个单选按钮为组, 如图 图2-2 然后给对话框类添加一个int变量Operator用来作相应运算时的标记。 给控件添加相应的函数 1、给单选按钮添加相应的函数 void CCounterDlg::OnRadio1() { Operator=1; } void CCounterDlg::OnRadio2()

(整理)基于vcmfc的科学计算器程序实验报告

实验报告 课程名称:windows软件开发实习实验项目:科学计算器

沈阳工业大学实验报告 (适用计算机程序设计类) 专业班级:软件1006 学号:101201622 姓名:张鑫可 实验名称: 1.实验目的: 本程序设计实践是采用C++语言,在VC平台下设计。本课程设 计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。程序设计实践主要是培养学生利用系统综合C++语言进行程序设计的能力。 1.进一步巩固和复习C++程序设计的基础知识。 2.培养学生结构化程序、模块化程序设计的方法和能力。 3.了解软件的编制过程及各环节的具体内容。 4.提高学生程序调试技巧、软件设计能力和代码规范化等素质。 5.提高学生分析问题、解决问题以及实际运用能力。 2.实验内容: 设计一个简单的计算器。要求能实现整数、小数算数运算。程序带 清零按钮。 3. 实验方案(程序设计说明) 见附件 4. 实验步骤或程序(经调试后正确的源程序) (填写主要步骤与程序代码等。见附件A) 5.出现的问题及解决方法

附件A 沈阳工业大学实验报告 (适用计算机程序设计类) 专业班级:软件1006 学号:101201622 姓名:张鑫可 实验步骤或程序: 一、关于Visual C++: Visual C++6.0由Microsoft开发, 它不仅是一个C++ 编译器,而且是一个基于Windows 操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft 的主力软件产品。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft 公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的 首选工具。虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为6平台。 Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。 二、设计要点 1、基本要求:设计的系统界面要美观大方,操作合理,有必要的 提示。 2、创新要求:在基本要求达到后,进行创新设计。

c计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件 的响应函数代码。

(3)程序清单: 添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法 2.减法 3.乘法 4.除法 int append; //判断后面是否添加数字 成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0;

简单计算器设计报告

简单计算器设计报告 045 一、基本功能描述 通过文本编辑框实现基本整数的加减乘除运算 二、设计思路 如下图是整个程序进行的流程图,基本方法是在ItemText文本编辑框输入字符,程序对字符进行判断,若输入不是数字则提示错误。输入正常时,通过下拉框ComboBox_InsertString 选择相应运算符。点击等号IDC_OK,即可得出运算结果。操作简便,算法简单。 三、软件设计 1、设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名zhoutong及其所在位置,点击确定 1

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成 MFC AppWizard就建立了一个基于对话窗口的程序框架

四、主要程序分析 1、字符判定函数 BOOL IsInt(TCHAR*str) { int i=atoi(str); TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) { return FALSE; } Else { return TRUE; } } 该函数通过atoi把文本编辑框读取的字符转换为数字,再通过wsprintf把转换数字转换为字符,通过strcmp比较原字符和转换得来的字符。如相同返回true,不通则返回false. 3、运算符选择程序 BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP); ComboBox_InsertString(hwndComboOP,-1,TEXT("+")); ComboBox_InsertString(hwndComboOP,-1,TEXT("-")); ComboBox_InsertString(hwndComboOP,-1,TEXT("*")); ComboBox_InsertString(hwndComboOP,-1,TEXT("/")); return TRUE; } 3

可视化编程MFC计算器

// cacuDlg.cpp : implementation file // #include "stdafx.h" #include "cacu.h" #include "cacuDlg.h" #include "math.h" #include "cstring" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg)

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

数电实验二:简易计算器(实验报告)

数电实验2实验报告 1、设计修改方案 (1)加入编码器连接4选一数据选择器,控制进行运算的种类 (2)修改了输出端数据选择器的程序,使得当计算器没有任何输入时,结果显示保持为0,并且利用芯片自身的灭零管脚,让显示结果中,当十位为零时,十 位的零不显示。

2、实验数据及分析 (1)修改后电路图(附后) (2)仿真波形 设置输入2个4位二进制数为0110(十进制6)和0010(十进制2),计算方式控制SW[3:0]设为0111,即模拟除法操作,加入时钟信号。 ①模拟除法波形: 可以看到十位(商)的数码管显示中,1、2、3、4、7段亮,显示为数字3,而个位(余数)显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6除2商3余0。满足计算要求。 ②模拟乘法波形:(SW[3:0]设为1011,其他输入同上)

可以看到个位的数码管显示中,1、4、5、6段亮,显示为C(化为十进制为12),而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6乘2等于0C,即等于12。当改变输入4和2是,显示结果为8,。满足计算要求。 ③模拟加法波形:(SW[3:0]设为1101,其他输入同上) 可以看到个位的数码管显示中,1、2、3、4、5、6、7段全亮,显示为数字8,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6加2等于08,即等于8。满足计算要求。 ④模拟减法波形:(SW[3:0]设为1110,其他输入同上) 可以看到个位的数码管显示中,2、3、6、7段亮,显示为数字3,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6减2等于03,即等于3。满足计算要求。 从上面加减乘除四种功能运算的波形仿真可以看出,本实验设计能够正确完成对输入数字的上述四种运算。满足题目要求。

MFC计算器编程课程设计实践报告

中南大学本科生课程设计(实践)设计报告(程序设计基础) 题目MFC编程科学计算器学生学号1104120502 学生姓名郭斌繁 指导教师蔡旭晖 学院交通运输工程学院专业班级交通运输类1205班 计算机基础教学实验中心 2013 年 7 月 1 日

程序设计(C++)实践报告 1.引言 C++语言的主要特点表现在两个方面,一是全面兼容C 语言,二是支持面向对象的程序: (1) C++是一个更好的C,它保持了C 语言的优点,大多数的C 程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。 (2) C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。这对于设计、编制和调试一些大型的软件尤为重要。 (3) C++集成环境不仅支持C++程序的编译和调试,而且也支持C 程序的编译和调试。通常,C++程序环境约定:当源程序文件的扩展名为c.时,则为C 程序;而当源程序文件的扩展名为cpp.时,则为C++程序。 (4) C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。其优点是给用户编程带来书写上的方便。其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。 次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。 (1).设计目标 利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。在设计当中将综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。 (2).选题分析 此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。除去四

c计算器实验报告

c计算器实验报告集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、 乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和 单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在中添加头文件,然后添加public成员。 7)打开文件,在构造函数中,进行成员初始化和完善各控件的 响应函数代码。 (3)程序清单: 添加的public成员: double tempvalue; 法 2.减法 3.乘法 4.除法

int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = ; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; } ●各控件响应函数代码: void CCalculatorDlg::OnButton1() //按钮“1” { // TODO: Add your control notification handler code here if(append==1)result=0;

单片机实验报告 计算器

单片机原理及其应用实验报告基于51单片机的简易计算器的设计 班级:12电子1班 姓名:金腾达 学号:1200401123 2015年1月6日

摘要 一个学期的51单片机的课程已经随着期末的到来落下了帷幕。“学以致用”不仅仅是一句口号更应该是践行。本设计秉承精简实用的原则,采用AT89C51单片机为控制核心,4X4矩阵键盘作为输入,LCD1602液晶作为输出组成实现了基于51单片机的简易计算器。计算器操作方式尽量模拟现实计算器的操作方式,带有基本的运算功能和连续运算能力。并提供了良好的显示方式,与传统的计算器相比,它能够实时显示当前运算过程和上一次的结果,更加方便用户记忆使用。本系统制作简单,经测试能达到题目要求。 关键词:简易计算器、单片机、AT89C51、LCD1602、矩阵键盘

目录 一、系统模块设计......................................................................................... 错误!未定义书签。 1.1 单片机最小系统 (1) 1.2 LCD1602液晶显示模块 (1) 1.3 矩阵按键模块 (2) 1.4 串口连接模块 (1) 二、C51程序设计 (2) 2.1 程序功能描述及设计思路 (2) 2.1.1按键服务函数 (2) 2.1.2 LCD驱动函数 (2) 2.1.3 结果显示函数 (2) 2.1.4状态机控制函数 (2) 2.1.5串口服务函数 (2) 2.2 程序流程图 (3) 2.2.1系统总框图 (3) 2.2.2计算器状态机流程转换图 (3) 三、测试方案与测试结果 (4) 3.1测试方案 (4) 3.3 测试结果及分析 (7) 4.3.1测试结果(仿真截图) (7) 4.3.2测试分析与结论 (7) 四、总结心得 (7) 五、思考题 (8) 附录1:整体电路原理图 (9) 附录2:部分程序源代码 (10)

MFC课程设计报告—模拟计算器

计算机MFC课程设计报告 ——模拟计算器 姓名: 学号:02011227 联系电话: 指导教师: 东南大学机械工程学院 2012年10月14日

模拟计算器 摘要 摘要内容:以课本简单计算器为基础,首先实现了加、减、乘、除、求倒数和平方根的混合运算,并能进行清屏及倒退操作,然后自行完善了书中未能实现的乘、除运算的连续操作,最后自行设计并完成了lg、ln 、sin、cos、^、.、pi、e八个按钮控件的消息映射及程序代码的添加和修改。从中学会了制作简单的基于对话框的小工具、掌握了常用控件的使用、明白了消息映射及消息处理、提高了VC++编程水平。 关键词:四则运算小数点计算器 Analog calculator Abstract Content of abstract: Simple calculator in textbooks as the foundation, first realized the addition, subtraction, multiplication, division, and reciprocal and square root of the mixed operation, and can clear screen and reverse operation, and then to improve the book failed to realize the multiplication, division operation of continuous operation, and finally to be designed and completed the eight button control news mapping and program code to add and modify. Learnt how to make simple dialog-based small tools, mastered the use of commonly used controls, see news mapping and information processing, improve the level of programming.

MFC计算器程序报告

C++课程设计实验报告 学号姓名 院系专业

一、课题名称 简易的计算器设计。 二、问题陈述 编写一个计算器程序,能够进行四则运算、取模等运算 要求: 1、个人完成; 2、运用对话框编写,界面上只能有一个输出框,数据通过按钮输入到程序,并显 示在输出框中;当按下运算符后再输入数据,输出框中应显示新数据;运算结果也显示在输出框中。 3、四则运算、取模运算是最低要求,程序能正确执行; 4、界面设计美观、合理; 5、独立完成; 三、设计目标和设计任务 编写一个计算器程序,能够进行四则运算、取模、乘方、立方,并且给计算器程序添加背景。 四、解题算法思想 1.创建一个基于对话框的项目 2. 给对话框加入相应的操作按钮 3. 给按钮加上代码,设置属性 4. 为实现四则运算、取模等操作添加必要函数 五、程序算法过程 ①选择File→New菜单命令,选择Project选项卡,并选择MFC AppWizard(exe), name 命名为calculator;选择应用程序基于对话框,即Dialog based。多次单击next,最后单击Finish后,系统弹出一对话框,如下图:

②使用按钮控件、文本编辑框控件和组控件,将他们加入到对话框中,并通过更改按钮控件的属性中的标题部分。选中所有按钮,在属性中的Extended Style中选中Modal frame,使其达到下图效果:(注意,在布局按钮时,为了使按钮总体整齐美观,可以先创建一行或一列按钮,使他们保持整齐后,按住Ctrl键,选中这一行或一列按钮,再移动鼠标,即可生成另一行或一列按钮;也可以通过Layout菜单中的指令对其进行布局) ③鼠标右击按钮控件,选择属性,即可对其ID进行更改,各ID与标题内容对应如下: ID 标题ID 标题IDC_BUTTON0 0 IDC_BUTTONCLS 清零 IDC_BUTTON1 1 IDC_ADD + IDC_BUTTON2 2 IDC_PLUS -

简易计算器设计实验报告

简易计算器设计实验报告 一.设计任务及要求 1.1实验任务: 根据计算器的原理设计一个具有加减乘除功能的简易计算器。如:5+3*4/8=4。 1.2 实验基本要求: (1)实现最大输入两位十进制数字的四则运算(加减乘除)。 (2)能够实现多次连算(无优先级,从左到右计算结果)。 如:12+34*56-78/90+9=36 (3)最大长度以数码管最大个数为限,溢出报警。 二.实验设计方案 (1)用QuartusII的原理图输入来完成系统的顶层设计。 (2)用VHDL编写以及直接拖模块来各功能模块。 (3)通过2个脉冲分别实现个位数和十位数的输入。 (4)通过选择每次的输出数值,将输出值反馈到运算输入端 (4)通过除法运算实现十六进制到十进制的转换输出。 其具体实现流程图如下:

三系统硬件设计 FPGA: EP2C5T144C8目标板及相应外围硬件电路。(从略) 四系统软件设计 1.数据输入模块 原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。 2.运算模块 原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。具体实现代码见附录二。 3.输出模块 原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。当输出结果溢出是LED0亮,同时数码管显示都为零。部分实现见附录二。 五实验调试 输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。当输出为负数时,LED0灯变亮,同时数码管显示都为零。六实验结论 本实验基本实现了计算器的加减乘法运算功能,但是存在一个突出的缺陷,就是当输出结果时,必须先按等号键导通数据反馈,再按运算键选择输出结果。这与实际应用的计算器存在很大的差距。但是,本设计可以通过等号键实现运算对象和运算结果之间的切换。

C++简单计算器课程设计报告

武汉理工大学《专业课程设计2》课程设计说明书 目录 1 基本功能描述 (1) 2 设计思路 (1) 3 软件设计 (4) 3.1 设计步骤 (4) 4 结论与心得体会 (12) 7 附:设计中的关键源代码 (14) 7.2 测试结果 (15)

简单计算器 1 基本功能描述 简单计算器包括双目运算和单目运算功能。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,阶乘,对数,开方,倒数等运算。可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出相应提示,同时包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。 2 设计思路 如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。子程序开始时m_num为零。按下数字按钮后,判断m_num的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。 回到总流程图中,输完第一个操作数后,若按下双目运算符,则把m_num存入num2,按下输入第二个操作数并算出结果。若按下的是单目运算符,则直接对其处理得出结果。若按下清零,则m_num等于0.在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。算出后把结果保存至num2。若需用算出的结果继续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。

输入数据子函数 N 图1 输入数据子函数流程图

图2 简单计算器总流程图

3 软件设计 3.1 设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名09107xuzhujie及其所在位置,点击确定,如图3所示。 图3 新建MFC AppWizard[exe]工程 将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图4所示。

MFC计算器实验报告

实验报告一——计算器 一实验名称 简易计算器 二实验目的 在Visual C++.EXE开发环境中,通过编写计算器程序,掌握创建对话框的方法,并向其中添加控件,并设置属性,使之满足程序的要求。 三编程思路 计算器要实现各种运算,在编写中主要分为两大块的编写,一是对1、2、3等数字按钮的响应函数编写,二是对加减乘除等运算符按钮的响应函数的编写。 给Dlg添加变量int m_operator; //运算符 double m_result; //结果(含中间变量) 另外添加编辑框的变量m_res 1.对数字按钮的响应函数的编写 1)由于每个按钮的响应函数相差不大,故用一个函数将其封装 在每次输入时要先判断数据开头是否为0 void CMy0710210202CalculateDlg::button(CString c) { UpdateData(TRUE); m_res+=c; if(m_res.GetAt(0)=='0'&&m_res.Find(".")==-1){ m_res.Empty(); m_res+=c; } UpdateData(FALSE); } 2)小数点按钮的响应函数。 首先要判断输入数据中是否已有小数点,数据是否为0,以及是否还没输入数据。 void CMy0710210202CalculateDlg::OnDian() { // TODO: Add your control notification handler code here UpdateData(TRUE); int n=m_res.Find("."); if(n==-1&&m_res.GetLength()!=0) m_res+="."; else if(m_res.GetLength()==0)m_res+="0."; UpdateData(FALSE); } 2.运算符按钮的响应函数的编写 用m_operator指代要进行的运算,由于每次的运算结果m_result 都传入了编辑框的变量m_res里,故此程序可以实现连续运算。 代码为 void CMy0710210202CalculateDlg::Result() { UpdateData(TRUE);

mfc实验报告

程序设计实践 设 计 报 告

1.课题概述 1.1课题目标和主要内容 ●主要内容 这个实验我主要是应用VS C++ 2010实现学生信息管理系统的设计,主要实现学生管理系统中选择学院和专业,学生个人信息管理,班级管理,成绩和选课等功能。是一个基于对话框的应用程序。 ●实验目的: a.了解windows编程的基础知识,掌握MFC应用程序的基本知识; b.基本掌握面向对象程序设计的基本思路和方法; c.掌握利用visual C++开发应用程序的一般步骤和方法; 1.2系统的主要功能

2. 系统设计 2.1 系统总体框架 2.2 系统详细设计

A.学生基本信息:

1.添加人员信息: 编写CStudentDlg::OnAdd()函数,该函数完成对学生基本信息的添加,因为每个学生都有唯一的学号,所以在添加人员信息的时候,会先判断学号是否已经存在,若是重复,则需要重新输入学号,再完成学生信息的添加,点击确定后,才能完成对管理系统的修改。 2.编辑学生信息 编写CStudentDlg::OnEdit()函数,对已有的学生信息进行编辑和修改,选中需要修改的信息,在对应栏中写入正确的信息,然后点击编辑,点击确定,完成编辑 3.删除学生信息 编写CStudentDlg::OnDelete()函数,对现有的学生信息进行删除,选中需要删除的信息,点击删除,然后确定,完成删除。 B.班级信息 有CAllInfor::GetAveGrade()函数和CClassSort::InsertSort()函数来完成班级显示信 息里的排名,在课程成绩中获得成绩求得总成绩,然后求得平均,进行排名

实验报告 编写一个简易实用的计算器。

开课实验室:现代信息交流中心40*开课时间:2012年**月**日实验报告:年月日 一、实验目的:熟悉Java图形用户界面的开发原理与技术,包括各种组件和容器技术。 二、实验内容: 编写一个简易实用的计算器。 三、源代码清单: package exp3; import Result extends Panel { TextField tf; Result() { tf = new TextField("0", 25); add(tf); } } class Key extends Panel { Button backSpace, clearEnter, cancel,lBracket,rBracket; Button one, two, three, four, five, six, seven, eight, nine, zero; Button add, subtract, multiplay, divide; Button sqrt, reciprocal, mod; Button positiveAndNegative, point, equal; Key() { setLayout(new GridLayout(5, 5)); backSpace = new Button("←"); (new Color(255, 0, 0)); add(backSpace); clearEnter = new Button("CE"); (new Color(255, 0, 0)); add(clearEnter); cancel = new Button("C"); (new Color(255, 0, 0));

MFC简单计算器设计正文

实用计算器程序1.基本功能描述 计算器是人们日常生活中非常实用的计算工具。预期设计目标与实际计算器为标准,Windows10系统提供的计算器为范例进行设计。 实用计算器要实现单目运算和双目运算。单目运算主要包括阶乘、正弦、余弦; 双目运算主要包括加、减、乘、除、乘幂等。计算器要能够对输入的各种数据进行处理,包括小数、整数、负数等数据进行操作。实际过程中要能够对不同的数据灵活判 断执行。同时要能够对不满足运算符的操作数,提示出错信息以方便用户进行处理。 用户的修改包括清屏和退格。程序设计的重点和难点在于:第一,能够对于不同的操 作数和操作符进行连续运算,运算过程中要有优先级的判断,根据优先级执行不同的 运算顺序;第二,能够用一个编辑框实现运算表达式的显示和结果的输出。 编程环境采用VisualStudio2017提供的MFC建立对话框应用程序,设计界面要简 单大方,并提供程序所有功能的接口。 2.设计思路 表1操作符优先级设计 优先级操作符 1 阶乘、正弦、余弦 2 乘幂 3 乘、除 4 加、减 对对话框编辑框关联一个变量从中读取数据,按下数字键时对数据数组num[]进行更新,其中num[0]表示的是当前已经存储变量的个数。由于算法设计为四层优先级, 且单目运算的优先级最高。当按下相应单目运算符,首先将当前数据数组的最后一个 存储(防止按下Backspace退格发生错误),并将此位数据执行运算后重新赋值。但按下双目运算符相应按键后,将计数num[0]++,同时将运算符的类型和位置记录。当按下等于之前,这样就将一个单目双目混合的运算表达式转化为双目运算。如果没有按 下等号键,则继续执行循环。在按下等号按钮之后,按照先乘幂、再乘除、后加减的 运算顺序执行运算,将最后结果保存并显示。(在实际的计算器中,执行完运算之后,按下运算符的操作键,最终结果将按照左操作数的形式出现,故需要保存变量。)如果用户没有结束程序,在运行初始化程序,进行下一次运算,否则直接退出。 图1程序流程图 3.软件设计 设计步骤 1)创建基于对话框的程序 利用AppWizard建立应用程序框架,创建一个基于对话框的MFC工程,命名为“fengwanjincalculator”,如图2所示。在图3显示的应用程序类型中选择基于对话框。创建成功后,系统自动生成相应程序文件。 图2创建MFC工程图 图3应用程序类型选择图

V C++课程设计 计算器例程完整版

// 计算器3Dlg.cpp : implementation file // #include "stdafx.h" #include "计算器3.h" #include "计算器3Dlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DA TA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DA TA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DA TA_INIT(CAboutDlg) //}}AFX_DA TA_INIT }

MFC简单计算器

信息科学与技术学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:李海东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架 开始 结束 键入第一个按钮 键入第二个按钮 显 示 结 果 加 法 减 法 乘 法 除 法 乘 方 清 零

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置 1

2 主要使用到Layout 菜单中的Align 功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit 控件用于显示数字,Button 控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图 实现文件.cpp 显示计算器界面 开始执行 工程全局对象 资源文件.rc 模块定义文件.def 头文件.h 执行_twinmain() Afxmain() 创建窗口 实现窗口类注册 Set window V oid clc::onpaint() V oid cal::onCE() 点击鼠标发出消息 V oid clce::onmouse() 等待消息处理 V oid clc::onMum0() V oid clc::onAdd() 文本框中显示结果 程序运行结

相关文档
最新文档