⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit19.pas

📁 停车厂管理系统 麻雀虽小 但是五脏齐全
💻 PAS
字号:
unit Unit19;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, Buttons, DB, ADODB;

type
  Trctc = class(TForm)
    Label1: TLabel;
    cardid: TEdit;
    Label3: TLabel;
    car_addressid: TComboBox;
    Label2: TLabel;
    carid: TEdit;
    Label5: TLabel;
    money: TEdit;
    Label4: TLabel;
    car_address: TEdit;
    Label6: TLabel;
    carclass: TComboBox;
    stopok: TBitBtn;
    DBGrid1: TDBGrid;
    Label7: TLabel;
    ds_customers: TDataSource;
    adot_card: TADOTable;
    adot_caraddress: TADOTable;
    adoq_car: TADOQuery;
    ADOQuery2: TADOQuery;
    adot_carstop: TADOTable;
    adot_carclass: TADOTable;
    procedure cardidKeyPress(Sender: TObject; var Key: Char);
    procedure stopokClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure car_addressidChange(Sender: TObject);
    procedure caridExit(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormResize(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  rctc: Trctc;
  FormOldWid:Integer;
implementation

uses Unit11, Unit14, Unit1, Unit2;

{$R *.dfm}

procedure clearface();
var
   addressid:  string;
begin
  with rctc do
  begin
  adot_caraddress.Close;
  adot_caraddress.Filtered:=false;
  adot_caraddress.Filter:='addresscase=0' ;
  adot_caraddress.Filtered:=true;
  adot_caraddress.Open;
  adot_caraddress.First;
  cardid.Clear;
  money.Clear;
  car_address.Clear;
  car_addressid.Items.Clear;
  carid.Clear;
  carclass.Items.Clear;
  if adot_caraddress.IsEmpty then
      showmessage('车位已满!');
  while not(adot_caraddress.Eof) do
    begin
       addressid:=adot_caraddress.FieldByName('addressid').value;
       car_addressid.Items.Add(addressid)  ;
       adot_caraddress.Next;
    end ;      //在car_addressid中显示可用的车位

    adoquery2.Close;
    adoquery2.SQL.Clear;
    adoquery2.SQL.Add('select cardid as 卡号,usename as 用户名,sex as 性别,age as 年龄,tele as 联系电话,address as 联系电话 from customers');
    adoquery2.Open;//显示Grid中的记录

   adot_carclass.Open;
   adot_carclass.First;
   while not(adot_carclass.Eof) do
     begin
       carclass.Items.Add(adot_carclass.FieldValues['carclass']) ;
       adot_carclass.Next;
     end ;  //在carclass表中显示数据库的车辆的类型
   cardid.SetFocus;
  end;
end;

Function checkcardid(card: String):boolean;
var
  lmoney:string;
begin
   checkcardid:=false;
   with rctc do
   begin
   if trim(card)<>'' then
   begin
      adot_card.Open;
    if not adot_card.Locate('cardid',card,[locaseInsensitive]) then
      begin
      showmessage('此停车卡无效,请重新输入卡号') ;
      cardid.Clear;
      cardid.SetFocus;
      end
      else
      begin
      money.Text:=adot_card.fieldByName('storemoney').Value;  //显示此卡的余额
      checkcardid:=true;
      form14.adt_set.First;
      lmoney:=trim(form14.adt_set.FieldByName('lmoney').Value);
      if adot_card.fieldByName('storemoney').Value<strtoint(lmoney) then
       //  showmessage('余额少于'+lmoney+'元,请及时充值');
         messagedlg('余额少于'+lmoney+'元,请及时充值',mtconfirmation,[mbok],0);
      end ;
     adot_card.Close;
    end
    else
    begin
     money.Text:='';
     messagedlg('请输入卡号',mtconfirmation,[mbok],0);
    end;
    adot_card.Open;
    end;
end;

procedure Trctc.stopokClick(Sender: TObject);
begin
  if not checkcardid(cardid.Text) then
  begin
  cardid.SetFocus;
  end
  else if(carid.Text='')  then
  begin
  messagedlg('请输入车牌号',mtconfirmation,[mbok],0);
  carid.SetFocus;
  end
  else if (car_address.Text='') then
  begin
  messagedlg('请选择车位号',mtconfirmation,[mbok],0);
  car_addressid.SetFocus;
  end
  else if(carclass.Text='') then
  begin
  messagedlg('请选择停车类型',mtconfirmation,[mbok],0);
  carclass.SetFocus;
  end
  else
     begin
      adot_caraddress.Open;
      adot_caraddress.Locate('addressid',car_addressid.Text,[locaseInsensitive]);
      adot_caraddress.Delete;
      adot_caraddress.Edit;
      adot_caraddress.AppendRecord([car_addressid.Text,car_address.Text,1]);
       //更改车位为在使用
      adoq_car.Close;
      adoq_car.SQL.Clear;
      adoq_car.SQL.Add('insert into car(carid,carclass) values(:carid,:carclass)');
      adoq_car.Parameters.ParamByName('carid').Value:=carid.Text;
      adoq_car.Parameters.ParamByName('carclass').Value:=carclass.Text;
      adoq_car.ExecSQL;
       //增加停车场中车的信息
      adot_carstop.Open;
      adot_carstop.Edit;
      adot_carstop.AppendRecord([carid.Text,cardid.Text,car_addressid.Text,now,nil,nil,nil,user]);
       //在停车表中加入一条停车记录
      clearface();
     end  ;
end;

procedure Trctc.cardidKeyPress(Sender: TObject; var Key: Char);
var
  cardidstring:String;
begin
     if not(key in['0'..'9','a'..'z',#008]) then
    begin
      key:=#0;
     end
     else
     begin
       cardidstring:=trim(cardid.Text);
       adoquery2.Close;
       adoquery2.SQL.Clear;
       adoquery2.SQL.Add('select cardid as 卡号,usename as 用户名,sex as 性别,age as 年龄,tele as 联系电话,address as 联系电话 from customers where cardid like :cardid');
       adoquery2.Parameters.ParamByName('cardid').Value:=cardidstring+'%';
       adoquery2.Open;
     end;
end;

procedure Trctc.FormShow(Sender: TObject);
begin
  FormOldWid:=self.Width; //组件自动变大小
end;

procedure Trctc.car_addressidChange(Sender: TObject);
var
   addressid,address: string;
begin
    if car_addressid.Text<>'' then
    begin
    addressid:=car_addressid.Text;
    adot_caraddress.Locate('addressid',addressid,[loCaseInsensitive]);
    address:=adot_caraddress.FieldByName('address').value ;
    car_address.Text:=address;   //显示addressid对应的车位地址
    end
end;

procedure Trctc.caridExit(Sender: TObject);
begin
begin
  if carid.Text<>'' then
  begin
      adot_carstop.Close;
      adot_carstop.Open;
      if adot_carstop.Locate('carid',carid.Text,[locaseInsensitive]) then
      begin
         showmessage('此车牌已在停车场使用,请换个车牌') ;
         carid.Clear;
         carid.SetFocus;
      end
  end
end;
end;

procedure Trctc.FormClose(Sender: TObject; var Action: TCloseAction);
begin
adot_caraddress.Close;
adot_carclass.Close;
adot_carstop.Close;
adot_card.Close;
rctc:=nil;
Action:=caFree;
end;

procedure Trctc.FormResize(Sender: TObject);
begin
    if FormOldWid>0 then
    begin
     ScaleBy(self.Width,FormOldWid);
     FormOldWid:=self.Width;
    end ;
end;

procedure Trctc.DBGrid1CellClick(Column: TColumn);
begin
    if not adoquery2.IsEmpty then
    begin
    cardid.Text:=adoquery2.FieldByName('卡号').Value;
    checkcardid(adoquery2.FieldByName('卡号').Value);
    end;
end;

procedure Trctc.FormActivate(Sender: TObject);
begin
  adot_caraddress.Open;
  adot_carclass.Open;
  adot_carstop.Open;
  adot_card.Open;
  clearface();
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -