delphi图书管理系统论文+源码 第5页
a、图书遗失:首先根据读者编号查询该遗失图书的基本信息。再根据管理规则对遗失该图书的读者进行处罚。之后对该图书的信息进行整理:在遗失图书基本情况表里为其建立一条记录,并将其在其它表里的相关记录信息予以删除。
b、图书下架:首先根据图书编号查询图书的基本信息。查看该书是否已借出。若已借出是否要进行下架的操作处理。对于下架的图书,首先应在过期图书基本情况表里为其建立一条记录,并将其在其它表里的相关记录信息予以删除。
图4-6图书下架的数据流图
对于图书下架表单,在进行图书下架处理时,首先需要根据图书编号查询该图书的基本信息,所以在表单的代码处理中,应有检验图书编号的函数来检验数据库里是否存在该图书的编号,代码如下:
function TfrmBookclear.CheckExistid(Code: string): boolean;
begin
try
qrydel.SQL.Clear;
then
Result := False
else
Result := True;
except
Result := False;;
end;
end;
只有当函数CheckExistid值为True时才能进行对此图书的下架处理,在对图书进行下架处理时,要将数据库表中除过期图书基本情况表外所有的表中关于该图书信息的记录全部删除。
删除记录的函数代码如下:
procedure TfrmBookclear.delete;
var sbookno,sborrow:string;
begin
if rbtndel.Checked =true
then优~文-论^文-网
http://www.youerw.com begin
if CheckExistid(edtbookno.Text ) = False
then
begin
MessageDlg('此号<'+edtbookno.Text+'>不存在,请重新输入!', mtWarning,[mbok],0);
edtbookno.SetFocus ;
edtbookno.SelectAll ;
exit;
end;
if bookborrowed(edtbookno.Text)=true //图书已借出
then
begin
if MessageBox(0,PChar('此书<'+edtbookno.Text+'>已借出,
确实要删除吗?'),'警告',MB_YESNO)= IDYES
then
begin
try
booknodel(edtbookno.Text);
MessageBox(0,'删除完成',PChar('删除'+edtbookno.Text),MB_OK);
except
MessageDlg('删除<'+edtbookno.Text+'>失败',mtWarning,[mbok],0);
end;
end
else
begin
edtbookno.SetFocus ;
edtbookno.SelectAll ;
exit;
end;
end
else
begin
try
booknodel(edtbookno.Text);
then
begin
sbookno:=tbbook.FieldValues['BookID'];
sborrow:=tbbook.FieldValues['BookBorrowed'];
if sborrow='是' //图书已借出
then
begin
if MessageBox(0,PChar('此书<'+sbookno+'>已借出,确实要删除吗?'),'警告',MB_YESNO)= IDYES
then
begin
try
booknodel(sbookno);
MessageBox(0,'删除完成',PChar('删除'+sbookno),MB_OK);
except
MessageDlg('删除<'+sbookno+'>失败',mtWarning,[mbok],0);
end;
end;
end
else //图书未借出
begin
try
booknodel(sbookno);
MessageBox(0,'删除完成',PChar('删除'+sbookno),MB_OK);
except
MessageDlg('删除<'+sbookno+'>失败',mtWarning,[mbok],0);
end;
end;
tbbook.Refresh;
dbgbook.Refresh ;
end;end;
5. 开发过程遇到的问题及解决方法
(1) 关于字段为datetime型时产生的问题
在修改图书信息时:其中关于书籍的入库时间在数据库里定义为datetime型。当对书籍的信息进行修改后,若图书的入库时间为空时,则在插入数据时将产生错误。
解决方法:当此字段为空时,将该书的入库时间默认为当前时间。
(2) 对于有外优~文-论^文-网
http://www.youerw.com 键约束的表,在界面端用SQL语句向表中插入记录时,该外键属性值必不能为空,且必须将插入记录的所有属性都在语句中列出。如在图书遗失情况下,首先应向LostBook表中添加该图书的记录,但此处因有外键约束:BookID,ReaderID,则不能用语句:insert into LostBook values(:sno,:sreaderid,:sname,:swriter,:spublic,:sprice,:slostdate,:srepay)。
(3) 图书遗失的表单中:首先需根据其读者编号查询该读者和书籍的信息。因此表单中的Query的SQL查询语句是预先已经定义好的,只是在运行时对其参数进行一次赋值(读者编号)操作。但在几次的操作之后发现:当打开该表单后只能查询一次读者的信息,即使对其参数赋不同的值,但显示的结果都是第一次所赋读者编号的所有信息。
解决方法:在表单里对Query的SQL语句先清空,然后重新写SQL语句。
(4) 关于图书整理表单的统计页的问题
在此我定义了统计所有未按时归还的图书总数,其代码是:
qrydel.SQL.Add('select count(BookID) from BorrowRecorder where PastTime=:stime');qrydel.ParamByName('stime').AsString :='是';
但此处的PastTime :=‘是’存在某些疑惑,因为在此系统里对于图书借阅表中是否超期的字段都是在还书时根据借书时间和可借期限进行统计然后再赋值的,所以若某些图书虽未归还但根据其借书期限已经超期了,但因该图书尚未归还则在图书借阅表中该超期字段并不是‘是’。这种情况下的统计出来的结果则会发生错误!
解决方法:在数据库段建立过程,只要图书已经超期则修改图书借阅表中是否超期字段
上一页 [1] [2] [3] [4] [5]
delphi图书管理系统论文+源码 第5页下载如图片无法显示或论文不完整,请联系qq752018766