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

📄 bookinu.pas

📁 包含详细的代码设计,实现图书管理系统功能.是一个很好的实例
💻 PAS
字号:
unit BookInU;

interface

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

type
  TBookInF = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    GroupBox2: TGroupBox;
    StaticText2: TStaticText;
    Edit1: TEdit;
    StaticText1: TStaticText;
    Edit2: TEdit;
    StaticText3: TStaticText;
    Edit3: TEdit;
    StaticText11: TStaticText;
    Edit7: TEdit;
    ComboBox1: TComboBox;
    StaticText4: TStaticText;
    Edit4: TEdit;
    StaticText6: TStaticText;
    Memo1: TMemo;
    StaticText5: TStaticText;
    Edit5: TEdit;
    StaticText9: TStaticText;
    Edit6: TEdit;
    StaticText10: TStaticText;
    StaticText8: TStaticText;
    procedure BitBtn1Click(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure EnabledEdit(value:boolean);
    procedure Edit6KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);//

  private
    { Private declarations }
    procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
  public
    { Public declarations }
    pictureName:string;
  end;

var
  BookInF: TBookInF;

implementation

uses DataModule,ShareU, MainU;

{$R *.dfm}

procedure TBookInF.WMNCPaint(var Msg: TWMNCPaint);
begin
    inherited;
    draw(BookInF);
end;

procedure TBookInF.EnabledEdit(value:boolean);//
  begin
      combobox1.Enabled:=value;
      value:=not value;
      edit2.ReadOnly:=value;
      edit3.ReadOnly:=value;
      edit4.ReadOnly:=value;
      edit5.ReadOnly:=value;
      memo1.ReadOnly:=value;

end;

procedure TBookInF.BitBtn1Click(Sender: TObject);
var
  Query:TADOQuery;
  TempNumber:integer;
