📄 bookbrallunit.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "BookBRAllUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TBookBRAll *BookBRAll;
AnsiString mySQL,tmpStr;
AnsiString PassNo,BookNo;
int lendID;
bool bflag;
//---------------------------------------------------------------------------
__fastcall TBookBRAll::TBookBRAll(TComponent* Owner)
: TForm(Owner)
{
RadioGroup1->Enabled = false;
Button2->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TBookBRAll::FormClose(TObject *Sender,
TCloseAction &Action)
{
ADOQuery1->Close();
ADOTable1->Close();
ADOConnection1->Close();
Action = caFree;
}
//---------------------------------------------------------------------------
void __fastcall TBookBRAll::mnuBookBRExitClick(TObject *Sender)
{
this->Close();
}
//---------------------------------------------------------------------------
void __fastcall TBookBRAll::Button1Click(TObject *Sender)
{
Memo1->Lines->Clear();
Memo2->Lines->Clear();
PassNo = Edit1->Text.Trim();
BookNo = Edit2->Text.Trim();
//检查借书证号
if(PassNo.Length() > 0)
{
mySQL = "SELECT 借书证号,注销 FROM cards where 注销 = False AND 借书证号 = ";
mySQL = mySQL + char(34) + PassNo + char(34);
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->Active = true;
if(ADOQuery1->RecordCount == 0)
{
ShowMessage("借书证号不存在或已注销!");
return;
}
ViewBookBorrow(PassNo);
Edit1->Enabled = false;
}
if(BookNo.Length() > 0)
{
//检查借书号
mySQL = "SELECT 借书号 FROM books where 借书号 = ";
mySQL = mySQL + char(34) + BookNo + char(34);
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->Active = true;
if(ADOQuery1->RecordCount == 0)
{
ShowMessage("借书号错误!");
return;
}
//检查是否是本人已借的书
mySQL = "SELECT * FROM lendsql WHERE 借书证号 = ";
mySQL = mySQL + char(34) + PassNo + char(34);
mySQL += " AND 借书号 = ";
mySQL = mySQL + char(34) + BookNo + char(34);
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->Active = true;
if(ADOQuery1->RecordCount == 1)
{
RadioGroup1->Enabled = true;
RadioGroup1->ItemIndex = 0;
bflag = false;
lendID = ADOQuery1->FieldByName("ID")->AsInteger;
}
else //检查是否被别人借出
{
mySQL = "SELECT 借书号 FROM lendsql WHERE 借书号 = ";
mySQL = mySQL + char(34) + BookNo + char(34);
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->Active = true;
if(ADOQuery1->RecordCount == 1)
{
ShowMessage("此书已被借出!");
return;
}
bflag = true;
RadioGroup1->Enabled = false;
}
ViewBookInfo(BookNo);
Edit2->Enabled = false;
Button2->Enabled = true;
}
}
//---------------------------------------------------------------------------
void TBookBRAll::ViewBookBorrow(AnsiString PassNo)
{
//列出已借图书信息
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
mySQL = "SELECT * FROM lendsql";
mySQL = mySQL + " WHERE 借书证号 = ";
mySQL = mySQL + char(34) + PassNo + char(34);
mySQL += " ORDER BY 借阅日期";
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->Active = true;
Memo2->Clear();
while(!ADOQuery1->Eof)
{
tmpStr = ADOQuery1->FieldByName("借阅日期")->AsString + " ";
tmpStr = tmpStr + ADOQuery1->FieldByName("借书号")->AsString + " ";
tmpStr = tmpStr + ADOQuery1->FieldByName("名称")->AsString;
Memo2->Lines->Add(tmpStr);
ADOQuery1->Next();
}
ADOQuery1->First();
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
mySQL = "SELECT * FROM readersql";
mySQL = mySQL + " WHERE 借书证号 = ";
mySQL = mySQL + char(34) + PassNo + char(34);
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->Active = true;
tmpStr = ADOQuery1->FieldByName("姓名")->AsString + "已借";
tmpStr = tmpStr + ADOQuery1->FieldByName("借数")->AsString + "本书";
StatusBar1->Panels->Items[0]->Text = tmpStr;
}
//---------------------------------------------------------------------------
void TBookBRAll::ViewBookInfo(AnsiString BookNo)
{
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
mySQL = "SELECT * FROM books";
mySQL = mySQL + " WHERE 借书号 = ";
mySQL = mySQL + char(34) + BookNo + char(34);
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->Active = true;
Memo1->Lines->Clear();
tmpStr = ADOQuery1->FieldByName("借书号")->AsString + ":";
Memo1->Lines->Add(tmpStr);
tmpStr = ADOQuery1->FieldByName("名称")->AsString;
Memo1->Lines->Add(tmpStr);
tmpStr = ADOQuery1->FieldByName("出版单位")->AsString;
Memo1->Lines->Add(tmpStr);
}
//---------------------------------------------------------------------------
void __fastcall TBookBRAll::Button2Click(TObject *Sender)
{
if(!bflag)
{
//还书
//修改借书记录
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
mySQL = "UPDATE lendlist SET 已还 = True";
mySQL = mySQL + " WHERE ID = ";
mySQL = mySQL + AnsiString(lendID);
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->ExecSQL();
if(RadioGroup1->ItemIndex == 0)
{
//修改书库标记
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
mySQL = "UPDATE books SET 借出 = False";
mySQL = mySQL + " WHERE 借书号 = ";
mySQL = mySQL + char(34) + BookNo + char(34);
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->ExecSQL();
//修改个人借数
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
mySQL = "UPDATE cards SET 借数 = 借数-1";
mySQL = mySQL + " WHERE 借书证号 = ";
mySQL = mySQL + char(34) + PassNo + char(34);
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->ExecSQL();
}
//续借
if(RadioGroup1->ItemIndex == 1)
{
//添加借书记录
ADOTable1->Active = true;
ADOTable1->Insert();
ADOTable1->FieldValues["借阅日期"] = DateToStr(Date());
ADOTable1->FieldValues["借书证号"] = PassNo;
ADOTable1->FieldValues["借书号"] = BookNo;
ADOTable1->FieldValues["已还"] = false;
ADOTable1->Post();
ADOTable1->Last();
ADOTable1->Active = false;
}
}
else //借书
{
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
mySQL = "SELECT * FROM readersql";
mySQL = mySQL + " WHERE 借书证号 = ";
mySQL = mySQL + char(34) + PassNo + char(34);
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->Active = true;
int borrowNum,ValueNum; //已借数,可借数
borrowNum = ADOQuery1->FieldByName("借数")->AsInteger;
ValueNum = ADOQuery1->FieldByName("本数")->AsInteger;
ADOQuery1->First();
if(borrowNum < ValueNum) //完成借书过程
{
//修改书库标记
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
mySQL = "UPDATE books SET 借出 = True";
mySQL = mySQL + " WHERE 借书号 = ";
mySQL = mySQL + char(34) + BookNo + char(34);
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->ExecSQL();
//修改个人借数
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
mySQL = "UPDATE cards SET 借数 = 1+借数 ";
mySQL = mySQL + " WHERE 借书证号 = ";
mySQL = mySQL + char(34) + PassNo + char(34);
ADOQuery1->SQL->Add(mySQL);
ADOQuery1->ExecSQL();
//添加借书记录
ADOTable1->Active = true;
ADOTable1->Insert();
ADOTable1->FieldValues["借阅日期"] = DateToStr(Date());
ADOTable1->FieldValues["借书证号"] = PassNo;
ADOTable1->FieldValues["借书号"] = BookNo;
ADOTable1->FieldValues["已还"] = false;
ADOTable1->Post();
ADOTable1->Last();
ADOTable1->Active = false;
}
else
{
ShowMessage("您借书数量已满!");
}
}
Button2->Enabled = false;
ViewBookBorrow(PassNo);
Edit2->Enabled = true;
Edit2->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TBookBRAll::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
switch(Key)
{
case VK_RETURN:
Edit2->SetFocus();
break;
case VK_ESCAPE:
Edit1->Text = "";
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TBookBRAll::Edit2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
switch(Key)
{
case VK_RETURN:
this->Button1->Click();
break;
case VK_ESCAPE:
Edit2->Text = "";
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TBookBRAll::Button3Click(TObject *Sender)
{
RadioGroup1->Enabled = false;
Button2->Enabled = false;
Edit1->Enabled = true;
Edit2->Enabled = true;
Edit1->Text = "";
Edit2->Text = "";
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -