当前位置: 首页 > >

VC++课程设计___简单计算器的设计

发布时间:

简单科学计算器设计

VC++课程设计报告 VC++课程设计报告

简单科学计算器设计





.................................... 一、设计任务 .................................... 1
........................................ 1、选题意义 ........................................ 1

简单科学计算器设计

........................................ 2、设计目标 ........................................ 1

二、程序设计与实现 ............................. 1
1、程序结构 ........................................ 1 ........................................ ........................................ 2、设计步骤 ........................................ 3 ........................................ 3、详细设计 ........................................ 4 、计算器界面 (1) 计算器界面 ............................... 4 、 、主要代码 ................................. (2) 主要代码 ................................. 4 、 、函数功能说明 (3) 函数功能说明 ............................ 16 、

三、设计难点与解决方法 ........................ 17 四、设计效果与不足之处 ........................ 18
..................................... 1、程序效果图 ..................................... 18 ....................................... 2、不足之处 ....................................... 18

.................................. 五、学*体会 .................................. 18

简单科学计算器设计

一、

设计任务

1. 选题意义 此题选择意义在于引导学生学会设计简单的科学计算器, 此题选择意义在于引导学生学会设计简单的科学计算器,进一步掌握 C++应用程序 统地学*面向对象编程思想, 应用程序。 架构, Visual C++应用程序。统地学*面向对象编程思想,了解 MFC 架构,逐步 C++, 熟悉可视化编程环境 Visual C++,并在此环境下设计并实现一个简单计算 器系统。该计算器应能实现如下功能: 1)、二进制、八进制、 器系统。该计算器应能实现如下功能: 1)、二进制、八进制、十进制及十 六进制数的加、 2)、科学计算函数, 六进制数的加、减、乘、除、乘方等简单计算 2)、科学计算函数,包括正 3)、 弦、余弦、正切、余切、开方、对数、指数等函数运算 3)、具备历史计算 余弦、正切、余切、开方、对数、 的记忆功能。 的记忆功能。 2. 设计目标

使计算器含有以下功能: 使计算器含有以下功能:
(1)、基本运算功能:可以进行加、减、乘、除等基本运算。 )、基本运算功能:可以进行加、 基本运算功能 除等基本运算。 (2)、数制转换功能:可以一次完成二进制转十进制、十进制转二进制、 )、数制转换功能:可以一次完成二进制转十进制、十进制转二进制、 数制转换功能 八进制转二进制等运算。 八进制转二进制等运算。 (3)、三角函数运算功能:可以一次完成三角函数之间的计算,求正弦函 )、三角函数运算功能:可以一次完成三角函数之间的计算, 三角函数运算功能 数(sin)、余弦函数(cos)、正切函数(tan)、余切函数(cot)等函 sin)、余弦函数(cos)、正切函数(tan)、余切函数(cot) )、余弦函数 )、正切函数 )、余切函数 数的值。 数的值。 (4)、对数、指数运算功能:可以一次求的对数函数(log、ln)、指数 )、对数、指数运算功能:可以一次求的对数函数(log、ln)、指数 对数 )、 函数(exp)等函数的运算。 函数(exp)等函数的运算。 (5)、删除功能:可以在输入错误时删除已输入的数值。 )、删除功能:可以在输入错误时删除已输入的数值。 删除功能 (6)、归零功能:可以在计算完成后清空编辑框中的已有数值。 )、归零功能:可以在计算完成后清空编辑框中的已有数值。 归零功能

