1 / 30

综合实例

综合实例. 图书管理系统. 功能需求. 图书信息查询,要提供多种信息查询方式。 读者个人借阅记录查询。 办理借书、还书手续。 读者信息维护。 馆藏图书的管理,包括新书入库,图书数据的统计等 。 当查询读者个人借阅信息时,读者需要输入自己的读者号及口令、且只能查询自己的信息。 面向图书管理员的功能,要核对管理员的编号和密码,读者不能进入。. 数据库表设计. 管理员表 adm ( admid 管理员编号, admps 管理员密码) 读者信息表 reader ( rno 读者号, rname 读者姓名, class 班级, passwd 密码)

javier
Télécharger la présentation

综合实例

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 综合实例 图书管理系统

  2. 功能需求 • 图书信息查询,要提供多种信息查询方式。 • 读者个人借阅记录查询。 • 办理借书、还书手续。 • 读者信息维护。 • 馆藏图书的管理,包括新书入库,图书数据的统计等。 • 当查询读者个人借阅信息时,读者需要输入自己的读者号及口令、且只能查询自己的信息。 • 面向图书管理员的功能,要核对管理员的编号和密码,读者不能进入。

  3. 数据库表设计 • 管理员表 adm(admid 管理员编号,admps 管理员密码) • 读者信息表reader(rno 读者号,rname读者姓名,class 班级, passwd 密码) • 图书信息表books(bno 图书编号,bname书名,author作者, price定价,brief简介,cover封皮, num 馆藏册数 ) • 借阅记录borrow (rno读者号, bno图书编号,rdate还书时间)

  4. 主界面设计 database1

  5. Database1设置

  6. 主窗体代码 implementation {$R *.dfm} uses unit2,unit3,unit4,unit5,unit6,unit7 ,unit8; procedureTForm1.Button1Click(Sender: TObject); Begin //图书信息查询 form2.ShowModal ; end; procedure TForm1.Button6Click(Sender: TObject); Begin //办理借还书 if form8.ShowModal = mrOk then //核查管理员身份 form7.ShowModal ; end;

  7. 管理员身份认证 SQL属性: select * from adm where admid= :admid procedure TForm8.Button1Click(Sender: TObject); //“确认”按钮 begin query1.Close ; query1.ParamByName('admid').Value := edit1.Text ; query1.Open ; if query1['admps']=null then //如果帐号查不到,说明帐号错 begin showmessage('管理员帐号错'); exit ; end ;

  8. 管理员身份认证 if query1['admps'] <> edit2.Text then //检查密码 begin showmessage('密码错'); exit ; end ; form8.ModalResult := mrOk ; //对话框mrOk返回 end; procedure TForm8.Button2Click(Sender: TObject); //“撤销” 按钮 begin form8.ModalResult := mrCancel; //对话框mrCancel返回 end; procedure TForm8.FormShow(Sender: TObject); //进入对话框预清 begin edit1.Clear; edit2.Clear ; end; end.

  9. 图书信息查询

  10. 无条件查询界面

  11. 无条件查询界面代码 procedure TForm2.ListBox1Click(Sender: TObject); //选择排序列 begin query1.Close ; query1.SQL.Clear ; case listbox1.ItemIndex of //判断用户选择了第几项 0 : query1.SQL.Add('select * from books order by bno'); 1 : query1.SQL.Add('select * from books order by bname'); 2 : query1.SQL.Add('select * from books order by author'); end ; query1.Open ;

  12. 有条件查询界面

  13. 有条件查询界面代码 procedure TForm2.Button3Click(Sender: TObject); // “书名查询” begin query1.Close ; query1.SQL.Clear ; query1.SQL.Add( 'select * from books where bname like ''%' + edit1.Text + '%'''); query1.Open ; end; procedure TForm2.Button4Click(Sender: TObject); //“作者查询” begin query1.Close ; query1.SQL.Clear ; query1.SQL.Add( 'select * from books where author = ''' + edit1.Text + ''''); query1.Open ; end; Where bname like '%计算机%' Where author = ‘王欣’

  14. 个人借书查询界面 select * from reader where rno=:rno select borrow.bno, bname, rdate from borrow, books where rno=:rno and borrow.bno=books.bno

  15. 个人借书查询代码 procedure TForm6.Button1Click(Sender: TObject); //“确定” begin query1.Close ; query1.ParamByName('rno').Value := edit1.Text ; query1.Open ; //根据输入的读者号查询读者信息 if query1['rname']=null then // 如果没有查出读者名 begin showmessage('读者号错'); //给出提示信息 exit ; //退出事件处理程序 end ; if query1['passwd'] <> edit2.Text then //核对输入的密码 begin showmessage('密码错');

  16. 个人借书查询代码 exit ; //密码错,退出事件处理程序 end ; edit3.Text := query1['rname'] ; //显示读者姓名(读数据集字段值) edit4.Text := query1['class'] ; //显示读者班级 query2.Close ; query2.ParamByName('rno').Value := edit1.Text ; query2.Open ; //显示读者借书信息 end;

  17. 办理借还书

  18. 借书处理 procedure TForm7.Button1Click(Sender: TObject); //“借书”按钮 var rname,bname :string ; // rname保存读者名,bname保存书名 num : integer ; //保存某本书的馆藏册数 begin query1.Close ; query1.SQL.Clear ; query1.SQL.Add('select rname from reader where rno= ''' + edit1.text + '''') ; query1.Open ; //由读者号查读者名 if query1['rname'] = null then //如果没有查出读者名,则… begin showmessage('读者号没有注册'); exit ; //退出 end ; rname := query1['rname'] ; //保存查到的读者名

  19. 借书处理 query1.Close ; query1.SQL.Clear ; query1.SQL.Add( 'select count(*) cnt from borrow where rno= ''' + edit1.text + '''') ; query1.Open ; //查询该读者已经借了几本书 if query1['cnt'] = 10 then begin showmessage('该读者已借了10本书,不能再借'); exit ; end ;

  20. 借书处理 query1.Close ; query1.SQL.Clear ; query1.SQL.Add( 'select bname,num from books where bno= ''' + edit2.text + '''') ; query1.Open ; //由书号查书名 if query1['bname'] = null then //如果查不出书名,则…. begin showmessage('没有此书号'); exit ; end ; bname := query1['bname'] ; //保存查出的书名 num := query1['num'] ; //保存该书的馆藏册数

  21. 借书处理 query1.Close ; query1.SQL.Clear ; query1.SQL.Add( 'select count(*) from borrow where bno= ''' + edit2.text + '''') ; query1.Open ; //查询该书已借出的册数 if query1.Fields[0].AsInteger = num then //如果借出册数等于馆藏册书,则… begin showmessage(bname + ' 已全部借出'); exit ; end ;

  22. 借书处理 query1.Close ; query1.SQL.Clear ; query1.SQL.Add('select * from borrow where rno= ''' + edit1.text + ''' and bno =''' + edit2.Text + '''') ; query1.Open ; //查询该读者是否借了该书 if query1.Fields[0].Value = null then begin //如果没有借 query1.Close ; query1.SQL.Clear ; query1.SQL.Add('insert into borrow values(''' + edit1.Text + ''',''' + edit2.Text + ''','''+ formatdatetime('m"/"d"/"yyyy',date+15) + ''')' ) ; query1.ExecSQL ; //插入一条借书记录,完成借书手续 end

  23. 借书处理 else //如果读者已经借了该书 if MessageDlg( '是否续借', mtConfirmation,[mbYes,mbNo] , 0)=mrYes hen begin //办理续借手续 ,延长15天 query1.Close ; query1.SQL.Clear ; query1.SQL.Add('update borrow set rdate= rdate +15 where rno=''' + edit1.Text + ''' and bno=''' + edit2.Text + '''') ; query1.ExecSQL ; //修改还书时间 end else exit ; memo1.Clear ; //在memo对象中显示借书信息 memo1.Lines.add(rname + ' 借阅图书:'); memo1.Lines.add(bname); edit1.Clear ; edit2.Clear ; end;

  24. 还书处理 select bno,bname,rdate from borrow,books where borrow.bno = books.bno and rno = :rno delete from borrow where rno=:rno and bno=:bno

  25. 还书处理 procedure TForm7.Button3Click(Sender: TObject); //“确定” begin query2.Close ; query2.ParamByName('rno').Value := edit3.Text ; query2.Open ; //查询读者借书信息 procedure TForm7.Button2Click(Sender: TObject); //“还书” begin query3.Close ; query3.ParamByName('rno').Value := edit3.Text ; query3.ParamByName('bno').Value := query2bno.Value ; query3.ExecSQL ; //删除借书记录,完成还书手续 query2.Close ; query2.Open ; //重新显示该读者还书后的借书信息 end;

  26. 读者信息管理 select rno from borrow where rno= :rno

  27. 读者信息管理 procedure TForm3.Table1BeforeDelete(DataSet: TDataSet); begin //在对数据集当前记录删除之前触发 query1.Close ; query1.ParamByName('rno').Value := table1['rno'] ; //取要删除的当前读者号为参数赋值 query1.Open ; if query1['rno'] <>null then //如果该读者还有书未还 begin showmessage('该读者书未还清,读者记录不能删除'); abort ; //禁止删除 end ; end;

  28. 管理员帐号维护

  29. 新书入库 DBImage1.PasteFromClipboard

  30. 图书资产统计 Query1 select count(*), sum(num), sum(price*num) from books Query2 procedure TForm5.Table1CalcFields(DataSet: TDataSet); begin query2.Close ; query2.ParamByName('bno').Value := table1bno.Value ; query2.Open ; table1bnum.Value := query2.Fields[0].AsInteger ; end; select count(*) from borrow where bno=:bno 永久字段

More Related