实验报告(用delphi做一个简易计算器)
- 格式:doc
- 大小:160.00 KB
- 文档页数:9
java简易计算器实训报告(一)Java简易计算器实训报告实训目的通过编写一个简易的Java计算器,深入了解Java基础语法,并掌握对象的属性和行为。
实训过程本次实训采用Eclipse编写Java程序,具体过程如下:1.首先创建一个名为“Calaulator”的Java项目,再在其中创建一个名为“Calaulator”的类。
2.在Calaulator类中定义一个名为“calculate”的方法,此方法接收3个参数:一个char类型的操作符,两个double类型的操作数,返回值为double类型。
3.在方法体中根据传入的操作符进行相应的加、减、乘、除运算。
4.创建一个主函数,在其中调用calculate方法并输出结果。
实训收获通过本次实训,我掌握了Java的基础语法,并深入了解了对象的属性和行为。
同时,我还学会了如何使用Eclipse编写Java程序,提高了自己的编程水平。
实训总结Java语言作为一种强大而稳定的编程语言,具有广泛的应用场景。
通过本次实训,我深刻认识到Java的重要性,并希望能够在以后的学习中不断探索Java语言的更多使用方法。
实训反思在实训过程中,我发现自己对Java的基础语法了解不够深入,导致编写代码时遇到一些困难,需要不断查阅相关资料。
同时,在调试代码时也遇到了许多问题,发现自己对IDE的使用不够熟练,需要更多的实践和学习。
实训展望通过本次实训,我已经初步掌握了Java的基础语法和编程思想,但我认为这只是一个开始。
我需要不断地练习,深入了解Java的各种特性,将其应用到实际开发中。
未来,我希望能够成为一名优秀的Java工程师,为社会做出自己的贡献。
结语本次Java简易计算器实训让我收获颇丰,不仅加深了对Java的认识,也增强了自己的编程实践能力。
希望今后能够在Java的学习和实践中不断提高自己,取得更好的成果。
简易计算器实验报告简易计算器实验报告引言:计算器是我们日常生活中常用的工具之一。
它可以帮助我们进行简单的数学运算,提高计算的效率。
在本次实验中,我们将设计并制作一台简易计算器,通过实践来掌握计算器的原理和工作原理。
实验目的:1. 了解计算器的基本原理和工作原理;2. 掌握计算器的设计和制作方法;3. 提高动手能力和创造力。
实验材料:1. 电路板;2. 按键;3. LED显示屏;4. 电容;5. 电阻;6. 电源。
实验步骤:1. 连接电路板和电源,确保电路板能够正常工作;2. 将按键连接到电路板上,用于输入数字和运算符;3. 连接LED显示屏,用于显示计算结果;4. 添加电容和电阻,用于控制电路的稳定性和电流;5. 调试电路,确保计算器能够正确运行。
实验结果:经过一番调试,我们成功制作出了一台简易计算器。
它可以进行基本的加减乘除运算,并且在LED显示屏上显示结果。
通过按键输入数字和运算符,我们可以进行各种运算,从而得到我们想要的结果。
这台计算器虽然简单,但是它的实用性和便携性都非常高。
实验分析:在本次实验中,我们主要学习了计算器的基本原理和工作原理。
计算器是通过按键输入数字和运算符,然后经过电路的计算和控制,最终在显示屏上显示结果。
在电路中,电容和电阻的作用是为了保证电路的稳定性和电流的控制。
通过这个实验,我们更加深入地了解了计算器的内部结构和工作原理。
实验总结:通过本次实验,我们成功制作了一台简易计算器,并且对计算器的原理和工作原理有了更深入的了解。
实验过程中,我们不仅提高了动手能力和创造力,还培养了解决问题的能力。
计算器作为一种常见的工具,它的设计和制作过程并不复杂,但是它的实用性和便携性却非常高,为我们的生活带来了很大的便利。
未来展望:通过这次实验,我们对计算器的原理和工作原理有了初步的了解。
在未来,我们可以进一步深入研究计算器的更高级功能和更复杂的电路设计。
同时,我们也可以将这种简易计算器的设计思想应用到其他领域,如电子设备、机器人等,从而提高我们的创造力和创新能力。
简易计算器的制作在本文中,我们将介绍如何使用Visual FoxPro(VFP)制作一个简易计算器。
Visual FoxPro是一种开发工具,可以用于创建数据库应用程序和开发Windows桌面应用程序。
步骤1: 创建新的Visual FoxPro项目首先,打开Visual FoxPro并创建一个新的项目。
在“文件”菜单中选择“新建”,然后选择“项目”。
输入一个项目名称,选择一个合适的位置,然后点击“确定”。
步骤2:创建一个新的表单接下来,我们需要创建一个新的表单来作为计算器的界面。
在项目资源管理器中,右键点击“表单”文件夹,并选择“新建”。
输入一个表单名称,然后点击“确定”。
步骤3:添加控件步骤5:添加按钮事件首先,我们需要声明变量来存储用户输入的数字。
在按钮事件代码中,添加以下代码:```foxproLOCAL num1, num2, result```接下来,我们需要获取用户输入的数字。
在按钮事件代码中,添加以下代码:```foxpronum1 = VAL(Thisform.txtNum1.Value)num2 = VAL(Thisform.txtNum2.Value)```然后,我们可以执行所需的计算操作。
例如,如果我们想要添加两个数字,我们可以使用以下代码:```foxproresult = num1 + num2```最后,我们需要将结果显示在界面上。
在按钮事件代码中,添加以下代码:```foxproThisform.lblResult.Caption = STR(result)```步骤6:运行和测试完成上述步骤后,您可以保存并运行计算器。
在VFP的工具栏中,点击“运行”按钮来启动应用程序。
测试计算器,确保它可以正确执行计算操作并显示结果。
结论通过使用Visual FoxPro,我们可以轻松创建一个简易计算器。
这个计算器可以执行基本的加减乘除等操作,同时提供了一个直观的用户界面。
您可以根据需要进行自定义,添加更多功能和复杂的计算操作。
interfaceusesWindows, Messages, SysUtils, Variants, Classes, Dialogs, Math, Graphics, Controls, Forms, StdCtrls;typeTForm1 = class(TForm)edt1: TEdit;btn10: TButton;btn1: TButton;btn2: TButton;btn3: TButton;btn4: TButton;btn5: TButton;btn6: TButton;btn7: TButton;btn8: TButton;btn9: TButton;btnEqual: TButton;btn12: TButton;btnC: TButton;btn14: TButton;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure opInput(Sender: TObject);procedure btnEqualClick(Sender: TObject);procedure btnCClick(Sender: TObject);function isDigit(s: string): Boolean;procedure numInput(Sender: TObject);//procedure numOpInput(Sender: TObject);private{}end;{自定义的TMyList类}TMyList = class(TList)end;varForm1: TForm1;List: TMyList;tempStr: string;implementation{$R *.dfm}{创建}procedure TForm1.FormCreate(Sender: TObject);beginList := TMyList.Create;edt1.Text := '';end;{释放}procedure TForm1.FormDestroy(Sender: TObject);beginList.Free;end;{判断一个字符串是否为数字}function TForm1.isDigit(s: string): Boolean;vari: Integer;beginResult := True;for i := 1 to Length(s) dobeginif not(s[i] in ['0'..'9','.']) thenResult := False;end;end;{输入数字处理}procedure TForm1.numInput(Sender: TObject);beginif(edt1.Text = '') or (string(st^) = '+') or (string(st^) = '*') then beginedt1.Text := (Sender as TButton).Caption;endelsebeginedt1.Text := edt1.Text + (Sender as TButton).Caption;end;tempStr := edt1.Text;end;{操作符处理}procedure TForm1.opInput(Sender: TObject);beginif isDigit(tempStr) and (tempStr <> '') thenbeginnew(str);str^ := tempStr;List.Add(str);tempStr := '';end;if List.Count = 0 thenbeginShowMessage('输入无效,请先输入数字');exit;//跳出本过程endelsebeginedt1.Text := (Sender as TButton).Caption;New(str);str^ := edt1.Text;List.Add(str);edt1.Clear;end;end;{等号处理list}procedure TForm1.btnEqualClick(Sender: TObject); var//tempResult: Extended;temp: Extended;tempStr1, tempStr2: string;i: Integer;beginnew(str);str^ := tempStr;List.Add(str);edt1.Clear;tempStr := '';if List.Count = 0 thenShowMessage('empty list')elsebeginfor i := 0 to List.Count - 1 dobegintempStr1 := string(List.Items[i]^);if tempStr1 = '+' thenbegintempStr1 := string(List.Items[i - 1]^);tempStr2 := string(List.Items[i + 1]^);New(str);str^ := FloatToStr(StrToFloat(tempStr1) + StrToFloat(tempStr2));List.Delete(i + 1);List.Insert(i + 1, str);end;if tempStr1 = '*' thenbegintempStr1 := string(List.Items[i - 1]^);tempStr2 := string(List.Items[i + 1]^);New(str);temp := StrToFloat(tempStr1) * StrToFloat(tempStr2);str^ := FloatToStr(temp);List.Delete(i + 1);List.Insert(i + 1, str);end;end;edt1.Text := string(List.Items[List.Count - 1]^);List.Clear;New(str);str^ := edt1.Text;List.Add(str);//ShowMessageFmt('count=%d',[List.Count]);end;end;procedure TForm1.btnCClick(Sender: TObject);beginif List.Count = 0 thenShowMessage('list为空,不用清空');List.clear;edt1.Text := '';end;end.。
实习报告书题目: Delphi学院:专业:地理信息系统班级:姓名:学号:2013年6月22 日1 引言娱乐场所信息查询软件,软件界面设计简洁,美观,其人性化的软件流程,可以让一般人方便的查询娱乐场所,上手极易,不用打开多个窗口可重复查询。
2 系统需求分析根据用户的需求,对本系统做整体的需求分析,这是保证系统有效性和实用性的前提。
2.1 功能需求分析在设计本系统之前,作者与相关工作人员进行了交流,并对此进行了归纳提炼,得出建立一个娱乐场所信息查询应具备如下功能:(1)娱乐场所信息查询。
可以对任何一个娱乐场所的详细信息进行查询,其中包括名称、所处路名、ID等。
(2)娱乐场所所在地区的地图显示。
(3)最短路径的分析。
(4)地图打印。
2.2 数据需求根据功能需求的要求,需要有一系列的数据来支撑,本系统需要的数据包括所处地区的地图模板、道路信息、娱乐场所信息等3系统设计为确保系统顺利的实施,本系统遵循软件工程原理和方法,对系统进行总体设计和详细设计;其次,应满足先进性原则,依照国际标准,借鉴主流系统的体系结构,保证系统具有较长的生命力和扩展能力;此外,还应满足成熟性原则、实用性原则、高可靠性原则等。
根据需求分析的结果,本着以上原则展开对本系统的设计。
3.1界面设计为了界面设计,增强系统的美观性、灵活性,使系统易于操作,采用了很多优秀的第三方组件,这些控件的使用不仅达到了很好效果,同时还大大减轻了编程的工作量。
该系统需要输入用户名、密码才可运用,具有较好的保护性3.1.2关于界面3.2技术路线本系统采用Embarcadero Delphi XE3作为开发工具。
Delphi,是Windows平台下著名的快速应用程序开发工具,最早的版本由美国Borland(宝兰)公司于1995年开发。
Delphi是一个集成开发环境(IDE),使用的核心是由传统Pascal语言发展而来的Object Pascal,以图形用户界面为开发环境,通过集成开发环境、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。
实验一简易计算器的制作一.实验要求1.参照Windows系统提供的计算器功能,制作一个自己的计算器,至少能完成数据的加减乘除的基本功能。
2.控件的焦点以及Tab键的设置和使用3.多个控件(按钮)事件的共享4.键盘的事件的应用二. 设计思路1.创建主体框架:建立程序的主要界面后,系统自动生成界面的主要窗口生成代码。
对于每个按钮的的代码段中,分别添加事件触发的处理代码。
设置两个textBox,一个显示表达式,一个显示运算结果。
2数字1-9,小数点,运算符号的按键的事件处理都是在textBox1中分别添加相对应的数字字符,把数字当成是字符串处理。
用赋值语句进行添加。
每次点击后textBox1的显示内容变为一个新的表达式。
3四则运算时采用compute方法直接计算表达式。
该方法功能强大,优先级和运算规则皆宜考虑在内。
但是上次计算的结果不能直接运算,利用括号的作用排除了这一问题。
4三角函数的运算,调运Math类中的方法。
5小数点,归零键,和删除键需仔细设置。
6每个运算方法均用try-catch语句处理异常,异常用MessageBox进行提示,确保程序运行正常。
三核心代码1 数字1-9,小数点,运算符号的按键的事件处理都是在textBox1中分别添加相对应的数字字符if (textBox1.Text != "0"){textBox1.Text += button8.Text;}else{textBox1.Text = button8.Text;}2 四则运算{try{DataTable shi = new DataTable();textBox2.Text = pute(textBox1.Text, "").ToString();//利用Compute方法进行四则用算textBox1.Text = "(" + textBox1.Text + ")";//为表达式加上括号,使上一步的计算结果直接参与下一步计算}catch (Exception err){MessageBox.Show("请检查表达式, 错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}}3 三角函数计算try{DataTable shi = new DataTable();String b = pute(textBox1.Text, "").ToString();double a = double.Parse(b);textBox2.Text = Math.Cos(a).ToString();}//将表达式运算后的结果,进行cos运算;故可直接计算表达式catch (Exception err){MessageBox.Show("请检查表达式, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error);}4 小数点判定if (textBox1.Text.Contains(".")){MessageBox.Show("不能有两个小数点, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}//对是否有两个小数点进行判定else{if (textBox1.Text.Length != 0){textBox1.Text += button20.Text;}else{textBox1.Text = "0.";//防止小数点出现在开头}}5 设置后退键int r=textBox1.Text.Length;if (r > 1){textBox1.Text = textBox1.Text.Remove(r - 1);//删除最右边的字符}else{textBox1.Text = "";//只剩一个字符时直接为空?}}//设置后退键6 设置归零键textBox1.Text = "";textBox2.Text = "";}//归零键设置:使表达式结果为空四程序运行后如图1 四则运算2 上一步计算结果直接进行三角运算五实验总结1首次亲自做出一个计算器,感觉颇有成就感。
**学院计算机系综合性实验实验报告课程名称 Delphi程序设计实验学期 2010 至 2011 学年第二学期学生所在系部计算机系年级 2009 专业班级学生姓名学号任课教师邵铁君实验成绩计算机系制《Delphi程序设计》课程综合性实验报告开课实验室:信息楼基础五2011年6月13日实验题目Delphi数据库综合设计实验题目:Delphi数据库综合设计一、实验目的:1、学习Delphi数据库可视化控件及应用2、掌握数据库分析与设计3、熟悉Delphi数据库应用程序的开发过程。
二、实验设备及环境:1、微型计算机2、Windows操作系统3、Delphi5.0以上版本的开发环境4、微软Access软件三、实验内容及要求:1、实验内容数据库表结构设计(以学生档案信息管理系统为例):用户表denlu.db包含:字段名类型长度索引user 文本50 索引pass 文本50学生信息表dangan.db包含:字段名类型长度索引姓名文本10 索引学号文本10性别文本8院系文本15党团员文本10籍贯文本15专业文本15电话号码文本10情况文本50软件界面设计:主要功能代码设计:1).登录验证即FORM2窗口主要代码:procedure TForm2.Button1Click(Sender: TObject);varu,p:string;beginu:=edit1.Text;p:=edit2.Text;ADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add('select user,pass from denglu where user='+''''+u+''''+'and pass='+''''+p+'''');ADOQuery1.Open;if ADOQuery1.RecordCount=0 thenbeginApplication.MessageBox('密码错误, 请重新输入','提示',mb_ok);edit1.SetFocus;endbeginform2.Hide;form3.ShowModal;end;end;procedure TForm2.Button2Click(Sender: TObject);beginclose;end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);beginapplication.Terminate;end;procedure TForm2.FormCreate(Sender: TObject);begintryADOConnection1.Open;exceptapplication.MessageBox('找不到数据库,引起该问题的原因是数据库文件可能被人为删除或改名','无法打开数据库',0);application.Terminate;end;end;2).学生信息管理系统即FORM3窗口主要代码:procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);beginapplication.Terminate;end;procedure TForm3.N2Click(Sender: TObject);beginform4:=tform4.create(application);form4.show;end ;procedure TForm3.N6Click(Sender: TObject);beginform5:=tform5.Create(application);form5.Show;end;procedure TForm3.N7Click(Sender: TObject);beginform6:=tform6.Create(application);form6.Show;end;procedure TForm3.N4Click(Sender: TObject);application.Terminate;end;3).信息录入即FORM4窗口主要代码:procedure TForm4.DataSource1DataChange(Sender: TObject; Field: TField);vari:integer;begini:=ADOTable1.RecNo;statusbar1.Panels[0].Text:='第'+inttostr(i)+'条记录,总共'+inttostr(ADOTable1.RecordCount)+'条记录';end;procedure TForm4.FormCreate(Sender: TObject);begintryADOConnection1.Open;ADOtable1.Active:=true;exceptapplication.MessageBox('找不到数据库,引起该问题的原因是数据库文件可能被人为删除或改名','无法打开数据库',0);application.Terminate;end;end;procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);beginAction:=cafree;end;4).组合查找即FORM5窗口主要代码:procedure TForm5.Button1Click(Sender: TObject);var s:string;begins:='select * from dangan where (1=1)';if edit1.text<>''thens:=s+'and(姓名='''+edit1.Text+''')';if edit2.text<>''thens:=s+'and(学号='''+edit2.Text+''')';if combobox1.text<>''thens:=s+'and(性别='''+combobox1.Text+''')';if combobox2.text<>''thens:=s+'and(党团员='''+combobox2.Text+''')';if edit3.text<>''thens:=s+'and(院系='''+edit3.Text+''')';if edit4.text<>''thens:=s+'and(籍贯='''+edit4.Text+''')';if edit5.text<>''thens:=s+'and(专业='''+edit5.Text+''')';if edit6.text<>''thens:=s+'and(电话号码='''+edit6.Text+''')';adoquery1.Close;adoquery1.sql.Clear;adoquery1.open;edit1.Text:='';edit2.Text:='';edit3.Text:='';edit4.Text:='';edit5.Text:='';edit6.Text:='';combobox1.Text:='';combobox2.Text:='';end;procedure TForm5.FormCreate(Sender: TObject);begintryadoconnection1.open;exceptapplication.messagebox('找不到数据库','无法打开数据库',0);application.terminate;end;end;procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);beginAction:=cafree;end;5).模糊查找即FORM6窗口主要代码:procedure TForm6.Button1Click(Sender: TObject);begindm.ADOQuery2.Close;dm.ADOQuery2.SQL.Clear;dm.ADOQuery2.SQL.Add('select * from dangan');dm.ADOQuery2.SQL.Add('where 姓名like'''+edit1.text+'%''');dm.ADOQuery2.Open;panel1.Caption:='总共找到'+inttostr(dm.ADOQuery2.RecordCount)+'条记录';end;procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);beginAction:=cafree;end;procedure TForm6.FormCreate(Sender: TObject);begin//dm.ADOConnection1.Close;try// dm.ADOConnection1.Open;exceptapplication.MessageBox('找不到数据库,引起该问题的原因是数据库文件可能被人为删除或改名','无法打开数据库',0);application.Terminate;end;end;2.实验要求使用ADO控件实现学生档案的输入,多条件查询,模糊查询,并且通过用户登录设置程序的使用权限。
简易计算器实训报告
一、实训目的:熟悉基本的Python编程知识和数据类型的使用,掌握基本的计算器功能实现
二、实训步骤:
1.首先导入math模块,因为本次实训中需要使用到math模块中的一些函数,如sqrt()
2.定义四个基本运算函数:add()、sub()、mul()、div(),并使用if语句判断用户需要执行的运算操作
3.如果用户输入的操作符不是四个基本运算符之一,则提示用户输入正确的操作符,直到用户输入正确的符号为止
4.通过while循环实现:如果用户输入的数字不是float类型或者用户输入的操作符不是字符串类型,则一直提示用户输入正确的数字或者操作符
5.通过格式化字符串实现结果的输出,保留两位小数
6.通过input()函数实现用户输入数字和操作符的交互
三、实训感想:
通过本次实训,我对Python编程语言有了更深入的了解和掌握,并且熟练掌握了Python中的数据类型、运算符和基本函
数的使用方法。
另外,本次实训也提高了我对问题解决的能力和编程思路,让我更加深入地理解了编程思维的本质。
最后,我希望自己能够不断地学习和探索,进一步扩展自己的编程知识,提升自己的实践能力和创新能力。
简易计算器实验报告一、实验目的本次实验的目的是设计并实现一个简易计算器,能够进行基本的四则运算(加、减、乘、除),以及处理括号的优先级运算,提高对程序设计和逻辑思维的理解与应用能力。
二、实验原理1、四则运算的优先级规则在数学运算中,先计算括号内的表达式,然后按照先乘除后加减的顺序进行计算。
乘除法的优先级高于加减法,如果在同一级运算中,按照从左到右的顺序进行。
2、数据结构的选择使用栈(Stack)数据结构来存储操作数和运算符。
栈具有先进后出的特点,非常适合处理表达式中的括号和优先级。
3、算法思路首先,将输入的表达式进行解析,将数字和运算符分别存储到不同的栈中。
然后,根据运算符的优先级进行计算,将计算结果重新压入栈中,直到表达式计算完毕。
三、实验设备及环境1、编程工具:选择了 Python 语言作为主要的编程工具,使用PyCharm 集成开发环境进行代码编写和调试。
2、操作系统:Windows 10 操作系统。
四、实验步骤1、定义数据结构定义两个栈,一个用于存储操作数(operandStack),一个用于存储运算符(operatorStack)。
2、表达式解析遍历输入的表达式字符串,将数字转换为整数并压入操作数栈,将运算符压入运算符栈。
遇到左括号直接压入运算符栈,遇到右括号则进行括号内的运算。
3、运算处理当运算符栈不为空时,取出栈顶的运算符和两个操作数进行计算。
根据运算符的优先级进行相应的运算,将结果压入操作数栈。
4、最终结果当表达式解析完毕后,操作数栈中的唯一元素即为表达式的计算结果。
五、代码实现```pythonclass SimpleCalculator:def __init__(self):selfoperandStack =selfoperatorStack =def calculate(self, expression):for char in expression:if charisdigit():selfoperandStackappend(int(char))elif char in '+/()':if char =='(':selfoperatorStackappend(char)elif char ==')':while selfoperatorStack-1!='(':operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackpop()else:while selfoperatorStack and selfhasHigherPrecedence(selfoperatorStack-1, char):operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackappend(char)while selfoperatorStack:operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)return selfoperandStackpop()def hasHigherPrecedence(self, op1, op2):if op1 in '/' and op2 in '+':return Trueelif op1 in '+' and op2 in '+':return Falseelif op1 in '/' and op2 in '/':return Falsereturn Falsedef performOperation(self, operand1, operand2, operator):if operator =='+':return operand1 + operand2elif operator =='':return operand1 operand2elif operator =='':return operand1 operand2elif operator =='/':if operand2 == 0:raise ValueError("除数不能为 0")return operand1 / operand2if __name__ =="__main__":calculator = SimpleCalculator()expression ="2 + 3 (4 1) / 2"result = calculatorcalculate(expression)print("计算结果:", result)```六、实验结果与分析1、测试用例及结果输入表达式:"2 + 3 4",计算结果:14输入表达式:"(2 + 3) 4",计算结果:20输入表达式:"5 2 3",计算结果:-1输入表达式:"10 / 2 + 1",计算结果:62、结果分析对于简单的四则运算表达式,计算器能够正确计算出结果。
数据库实验报告姓名:学号:专业:院系:实验二、用熟悉Delphi的开发环境,用Delphi设计一个简易的计算器一、实验目的1、练习Delphi中Edit组件和Button组件的使用方法。
2、能实现计算器的基本功能。
3、要求界面的设计具有个性化。
4、提交的程序前面要有分析,中间应有注释。
二、实验分析:在设计的时候,首先考虑其“计算”功能的实现。
可以通过编辑框edit的形式输入要操作的数据,然后通过选择button按键来选择运算方式。
在设计时,我考虑了最基本的“加”“减”“乘”“除”运算,另外加入了“取倒数”以及“求平方”和“求立方”的操作。
当然,这些操作都可以在“乘”“除”运算中实现,只是为了计算更而已。
二:实验步骤1、实验代码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Label1: TLabel;Edit1: TEdit;Label2: TLabel;Edit2: TEdit;Label3: TLabel;Label4: TLabel;Edit3: TEdit;Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;Button5: TButton;Button6: TButton;Button7: TButton;Label5: TLabel;Edit4: TEdit;Label6: TLabel;Label7: TLabel;Edit5: TEdit;Label8: TLabel;Label9: TLabel;Button8: TButton;Button9: TButton;procedure button1click(Sender: TObject);procedure button2click(Sender: TObject);procedure button3click(Sender: TObject);procedure button4click(Sender: TObject);procedure button5click(Sender: TObject);procedure button6click(Sender: TObject);procedure button7click(Sender: TObject);procedure Button8Click(Sender: TObject);procedure button9click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.button1click(Sender: TObject); //第一个button,进行“加”操作varx1,x2,x3:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);x3:=x1+x2;edit3.text:= floattostr(x3);end;procedure TForm1.button2click(Sender: TObject);//第二个button,进行“减”操作varx1,x2,x3:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);x3:=x1-x2;edit3.text:= floattostr(x3);end;procedure TForm1.button3click(Sender: TObject);//第三个button,进行“乘”操作varx1,x2,x3:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);x3:=x1*x2;edit3.text:= floattostr(x3);end;procedure TForm1.button4click(Sender: TObject);//第四个button,进行“除”操作varx1,x2,x3:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);if (x2<>0)thenbeginx3:=x1/x2;edit3.text:= floattostr(x3);endelse showmessage('除数不能为空或0')end;procedure TForm1.button5click(Sender: TObject);//第五个button,进行“清零”操作varx1,x2,x3,x4,x5:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);x3:=strtofloat(edit3.text);x4:=strtofloat(edit4.text);x5:=strtofloat(edit5.text);x1:=0;x2:=0;x3:=0;x4:=0;x5:=0;edit1.text:= floattostr(x1);edit2.text:= floattostr(x2);edit3.text:= floattostr(x3);edit4.text:= floattostr(x4);edit5.text:= floattostr(x5);end;procedure TForm1.button6click(Sender: TObject);//第六个button,进行“取倒数”操作varx4,x5:double;beginx4:=strtofloat(edit4.text);if (x4<>0) thenbeginx5:=1/x4;edit5.text:= floattostr(x5);endelse showmessage('请输入非零数字');end;procedure TForm1.button7click(Sender: TObject);//第七个button,进行“取平方”操作varx4,x5:double;beginx4:=strtofloat(edit4.text);x5:=x4*x4;edit5.text:= floattostr(x5);end;procedure TForm1.Button8Click(Sender: TObject);//第八个button,进行“取立方”操作varx4,x5:double;beginx4:=strtofloat(edit4.text);x5:=x4*x4*x4;edit5.text:= floattostr(x5);end;procedure TForm1.button9click(Sender: TObject);//第九个button,如果第一个//编辑框里输入x,第二个编辑框里输入n,可以求出x的n次幂。
varx1,x2,x3:double;beginx1:=strtofloat(edit1.text);x2:=strtofloat(edit2.text);if(x2=4) thenbeginx3:=x1*x1*x1*x1;edit3.text:= floattostr(x3);endelse if(x2=5) thenbeginx3:=x1*x1*x1*x1*x1;edit3.text:= floattostr(x3);endelse if(x2=6) thenbeginx3:=x1*x1*x1*x1*x1*x1;edit3.text:= floattostr(x3);endelse if(x2=7) thenbeginx3:=x1*x1*x1;edit3.text:= floattostr(x3);endelse if(x2=3) thenbeginx3:=x1*x1*x1*x1*x1*x1*x1;edit3.text:= floattostr(x3);endelse if(x2=8) thenbeginx3:=x1*x1*x1*x1*x1*x1*x1*x1;edit3.text:= floattostr(x3);endelse if(x2=9) thenbeginx3:=x1*x1*x1*x1*x1*x1*x1*x1*x1; edit3.text:= floattostr(x3);endelse if(x2=10) thenbeginx3:=x1*x1*x1*x1*x1*x1*x1*x1*x1*x1; edit3.text:= floattostr(x3);endend;end.2、实验现象:1)运行成功以后的计算器界面2)正确输入计算9*8和6的立方在正确运算(即edit2中的除数不为零,取倒数的数字X不为0)加减乘除以及取倒数、求平方、求立方时,计算器均显示正常的相应的运算结果。
下面是进行求x的n次幂或者进行了错误操作时的现象:3)正确运算了7的5次方4)运算的次方数超出了4~10时4)当进行“除”操作且输入的除数为0时5)当进行“1/x”操作且x为0时5)当运算结束,点击了“清零”时6)运算数为小数的操作数3、实验心得Delphi可以实现可视化的设计与操作,它的一些语言和法则与以前学过的C语言以及C++是不同的。
在设计计算器的时候我遇到了很多障碍,但通过查阅资料和问同学等方式,最终解决了这些问题。
但是这次设计的计算器所用的程序都是很基本很简单的,当涉及到一些更复杂的函数运算,比如求三角函数或者是开方的运算以及要用到循环递归嵌套调用等一些问题的时候,目前还是觉得相当困难。
并且在我设计的计算器中存在一个问题,就是只有当五个编辑框里都有数字(不论是什么数字)时,点击“清零”按钮才会实现清零的功能,否则如果有编辑框为空的时候就会导致该计算器死机。
这个问题我还没有想到如何解决,希望可以在今后的学习中找出答案。