begin
    if edit1.Text='' then
    begin
      showmessage('图书编号不能为空!');
      exit;
    end;
    try
      dm.ADOConnection1.BeginTrans;
      Query:=TADOQuery.Create(self);
      query.Connection:=dm.ADOConnection1;
      IF edit6.Text='' then
          tempnumber:=0
      else
          tempnumber:=Strtoint(trim(edit6.Text));    //符值
      if not dm.CCheckID('select bookid from book_info where bookid='''+
                           trim(edit1.Text)+'''') then
        //没此书则首先往book_info表中插值,在向book_stock插值
      begin
        query.SQL.Text:= ' insert into book_info(bookid,bookname,bookauthor,'+
                    'bookman,bookprice,bookremark,booktypeid,bookpic) '+
                    'values (:id,:name,:author,:man,:price,:remark,'+
                    ':typeid,:pic) ';
        query.Parameters.ParamByName('id').Value:=trim(edit1.Text);
        query.Parameters.ParamByName('name').Value:=trim(edit2.text);
        query.Parameters.ParamByName('author').Value:=trim(edit3.Text);
        query.Parameters.ParamByName('man').Value:=trim(edit4.Text);
        query.Parameters.ParamByName('price').Value:=strtofloat(trim(edit5.Text));
        query.Parameters.ParamByName('remark').Value:=trim(memo1.Text);
        query.Parameters.ParamByName('typeid').Value:=combobox1.Text;
        if picturename='' then
          query.Parameters.ParamByName('pic').Value:=null
        else
          query.Parameters.ParamByName('pic').LoadFromFile(picturename,ftblob);
        query.ExecSQL;
      end
      else
      //有此书,则从book_stock中取出库中所剩书数,与进书数相加生成新书数
      //并更新 booklast字段,
      begin
       query.SQL.Clear;
       query.SQL.Text:=' update book_stock set booklast=:lastNew where '+
                       ' bookid=:id and booklast=:lastOld ';
       query.Parameters.ParamByName('id').Value:=trim(edit1.Text);
       query.Parameters.ParamByName('lastOld').Value:=1;
       query.Parameters.ParamByName('lastnew').Value:=0;
       query.ExecSQL;
      end;
     //向book_stock插值
      query.SQL.Clear;
      query.SQL.Text:= ' insert into book_stock(bookid,bookindate,bookinnumber,'+
                   ' bookoutdate,bookoutnumber,booklast) values (:id,:indate,'+
                   ' :innumber,:outdate,:outnumber,:last)';
      query.Parameters.ParamByName('id').Value:=trim(edit1.Text);
      query.Parameters.ParamByName('indate').Value:=Now;
      query.Parameters.ParamByName('innumber').Value:=tempnumber;
      query.Parameters.ParamByName('outdate').Value:=leftstr(datetimetostr(now),pos(' ',datetimetostr(now)));
      query.Parameters.ParamByName('outnumber').Value:=0;
      query.Parameters.ParamByName('last').Value:=1;
      query.ExecSQL;
      query.Free;
      dm.ADOConnection1.CommitTrans;
    except
      on E:Exception do
          begin
            dm.ADOConnection1.RollbackTrans;
            Application.MessageBox(PChar('错误信息如下:'+#13+#13+E.Message) ,'操作失败',Mb_OK+Mb_IconInformation);;
            exit;
          end;
    end;
    if messagedlg('入库完成,还有入库的书籍吗?',mtconfirmation,[mbyes,mbno],0)=mryes then
    begin
       CClearData(BookInF);
       EnabledEdit(false);
       edit1.SetFocus;
    end
    else
       BitBtn2Click(sender);       //关闭
end;

procedure TBookInF.Edit1Exit(Sender: TObject);
var
  Query:TADOQuery;
begin
    if edit1.Text='' then exit;
    if dm.CCheckID('select bookid from book_info where bookid='''+
                           trim(edit1.Text)+'''') then   //有此书,显示其他信息
    begin
      query:=TADOQuery.Create(self);
      query.Connection:=dm.ADOConnection1;
      query.SQL.Text:='select * from book_info where bookid=:id ';
      query.Parameters.ParamByName('id').Value:=trim(edit1.Text);
      query.ExecSQL;
      query.Open;
      edit2.Text:=trim(query.FieldByName('bookName').AsString);
      edit3.Text:=trim(query.FieldByName('bookauthor').AsString);
      edit4.Text:=trim(query.FieldByName('bookman').AsString);
      edit5.Text:=trim(query.FieldByName('bookprice').AsString);
      memo1.Text:=trim(query.FieldByName('bookremark').AsString);

      combobox1.Text:=trim(query.FieldByName('booktypeid').AsString);

      query.Close;
      query.Free;

      ComboBox1Change(Sender);
      enablededit(false);
      edit6.SetFocus;

     end
     else
      enablededit(true);
end;

procedure TBookInF.BitBtn2Click(Sender: TObject);
begin
    close;
end;

procedure TBookInF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    BookInf:=nil;
    action:=cafree;       //释放窗体
end;

procedure TBookInF.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
   if not CheckKey(Key,'n') then
     key:=#0;
end;

procedure TBookInF.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
   if not CheckKey(Key,'n') then
      key:=#0;
end;

procedure TBookInF.ComboBox1Change(Sender: TObject);
var
  Query:TADOQuery;
begin
     Query:=TADOQuery.Create(self);
     Query.Connection:=dm.ADOConnection1;
     Query.SQL.Text:='select typename from book_type where booktypeid=:id';
     Query.Parameters.ParamByName('id').Value:=combobox1.Text;
     Query.Open;
     edit7.Text:=Query.FieldByName('typename').AsString;
     Query.Close;
     Query.Free;
end;

procedure TBookInF.FormCreate(Sender: TObject);
  function GetMaxTypeID:integer;
  var
    Query:TADOQuery;
  begin
    Query:=TADOQuery.Create(self);
    Query.Connection:=dm.ADOConnection1;
    Query.SQL.Text:='select booktypeid from book_type';
    query.ExecSQL;
    Query.open;
    result:=query.RecordCount;
    Query.Close;
    Query.Free;
  end;
  var i:integer;
begin
    caption:='添加图书';
    Icon:=mainf.Icon;
    for i:=1 to GetMaxTypeID do
    begin
        combobox1.Items.Add(inttostr(i));
    end;
end;

end.

⌨️ 快捷键说明

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