二、 程序设计与实现
1. 程序结构 本计算器首先是通过在计算器的界面*聪孪嘤Φ陌磁ィ 本计算器首先是通过在计算器的界面*聪孪嘤Φ陌磁ィ唇谢 的加, 除等基本运算,计算器还能够进行*方运算, 的加,减,乘,除等基本运算,计算器还能够进行*方运算,求*方根运 算,乘方运算,三角函数运算(包括正弦函数(sin)、余弦函数(cos)、正切 乘方运算,三角函数运算(包括正弦函数(sin)、余弦函数(cos)、 (sin) (cos)

--1--

简单科学计算器设计

函数(tan)、余切函数(cot)),对数函数(ln、log),指数函数(exp), 函数(tan)、余切函数(cot)),对数函数(ln、log),指数函数(exp),幂函 (tan) (cot)) (ln (exp) 十进制转二进制和八进制转二进 数(x~)和进制转换(包括二进制转十进制、 (x~)和进制转换(包括二进制转十进制、 和进制转换 制)等运算。 等运算。 以下是本计算器的运算流程图: 以下是本计算器的运算流程图:

开始

输入数据

加 法 运 算

减 法 运 算

乘 法 运 算

除 法 运 算

正 弦 运 算

余 弦 运 算

正 切 运 算

乘 方 运 算

进 制 转 换

归 零 功 能

* 方 运 算

根 式 运 算

指 数 运 算

对 数 运 算

输入数据

输出结果

结束

流程图: 二进制转十进制 N-S 流程图: int len; double sum=0.0,num; len=strlen(m_xs);

--2--

简单科学计算器设计

int i=0;i<len; num=(m_xs[i]-48); num=(m_xs[i]-48); num=num*pow(2,lennum=num*pow(2,len-i-1); sum+=num; i++; i++; m_xs.Format("%f",sum); UpdateData(false); 流程图: 十进制转二进制 N-S 流程图: int n,i,t; double Y,p=0.0; Y=strtod( m_xs,NULL); t=(int)(Y); t!=1 是 i=1;当 i=1;当 t>1; n=t%2; t=t/2; p+=n*pow(10,(ip+=n*pow(10,(i-1)); p+=1*pow(10,(ip+=1*pow(10,(i-1)); m_xs.Format("%f",p); UpdateData(false); 否

设计步骤: 2. 设计步骤:
创建一个基于对话框的应用程序。 (1) 创建一个基于对话框的应用程序。 利用资源编辑器编辑对话框资源, (2) 利用资源编辑器编辑对话框资源,及设计计算器界面并修改对话 Cap 属性。 框各按钮的 ID 属性和 Caption 属性。 (3) 利用 ClassWizard 为各按钮添加消息映射 代码在下面详细介绍) (代码在下面详细介绍) 。 设置对话框文本背景颜色。 (4) 设置对话框文本背景颜色。

--3--

简单科学计算器设计

编辑图标。 (5) 编辑图标。

详细介绍: 3. 详细介绍:
计算器界面: (1) 计算器界面:

--4--

简单科学计算器设计

主要代码: (2) 主要代码: // 2435Dlg.cpp : implementation file //

#include "stdafx.h"

--5--

简单科学计算器设计

#include "2435.h" #include "2435Dlg.h" #include "math.h" #include <stdlib.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_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA

ClassWizard // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected:

--6--

简单科学计算器设计

virtual

void

DoDataExchange(CDataExchange*

pDX);

// DDX/DDV support //}}AFX_VIRTUAL

// Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() DECLARE_MESSAGE_MAP() };

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT }

void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP }

BEGIN_MESSAGE_MAP(CAboutDlg, BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP

--7--

简单科学计算器设计

END_MESSAGE_MAP()

//////////////////////////////////////////////////// ///////////////////////// // CMy2435Dlg dialog

CMy2435Dlg::CMy2435Dlg(CWnd* pParent /*=NULL*/) : CDialog(CMy2435Dlg::IDD, pParent) { //{{AFX_DATA_INIT(CMy2435Dlg) m_11 = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 AfxGetApp()m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_11=""; ii="0"; ii="0"; jj=0; pi=(float)3.1415926; aaa=0; bbb=0;

} int CMy2435Dlg::pd=1;

void CMy2435Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX);

--8--

简单科学计算器设计

//{{AFX_DATA_MAP(CMy2435Dlg) DDX_Control(pDX, IDC_BUTTON1, m_0); DDX_Control(pDX, IDC_BUTTON10, m_1); DDX_Control(pDX, IDC_BUTTON8, m_9); DDX_Control(pDX, IDC_BUTTON5, m_8); DDX_Control(pDX, IDC_BUTTON4, m_7); DDX_Control(pDX, IDC_BUTTON9, m_6); DDX_Control(pDX, IDC_BUTTON7, m_5); DDX_Control(pDX, IDC_BUTTON6, m_4); IDC_BUTTON12, DDX_Control(pDX, IDC_BUTTON12, m_3); DDX_Control(pDX, IDC_BUTTON11, m_2); DDX_Text(pDX, IDC_EDIT1, m_11); //}}AFX_DATA_MAP }

BEGIN_MESSAGE_MAP(CMy2435Dlg, CDialog) //{{AFX_MSG_MAP(CMy2435Dlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() OnChangeEdit1) ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1) ON_BN_CLICKED(IDC_BUTTON11, OnButton11) ON_BN_CLICKED(IDC_BUTTON10, OnButton10) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_BN_CLICKED(IDC_BUTTON18, OnButton18) ON_BN_CLICKED(IDC_BUTTON12, OnButton12) ON_BN_CLICKED(IDC_BUTTON6, OnButton6) ON_BN_CLICKED(IDC_BUTTON7, OnButton7)

--9--

简单科学计算器设计

ON_BN_CLICKED(IDC_BUTTON9, OnButton9) ON_BN_CLICKED(IDC_BUTTON4, OnButton4) ON_BN_CLICKED(IDC_BUTTON5, OnButton5) ON_BN_CLICKED(IDC_BUTTON8, OnButton8) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON13, ON_BN_CLICKED(IDC_BUTTON13, OnButton13) ON_BN_CLICKED(IDC_BUTTON14, OnButton14) ON_BN_CLICKED(IDC_BUTTON15, OnButton15) ON_BN_CLICKED(IDC_BUTTON16, OnButton16) ON_BN_CLICKED(IDC_BUTTON17, OnButton17) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) OnButton19) ON_BN_CLICKED(IDC_BUTTON19, OnButton19) ON_BN_CLICKED(IDC_BUTTON20, OnButton20) ON_BN_CLICKED(IDC_BUTTON25, OnButton25) ON_BN_CLICKED(IDC_BUTTON21, OnButton21) ON_BN_CLICKED(IDC_RADIO1, OnRadio1) ON_BN_CLICKED(IDC_BUTTON28, OnButton28) ON_BN_CLICKED(IDC_BUTTON27, OnButton27) ON_BN_CLICKED(IDC_BUTTON26, ON_BN_CLICKED(IDC_BUTTON26, OnButton26) ON_BN_CLICKED(IDC_BUTTON24, OnButton24) ON_BN_CLICKED(IDC_BUTTON23, OnButton23) ON_BN_CLICKED(IDC_BUTTON22, OnButton22) ON_BN_CLICKED(IDC_RADIO2, OnRadio2) ON_BN_CLICKED(IDC_RADIO4, OnRadio4) ON_BN_CLICKED(IDC_RADIO3, OnRadio3) ON_BN_CLICKED(IDC_BUTTON29, OnButton29) ON_BN_CLICKED(IDC_BUTTON30, OnButton30) ON_BN_CLICKED(IDC_BUTTON31, OnButton31)

- - 10 - -

简单科学计算器设计

ON_BN_CLICKED(IDC_BUTTON32, OnButton32) ON_BN_CLICKED(IDC_BUTTON33, OnButton33) ON_BN_CLICKED(IDC_BUTTON34, OnButton34) ON_COMMAND(ID_MENUITEM32771, OnMenuitem32771) ON_COMMAND(ID_MENUITEM32772, OnMenuitem32772) //}}AFX_MSG_MAP END_MESSAGE_MAP()

//////////////////////////////////////////////////// ///////////////////////// // CMy2435Dlg message handlers

CMy2435Dlg::OnInitDialog() BOOL CMy2435Dlg::OnInitDialog() { CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);

GetSystemMenu(FALSE); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty())

- - 11 - -

简单科学计算器设计

{ pSysMenupSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, pSysMenustrAboutMenu); } } IDM_ABOUTBOX,

