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

📄 mainform.pas

📁 基于SQL数据库,实现所有图书馆基本功能 可以按图书类别系别班别等信息自动生成书号或学号
💻 PAS
📖 第 1 页 / 共 4 页
字号:
end;

if length(ED_Num.Text)>1  then
if not (key  in [#8]) then
begin
key:=#0;
end;

end;


procedure TForm_main.ED_NumChange(Sender: TObject);
begin
 str_Num:=format('%.2d',[strtoint(ED_Num.Text)]);
Lab_Insert_StuID.Caption:=str_Grade+str_SType+str_BRtype+str_class+str_Num;
end;

procedure TForm_main.CB_ClassChange(Sender: TObject);
begin
str_class:=inttostr(CB_Class.itemindex+1);
Lab_Insert_StuID.Caption:=str_Grade+str_SType+str_BRtype+str_class+str_Num;

end;

procedure TForm_main.ED_lend_BIDKeyPress(Sender: TObject; var Key: Char);
begin
if not (key  in ['1','2','3','4','5','6','7','8','9','0',#8]) then
begin
key:=#0;
end;

if length(ED_lend_BID.Text)>7  then
if not (key  in [#8]) then
begin
key:=#0;
end;
end;

procedure TForm_main.ED_lend_BIDChange(Sender: TObject);
begin
bool_lend_bookid:=False;
if Length(ED_lend_BID.Text)=8 then
begin
   DM.ADOQuery2.SQL.Clear;
   DM.ADOQuery2.SQL.Add('select * from BookInfo where BID='+QuotedStr(ED_lend_BID.Text));
   DM.ADOQuery2.Open;

     if DM.ADOQuery2.IsEmpty=True then
     begin
     ShowMessage('书本不存在或书号错误');
     Lab_lend_BType.Caption:='';
   Lab_lend_press.Caption:='';
    Lab_lend_price.Caption:='';
     Lab_lend_writer.Caption:='';
     Lab_lend_BName.Caption:='';
     end
     else
     begin
     if DM.ADOQuery2.FieldByName('BBool').AsString='False' then
     begin
     bool_lend_bookid:=True;
    Lab_lend_BType.Caption:=DM.ADOQuery2.fieldbyname('BType').AsString;
    Lab_lend_press.Caption:=DM.ADOQuery2.fieldbyname('BPress').AsString;
    Lab_lend_price.Caption:=DM.ADOQuery2.fieldbyname('BPrice').AsString;
    Lab_lend_writer.Caption:=DM.ADOQuery2.fieldbyname('BWriter').AsString;
    Lab_lend_BName.Caption:=DM.ADOQuery2.fieldbyname('BName').AsString;
    end
    else
    begin
    ShowMessage('书本已经借出!');
    end;
     end;
end;
end;

procedure TForm_main.ED_return_BIDKeyPress(Sender: TObject; var Key: Char);
begin
if not (key  in ['1','2','3','4','5','6','7','8','9','0',#8]) then
begin
key:=#0;
end;

if length(ED_return_BID.Text)>7  then
if not (key  in [#8]) then
begin
key:=#0;
end;
end;

procedure TForm_main.ED_return_BIDChange(Sender: TObject);
begin
     bool_return_bookid:=False;
if Length(ED_return_BID.Text)>=8 then
begin
   DM.ADOQuery2.SQL.Clear;
   DM.ADOQuery2.SQL.Add('select * from BookInfo where BID='+QuotedStr(ED_return_BID.Text));
   DM.ADOQuery2.Open;

     if DM.ADOQuery2.IsEmpty=True then
     begin
     ShowMessage('书本不存在或书号错误');
     Lab_return_BType.Caption:='';
     Lab_return_press.Caption:='';
     Lab_return_price.Caption:='';
     Lab_return_writer.Caption:='';
     Lab_return_BName.Caption:='';
     end
     else
     begin

    if DM.ADOQuery2.FieldByName('BBool').AsString='True' then
    begin
         bool_return_bookid:=True;
    Lab_return_BType.Caption:=DM.ADOQuery2.fieldbyname('BType').AsString;
    Lab_return_press.Caption:=DM.ADOQuery2.fieldbyname('BPress').AsString;
    Lab_return_price.Caption:=DM.ADOQuery2.fieldbyname('BPrice').AsString;
    Lab_return_writer.Caption:=DM.ADOQuery2.fieldbyname('BWriter').AsString;
    Lab_return_BName.Caption:=DM.ADOQuery2.fieldbyname('BName').AsString;
    end
    else
    begin
    ShowMessage('图书还没借出!');
    end;
     end;
end;
end;

procedure TForm_main.ED_lend_stuIDChange(Sender: TObject);
var
 s:TStrings;
 str:String;
begin
     bool_lend_stuid:=False;
if Length(ED_lend_stuID.Text)=10 then
begin
   DM.ADOQuery2.SQL.Clear;
   DM.ADOQuery2.SQL.Add('select * from StuInfo where StuID='+QuotedStr(ED_lend_stuID.Text));
   DM.ADOQuery2.Open;

     if DM.ADOQuery2.IsEmpty=True then
     begin
     ShowMessage('学生不存在或学号错误');
     Lab_lend_StuName.Caption:='';
     Lab_lend_Classinfo.Caption:='';
     Lab_lend_StuSex.Caption:='';
     Lab_lend_StuBook.Caption:='';
     end
     else
     begin
     bool_lend_stuid:=True;
    Lab_lend_StuName.Caption:=DM.ADOQuery2.fieldbyname('StuName').AsString;
    Lab_lend_Classinfo.Caption:=DM.ADOQuery2.fieldbyname('ClassInfo').AsString;
    if DM.ADOQuery2.fieldbyname('StuSex').AsString='True' then
    begin
     Lab_lend_StuSex.Caption:='男';
    end
    else
    begin
     Lab_lend_StuSex.Caption:='女';
    end;
    str:=DM.ADOQuery2.fieldbyname('StuBook').AsString;
    if str<>'' then
begin
s:=TStringList.Create;
s.Delimiter:='|';
s.DelimitedText:=str;
Lab_lend_StuBook.Caption:=inttostr(s.Count-1)+'本';
     end;
     end;
end;
end;

procedure TForm_main.ED_lend_stuIDKeyPress(Sender: TObject; var Key: Char);
begin
if not (key  in ['1','2','3','4','5','6','7','8','9','0',#8]) then
begin
key:=#0;
end;

if length(ED_lend_stuID.Text)=10  then
if not (key  in [#8]) then
begin
key:=#0;
end;
end;

procedure TForm_main.ED_return_StuIDKeyPress(Sender: TObject; var Key: Char);
begin
if not (key  in ['1','2','3','4','5','6','7','8','9','0',#8]) then
begin
key:=#0;
end;

if length(ED_return_StuID.Text)=10  then
if not (key  in [#8]) then
begin
key:=#0;
end;
end;

procedure TForm_main.ED_return_StuIDChange(Sender: TObject);
var
 s:TStrings;
 str:String;
begin
       bool_return_stuid:=False;
if Length(ED_return_StuID.Text)>=10 then
begin
   DM.ADOQuery2.SQL.Clear;
   DM.ADOQuery2.SQL.Add('select * from StuInfo where StuID='+QuotedStr(ED_return_stuID.Text));
   DM.ADOQuery2.Open;

     if DM.ADOQuery2.IsEmpty=True then
     begin
     ShowMessage('学生不存在或学号错误');
     Lab_return_StuName.Caption:='';
     Lab_return_Classinfo.Caption:='';
     Lab_return_StuSex.Caption:='';
     Lab_return_StuBook.Caption:='';
     end
     else
     begin
    bool_return_stuid:=True;
    Lab_return_StuName.Caption:=DM.ADOQuery2.fieldbyname('StuName').AsString;
    Lab_return_Classinfo.Caption:=DM.ADOQuery2.fieldbyname('ClassInfo').AsString;
    if DM.ADOQuery2.fieldbyname('StuSex').AsString='True' then
    begin
     Lab_return_StuSex.Caption:='男';
    end
    else
    begin
     Lab_return_StuSex.Caption:='女';
    end;

        str:=DM.ADOQuery2.fieldbyname('StuBook').AsString;
    if str<>'' then
begin
s:=TStringList.Create;
s.Delimiter:='|';
s.DelimitedText:=str;
Lab_return_StuBook.Caption:=inttostr(s.Count-1)+'本';
     end;
     end;
end;
end;

procedure TForm_main.BTN_stu_insertClick(Sender: TObject);

begin
  DM.ADOQuery2.SQL.Clear;
  DM.ADOQuery2.SQL.Add('select * from Stu where StuGrade+StuSeries+StuBranch+StuClass+StuNum='+QuotedStr(Lab_Insert_StuID.Caption));
  DM.ADOQuery2.Open;
if DM.ADOQuery2.RecordCount=0 then
begin
try
DM.ADOConnection1.BeginTrans;
 DM.ADOQuery2.SQL.Clear;
  DM.ADOQuery2.SQL.Add('insert into Stu(StuName,StuSex,StuGrade,StuSeries,StuBranch,StuClass,StuNum)');
  DM.ADOQuery2.SQL.Add(' values (:StuName,:StuSex,:StuGrade,:StuSeries,:StuBranch,:StuClass,:StuNum)');
  DM.ADOQuery2.Parameters.ParamByName('StuName').Value:=ED_stu_name.Text;
  DM.ADOQuery2.Parameters.ParamByName('StuSex').Value:=int_Sex;
  DM.ADOQuery2.Parameters.ParamByName('StuGrade').Value:=str_Grade;
  DM.ADOQuery2.Parameters.ParamByName('StuSeries').Value:=str_SType;
  DM.ADOQuery2.Parameters.ParamByName('StuBranch').Value:=str_BRtype;
  DM.ADOQuery2.Parameters.ParamByName('StuClass').Value:=str_class;
  DM.ADOQuery2.Parameters.ParamByName('StuNum').Value:=Format('%.2d',[strtoint(str_num)]);
  DM.ADOQuery2.ExecSQL;
  DM.ADOConnection1.CommitTrans;
except
ShowMessage('出错回滚');
DM.ADOConnection1.RollbackTrans;
end;



  DM.ADOQuery1.SQL.Clear;
  DM.ADOQuery1.SQL.Add('select * from StuInfo');
  DM.ADOQuery1.Open;
  DBGrid1Lenght;
end
else
begin
 ShowMessage('已经存在');
end;






end;

procedure TForm_main.CB_SexChange(Sender: TObject);

begin
if CB_Sex.Items.Strings[CB_Sex.ItemIndex]='男' then
begin
int_Sex:=1;
end
else
int_Sex:=0;
begin

end;
end;

procedure TForm_main.Bit_returnClick(Sender: TObject);
   var
    substr:TStrings;
    i:Integer;
    Bool_flag:Boolean;
    strtemp:string;
    double_Bookmoney:double;
    integer_BookDays:Integer;
     str_bookname:string;
     str_bookID:string;
     str_stuname:string;
     str_strID:string;
begin
Form_main.ED_return_BID.OnChange(ED_return_BID);
Form_main.ED_return_StuID.OnChange(ED_return_StuID);
if (bool_return_bookid) and(bool_return_stuid) then
begin
DM.ADOQuery2.SQL.Clear;
DM.ADOQuery2.SQL.Add('select * from StuInfo where StuID='+QuotedStr(ED_return_StuID.Text));
DM.ADOQuery2.Open;

str_bookID:=ED_return_stuID.text;
str_strID:=ED_return_BID.text;
str_stuname:=DM.ADOQuery2.FieldByName('StuName').AsString;


substr:=TStringList.Create;
substr.Delimiter:='|';
substr.DelimitedText:=DM.ADOQuery2.fieldbyname('StuBook').AsString;

Bool_flag:=False;

for i:=0 to substr.Count-1 do
begin
if substr[i]=ED_return_BID.Text then
begin
Bool_flag:=True;
Break;
end;
end;

if Bool_flag=False then
begin
ShowMessage('该学生没有借这本书!');
end;

if bool_flag=True then
begin
DM.ADOQuery2.SQL.Clear;
DM.ADOQuery2.SQL.Add('select * from BookInfo where BID='+QuotedStr(ED_return_BID.Text));
DM.ADOQuery2.Open;
double_Bookmoney:=DM.ADOQuery2.fieldbyname('money').AsFloat;
integer_BookDays:=DM.ADOQuery2.fieldbyname('BDays').AsInteger;

str_bookname:=DM.ADOQuery2.FieldByName('BName').AsString;


if double_Bookmoney<0 then
begin
ShowMessage('你借的书已经过期'+inttostr(integer_BookDays)+'天,请付'+FloatToStr(double_Bookmoney)+'元');
end;


DM.ADOQuery2.SQL.Clear;
DM.ADOQuery2.SQL.Add('update Book'
+' set BBool=0 ,BStuID=null,BLendDate=null where BType+BNum='
+QuotedStr(ED_return_BID.text));
DM.ADOQuery2.ExecSQL;


strtemp:='';
for i:=1 to substr.Count-1 do
begin
if (substr[i]<>ED_return_BID.text) then
begin
strtemp:=strtemp+'|'+substr[i];
end;
end;

DM.ADOQuery2.SQL.Clear;
DM.ADOQuery2.SQL.Add('update stuInfo set stubook='+
QuotedStr(strtemp)+'where StuID='+QuotedStr(ED_return_StuID.Text));
DM.ADOQuery2.ExecSQL;

{Memo_return.Lines.Add('还书  '+str_memo_bookID+str_memo_bookname+str_memo_strID+str_memo_stuname+format('%25s',[DateToStr(date)])+'  '+TimeToStr(now));
ShowMessage('还书成功');        }

  DM.ADOQuery2.SQL.Clear;
  DM.ADOQuery2.SQL.Add('insert into return_log(type,bookid,bookname,stuid,stuname,logtime)');
  DM.ADOQuery2.SQL.Add(' values (:type,:bookid,:bookname,:stuid,:stuname,:logtime)');
  DM.ADOQuery2.Parameters.ParamByName('type').Value:='还书';
  DM.ADOQuery2.Parameters.ParamByName('bookid').Value:=str_bookID;
  DM.ADOQuery2.Parameters.ParamByName('bookname').Value:=str_bookname;
  DM.ADOQuery2.Parameters.ParamByName('stuid').Value:=str_strID;
  DM.ADOQuery2.Parameters.ParamByName('stuname').Value:=str_stuname;
  DM.ADOQuery2.Parameters.ParamByName('logtime').Value:=DateToStr(date)+'  '+TimeToStr(now);
  DM.ADOQuery2.ExecSQL;
  Application.MessageBox('还书成功!','成功',MB_OK+MB_ICONASTERISK);
  ED_lend_BID.Text:='';
  ED_lend_stuID.Text:='';

end;
end
else
begin
Application.MessageBox('信息有错或未完整','错误',MB_OK+MB_ICONWARNING);
end;
end;

procedure TForm_main.Bit_lossClick(Sender: TObject);
var
 float_price:Double;
 integer_loss:Integer;

  substr:TStrings;
    i:Integer;
    Bool_flag:Boolean;
    strtemp:string;
    str_bookname:string;
     str_bookID:string;
     str_stuname:string;
     str_strID:string;

begin
 Form_main.ED_return_BID.OnChange(ED_return_BID);
Form_main.ED_return_StuID.OnChange(ED_return_StuID);
if (bool_return_bookid) and(bool_return_stuid) then
begin
 DM.ADOQuery2.SQL.Clear;
DM.ADOQuery2.SQL.Add('select * from StuInfo where StuID='+QuotedStr(ED_return_StuID.Text));
DM.ADOQuery2.Open;

str_bookID:=ED_return_stuID.text;
str_strID:=ED_return_BID.text;
str_stuname:=DM.ADOQuery2.FieldByName('StuName').AsString;

substr:=TStringList.Create;
substr.Delimiter:='|';
substr.DelimitedText:=DM.ADOQuery2.fieldbyname('StuBook').AsString;

Bool_flag:=False;

for i:=0 to substr.Count-1 do
begin
if substr[i]=ED_return_BID.Text then
begin
Bool_flag:=True;
Break;
end;
end;

if Bool_flag=False then
begin
ShowMessage('该学生没有借这本书!');
end;

if bool_flag=True then
begin
DM.ADOQuery2.SQL.Clear;
DM.ADOQuery2.SQL.Add('select * from BookInfo where BID='+QuotedStr(ED_return_BID.Text));
DM.ADOQuery2.Open;

str_bookname:=DM.ADOQuery2.FieldByName('BName').AsString;

float_price:=DM.ADOQuery2.fieldbyname('BPrice').AsFloat;

DM.ADOQuery2.SQL.Clear;
DM.ADOQuery2.SQL.Add('select * from setup');
DM.ADOQuery2.Open;

integer_loss:=DM.ADOQuery2.fieldbyname('Loss').AsInteger;

//showmessage(format('本书原价%f元,索赔倍数为%d,你应付%f元',[float_price,integer_loss,float_price*integer_loss]));
if Application.MessageBox(Pchar(format('本书原价%f元,索赔倍数为%d,你应付%f元',[float_price,integer_loss,float_price*integer_loss])),'are you sure?',MB_OKCANCEL+MB_ICONWARNING)=1 then
begin
strtemp:='';
for i:=1 to substr.Count-1 do
begin
if (substr[i]<>ED_return_BID.text) then
begin
strtemp:=strtemp+'|'+substr[i];
end;
end;

DM.ADOQuery2.SQL.Clear;
DM.ADOQuery2.SQL.Add('update stuInfo set stubook='+
QuotedStr(strtemp)+'where StuID='+QuotedStr(ED_return_StuID.Text));
DM.ADOQuery2.ExecSQL;

DM.ADOQuery2.SQL.Clear;
DM.ADOQuery2.SQL.Add('delete  from book where BType+BNum='+QuotedStr(ED_return_BID.Text));
DM.ADOQuery2.ExecSQL;
Application.MessageBox('报失成功','成功',MB_OK);
//Memo_return.Lines.Add('报失  '+str_memo_bookID+str_memo_bookname+str_memo_strID+str_memo_stuname+format('%25s',[DateToStr(date)])+'  '+TimeToStr(now));

  DM.ADOQuery2.SQL.Clear;
  DM.ADOQuery2.SQL.Add('insert into return_log(type,bookid,bookname,stuid,stuname,logtime)');
  DM.ADOQuery2.SQL.Add(' values (:type,:bookid,:bookname,:stuid,:stuname,:logtime)');
  DM.ADOQuery2.Parameters.ParamByName('type').Value:='报失';
  DM.ADOQuery2.Parameters.ParamByName('bookid').Value:=str_bookID;
  DM.ADOQuery2.Parameters.ParamByName('bookname').Value:=str_bookname;
  DM.ADOQuery2.Parameters.ParamByName('stuid').Value:=str_strID;
  DM.ADOQuery2.Parameters.ParamByName('stuname').Value:=str_stuname;

⌨️ 快捷键说明

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