📄 ubookclasssetting.~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 + -