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

中年过去就是老年 范文 报告范文
精选回答

C++简单计算器课程设计报告本文简介:学生课程设计报告实验课程名称C++语言程序设计教程与实验实验项目名称计算器系、部计科系年级2013级专业班级软件132(对口)学生姓名学号实验时间2013年6月16日-6月19日成绩教师签名1课程设计的目的在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现

C++简单计算器课程设计报告本文内容:

实验课程名称

C++语言程序设计教程与实验

实验项目名称

计算器

系、部

计科系

年级2013级

专业班级

软件132(对口)

2013年6月16日-6月19日

教师签名

1

课程设计的目的

在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。

2

课程设计的任务

实现一个简单计算器。其类似于Windows附件中自带的计算器。

注:

1/x

:求x分之1

Sqrt:求当前数的平方根

AC

:清除所有运行数据

C

:清除文本框内数据

+/-

:正负号

3

流程图

软件设计

1、创建控件

在图5所示的Resoure

View选项卡中打开Dialog资源组,双击IDD_

09107xuzhujie_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。

1)在图5中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图所示,在该对话框中输入ID属性。

Edit属性对话框

2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push

Button属性对话框,如图所示,在该对话框中输入控件的ID值和标题属性。

Push

Button属性

按照上面的操作过程编辑其他按钮和编辑框等对象的属性。

表1

各按钮和编辑框等对象的属性

对象

ID

标题或说明

编辑框

IDC_xianshi

结果显示

按钮

IDC_BUTTON0

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_change

+/-

按钮

IDC_point

.

按钮

IDC_add

+

按钮

IDC_difference

-

按钮

IDC_multiply

按钮

IDC_devide

/

按钮

IDC_sqrt

sqrt

按钮

IDC_daoshu

1/x

按钮

IDC_Onequal

=

按钮

IDC_backspace

Backspace

按钮

IDC_Onclear

C

完成后界面如图所示。

计算器界面

源代码

void

CCalculatorDemoDlg::OnBtnNo1()

{

//

TODO:

Add

your

control

notification

handler

code

here

PutIntoNum(1);

}

void

CCalculatorDemoDlg::OnBtnNo2()

{

//

TODO:

Add

your

control

notification

handler

code

here

PutIntoNum(2);

}

void

CCalculatorDemoDlg::OnBtnNo3()

{

//

TODO:

Add

your

control

notification

handler

code

here

PutIntoNum(3);

}

void

CCalculatorDemoDlg::OnBtnNo4()

{

//

TODO:

Add

your

control

notification

handler

code

here

PutIntoNum(4);

}

void

CCalculatorDemoDlg::OnBtnNo5()

{

//

TODO:

Add

your

control

notification

handler

code

here

PutIntoNum(5);

}

void

CCalculatorDemoDlg::OnBtnNo6()

{

//

TODO:

Add

your

control

notification

handler

code

here

PutIntoNum(6);

}

void

CCalculatorDemoDlg::OnBtnNo7()

{

//

TODO:

Add

your

control

notification

handler

code

here

PutIntoNum(7);

}

void

CCalculatorDemoDlg::OnBtnNo8()

{

//

TODO:

Add

your

control

notification

handler

code

here

PutIntoNum(8);

}

void

CCalculatorDemoDlg::OnBtnNo9()

{

//

TODO:

Add

your

control

notification

handler

code

here

PutIntoNum(9);

}

void

CCalculatorDemoDlg::OnBtnNo0()

{

//

TODO:

Add

your

control

notification

handler

code

here

//

TODO:

Add

your

control

notification

handler

code

here

//如果第一次输入数字

if

(cs_Num[m_i]==“0“)

{

return

;

}

cs_Num[m_i]+=“0“;

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]);

if

(!b_Hasport)

{

CString

temp;

GetDlgItemText(IDC_EDIT_SHOW,temp);

temp+=“.“;

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

}

void

CCalculatorDemoDlg::OnBtnPort()

{

//已有小数点时

if

(b_Hasport)

{

return;

}

//无小数点

cs_Num[m_i]+=“.“;

b_Hasport=TRUE;

b_Start=TRUE;

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]);

}

//四则运算符

void

CCalculatorDemoDlg::OnBtnAdd()