Set // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); // Set big icon // Set small icon

// TODO: Add extra initialization here m_menu.LoadMenu(IDR_MENU1); SetMenu(&m_menu);

return TRUE; // return TRUE unless you set the focus to a control }

void CMy2435Dlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); dlgAbout.DoModal(); }

- - 12 - -

简单科学计算器设计

else { CDialog::OnSysCommand(nID, lParam); } }

// If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, by // this is automatically done for you by the framework.

void CMy2435Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting

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

(WPARAM)

// Center icon in client rectangle GetSystemMetrics(SM_CXICON); int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2;

- - 13 - -

简单科学计算器设计

// Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); CDialog::OnPaint(); } }

// The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CMy2435Dlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; }

void CMy2435Dlg::OnChangeEdit1() { control, // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask.

- - 14 - -

简单科学计算器设计

// TODO: Add your control notification handler code here

}

void CMy2435Dlg::OnButton11() { // TODO: Add your control notification handler code CString str; GetDlgItem(IDC_BUTTON11)GetDlgItem(IDC_BUTTON11)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE); }

void CMy2435Dlg::OnButton10() {

control // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON10)GetDlgItem(IDC_BUTTON10)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE);

}

void CMy2435Dlg::OnButton3() {

- - 15 - -

简单科学计算器设计

if(jj==2) OnButton13(); if(pd==1) ii="0"; jj=1; UpdateData(FALSE); double double a,b,c; a=atof(m_11); b=atof(ii); c=b+a; ii.Format("%f",c); m_11.Format("%f",c); UpdateData(FALSE); m_11=""; pd++;

// TODO: Add your control notification handler code here

}

void CMy2435Dlg::OnButton18() {

control // TODO: Add your control notification handler code here a=atof(m_11); a=a*pi/180;

- - 16 - -

简单科学计算器设计

c=sin(a); m_11.Format("%f",c); UpdateData(FALSE);

}

void CMy2435Dlg::OnButton12() { // TODO: Add your control notification handler code here

CString str; GetDlgItem(IDC_BUTTON12) GetDlgItem(IDC_BUTTON12)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE);

}

