c++课程设计.docx
《c++课程设计.docx》由会员分享,可在线阅读,更多相关《c++课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
c++课程设计
程序设计报告
课程名称:
C++课程设计
设计题目:
计算器的设计与实现
专业:
信息与计算科学
班级:
信122
姓名:
学号:
2012314201
任课教师:
邓全才
河北建筑工程学院数理系
二○一五年五月
设计题目(问题)描述
计算器的设计与实现
计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。
要实现计算功能,可以用VC++的知识编写程序来解决此问题。
该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。
该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。
在现代社会中,计算器已经进入了每一个家庭,人们在生活和学习中经常需要使用到计算器,它的出现大大减少了人们在计算方面的工作量,可以说它在人们生活和学习中是不可缺少的。
教师评语
签名:
注:
本设计报告中各个部分如果页数不够,请大家自行扩页,原则是一定要把报告写详细,能说明设计的成果和特色。
报告中应该叙述设计中的每个模块。
一、设计的功能描述
(1)包含加、减、乘、除四则运算.
(2)包含正弦、余弦、正切三角函数的运算。
(3)包含开方运算。
(4)包含阶乘运算。
(5)包含对数运算。
(6)包含求二进制的运算。
(7)包含“CE”“C”清除运算。
二、设计的主要特色
本计算器可以进行十进制下的四则运算(加、减、乘、除),可以把十进制转化为二进制,可以进行一些常用的函数运算sqrt、sin、cos、tan等。
.
三、系统分析与设计
一.设计步骤
打开MicrosoftVisualC++6.0,在文件中点击新建,在弹出框内选择MFCAppWizard[exe]工程,输入工程名及其所在位置,点击确定,如图。
将弹出MFCAppWizard-step1对话框,选择基本对话框,点击完成。
这样,MFCAppWizard就建立了一个基于对话窗口的程序框架,如图。
二、界面设计
1、创建控件
在上图所示的ResoureView选项卡中打开Dialog资源组,双击IDD_CALC_SLP_DLG,在右边的窗口中显示出待编辑的对话框。
开始摆放控件,包括编辑框和按钮的创建。
按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。
1)在控件的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。
在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出属性对话框,如图,在该对话框中输入ID属性。
2)在控件的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。
在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出PushButton属性对话框,如图,在该对话框中输入控件的ID值和标题属性。
按照上面的操作过程编辑其他按钮和编辑框等对象的属性。
各按钮和编辑框等对象的属性如下:
对象
ID
标题或说明
编辑框
IDC_EDIT2
结果显示
按钮
IDC_BUTTON10
0
按钮
IDC_BUTTON1
1
按钮
IDC_BUTTON2
2
按钮
IDC_BUTTON3
3
按钮
IDC_BUTTON4
4
按钮
IDC_BUTTON5
5
按钮
IDC_BUTTON6
6
按钮
IDC_BUTTON7
7
按钮
IDC_BUTTON8
8
按钮
IDC_BUTTON9
9
按钮
IDC_BUTTON11
C
按钮
IDC_BUTTON17
CE
按钮
IDC_BUTTON13
+
按钮
IDC_BUTTON14
-
按钮
IDC_BUTTON15
*
按钮
IDC_BUTTON16
/
按钮
IDC_BTN_SQRT
sqrt
按钮
IDC_BUTTON12
=
按钮
IDC_btn_jiecheng
n!
按钮
IDC_btn_lg
lg
按钮
IDC_BTN_SIN
sin
按钮
IDC_BTN_cos
cos
按钮
IDC_BTN_TAN
Tan
按钮
IDC_Onequal
=
按钮
IDC_BTN_ERJINZHI
二进制
完成后界面
程序源代码:
#include"stdafx.h"
#include"jisuanqi.h"
#include"jisuanqiDlg.h"
#include"math.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
CStrings1,s2;
char*str1,*str2,operator1=0,*buffer;
intdecimal,sign;
intk=0,n=0,i=0,j=0,s=0;
intd=0,op=0,point=0,q=0;
CStringstr,stri,num[20];
charch[20],st[40];
CStringtt,aa,ss;
doubleaaa;
doublex=0,y=0,z=0;
_declspec(dllexport)doubleadd(doublex,doubley);
_declspec(dllexport)doublesub(doublex,doubley);
_declspec(dllexport)doublemul(doublex,doubley);
_declspec(dllexport)doublediv(doublex,doubley);
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CJisuanqiDlgdialog
CJisuanqiDlg:
:
CJisuanqiDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CJisuanqiDlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CJisuanqiDlg)
m_s=_T("");
//}}AFX_DATA_INIT
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
voidCJisuanqiDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CJisuanqiDlg)
DDX_Text(pDX,IDC_EDIT2,m_s);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CJisuanqiDlg,CDialog)
//{{AFX_MSG_MAP(CJisuanqiDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1,OnButton1)
ON_BN_CLICKED(IDC_BUTTON2,OnButton2)
ON_BN_CLICKED(IDC_BUTTON3,OnButton3)
ON_BN_CLICKED(IDC_BUTTON4,OnButton4)
ON_BN_CLICKED(IDC_BUTTON5,OnButton5)
ON_BN_CLICKED(IDC_BUTTON6,OnButton6)
ON_BN_CLICKED(IDC_BUTTON7,OnButton7)
ON_BN_CLICKED(IDC_BUTTON8,OnButton8)
ON_BN_CLICKED(IDC_BUTTON9,OnButton9)
ON_BN_CLICKED(IDC_BUTTON10,OnButton10)
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_BUTTON18,OnButton17)
ON_BN_CLICKED(IDC_BUTTON12,OnButton12)
ON_BN_CLICKED(IDC_Btn_sin,OnBtnsin)
ON_BN_CLICKED(IDC_Btn_cos,OnBtncos)
ON_BN_CLICKED(IDC_Btn_tan,OnBtntan)
ON_BN_CLICKED(IDC_Btn_erjinzhi,OnBtnerjinzhi)
ON_BN_CLICKED(IDC_Btn_lg,OnBtnlg)
ON_BN_CLICKED(IDC_Btn_sqrt,OnBtnsqrt)
ON_BN_CLICKED(IDC_Btn_jiecheng,OnBtnjiecheng)
ON_BN_CLICKED(IDC_BUTTON11,OnC)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CJisuanqiDlgmessagehandlers
BOOLCJisuanqiDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCJisuanqiDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
voidCJisuanqiDlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
}
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCJisuanqiDlg:
:
OnQueryDragIcon()
{
return(HCURSOR)m_hIcon;
}
voidCJisuanqiDlg:
:
OnButton1()
{
num[i]=num[i]+"1";
m_s=m_s+"1";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton2()
{
num[i]=num[i]+"2";
m_s=m_s+"2";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton3()
{
num[i]=num[i]+"3";
m_s=m_s+"3";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton4()
{
num[i]=num[i]+"4";
m_s=m_s+"4";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton5()
{
num[i]=num[i]+"5";
m_s=m_s+"5";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton6()
{
num[i]=num[i]+"6";
m_s=m_s+"6";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton7()
{
num[i]=num[i]+"7";
m_s=m_s+"7";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton8()
{
num[i]=num[i]+"8";
m_s=m_s+"8";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton9()
{
num[i]=num[i]+"9";
m_s=m_s+"9";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton10()
{
num[i]=num[i]+"0";
m_s=m_s+"0";
op=0;d=1;point=1;q=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton13()
{
if(q==0){
op=1;d=0;
m_s=m_s+"+";
ch[i++]='+';point=0;q=1;}
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton14()
{
if(q==0){
op=1;d=0;
m_s=m_s+"-";
ch[i++]='-';point=0;q=1;}
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton15()
{
if(q==0){
op=1;d=0;
m_s=m_s+"*";
ch[i++]='*';point=0;q=1;}
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton16()
{
if(q==0){
op=1;d=0;
m_s=m_s+"/";
ch[i++]='/';point=0;q=1;}
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton17()
{
stri=_T("");n=0;
str=_T("");i=0;point=0;
s=0;aaa=0;d=0;op=0;for(i=0;i<20;i++)num[i]=_T("");
m_s=_T("");;s1=_T("");
x=0;y=0;z=0;
UpdateData(false);
}
voidCJisuanqiDlg:
:
OnButton12()
{
for(n=0;n
{
if((ch[n]=='*')||(ch[n]=='/'))
{
switch(ch[n])
{
case'*':
aaa=atof(num[n])*atof(num[n+1]);tt.Format("%lf",aaa);num[n+1]=tt;
num[n]="0";
if(n==0)
ch[n]='+';
elsech[n]=ch[n-1];
break;
case'/':
if(atof(num[n+1])==0)
{
MessageBox("被除数不能为零!
");
s=1;
break;
}
else
{
aaa=atof(num[n])/atof(num[n+1]);tt.Format("%lf",aaa);num[n+1]=tt;
num[n]="0";
if(n==0)
ch[n]='+';
elsech[n]=ch[n-1];
break;
}
}
}
}
if(s==0)
{
for(k=0;k