{

if

(!b_Start)

{

return;

}

if

(en_LastSignl==en_none)

{

en_LastSignl=en_add;

}

RunOperation(en_LastSignl);

en_LastSignl=en_add;

}

void

CCalculatorDemoDlg::OnBtnSub()

{

if

(!b_Start)

{

return;

}

//

TODO:

Add

your

control

notification

handler

code

here

if

(en_LastSignl==en_none)

{

en_LastSignl=en_sub;

}

RunOperation(en_LastSignl);

en_LastSignl=en_sub;

}

void

CCalculatorDemoDlg::OnBtnMul()

{

if

(!b_Start)

{

return;

}

if

(en_LastSignl==en_none)

{

cs_Num[1]=“1“;

en_LastSignl=en_mul;

}

RunOperation(en_LastSignl);

en_LastSignl=en_mul;

}

void

CCalculatorDemoDlg::OnBtnDiv()

{

if

(!b_Start)

{

return;

}

if

(en_LastSignl==en_none)

{

cs_Num[1]=“1“;

en_LastSignl=en_div;

}

RunOperation(en_LastSignl);

en_LastSignl=en_div;

}

void

CCalculatorDemoDlg::OnBtnEquel()

{

//

TODO:

Add

your

control

notification

handler

code

here

RunOperation(en_LastSignl);

//****特殊****

en_LastSignl=en_none;

b_Start=TRUE;

}

BOOL

CCalculatorDemoDlg::OnInitDialog()

{

CDialog::OnInitDialog();

//

TODO:

Add

extra

initialization

here

InitAllDate();

return

TRUE;

//

return

TRUE

unless

you

set

the

focus

to

a

control

//

EXCEPTION:

OCX

Property

Pages

should

return

FALSE

}

void

CCalculatorDemoDlg::PutIntoNum(int

n)

{

CString

tem_i;

tem_i.Format(“%d“,n);

CString

temp;

//第一次输入

if

(!b_Start)

{

cs_Num[m_i]=tem_i;

b_Start=TRUE;

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]);

if

(!b_Hasport)

{

GetDlgItemText(IDC_EDIT_SHOW,temp);

temp+=“.“;

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

return;

}

cs_Num[m_i]+=tem_i;

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]);

if

(!b_Hasport)

{

GetDlgItemText(IDC_EDIT_SHOW,temp);

temp+=“.“;

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

}

void

CCalculatorDemoDlg::InitAllDate()

{

en_LastSignl=en_none;

b_Hasport=FALSE;

b_Start=FALSE;

b_Hasmul=FALSE;

b_Hasdiv=FALSE;

cs_Num[0]=“0“;

cs_Num[1]=“0“;

m_i=0;

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]+“.“);

}

void

CCalculatorDemoDlg::RunOperation(eum_signl

e_signl)

{

//

TODO:

Add

your

control

notification

handler

code

here

double

sum;

double

nAdd1;

double

nAdd2;

nAdd1=atof(cs_Num[0]);

nAdd2=atof(cs_Num[1]);

//sum=nAdd1+nAdd2;

switch(e_signl)

{

case

en_add:

sum=nAdd1+nAdd2;

break;

case

en_sub:

sum=nAdd1-nAdd2;

break;

case

en_mul:

sum=nAdd1*nAdd2;

break;

case

en_div:

sum=nAdd1/nAdd2;

break;

}

cs_Num[0].Format(“%g“,sum);

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[0]);

if

(!b_Hasport

GetDlgItemText(IDC_EDIT_SHOW,temp);

temp+=“.“;

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

m_i

=

1;

b_Hasport=FALSE;

b_Start=FALSE;

cs_Num[m_i]=“0“;

}

//void

CCalculatorDemoDlg::RunOperation(eum_signl

en_signl)

//{

//}

void

CCalculatorDemoDlg::OnBtnC()

{

//

TODO:

Add

your

control

notification

handler

code

here

InitAllDate();

}

//

根号

void

CCalculatorDemoDlg::OnBtnSqrt()

