Delphi+Access图书管理系统 第3页

procedure Tlendform.FormShow(Sender: TObject) ; // 借阅管理借出按钮事件
var
  i:integer; 
begin
  with datamoduleado.ADOQuery1 do // 响应datamoduleado.ADOQuery1按钮事件
  begin
    sql.Clear ;
    sql.Add('select code from book');
    open;
    first;
    for i:=0 to recordcount-1 do
    begin
      combobox1.Items.Add(fieldbyname('code').AsString );
      next;
    end;
    close;
  end;
end;
//对借阅管理借出按钮事件的响应
procedure Tlendform.ReaderIDEditChange(Sender: TObject);
begin
  if length(readerIDEdit.Text )=10 then  //判断借书证号是否存在
  begin
    with datamoduleADO.ADOQuery1 do
    begin
      sql.Clear ;
      sql.Add('select readerid from reader where readerid=:readerid');
      parameters.ParamByName('readerid').Value :=readeridedit.Text ;
      open;
      if recordcount=0 then    //借书证号不能为0
      begin
        button1.Enabled :=false;
        messagedlg('借书证号<'+readeridedit.Text +'>不存在',mterror,[mbok],0);
        close;
        exit;
      end;
      close;
    end;

    try
      with datamoduleado.ADOQuery1 do
      begin
        sql.Clear ;
        sql.Add('select count(readerid) from lend where readerid=:readerid');
        parameters.ParamByName('readerid').Value :=readeridedit.Text ;
        open;
        totaledit.Text :=inttostr(fields[0].Value );
        close;
      end;
    except
      totaledit.Text :='0';
    end;

    button2.Enabled :=false;
    button1.Enabled :=true;
    button1.SetFocus ;
  end;

end;

procedure Tlendform.Button1Click(Sender: TObject);
var
  tempownbook:townbook;
  canlend:boolean;
  mmcode:string;
begin
  if readeridedit.Text <>'' then            //借书证号不能为空
  begin
  try
    with datamoduleado.adoquery1 do
    begin
      sql.clear;
      sql.Add('select code from lend where readerid=:readerid');
      parameters.ParamByName('readerid').Value :=readeridedit.Text ;
      open;
      canlend:=true;
      ownbookform.ListView1.Items.Clear ;

      mmcode:=fieldbyname('code').AsString;

      while not eof do
      begin
        with tempadoquery1 do
        begin
        sql.Clear ;
        sql.Add('select * from book where code =:code') ;
        parameters.ParamByName('code').Value :=mmcode;
        open;
        tempownbook.code:=fieldbyname('code').asstring;
        tempownbook.name:=fieldbyname('name').asstring;
        tempownbook.price:=fieldbyname('cost').asstring;

        try
         with tempadoquery2 do
         begin
           sql.Clear ;
           sql.Add('select * from lend where code=:code and readerid=:readerid');
           parameters.ParamByName('code').Value :=datamoduleado.ADOQuery1.fieldbyname('code').AsString ;
           parameters.ParamByName('readerid').Value := readeridedit.Text ;
           open;
           tempownbook.owndays:=round(date-fieldbyname('outdate').AsDateTime );
           close;
         end;
        except
           tempownbook.owndays:=0;
        end;

        close;
      end;

      if tempownbook.owndays>60 then       //超过60天后所交罚金
      begin
        with ownbookform.listview1.Items.add do
        begin
         caption:=tempownbook.code;
         subitems.add(tempownbook.name);
         subitems.add(tempownbook.price);
         subitems.Add(inttostr(tempownbook.owndays));
         subitems.Add(floattostr((tempownbook.owndays-60)*0.1));
        end;
        canlend:=false;
      end;
    next;
  end;
    close;
  end;
except
 canlend:=true;
end;
try    //响应借书证号不正确,则借书不成功,出现提示
  with DatamoduleADO.adoquery1 do
  begin
    sql.clear;
    sql.add('insert into lend(code,readerid,outdate)'+' values(:code,:readerid,:outdate)');
    parameters.parambyname('code').value:=combobox1.text;
    parameters.parambyname('readerid').value:=readeridedit.text;
    parameters.parambyname('outdate').value:=datetostr(now());
    execsql;
  end;
except
  messagedlg('借书不成功',mterror,[mbok],0);
 end;
end;
else begin
        showmessage('请输入借书证号!');
        readeridedit.setfocus;
     end;
end;
其他代码与上述功能代码相似,就不一一赘述。

5、测试
 5.1、单元测试
 (1)图书管理系统测试
测试用例 正误 结果
图书编号 3333 × 数据长度不对
 图书名称 软件工程 √ 正确
借阅者 王1 × 类型不匹配
入库日期 2002-1-1 × 格式不正确
价格 20.00 √ 正确

(2)借阅者借书测试

测试用例 正误 结果
借书证号 0000000001 √ 正确
 姓名 王小 √ 正确
班级 计算机教育 √  正确
借书证号 000003 × 数据长度不正确
借书证号 Krrr2220 ×  类型不匹配

 (3)续借办理测试
   输入编号后,查询此书信息。如果该书并未借出,则只能显示其基本信息,不能进行续借操作。如:图书编号(6),图书名称(招生考试),显示该图书没有借出;图书编号(5)查询后,续借按钮是活动的。

上一页  [1] [2] [3] [4] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有