毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

delphi图书管理系统论文+源码 第5页

更新时间:2011-3-19:  来源:毕业论文
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
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。