{

//

TODO:

Add

your

control

notification

handler

code

here

if

(!b_Start)

{

return;

}

double

num;

CString

temp;

GetDlgItemText(IDC_EDIT_SHOW,temp);

num=atof(temp);

num=sqrt(num);

temp.Format(“%lf“,num);

if

(temp.Find(

.

)==-1)

SetDlgItemText(IDC_EDIT_SHOW,temp+“.“);

else

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

//

%

void

CCalculatorDemoDlg::OnBtnPercent()

{

//

TODO:

Add

your

control

notification

handler

code

here

}

//

1/x

void

CCalculatorDemoDlg::OnBtnDown()

{

//

TODO:

Add

your

control

notification

handler

code

here

if

(!b_Start)

{

return;

}

double

num;

CString

temp;

GetDlgItemText(IDC_EDIT_SHOW,temp);

num=atof(temp);

num=1/num;

temp.Format(“%lf“,num);

if

(temp.Find(

.

)==-1)

SetDlgItemText(IDC_EDIT_SHOW,temp+“.“);

else

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

//

+-

void

CCalculatorDemoDlg::OnBtnNequa()

{

//

TODO:

Add

your

control

notification

handler

code

here

if

(!b_Start)

{

return;

}

double

num;

CString

temp;

GetDlgItemText(IDC_EDIT_SHOW,temp);

num=atof(temp);

num=0-num;

SetDlgItemText(IDC_EDIT_SHOW,b_Hasport

?

temp:temp+“.“);

}

//

退格键

void

CCalculatorDemoDlg::OnBtnSpace()

{

//

TODO:

Add

your

control

notification

handler

code

here

if

(!b_Start)

{

return;

}

double

num;

CString

temp;

int

len;

CHAR

temp_ch[32];

GetDlgItemText(IDC_EDIT_SHOW,temp);

//AfxMessageBox(temp);

num=atof(temp);

sprintf(temp_ch,“%g“,num);

num=0;

//AfxMessageBox(temp_ch);

len=strlen(temp_ch);

int

te_i=len-1;

if(temp_ch[te_i]==

.

)

te_i-=1,b_Hasport=FALSE;

temp_ch[te_i]=

\0

;

//////////////////////////////////////////////////////////////////////////

//AfxMessageBox(temp_ch);

if

(strlen(temp_ch)==0)

{

temp_ch[0]=

0

;

temp_ch[1]=

\0

;

}

//////////////////////////////////////////////////////////////////////////

sscanf(temp_ch,“%lf“,temp.Format(“%g“,num);

//AfxMessageBox(temp);

SetDlgItemText(IDC_EDIT_SHOW,b_Hasport?temp:temp+“.“);

}

5

结论与心得体会

经过多番测试,得出结论为设计的计算器能够完成功能描述内容中的全部功能。

认识到不能马虎经常犯犯小错误。要提高自己找错纠错能力,通常错误总是那几种,多练习就熟练了。

要善于查找资料提高自己的资料查询能力,要善于利用网络来获得知识,获得帮助。开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么。这些问题只要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。有了明确的目的,就可以发挥自己的头脑来完成它了。

要善于思考。程序中有些实现难点和最初完成程序时免不了的许多不足就需要自己根据代码认真思考来解决。只有这样才能纠正程序的不足并使其更加人性化。

16

朝花夕拾 2022-07-20 19:46:51

相关推荐

闭门反思的意思

“闭门反思”的意思是关上门反省自己的过错。形容自身冷静下来好好单独地想想所犯之过错,作出深刻反省。成语出自:《汉书·韩延寿传》:“因入卧传舍,闭阁思过。畅姬扳肯殖厩帮询爆墨。”...
展开详情

芝麻油是上火还是降火

芝麻油有降火功效。一般黑芝麻食用,白芝麻榨油。中医学认为:本品性味甘、凉,具有润肠通便、解毒生肌之功效。据《本草纲目》上记载:有润燥、解毒、止痛、消肿之功。”《别录》说:利大肠,胞衣不落。生者摩疙肿,生秃发。”...
展开详情

前途的意思

前途原指前面的路程,比喻将来的光景;将行经的前方路途,引申为目标和价值。出自鲁迅《故事新编-奔月》:“圆的雪白的月亮照着前途,凉风吹脸,真是比大猎回来时还有趣。”出处:晋-左思《吴都赋》:“先驱前涂,俞骑骋路。...
展开详情

丼怎么读

jǐng或dǎn。读作jǐng时,同“井”。读作dǎn时,意为投物井中所发出的声音,也可用作姓。中文丼字来源甲骨文,甲骨文即有丼字,或为今“丹”字,井中的一点,为丹砂的象征符号。又因为从“井”得字,所以也指井,...
展开详情

中介波妞什么意思

中介波妞的原句是“波妞喜欢宗介”,是宫崎骏的电影《悬崖上的金鱼姬》里的一句台词,非常的经典。“波妞喜欢宗介”是人鱼对人类男孩的表白,被调皮的网友们更改成了“波妞喜欢中介,中介喜欢赚差价。”...
展开详情

精选推荐更多>

乔迁新居大门对联

乔迁新居大门对联:
1、横批:春意盎然。
上联:福星高照全家福;
下联:春光耀辉满堂春。
2、横批:吉祥如意。
上联:迎喜迎春迎富贵;
下联:接财接福接平安。
3、横批:可心就好。
上联:良辰吉日喜迁新居;
下联:人兴家旺宜住高楼。
4、横批:乔木莺迁。
上联:乔迁喜天地人共喜;
下联:新居荣福禄寿全荣。
5、横批:栋宇聿新。
上联:吉日迁居万事如意;
下联:良辰安宅百年遂心。
6、横批:方寸福地。
上联:添居室金玉满堂;
下联:栋梁起流芳百世。
7、横批:四海升平。
上联:一马平川进新居;
下联:珠光宝气福满堂。
8、横批:万象更新。
上联:和顺一门有百福;
下联:平安二字值千金。
9、横批:喜气盈门。
上联:福旺财旺运气旺;
下联:家兴人兴事业兴。

亏除去部首有多少画

“亏”字除去部首,还有两画。
亏(拼音:kuī),汉语一级通用规范汉字(常用字)。“亏”和它的繁体字“虧”原是音义都不同的两个字。简体“亏”原是“于”的异体字,字形、字义关系不详。清代王筠认为是“吁”的本字,假借为动词“往”义,并由此引申出“到达”、“在”、“比”义,进而虚化出一系列介词用法,这些意思后世多写作“于”。“亏”字后来成为“虧”的简化字。
“虧”始收录于《说文解字》,许慎认为是形声字,从亏雐(hū)声,本义指气不足,引申泛指缺损,再引申指短、少、差欠,又引申为毁坏,还引申为道义上的亏欠、对不起。又作幸好、幸亏讲。另外“亏”也表示讥讽。

疾行的意思

“疾行”读音jí xíng,汉语词语,意思是快速行走。
出处:
1、《素问·气厥论》:“水气客于大肠,疾行则鸣濯濯,如囊裹浆。”
2、明·冯梦龙《东周列国志》第七十二回:“伍员疾行,至于鄂渚,遥望大江,茫茫浩浩,波涛万顷,无舟可渡。伍员前阻大水,后虑追兵,心中十分危急。”
造句:
1、他骑马疾行,在父亲咽气前到达了家中。
2、大队骑马背枪的胡子在山道上一路疾行,偶尔一两个山中猎户看到这群胡子,无不躲得远远的。
3、适才我看到你骑在疾行的巨无霸背上,仍然谈笑自若引吭高歌,如此临危不惧,气定神闲的大将风骨,岂是平常人所能及的。
4、杨龙和林凤仙驾着火龙,在万丈虚空之上穿云破雾,瞬息千里,飞速地朝着东南方向疾行而去。

会操是什么意思

会操,读音为huì cāo,汉语词语,意思是会合举行操演。该词是一个军事术语,古今语意不同,在清朝末年,又称为秋操、大操,意指新军的军事演习,在今天,专指军队的队列训练。
出处:《大辞海·军事卷》:“会操:集中部属对已训课目、内容进行的操演。多用于队列训练,目的是检验训练效果,相互观摩,交流经验,取长补短,共同提高。通常由连、营、团级单位组织实施,并组成评判组,按指定的单位或个人顺序轮流操演,结束后进行讲评。”
造句:
1、每天早晨,同学们在操场上会操。
2、我今天感到非常高兴,能够以检阅官身分出席这次结业会操。
3、我非常高兴出席今天的结业会操,再一次以检阅官的身分,与入境处的结业学员见面。
常见热点问答
热点搜索
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200
作文大全
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200