void CMy2435Dlg::OnButton6() { // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON6)GetDlgItem(IDC_BUTTON6)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE);

}

- - 17 - -

简单科学计算器设计

void void CMy2435Dlg::OnButton7() { // TODO: Add your control notification handler code here

CString str; GetDlgItem(IDC_BUTTON7)GetDlgItem(IDC_BUTTON7)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE);

}

void CMy2435Dlg::OnButton9() { // TODO: Add your control notification handler code notification here CString str; GetDlgItem(IDC_BUTTON9)GetDlgItem(IDC_BUTTON9)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE);

}

void CMy2435Dlg::OnButton4() { // TODO: Add your control notification handler code here

- - 18 - -

简单科学计算器设计

CString str; GetDlgItem(IDC_BUTTON4)->GetWindowText(str); GetDlgItem(IDC_BUTTON4)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE);

}

void CMy2435Dlg::OnButton5() { // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON5)GetDlgItem(IDC_BUTTON5)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE);

}

CMy2435Dlg::OnButton8() void CMy2435Dlg::OnButton8() { // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON8)GetDlgItem(IDC_BUTTON8)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE);

}

- - 19 - -

简单科学计算器设计

void CMy2435Dlg::OnButton1() { handler // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON1)GetDlgItem(IDC_BUTTON1)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE);

}

void CMy2435Dlg::OnButton13() { // TODO: Add your control notification handler code here double a,b,c; if(jj==1) { a=atof(m_11); b=atof(ii); c=b+a; m_11.Format("%f",c); UpdateData(FALSE);

} else if(jj==2) {

- - 20 - -

简单科学计算器设计

a=atof(m_11); b=atof(ii); c=b-a; c=b-

m_11.Format("%f",c); UpdateData(FALSE); } else if(jj==3) { a=atof(m_11); b=atof(ii); c=a*b; m_11.Format("%f",c); UpdateData(FALSE); } else if(jj==4) { a=atof(m_11); b=atof(ii); c=b/a; m_11.Format("%f",c); UpdateData(FALSE); } pd=1;

}

- - 21 - -

简单科学计算器设计

void CMy2435Dlg::OnButton14() { // TODO: Add your control notification handler code handler here if(jj==1) OnButton13(); jj=2; UpdateData(FALSE); double a,b,c; a=atof(m_11); b=atof(ii); if(pd!=1) c=bc=b-a; else c=a; ii.Format("%f",c); m_11.Format("%f",c); UpdateData(FALSE); m_11=""; pd++;

}

