Delphi 6.0编写一个小的计算器

huangyux 2004-04-19 11:18:45
只求有加减乘除!的小软件啊!!我们老师考试内容!
谢谢个位大虾帮忙!
...全文
277 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
aningstar 2004-08-14
  • 打赏
  • 举报
回复
这么简单的东西要自己下功夫啊
jacky513 2004-08-03
  • 打赏
  • 举报
回复
我做了一个简单的加法运算器,供参考。
unit ch3_4Unit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
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;
procedure FormCreate(Sender: TObject);
procedure ZeroToNineClick(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
private
{ Private declarations }
temp: Int64;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
temp :=0;
end;

procedure TForm1.ZeroToNineClick(Sender: TObject);
begin
edit1.Text := edit1.Text + TButton(Sender).Caption;
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
temp := StrToInt64('0'+edit1.Text);
edit1.Text :='';
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
temp := 0;
edit1.Text :=' ';
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
temp := temp +StrToInt64('0'+edit1.text);
edit1.text := IntToStr(temp);
end;

end.
docong 2004-08-01
  • 打赏
  • 举报
回复
上面那个发错了
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button12: TButton;
procedure FormCreate(Sender: TObject);
procedure Button16Click(Sender: TObject);
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);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
temp1:string;
temp2:real;
flag:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Edit1.Clear;
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
flag:=4;
temp1:=Edit1.Text;
edit1.Clear
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
Edit1.Text:='0';
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
flag:=3;
temp1:=Edit1.Text;
edit1.Clear
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
flag:=2;
temp1:=Edit1.Text;
edit1.Clear
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
flag:=1;
temp1:=Edit1.Text;
edit1.Clear
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'3'
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'4'
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'5'
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'6'
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'7'
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'8'
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'9'
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'0'
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
case flag of
1:temp2:=StrToFloat(Edit1.Text)+StrToFloat(temp1);
2:temp2:=StrToFloat(Edit1.Text)-StrToFloat(temp1);
3:temp2:=StrToFloat(Edit1.Text)*StrToFloat(temp1);
4:temp2:=StrToFloat(Edit1.Text)/StrToFloat(temp1);
end;
Edit1.Text:=FloatToStr(temp2);
end;

end.
docong 2004-08-01
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Buttons, StdCtrls, Menus,Unit2;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
BitBtn1: TBitBtn;
Shape1: TShape;
ColorDialog1: TColorDialog;
MainMenu1: TMainMenu;
N1: TMenuItem;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
Shape1.Shape :=stRoundRect;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Shape1.Shape :=stRectangle;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Shape1.Shape :=stEllipse;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
try
if ColorDialog1.Execute then
Shape1.Brush.Color:=ColorDialog1.Color;
except
ShowMessage('color selection dialog failed to load.');
end;
end;

procedure TForm1.N1Click(Sender: TObject);
begin
AboutBox.Show;
end;

end.
ly_liuyang 2004-08-01
  • 打赏
  • 举报
回复
用LY写的把
简单强大的
自己把他改写为EXE的


http://blog.csdn.net/ly_liuyang/archive/2002/02/16/13334.aspx
Myattachment 2004-08-01
  • 打赏
  • 举报
回复
好笨的做法,难道不会用hash树来做吗?
shanxing 2004-06-24
  • 打赏
  • 举报
回复
学习
fim 2004-04-22
  • 打赏
  • 举报
回复
程序写得真够垃圾的,呵呵
insert2003 2004-04-21
  • 打赏
  • 举报
回复
procedure TransformExpression(sourceStack,targetStack:TStack);
var i:integer;
str:string;
temp:string;
value,code:integer;
begin
for i:=1 to sourceStack.TopPointer do begin
sourceStack.GetElement(str,i);
val(str,value,code);
if code=0 then targetStack.PushElement(str) //this is a operate data
else begin // this is a opeartor
if (str='+') or (str='-') then begin
while not tempStack.IsEmpty do begin
tempStack.GetElement(temp,tempStack.TopPointer);
if temp='(' then break;
tempStack.PopElement(temp);
targetStack.PushElement(temp);
end;
end;//if
if (str='*') or (str='/') then begin
while not tempStack.IsEmpty do begin
tempStack.GetElement(temp,tempStack.TopPointer);
if (temp='(') or (temp='-') or (temp='+') then break;
tempStack.PopElement(temp);
targetStack.PushElement(temp);
end; //while
end;//if
if str=')' then begin
while not tempStack.IsEmpty do begin
tempStack.GetElement(temp,tempStack.TopPointer);
if (temp='(') then begin
tempStack.PopElement(temp);
break;
end;
tempStack.PopElement(temp);
targetStack.PushElement(temp);
end;//while
end;//if
if str<>')' then tempStack.PushElement(str);
end;//else if
end;//for

while not tempStack.IsEmpty do begin
tempStack.PopElement(temp);
targetStack.PushElement(temp);
end;
targetStack.GetElement(temp,1);
end;

function Calculate(rStack:TStack;var Aresult:real):boolean;
var i:integer;
temp:string;
stra,strb:string;
inta,intb:real;
tempResult:real;
code:integer;
strtemp:string;
begin
Result:=false;
ExpressionStack.Init;
tempStack.Init;
ReverseStack.GetElement(strtemp,1);
val(strtemp,tempResult,Code);

for i:=1 to ReverseStack.TopPointer do begin
ReverseStack.GetElement(temp,i);
case temp[1] of
'+','-','*','/':begin
if not tempStack.PopElement(stra) then exit;
if not tempStack.PopElement(strb) then exit;
val(stra,inta,code);
if code<>0 then exit;
val(strb,intb,code);
if code<>0 then exit;
if temp='+' then tempResult:=intb+inta;
if temp='-' then tempResult:=intb-inta;
if temp='*' then tempResult:=intb*inta;
if temp='/' then begin
if inta=0 then exit;
tempResult:=intb/inta;
end;
tempStack.PushElement(floattostr(tempResult));
end;
else tempStack.PushElement(temp);
end;//case
end;//if
tempStack.PopElement(temp);
if not tempStack.IsEmpty then exit;
Aresult:=tempResult;
result:=true;
end;


procedure TForm1.SpeedButton17Click(Sender: TObject);
begin
ExpressionStack.Init;
tempStack.Init;
ReverseStack.Init;
Panel1.Caption:='0';
end;

procedure TForm1.SpeedButton20Click(Sender: TObject);
var jg:real;
begin
ExpressionStack.Init;
tempStack.Init;
ReverseStack.Init;

StoreExpression(Panel1.caption,ExpressionStack);
TransformExpression(ExpressionStack,ReverseStack);
if Calculate(ReverseStack,jg) then Panel1.caption:=floattostr(jg)
else panel1.Caption:='Syntax Error';
end;

procedure TForm1.SpeedButton19Click(Sender: TObject);
var s:string;
begin
if panel1.Caption='Syntax Error' then panel1.Caption:='0';
s:=panel1.Caption;
if s<>'' then panel1.Caption:=copy(s,1,length(s)-1);
if panel1.caption='' then Panel1.Caption:='0';
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var i:integer;
begin
if key=#27 then Speedbutton17.Click;
if key=#13 then key:='=';
if key=#8 then Speedbutton19.Click;
for i:=0 to form1.ControlCount-1 do begin
if Controls[i] is TSpeedbutton then begin
if TSpeedbutton(form1.Controls[i]).caption=key then begin
TSpeedbutton(form1.Controls[i]).click;
exit;
end;
end;
end;//for

end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
panel1.hint:=panel1.caption;
end;

procedure TForm1.SpeedButton22Click(Sender: TObject);
var Buffer: array[0..127] of WideChar;
begin
StringToWideChar('http://www.tommstudio.com', Buffer, SizeOf(Buffer) div 2);
if IsValidURL(nil, Buffer, 0) = 0 then HLinkNavigateString(nil, Buffer);
end;

end.
insert2003 2004-04-21
  • 打赏
  • 举报
回复
{
程序:四则运算计算器

}


unit jsq;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons,ExtCtrls,urlmon;


const MaxElements=100; //maximum char in stack;


type TStack=class
private
SData:array[1..MaxElements] of string; //stack data
public
IsEmpty:boolean; //it is an empty stack
TopPointer:integer; //the top pointer of the stack;
procedure Init;
function GetElement(var data:string;i:integer):boolean; //get data from stack
function PopElement(var data:string):boolean; //popup data
function PushElement(data:string):boolean; //push data
end;

type
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton12: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton14: TSpeedButton;
SpeedButton15: TSpeedButton;
SpeedButton16: TSpeedButton;
SpeedButton17: TSpeedButton;
SpeedButton20: TSpeedButton;
Panel1: TPanel;
SpeedButton18: TSpeedButton;
SpeedButton19: TSpeedButton;
SpeedButton21: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton17Click(Sender: TObject);
procedure SpeedButton20Click(Sender: TObject);
procedure SpeedButton19Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton22Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;


procedure StoreExpression(exp:string;mystack:TStack); //save expression
procedure TransformExpression(sourceStack,targetStack:TStack); //transform
function Calculate(rStack:TStack;var Aresult:real):boolean; //calculate

var
Form1: TForm1;
ExpressionStack,tempStack,ReverseStack:TStack;


implementation

{$R *.DFM}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if panel1.Caption='Syntax Error' then SpeedButton17.Click;
if TSpeedbutton(sender).caption='+/-' then begin
if panel1.caption='0' then exit;
if panel1.Caption[1]='-' then panel1.caption:=copy(panel1.caption,2,length(panel1.caption)) else panel1.Caption:='-'+panel1.Caption;
exit;
end;

if (TSpeedbutton(Sender).caption[1] in ['0'..'9','(']) and (panel1.Caption='0') then panel1.Caption:='';
panel1.Caption:=panel1.Caption+TSpeedButton(Sender).caption;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ExpressionStack:=TStack.Create;
tempStack:=TStack.Create;
ReverseStack:=TStack.Create;
ExpressionStack.Init;
tempStack.Init;
ReverseStack.Init;

end;


function TStack.GetElement(var data:string;i:integer):boolean;
begin
if (i>TopPointer) or (i<1) then begin
result:=false;
exit;
end; //read Stack error

data:=SData[i];
result:=true;
end;

procedure TStack.Init;
begin
TopPointer:=0;
IsEmpty:=True;
end;

function TStack.PopElement(var data: string): boolean;
var aData:string;
begin
if not GetElement(aData,TopPointer) then begin
result:=false;
exit;
end;
//popup the data of Stack's head,first in first out

data:=aData;
sData[TopPointer]:='';
dec(TopPointer);
if TopPointer<=0 then IsEmpty:=true else IsEmpty:=false;
result:=true;

end;

function TStack.PushElement(data: string): boolean;
begin
if TopPointer>=MaxElements then begin
result:=false;
exit;
end;
isEmpty:=false;
inc(TopPointer);
SData[TopPointer]:=data;
result:=true;
end;


procedure StoreExpression(exp:string;mystack:TStack);
var temp:char;
temp1:string;
i:integer;
v:string;
begin
mystack.Init;
v:='';
for i:=1 to length(Exp) do begin
temp:=exp[i];
if temp in ['+','-','*','/','(',')'] then begin
if v<>'' then mystack.PushElement(v);//if
mystack.GetElement(temp1,mystack.TopPointer);
if (temp='-') and ((temp1='(') or (mystack.IsEmpty))then mystack.PushElement('0'); //
mystack.PushElement(temp);
v:='';
end else begin
v:=v+temp;
end;
end;
if v<>'' then mystack.PushElement(v);
end;
insert2003 2004-04-21
  • 打赏
  • 举报
回复
http://www.tommstudio.com/newclub30/d_mywork.asp

此处有下载!
刚试过
能下
huangyux 2004-04-19
  • 打赏
  • 举报
回复
求源代码
目 录 数据库课程设计报告 1 1.开发环境和相关技术介绍 5 1.1开发环境 5 1.2相关技术介绍 5 2.需求分析 5 2.1系统需求和功能 5 2.1.2功能需求描述 6 2.1.2.1员工基本信息模块 6 2.1.2.2工资结构设置模块 6 2.1.2.3工资汇总模块 6 2.2数据字典 6 2.2.1数据结构 7 2.2.2数据项 7 2.2.3数据流 8 2.4安全性要求 8 2.5一致性要求 9 2.6完整性要求 9 3 概念结构设计 9 3.1设计方法和步骤 9 3.2概念结构E-R图 9 4.逻辑结构设计 9 4.1具体RDBMS数据模型转换 9 4.2系统结构图 10 5.数据库物理设计 10 5.1索引的选择建立 10 5.2数据存放位置 10 5.3确定系统配置 10 6.数据库实施 10 6.1数据库创建 10 6.1.1各数据表说明 10 6.1.2数据库创建 11 6.2数据库备份和恢复方案 13 6.2.1应用辅助工具进行备份和恢复 13 6.2.2分离数据库法 13 6.3用户界面设计和应用程序编码 13 6.3.1用户界面设计 13 6.3.2类文件功能描述 14 6.3.3主要代码分析 14 }7.系统测试方案和测试报告 21 7.1测试方案 21 7.2测试过程 21 7.2.1登陆测试 21 8.安装和使用说明 25 8.1安装说明 25 8.1.1安装VB6.0E 25 8.1.2安装Microsoft SQL Server 2000 ODBC驱动程序 25 8.1.3升级Microsoft SQL Server 2000数据库管理系统 25 8.1.4附加数据库 25 8.1.5可能出现情况 25 9.完成情况和总结 25 9.1总结 25 1.开发环境和相关技术介绍 1.1开发环境 项目名称: 工资管理系统 开发软件:vb6.0与Access 2000 运行环境:2000/XP/2003 1.2相关技术介绍 Microsoft SQL Server 2000数据库管理系统是微软公司研制开发的关系型数据库管理系统。该系统支持并扩展了SQL语言标准,可以运用标准SQL语句对数据进行操作,也可以使用功能强大的GUI工具进行灵活的数据管理。同时,系统还提供功能完善的API,可以在应用程序中调用这些API来实现与数据库系统的连接以及相关数据的操作。sp3是该系统的一个版本号,只有sp4以上的SQL 2000系统才能够支持纯ODBC连接方式。 Vb6.0功能强大的应用程序开发工具,主要支持基于面向对像化的语言的各种开发项目。 2.需求分析 2.1系统需求和功能 工资管理信息系统对企业加强工资管理有着重要的作用,就一般的大型企业来说,它的设计内容非常复杂而且繁多,比如拥有工资计算功能,工资统计功能,报表输出功能,而且设计的模块也很多,比如工资管理模块,工资统计模块,报表设计模块,打印输出模块,模糊查询模块等。 由于本软件主要是为作者工作的一家科技公司定制开发的。该公司是一家刚刚成立的公司,总体人员比较少,有正式员工20人,人员结构比较简单,学历比较高,基本拥有大专以上学历,部门划分也很清晰,而且人员的流动性不高,所以公司目前对工资管理的要求不高。因此,针对该公司而言,我们经过反复论证,最终确定了工资管理系统的设计方案,该工资管理系统的主要功能如图3.1所示: 2.1.2功能需求描述 2.1.2.1员工基本信息模块 员工基本信息模块具有员工信息输入、员工增删、员工信息查询三个功能,员工基本信息包括员工号、员工姓名、员工性别、所在部门、所在岗位、工龄和工资等级等信息。员工增删实现了对数据库中员工信息的增加和删除。员工可以通过员工号或员工姓名对员工信息进行查询。 2.1.2.2工资结构设置模块 根据该公司的工资管理实际情况,本系统将工资结构分为基础工资、岗位工资、工龄工资三部分。该模块可以对这三个工资类型设置工资等级,并对每个等级设置工资标准。 2.1.2.3工资汇总模块 用户在员工信息管理模块对该员工的工资等级进行输入以后,在工资汇总模块会自动对员工工资进行汇总。用户可以打印出工资汇总表,打印之前可以通过打印预览功能进行打预览。 2.2数据字典 该软件的数据库由下述四张数据表组成: 员工信息表、基础工资设置表、岗位工资设置表 1、 员工信息表 字段 字段名 类型 宽度 说明 1 员工号 字符型 3 数字 2 员工姓名 字符型 10 小于等于5个汉字 3 员工性别 字符型 2 “男”或“女” 4 岗位名称 字符型 14 小于等于7个汉字 5 工龄 数值型 2 1~99之间 6 工资等级 数值型 2 1~99之间 2、 基础工资设置表 字段 字段名 类型 宽度

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