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

📄 ubookclasssetting.~pas

📁 图书馆管理系统代码deiphi
💻 ~PAS
字号:
unit uBookClassSetting;

interface

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

type
  TfrmBookClassSetting = class(TForm)
    Panel4: TPanel;
    PageControl1: TPageControl;
    TabSheet2: TTabSheet;
    GroupBox2: TGroupBox;
    btnOK: TButton;
    GroupBox8: TGroupBox;
    edtClass: TEdit;
    edtClassName: TEdit;
    StaticText3: TStaticText;
    StaticText2: TStaticText;
    GroupBox7: TGroupBox;
    lstClassDetail: TListView;
    btnDelete: TButton;
    TabSheet4: TTabSheet;
    GroupBox4: TGroupBox;
    ListView3: TListView;
    GroupBox6: TGroupBox;
    StaticText5: TStaticText;
    StaticText6: TStaticText;
    StaticText7: TStaticText;
    StaticText8: TStaticText;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    btnCancel: TSpeedButton;
    Label1: TLabel;
    chkNewClass: TCheckBox;
    procedure lstClassDetailClick(Sender: TObject);
    procedure btnOKClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure lstClassDetailChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure FormCreate(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure chkNewClassClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure  EditInit;
    procedure InsClass(ClassID , ClassName : string);
    procedure DelClass(ClassID : string);
    procedure UpDateClass(ClassID,ClassName : string);
    function CheckExistClass(ClassID : string):boolean;
    function GetClassName(ClassID : string):string;
    procedure CountInit;
    function GetIsClassBookCount(ClassID: string):integer;
    procedure ViewClass;
    function GetBookCount:integer;
    function GetCurrBookCount:integer;
    function GetLendedUserNum:integer;
    function GetTimeOutBookCount:integer;
    procedure ViewBook; 
  end;

var
  frmBookClassSetting: TfrmBookClassSetting;

implementation

uses main, uPublic;

{$R *.DFM}

procedure TfrmBookClassSetting.lstClassDetailClick(Sender: TObject);
begin
  if lstClassDetail.Selected <> nil then
  begin
    edtClass.Text := lstClassDetail.Selected.Caption;
    edtClassName.Text := lstClassDetail.Selected.SubItems.Strings[0];
  end;
end;

//书籍类别列表的初始化
procedure TfrmBookClassSetting.EditInit;
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('select * from Class');
  Query.Open;
  lstClassDetail.Items.Clear;
  while not Query.Eof do
  begin
    with lstClassDetail.Items.Add do
    begin
      Caption := Query.FieldByName('ClassID').AsString;
      SubItems.Add(Query.FieldByName('ClassName').AsString);
    end;
    Query.Next;
  end;
  Query.Close;
  Query.Free;
end;

//检查某类别号是否重复
function TfrmBookClassSetting.CheckExistClass(ClassID: string): boolean;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select * from Class where ClassID =:ClassID');
    Query.ParamByName('ClassID').AsString := ClassID;
    Query.Open;
    if Query.RecordCount = 0 then
      Result := False
    else Result := True;
    Query.Free;
  except
    Result := False;
  end;
end;

//删除某类别
procedure TfrmBookClassSetting.DelClass(ClassID: string);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('delete from Class where ClassID =:ClassID');
  Query.ParamByName('ClassID').AsString := ClassID;
  Query.ExecSQL;
  Query.Free;
end;

//增加某类别
procedure TfrmBookClassSetting.InsClass(ClassID, ClassName: string);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('insert into Class(ClassID,ClassName) values(:ClassID,:ClassName)');
  Query.ParamByName('ClassID').AsString := ClassID;
    Query.ParamByName('ClassName').AsString := ClassName;
  Query.ExecSQL;
  Query.Free;
end;

//增加类别操作
procedure TfrmBookClassSetting.btnOKClick(Sender: TObject);
var
  i : integer;
begin
  //新增类别
  if chkNewclass.Checked then
  begin
    if Length(edtClass.Text)<>4 then
    begin
      MessageDlg('类别代码错误',mtError,[mbok],0);
      Exit;
    end;
    if CheckExistClass(edtClass.Text) then
    begin
      MessageDlg('类别代码已经存在',mtError,[mbok],0);
      Exit;
    end;
    try
      InsClass(edtClass.Text,edtClassName.Text);
      with lstClassDetail.Items.Add do
      begin
        Caption := edtClass.Text;
        SubItems.Add(edtClassName.Text);
      end;
      MessageBox(0,'添加类别成功',PChar('添加'+edtClass.Text),MB_OK);

    except
      MessageDlg('添加类别出错',mtError,[mbok],0);
    end;
  end;

  //修改类别
  if chkNewclass.Checked=false then
  begin
    if Length(edtClass.Text)<>4 then
    begin
      MessageDlg('类别代码错误',mtError,[mbok],0);
      Exit;
    end;
    try
      UpdateClass(edtClass.Text,edtClassName.Text);
      for i := 0 to lstClassDetail.Items.Count -1do
      begin
        if lstClassDetail.Items[i].Caption = edtClass.Text then
          lstClassDetail.Items[i].SubItems.Strings[0] := edtClassName.Text;
      end;
      MessageBox(0,'修改类别成功',PChar('修改'+edtClass.Text),MB_OK);
    except
      MessageDlg('修改类别出错',mtError,[mbok],0);
    end;
  end;
end;

//修改类别信息操作
procedure TfrmBookClassSetting.UpDateClass(ClassID,ClassName: string);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('update Class set ClassName=:ClassName where ClassID =:ClassID');
  Query.ParamByName('ClassID').AsString := ClassID;
    Query.ParamByName('ClassName').AsString := ClassName;
  Query.ExecSQL;
  Query.Free;
end;

//删除某类别操作
procedure TfrmBookClassSetting.btnDeleteClick(Sender: TObject);
begin
  if lstClassDetail.Selected <> nil then
  try
    DelClass(lstClassDetail.Selected.Caption);
    lstClassDetail.Items.Delete(lstClassDetail.Selected.Index);
  except
    MessageDlg('删除类别<'+lstClassDetail.Selected.Caption+'>',mtError,[mbok],0);
  end
  else MessageDlg('没有选择类别',mtWarning,[mbok],0);
end;

//根据类别号找到类别名称
function TfrmBookClassSetting.GetClassName(ClassID: string): string;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select ClassName from Class where ClassID =:ClassID');
    Query.ParamByName('ClassID').AsString := ClassID;
    Query.Open;
    if Query.RecordCount <> 0 then
      Result := Query.FieldByName('ClassName').AsString
    else Result := '未知';
    Query.Free;
  except
    Result := '未知';
  end;
end;

procedure TfrmBookClassSetting.lstClassDetailChange(Sender: TObject; Item: TListItem;
  Change: TItemChange);
begin
  lstClassDetailClick(Sender);
end;

procedure TfrmBookClassSetting.CountInit;
begin
  try
    ViewClass;
  except
    ListView3.Items.Clear;
  end;
  ViewBook;
end;

//统计某类别的书籍数目
function TfrmBookClassSetting.GetIsClassBookCount(ClassID: string): integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select Count(Code) from Book where Class =:ClassID');
    Query.ParamByName('ClassID').AsString := ClassID;
    Query.Open;
    Result := Query.Fields[0].Value;
    Query.Free;
  except
    Result := -1;
  end;
end;

procedure TfrmBookClassSetting.ViewClass;
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('select * from Class');
  Query.Open;
  ListView3.Items.Clear;
  while not Query.Eof do
  begin
    with ListView3.Items.Add do
    begin
      Caption := Query.FieldByName('ClassID').AsString;
      SubItems.Add(Query.FieldByName('ClassName').AsString);
      SubItems.Add(IntToStr(GetIsClassBookCount(Caption)));
    end;
    Query.Next;
  end;
  Query.Free;
end;

//统计所有的书籍数目
function TfrmBookClassSetting.GetBookCount: integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select Count(Code) from Book');
    Query.Open;
    Result := Query.Fields[0].Value;
    Query.Free;
  except
    Result := -1;
  end;
end;

//当前还有多少书籍在库
function TfrmBookClassSetting.GetCurrBookCount: integer;
begin
  Result := GetBookCount - GetLendedUserNum;
end;

function TfrmBookClassSetting.GetLendedUserNum: integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select Count(Code) from Owner');
    Query.Open;
    Result := Query.Fields[0].Value;
    Query.Free;
  except
    Result := -1;
  end;
end;

//统计过期不还的书籍数目
function TfrmBookClassSetting.GetTimeOutBookCount: integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select Count(distinct(Code)) from Owner where LandDate <:LandDate');
    Query.ParamByName('LandDate').AsDateTime := Date-OutDay;
    Query.Open;
    Result := Query.Fields[0].Value;
    Query.Free;
  except
    Result := -1;
  end;
end;

//统计书籍的一些相关情况
procedure TfrmBookClassSetting.ViewBook;
begin
  Edit3.Text := '    '+ IntToStr(GetBookCount);
  Edit4.Text := '    '+IntToStr(GetCurrBookCount);
  Edit5.Text := '    '+IntToStr(GetLendedUserNum);
  Edit6.Text := '    '+IntToStr(GetTimeOutBookCount);
end;

procedure TfrmBookClassSetting.FormCreate(Sender: TObject);
begin
  try
    EditInit;
  except
    lstClassDetail.Items.Clear;
  end;
  CountInit;
end;

procedure TfrmBookClassSetting.btnCancelClick(Sender: TObject);
begin
    close;
end;

//选择增加或是对原有信息的修改
procedure TfrmBookClassSetting.chkNewClassClick(Sender: TObject);
begin
    if chkNewclass.Checked = true then
    begin
        edtClass.Enabled := true;
        edtClass.Text :='';
        edtClassName.Text := '';
    end;
    if chkNewclass.Checked = false then
    begin
        edtClass.Enabled := false;
        edtClass.Text :='';
        edtClassName.Text := '';
    end;
end;

end.

⌨️ 快捷键说明

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