CMy2435Dlg::OnButton15() void CMy2435Dlg::OnButton15() { // TODO: Add your control notification handler code here

- - 22 - -

简单科学计算器设计

if(jj==4) OnButton13();

if(pd==1) ii="1"; jj=3; UpdateData(FALSE); double a,b,c; a=atof(m_11); b=atof(ii); c=b*a; ii.Format("%f",c); m_11.Format("%f",c); m_11.Format("%f",c); UpdateData(FALSE); m_11=""; pd++;

}

void CMy2435Dlg::OnButton16() { // TODO: Add your control notification handler code here if(jj==3) OnButton13(); jj=4; UpdateData(FALSE); double a,b,c;

- - 23 - -

简单科学计算器设计

a=atof(m_11); b=atof(ii); if(pd!=1) if(pd!=1) c=b/a; else c=a; ii.Format("%f",c); m_11.Format("%f",c); UpdateData(FALSE); m_11=""; pd++;

}

void CMy2435Dlg::OnButton17() { // TODO: Add your control notification handler code here m_11=""; ii="0"; pd=1; UpdateData(FALSE); UpdateData(FALSE); aaa=0; bbb=0; }

void CMy2435Dlg::OnButton2() {

- - 24 - -

简单科学计算器设计

// TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON2)GetDlgItem(IDC_BUTTON2)->GetWindowText(str); m_11=m_11+str; UpdateData(FALSE); }

//DEL void CMy2435Dlg::OnButton24() //DEL //DEL { //DEL // TODO: Add your control notification handler code here //DEL //DEL a=atof(m_11); a=1/a;

//DEL m_11.Format("%f",a); //DEL UpdateData(FALSE); //DEL }

void CMy2435Dlg::OnButton19() { // TODO: Add your control notification handler code here here a=atof(m_11); a=a*pi/180; c=cos(a); m_11.Format("%f",c); UpdateData(FALSE); }

- - 25 - -

简单科学计算器设计

void CMy2435Dlg::OnButton20() { // TODO: Add your control notification handler code here a=atof(m_11); a=a*pi/180; c=tan(a); m_11.Format("%f",c); UpdateData(FALSE); UpdateData(FALSE); }

//DEL void CMy2435Dlg::OnButton21() //DEL { //DEL // TODO: Add your control notification handler code here //DEL //DEL }

//DEL void CMy2435Dlg::OnButton22() //DEL { //DEL // TODO: Add your control notification handler code here //DEL //DEL

- - 26 - -

简单科学计算器设计

//DEL }

//DEL void CMy2435Dlg::OnButton23() //DEL { //DEL // TODO: Add your control notification handler code here //DEL //DEL }

//DEL void CMy2435Dlg::OnButton24() //DEL { //DEL // TODO: Add your control notification handler code here //DEL a=atof(m_11); //DEL a=1/a;

//DEL m_11.Format("%f",a); //DEL UpdateData(FALSE); //DEL }

void CMy2435Dlg::OnButton25() { // TODO: Add your control notification handler code here a=atof(m_11); a=1/a; m_11.Format("%f",a); UpdateData(FALSE); }

- - 27 - -

简单科学计算器设计

void CMy2435Dlg::OnButton21() { // TODO: Add your control notification handler code here CString str; if(GetDlgItemText(IDC_BUTTON21,str),str==" 一 般 计 算 器") { SetDlgItemText(IDC_BUTTON21,"科学计算器"); SetDlgItemText(IDC_BUTTON21,"科学计算器"); 科学计算器 } else { SetDlgItemText(IDC_BUTTON21,"一般计算器"); SetDlgItemText(IDC_BUTTON21,"一般计算器"); 一般计算器 } static CRect www; static CRect qqq; if(www.IsRectNull()) { CRect eee; GetWindowRect(&www); GetDlgItem(IDC_1111)GetDlgItem(IDC_1111)->GetWindowRect(&eee); qqq.left=www.left; qqq.top=www.top; qqq.right=www.right; qqq.bottom=eee.bottom;

}

- - 28 - -

简单科学计算器设计

if(str=="科学计算器") if(str=="科学计算器") 科学计算器 {

SetWindowPos(NULL,0,0,www.Width(),www.Height(),SWP_ NOMOVE|SWP_NOZORDER);

} else {

SetWindowPos(NULL,0,0,qqq.Width(),qqq.Height(),SWP_ NOMOVE|SWP_NOZORDER);

}

}

void CMy2435Dlg::OnRadio1() { handler // TODO: Add your control notification handler code here bbb=1; UpdateData(TRUE); if(aaa==16) { long a;

- - 29 - -

简单科学计算器设计

a=strtoul(m_11,0,aaa); m_11.Format("%ld",a); UpdateData(FALSE); } else if(aaa==8) {

long a; a=strtoul(m_11,0,aaa); m_11.Format("%ld",a); UpdateData(FALSE); } else if(aaa==2) {

long a; a=strtoul(m_11,0,aaa); m_11.Format("%ld",a); UpdateData(FALSE); } }

void CMy2435Dlg::OnButton28() { // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON28)->GetWindowText(str); GetDlgItem(IDC_BUTTON28)-

- - 30 - -

简单科学计算器设计

m_11=m_11+str; UpdateData(FALSE); }

void CMy2435Dlg::OnButton27() { // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON27)GetDlgItem(IDC_BUTTON27)->GetWindowText(str);

m_11=m_11+str; UpdateData(FALSE); }

void CMy2435Dlg::OnButton26() { // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON26)GetDlgItem(IDC_BUTTON26)->GetWindowText(str);

m_11=m_11+str; UpdateData(FALSE); }

void CMy2435Dlg::OnButton24() {

- - 31 - -

简单科学计算器设计

// TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON24)GetDlgItem(IDC_BUTTON24)->GetWindowText(str); TTON24)

m_11=m_11+str; UpdateData(FALSE); }

void CMy2435Dlg::OnButton23() { // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON23)GetDlgItem(IDC_BUTTON23)->GetWindowText(str);

m_11=m_11+str; UpdateData(FALSE); UpdateData(FALSE); }

void CMy2435Dlg::OnButton22() { // TODO: Add your control notification handler code here CString str; GetDlgItem(IDC_BUTTON22)GetDlgItem(IDC_BUTTON22)->GetWindowText(str);

m_11=m_11+str;

- - 32 - -

简单科学计算器设计

UpdateData(FALSE); }

void CMy2435Dlg::OnRadio2() { control // TODO: Add your control notification handler code here aaa=8; bbb=2; }

void CMy2435Dlg::OnRadio4() { // TODO: Add your control notification handler code here aaa=16; bbb=3; }

void CMy2435Dlg::OnRadio3() { // TODO: Add your control notification handler code here aaa=2; UpdateData(TRUE); if(bbb==1) { long aa;

- - 33 - -

简单科学计算器设计

int j,i=0; char oo[10]={' '}; int bb[10]; aa=strtoul(m_11,0,10); while(aa/2!=0) { bb[i]=aa%2; aa=aa/2; i++; } bb[i]=aa%2; int pp=i; for(j=0;j<=pp;j++,i--) for(j=0;j<=pp;j++,i--) -oo[j]=bb[i]+'0';

m_11=oo; } else if(bbb==2) { CString ll=""; for(int ii=0;ii<m_11.GetLength();ii++) { char oo[4]={0}; int a,b[10]={0},i=0,j; a=m_11[ii]a=m_11[ii]-48; while(a/2!=0) { b[i]=a%2;

- - 34 - -

简单科学计算器设计

a=a/2; i++; } b[i]=a%2; for(i=2,j=0;i>=0;i--,j++) for(i=2,j=0;i>=0;i--,j++) -oo[j]=b[i]+'0';

ll=ll+oo;

} m_11=ll; } else if(bbb==3) { CString ll=""; for(int ii=0;ii<m_11.GetLength();ii++) { char oo[5]={0}; int a,b[10]={0},i=0,j;

if(m_11[ii]<58) a=m_11[ii]a=m_11[ii]-48; else a=m_11[ii]a=m_11[ii]-55;

while(a/2!=0) { b[i]=a%2;

- - 35 - -

简单科学计算器设计

a=a/2; i++; } b[i]=a%2; for(i=3,j=0;i>=0;ifor(i=3,j=0;i>=0;i--,j++) oo[j]=b[i]+'0';

ll=ll+oo;

} m_11=ll; }

UpdateData(FALSE);

}

void CMy2435Dlg::OnButton29() { // TODO: Add your control notification handler code here a=atof(m_11); c=sqrt(a); m_11.Format("%f",c); UpdateData(FALSE);

}

- - 36 - -

简单科学计算器设计

void CMy2435Dlg::OnButton30() { // TODO: Add your control notification handler code here int a; long int b=1; a=atoi(m_11); while(a!=1) { b=b*a; a--; --; }

m_11.Format("%ld",b); UpdateData(FALSE); }

void CMy2435Dlg::OnButton31() { // TODO: Add your control notification handler code here int a; a=atoi(m_11); a=a*a; m_11.Format("%d",a); UpdateData(FALSE); }

- - 37 - -

简单科学计算器设计

void CMy2435Dlg::OnButton32() { // TODO: Add your control notification handler code here int a; a=atoi(m_11); a=a*a*a; m_11.Format("%d",a); UpdateData(FALSE); }

void CMy2435Dlg::OnButton33() { // TODO: Add your control notification handler code here int a; float b; a=atoi(m_11); b=(float)log(a); m_11.Format("%f",b); UpdateData(FALSE); }

CMy2435Dlg::OnButton34() void CMy2435Dlg::OnButton34() { // TODO: Add your control notification handler code here

- - 38 - -

简单科学计算器设计

int a; float b; a=atoi(m_11); b=(float)log10(a); m_11.Format("%f",b); UpdateData(FALSE); }

void CMy2435Dlg::OnMenuitem32771() { handler // TODO: Add your command handler code here static CRect www; static CRect qqq; if(www.IsRectNull()) { CRect eee; GetWindowRect(&www); GetDlgItem(IDC_1111)GetDlgItem(IDC_1111)->GetWindowRect(&eee); qqq.left=www.left; qqq.top=www.top; qqq.right=www.right; qqq.bottom=eee.bottom;

}

SetWindowPos(NULL,0,0,www.Width(),www.Height(),SWP_ NOMOVE|SWP_NOZORDER); }

- - 39 - -

简单科学计算器设计

void CMy2435Dlg::OnMenuitem32772() {

static CRect www; static CRect qqq; if(www.IsRectNull()) { CRect eee; GetWindowRect(&www); GetDlgItem(IDC_1111)->GetWindowRect(&eee); GetDlgItem(IDC_1111)->GetWindowRect(&eee); qqq.left=www.left; qqq.top=www.top; qqq.right=www.right; qqq.bottom=eee.bottom;

}

SetWindowPos(NULL,0,0,qqq.Width(),qqq.Height(),SWP_N OMOVE|SWP_NOZORDER); } (3)函数功能说明
整个计算器除了基本的加、 功能, 整个计算器除了基本的加、 、 、 计算器除了基本的加 减 乘 除运算外, 除运算外 另外还有 8 个功能, 实现八大运算:三角函数运算功能、对数函数运算功能、 实现八大运算:三角函数运算功能、对数函数运算功能、指数函数运算 运算 功能 功能 功能、乘方运算功能、*方运算功能、根式运算功能、进制转换功能、 功能、乘方运算功能、*方运算功能、根式运算功能、进制转换功能、 功能 功能 功能 功能 归零功能。各个运算功能的详细设计说明分别如下: 归零功能。各个运算功能的详细设计说明分别如下: 功能 运算功能的详细设计说明分别如下 a、基本运算功能

- - 40 - -

简单科学计算器设计

主要实现数据的加、 主要实现数据的加、减、乘、除运算,提供简单的科学计算! 数据的加 除运算,提供简单的科学计算! b、三角函数运算功能 用来执行三角函数的运算,包括正弦函数(sin)、余弦函数(cos)、正切 用来执行三角函数的运算,包括正弦函数(sin)、余弦函数(cos)、 三角函数的运算 (sin) (cos) 函数(tan)。 函数(tan)。 (tan)
三角函数

正 弦 运 算

余 弦 运 算

正 切 运 算

c、对数函数运算功能 用来执行对数函数的运算, 包括以 e 为底 ln 函数和以 10 为底的 lg 函 用来执行对数函数的运算, 数。 d、指数函数运算功能 用来执行指数函数的运算。 用来执行指数函数的运算。 e、乘方运算功能 用来执行乘方的运算,进行数值的成倍计算。 用来执行乘方的运算,进行数值的成倍计算。 f、*方运算功能 用来执行*方运算,说到底它也属于乘方运算的范畴。 用来执行*方运算,说到底它也属于乘方运算的范畴。 g、根式运算功能 用来执行根式的运算。 用来执行根式的运算。 h、进制转换运算功能 主要实现数值间的转换, 包括二进制转十进制、 十进制转二进制和八进 主要实现数值间的转换, 包括二进制转十进制、 制转二进制的运算。 制转二进制的运算。 进制转换

二 进 制 转 十 进 制

十 进 制 转 二 进 制

八 进 制 转 二 进 制

i、归零、删除功能 归零、删除功能

- - 41 - -

简单科学计算器设计

主要实现数据的清零, 当用户输入数据出错时, 使用此功能可以清除已 主要实现数据的清零, 当用户输入数据出错时, 输入的内容并重新输入新的运算内容。 输入的内容并重新输入新的运算内容。

三、 设计难点与解决方法
遇到一些复杂的函数计算时, 设计难点 1: 遇到一些复杂的函数计算时, 设计的代码不能很好的反映 出该有的功能。 出该有的功能。 解决策略:通过看书、上网查资料和与同学讨论 和与同学讨论, 解决策略:通过看书、上网查资料和与同学讨论,自己再反复修改代 码,运行程序,直到实际效果满意为止。 运行程序,直到实际效果满意为止。 在编译程序时,出现类型不匹配的错误, 设计难点 2:在编译程序时,出现类型不匹配的错误,查找是 Cstring 类型之间没有转换。 和 double 类型之间没有转换。 解决策略: Format() atof() ()和 ()函数可以进行他们之间的转 解决策略:查找到 Format()和 atof()函数可以进行他们之间的转 换

四、 设计效果与不足之处
程序效果图如下: 程序效果图如下:

- - 42 - -

简单科学计算器设计

不足之处: 不足之处:
计算器的计算功能还不是很多,设计效果也不是很理想, 计算器的计算功能还不是很多,设计效果也不是很理想,输入数据和 显示结果不能同步显示,只能分别显示。只能实现加减和乘除的分别计算, 显示结果不能同步显示,只能分别显示。只能实现加减和乘除的分别计算, 不能计算加减和乘除和混合运算。不能进行进制之间的分别转化。 不能计算加减和乘除和混合运算。不能进行进制之间的分别转化。对菜单 的使用不是很会。导致不能实现很多其他的功能, 的使用不是很会。导致不能实现很多其他的功能,对于切屏的技术还是很 渺小。。 渺小。。

五、 学*体会
经过对 ++课程设计的编写设计 加深了我 课程设计的编写设计, VC++程序设计 程序设计》 经过对 VC++课程设计的编写设计,加深了我对《VC++程序设计》课程 所学知识的进一步理解,掌握了各种函数的应用和调用。 所学知识的进一步理解,掌握了各种函数的应用和调用。 进一步理解

- - 43 - -

简单科学计算器设计

这次的课程设计, VC++程序的内部结构和资源使用 程序的内部结构和资源使用。 这次的课程设计,让我更加了解 VC++程序的内部结构和资源使用。 总之,完成这次课程设计之后,使我更加掌握了编程的基本要素, 总之,完成这次课程设计之后,使我更加掌握了编程的基本要素,学 会了用编程思想解决生活中的常见问题,用所学知识解决实际问题。 会了用编程思想解决生活中的常见问题,用所学知识解决实际问题。 C++,任重而道远。。。。。。。。。 C++,任重而道远。。。。。。。。。

- - 44 - -




友情链接: