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

📄 yysb.pas

📁 计算机房管理系统
💻 PAS
字号:
unit yysb;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Buttons, Mask;

type
  Tf_yysb = class(TForm)
    xzdate: TDateTimePicker;
    Label1: TLabel;
    ok: TBitBtn;
    cancel: TBitBtn;
    Label2: TLabel;
    xzupdown: TUpDown;
    retmess: TMemo;
    search: TBitBtn;
    xznum: TEdit;
    Label3: TLabel;
    xzsjd: TComboBox;
    cancel1: TBitBtn;
    Cancel2: TBitBtn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure cancelClick(Sender: TObject);
    procedure xznumChange(Sender: TObject);
    procedure searchClick(Sender: TObject);
    procedure okClick(Sender: TObject);
    procedure xzsjdChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  f_yysb: Tf_yysb;
  zwcount : integer;  //座位数
  wdate : TDateTime;  //日期
  sjd : string;  //时间段
  i: integer;

implementation

uses jfos, data;

{$R *.DFM}

procedure Tf_yysb.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  f_jfos.Enabled:=True;
end;

procedure Tf_yysb.FormShow(Sender: TObject);
begin
  //初始化按钮
  Cancel.Caption:=Cancel2.Caption;
  Cancel.Glyph:=Cancel2.Glyph;

  //初始化时间段、日期、信息
  xzdate.Date:=Date+1;
  retmess.Text:='预约时间必须在今天以后(不包括今天)。';
  sjd:='';
  
  //初始化时间段选择
  xzsjd.Clear;
  with ds_data.Qu_yygetsjd do
  begin
       Close;
       Open;
       for i:=1 to recordCount do
       begin
            xzsjd.Items.Append(FieldByName('Name').AsString);
            Next;
       end;
       Close;
  end;

  //得到座位总数
  with ds_data.Qu_zwb do
  begin
       Close;
       Open;
       zwcount:=RecordCount;
       Close;
  end;
end;

procedure Tf_yysb.cancelClick(Sender: TObject);
begin
  f_yysb.Close;
end;

procedure Tf_yysb.xznumChange(Sender: TObject);
begin
  //选择人数的变化
  try
     xznum.Text:=IntToStr(StrToInt(xznum.Text));
  except
     xznum.Text:='0';
  end;
end;

procedure Tf_yysb.searchClick(Sender: TObject);
var ayycount : integer;  //已经预约的设备数
begin
  if xzdate.Date<=Date then
  begin
       retmess.Text:='预约时间必须在今天以后(不包括今天)。';
       exit;
  end;

  if sjd='' then
  begin
       retmess.Text:='请正确选择时间段。';
       exit;
  end;

  //预约显示
  wdate:=xzdate.Date;
  with ds_data.Qu_yyse do
  begin
       //参数设置
       Close;
       ParamByName('sjdate').AsDate:=wdate;
       ParamByName('sjd').value:=sjd;
       Open;
       ayycount:=RecordCount;
       Close;
  end;
  retmess.Text:=DateToStr(wdate)+' '+xzsjd.Text+',已预约'+IntToStr(ayycount)+'台,空余'+IntToStr(zwcount-ayycount)+'台。';
end;

procedure Tf_yysb.okClick(Sender: TObject);
var ayycount : integer;  //已预约人数
    yynum : integer;  //预约人数
    yybool : integer;  //是否可以预约
    setnum,sbnum : string;  //座位号、设备号
begin
  if Application.MessageBox('是否预约?', '询问', Mb_OKCancel)=IdCancel then
     exit;

  if xzdate.Date<=Date then
  begin
       retmess.Text:='预约时间必须在今天以后(不包括今天)。';
       Application.MessageBox(PChar(retmess.Text), '错误', Mb_OK);
       exit;
  end;

  if sjd='' then
  begin
       retmess.Text:='请正确选择时间段。';
       Application.MessageBox(PChar(retmess.Text), '错误', Mb_OK);
       exit;
  end;

  //预约
  wdate:=xzdate.Date;
  with ds_data.Qu_yyse do
  begin
       Close;
       ParamByName('sjdate').AsDate:=wdate;
       ParamByName('sjd').value:=sjd;
       Open;
       ayycount:=RecordCount;
       Close;
  end;

  //计算人数
  yynum:=StrToInt(xznum.Text);
  if yynum>zwcount-ayycount then
  begin  //人数过多错误
       Application.MessageBox('预约人数过多,请减少人数。', '错误', Mb_OK);
       exit;
  end;

  if yynum<=0 then
  begin  //人数过少错误
       Application.MessageBox('预约人数错误。', '错误', Mb_OK);
       exit;
  end;

  //预约设备
  ds_data.Qu_zwb.Close;
  ds_data.Qu_zwb.Open;
  while (yynum>0) do
  begin
       //得到可以预约的设备
       setnum:=ds_data.Qu_zwb.FieldByName('setnum').AsString;
       with ds_data.qu_yysb do
       begin
            Close;
            ParamByName('setnum').value:=setnum;
            ParamByName('sjdate').AsDate:=wdate;
            ParamByName('sjd').value:=sjd;
            Open;
            yybool:=RecordCount;
            Close;
       end;

       if yybool=0 then
       begin  //可以预约
            with ds_data.qu_yysbup do
            begin  //得到设备号
                 Close;
                 ParamByName('setnum').value:=setnum;
                 Open;
                 sbnum:=FieldByName('num').AsString;
                 Close;
            end;

            with ds_data.Qu_yyjlup do
            begin  //更新上机记录数据库
                 Close;
                 Open;
                 Append;
                 FieldByName('setnum').AsString:=setnum;
                 FieldByName('sbnum').AsString:=sbnum;
                 FieldByName('xhnum').AsString:='预约';
                 FieldByName('sjdate').AsDateTime:=wdate;
                 FieldByName('sjd').AsString:=sjd;
                 Post;
                 Close;
            end;

            //预约人数减1
            yynum:=yynum-1;
       end;
       ds_data.Qu_zwb.Next;  //下一个座位
  end;
  ds_data.Qu_zwb.Close;  //关闭座位表
  Application.MessageBox('预约完成。', '提示', Mb_OK);
  searchClick(nil);  //显示信息

  Cancel.Caption:=Cancel1.Caption;
  Cancel.Glyph:=Cancel1.Glyph;
end;

procedure Tf_yysb.xzsjdChange(Sender: TObject);
begin
  if xzsjd.ItemIndex>=0 then
     sjd:=IntToStr(xzsjd.ItemIndex+1);
end;


end.

⌨️ 快捷键说明

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