📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, Buttons;
const long=20;
type
TForm1 = class(TForm)
Panel1: TPanel;
Pgmain: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Label1: TLabel;
Edit1: TEdit;
BitBtn2: TBitBtn;
Button1: TButton;
Button2: TButton;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label8: TLabel;
Edit2: TEdit;
Label11: TLabel;
Edit8: TEdit;
GroupBox3: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Label5: TLabel;
Label6: TLabel;
Edit6: TEdit;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormActivate(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type myarray1=array[1..long] of array[1..long] of tedit;
type myarray2=array[1..long] of Tlabel;
type yuansu=record
zhi: real;
xuhao:integer;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var n:integer;
Cp,Cd,D:real;
shuru1:myarray1;
shuru2: myarray2;
function feiyong(a,b:real):real;
begin
result:=b*Cp/2+D*Cd/b+D*a;
end;
function zuixiaoyuansu(shuzu:array of real;m:integer):yuansu;
var i,j:integer;
min:real;
begin
min:=shuzu[0];
for i:=0 to m-1 do
if min>shuzu[i] then
begin
min:=shuzu[i];
j:=i;
end;
result.zhi:=min;
result.xuhao:=j;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:= 0 to pgMain.PageCount-1 do
pgMain.Pages[I].TabVisible:=False;
pgmain.ActivePageIndex:=0 ;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1'..'9']) then
key:=chr(0);
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if pgmain.ActivePageIndex=0 then
button1.Enabled:=false;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j,finalxuhao:integer;
jiage: array[1..long] of real;
Q,N1,N2,f: array[1..long] of real;
finalF,finalQ:real;
begin
if pgmain.ActivePageIndex<>pgMain.PageCount-1 then
pgmain.ActivePageIndex:= pgmain.ActivePageIndex+1 ;
if pgmain.ActivePageIndex=1 then
begin
button1.Enabled:=true;
button2.Enabled:=true;
if edit1.text<>'' then
begin
try
for i:=1 to n do
begin
shuru2[i].free;
for j:=1 to 3 do
shuru1[i,j].free;
end;
finally
n:=0;
n:=strtoint(edit1.text);
for i:=1 to n do
begin
shuru2[i]:=Tlabel.Create(self);
shuru2[i].parent:=tabsheet2;
shuru2[i].Width:=40;
shuru2[i].Height:=24;
shuru2[i].left:=66;
shuru2[i].top:=54+(i-1)*(shuru2[i].Height+5);
shuru2[i].Caption:='K'+inttostr(i)+'= , <Q< ' ;
for j:=1 to 3 do
begin
shuru1[i,j]:=tedit.Create(self);
shuru1[i,j].parent:=tabsheet2;
shuru1[i,j].Width:=62;
shuru1[i,j].Height:=24;
shuru1[i,j].left:=90+(j-1)*(shuru1[i,j].Width+28); //90代表[1,1]离左边框的距离宽度宽度,+28表示各edit框之间的左右距离
shuru1[i,j].top:=50+(i-1)*(shuru1[i,j].Height+5);
end;
end;
end;
shuru1[1,1].SetFocus;
shuru1[1,2].text:='0' ; shuru1[1,2].enabled:=false;
shuru1[n,3].text:='∞'; shuru1[n,3].enabled:=false;
end;
end;
if pgmain.ActivePageIndex=2 then
begin
button1.Enabled:=true;
button2.Enabled:=false;
Cd:=StrTofloat(Edit4.Text); //订货费
Cp:=StrTofloat(Edit5.Text); //存储费
D:=StrTofloat(Edit6.Text); //需求量
shuru1[n,3].text:=inttostr(maxint);
for i:=1 to n do
for j:=1 to 3 do
if shuru1[i,j].text<>'' then
begin
jiage[i]:=strtofloat(shuru1[i,1].text);
N1[i]:=strtofloat(shuru1[i,2].text);
N2[i]:=strtofloat(shuru1[i,3].text);
Q[i]:=sqrt(2*Cd*D/Cp);
if (Q[i]>=N2[i]) or (Q[i]<N1[i]) then
Q[i]:=N1[i] ;
f[i]:=feiyong(jiage[i],Q[i]);
end
else
begin
showmessage('输入不能为空!');
pgmain.ActivePageIndex:=1;
exit;
end;
finalF:=zuixiaoyuansu(f,n).zhi;
finalQ:=Q[zuixiaoyuansu(f,n).xuhao+1]; //输出最优批量
edit2.Text:=formatfloat('0.###',finalQ);
edit8.Text:=formatfloat('0.###',finalF);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if pgmain.ActivePageIndex<>0 then
pgmain.ActivePageIndex:= pgmain.ActivePageIndex-1 ;
if pgmain.ActivePageIndex=0 then
button1.Enabled:=false;
if pgmain.ActivePageIndex=1 then
begin
button2.Enabled:=true;
button1.Enabled:=true
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -