《delphi编写计算器实验报告一(共17页).doc》由会员分享,可在线阅读,更多相关《delphi编写计算器实验报告一(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实 验 报 告 学号: 姓名:林燕玉 专业:08信管 班级: 第 8 周 课程名称 面向对象程序设计实验课时6实验项目简易计算器实验时间2010-4-9至2010-4-23实验目的 1、掌握DELPHI函数和过程的定义及使用方法2、熟练使用全局变量和局部变量进行程序设计 实验环境 1、 Windows Xp2、 DELPHI 7实验内容和完成情况实验内容:unit U4_9;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
2、StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button1
3、5: TButton; Button16: TButton; Button17: TButton; Button18: TButton; Button19: TButton; edit1: TEdit; procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TO
4、bject); procedure Button11Click(Sender: TObject); procedure Button13Click(Sender: TObject); procedure Button14Click(Sender: TObject); procedure Button15Click(Sender: TObject); procedure Button17Click(Sender: TObject); procedure Button19Click(Sender: TObject); procedure Button1Click(Sender: TObject);
5、 procedure Button2Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button12Click(Sender: TObject); procedure Button16Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button18Click(Sender: TObject); procedure Button3Click(Sender: TObject); private P
6、rivate declarations public Public declarations end;var Form1: TForm1; num1,num2:real; ittype:integer; flag:boolean=true; new:boolean=true;implementation$R *.dfmprocedure TForm1.Button5Click(Sender: TObject);begin if new then edit1.Text:=edit1.Text+7 else begin edit1.clear; edit1.Text:=edit1.Text+7;f
7、lag:=true;new:=true; end;end;procedure TForm1.Button6Click(Sender: TObject);begin if new then edit1.Text:=edit1.Text+8 else begin edit1.clear; edit1.Text:=edit1.Text+8;flag:=true;new:=true; end;end;procedure TForm1.Button7Click(Sender: TObject);begin if new then edit1.Text:=edit1.Text+9 else begin e
8、dit1.clear; edit1.Text:=edit1.Text+9;flag:=true;new:=true; end;end;procedure TForm1.Button9Click(Sender: TObject);begin if new then edit1.Text:=edit1.Text+4 else begin edit1.clear; edit1.Text:=edit1.Text+4;flag:=true; new:=true; end;end;procedure TForm1.Button10Click(Sender: TObject);begin if new th
9、en edit1.Text:=edit1.Text+5 else begin edit1.clear; edit1.Text:=edit1.Text+5;flag:=true;new:=true; end;end;procedure TForm1.Button11Click(Sender: TObject);begin if new then edit1.Text:=edit1.Text+6 else begin edit1.clear; edit1.Text:=edit1.Text+6;flag:=true;new:=true; end;end;procedure TForm1.Button
10、13Click(Sender: TObject);begin if new then edit1.Text:=edit1.Text+1 else begin edit1.clear; edit1.Text:=edit1.Text+1;flag:=true;new:=true; end;end;procedure TForm1.Button14Click(Sender: TObject);begin if new then edit1.Text:=edit1.Text+2 else begin edit1.clear; edit1.Text:=edit1.Text+2;flag:=true;ne
11、w:=true; end;end;procedure TForm1.Button15Click(Sender: TObject);begin if new then edit1.Text:=edit1.Text+3 else begin edit1.clear; edit1.Text:=edit1.Text+3;flag:=true;new:=true; end;end;procedure TForm1.Button17Click(Sender: TObject);begin if new then edit1.Text:=edit1.Text+0 else begin edit1.clear
12、; edit1.Text:=edit1.Text+0;flag:=true;new:=true; end;end;procedure TForm1.Button19Click(Sender: TObject);begin if strpos(pchar(edit1.text),.)=nil then edit1.Text:=edit1.Text+.;end;procedure TForm1.Button1Click(Sender: TObject);begin ittype:=3; if flag then begin num1:=strtofloat(edit1.Text); edit1.c
13、lear; flag:=false; end else begin Button16Click(Sender); edit1.Clear; flag:=false; end;end;procedure TForm1.Button2Click(Sender: TObject);begin ittype:=4; if flag then begin num1:=strtofloat(edit1.Text); edit1.clear; flag:=false; end else begin Button16Click(Sender); edit1.Clear; flag:=false; end;en
14、d;procedure TForm1.Button8Click(Sender: TObject);begin ittype:=1; if flag then begin num1:=strtofloat(edit1.Text); edit1.clear; flag:=false; end else begin Button16Click(Sender); edit1.Clear; flag:=false; end;end;procedure TForm1.Button12Click(Sender: TObject);begin ittype:=2; if flag then begin num
15、1:=strtofloat(edit1.Text); edit1.clear; flag:=false; end else begin Button16Click(Sender); edit1.Clear; flag:=false; end;end;procedure TForm1.Button16Click(Sender: TObject);begin new:=false; case ittype of 1:num2:=num1+strtofloat(edit1.text); 2:num2:=num1-strtofloat(edit1.text); 3:num2:=strtofloat(e
16、dit1.text)*num1; 4:if strtofloat(edit1.text)=0 then begin showmessage(除数为0!); exit; end else num2:=num1/strtofloat(edit1.text); end; edit1.text:=floattostr(num2); num1:=num2;end;procedure TForm1.Button4Click(Sender: TObject);begin edit1.text:=; flag:=true; new:=true;end;procedure TForm1.Button18Clic
17、k(Sender: TObject);begin edit1.Text:=edit1.Text+-;end;procedure TForm1.Button3Click(Sender: TObject);Begin edit1.Text:=copy(edit1.Text,1,length(edit1.text)-1); end; end.实验完成情况:本实验可实现的是一个简易计算器的加减乘除:l 定义两个全局变量num1,num2,任意按下1、2、3、4、5、6、7、8、9、0、-/=、. 向edit1.Text中输入一个数赋给num1,将edit1.Text清空;l 再按下你所要做的算法(+、
18、-、*、/),再任意按下1、2、3、4、5、6、7、8、9、0、-/=、. 可向edit1.text中输入另一个数,可直接按下 = ,即可求出结果。l 若想实现连续几个数相加减乘除(如1+2+3+4+5+10=?),本程序也做出了初步的实现。在程序中定义两个boolean(布尔)类型的全局变量flag、new :根据变量flag的true、false来控制+(-、*、/)号是否是第一次按下,在第二次按下+(-、*、/)的情况下可通过调用按钮 = 的函数(即Button16Click(Sender))来实现连续几个数的相加减乘除;根据变量new的true、false来判断edit.text中的数
19、是一个新输入的数还是一个运算的结果,若为运算结果的数,可直接将edit1.text清空再显示新输入的数。l 按钮 ON 是将edit1.text清空,使运算可以重新进行;按钮 CE 是退一格的意思,即如:输入78,按下CE就可将8删除,剩余7可继续做一切运算,按钮CE可重复使用。 出现的问题 1.本程序不能实现加减乘除在同一个运算式中同时使用,如“1+2*3=”,它的结果就是随机的一个数;2.在本程序中对于局部变量和全局变量有点混合不清,用起来很不熟悉,导致总是出现编译错误;在使用boolean(布尔)类型时,思维不够清晰,有时对怎样正确的使用true、false都搞昏掉了。3.对delphi
20、的学习还是不够深入,思路不够清晰,思维不够明了。解决方案 1.若想实现加减乘除在同一个运算式中使用,可在 = 函数(即procedure TForm1.Button16Click(Sender: TObject))中再编写一段关于+、-、*、/ 相互套用的代码,这个对于我这初学者来说难了点。2.认真学习,一定要弄懂局部变量和全局变量之间的区别,正确的理解与运用;对于boolean(布尔)类型,要正确的明白所定义的变量在程序中的作用,理清思路,必要是要在草稿纸上条例明文的确立整体过程,为编写程序奠定基础。3.平时多看看关于delphi的程序设计,理解一些函数、变量的使用,尽量的去独立思考,不懂之处多问,也要加强对delphi习题的练习。小 结 通过本次程序设计,让自己更明白了学的不够,理解的不够,练的不够。在编写程序时总是思维局限,思路不够清晰。在往后学习delphi的过程中,要真正的去理解相关代码的含义做到学以致用,从而去巩固知识。这次编写计算器,总的来说自己学的有限,编写所实现的功能也有限,希望通过以后的学习可以再来完善这个程序。指导老师评 议 成绩评定: 指导教师签名:专心-专注-专业