1、Delphi课程设计示例 -图书借阅管理系统设计和实现l 图书借阅管理系统提供以下功效:(1)图书管理(图书信息入库、出库、修改)(2)读者管理(读者信息入库、出库、修改)(3)图书查询(按书名、作者、类别等进行条件查询)(4)借书服务(5)还书服务 一、数据库设计:图书表、读者表、借阅表结构以下 图书表结构属性名含义数据类型长度许可空主码或索引约束条件书号书号char10No主码类别图书类别varChar10No索引出版社出版社名称varChar20Yes索引作者作者姓名varChar30Yes索引书名书名varChar30No索引定价定价SmallmoneyYes借出否是否被借出char2
2、No索引默认值为否 读者表结构属性名含义数据类型长度许可空主码或索引约束条件编号读者编号Char8No主码姓名读者姓名VarChar8No索引单位读者单位VarChar20No索引性别读者性别Char2Yes男或女电话读者电话VarChar12Yes借阅表结构属性名含义数据类型长度许可空主码或索引约束条件书号借阅书号Char10No主属性外码(图书 .书号)读者编号借阅者编号Char8No主属性外码(读者 .编号)借阅日期借阅日期datetime8No索引二、数据库实现(ACCESS 环境) 1建立数据库:文件 新建 空数据库 - 指定数据库名称图书读者并指定路径 2定义三个基础表(图书表、读
3、者表、借阅表) 3.向表中输入部分模拟数据。 三、建立Delphi和数据库连接:l 设置ODBC数据源和BDE数据源(1)控制面板管理工具数据源(ODBC)(2)ODBC数据源管理器:用户DSN选项卡添加按纽(3)创建新数据源:Driver do Microsoft Access(*.mdb)(4)ODBC Microsoft Access安装:数据源名称(book-access);选择(图书读者.mdb);确定。(5)打开BDE管理器,确定book-access也是BDE数据源。四使用Delphi编程实现图书馆管理系统部分功效1.图书信息维护模块实现:实现图书统计增加、删除和修改功效l 创建
4、窗体l 添加控件并设置属性: (1)基础表控件Table1(BDE部件):databasename属性(book-access); tablename属性(图书表); active属性(true) (2)数据源控件DataSource1(DataAccess部件): dataset属性(Table1) (3)表格控件DBGrid1(DataControls部件): datasource属性(DataSource1) (4)导航控件DBNavigator1(DataControls部件): datasource属性(DataSource1)2图书查询模块实现:实现按书名查询图书功效l 创建窗体l
5、 添加控件并设置属性:(1)基础表控件Table1(BDE部件):databasename属性(book-access); tablename属性(图书表); active属性(true)。(2)数据源控件DataSource1(DataAccess部件): dataset属性(Table1)(3)表格控件DBGrid1(DataControls部件): datasource属性(DataSource1)l 查询按纽OnClick事件代码(使用GotoKey方法查找数据):procedure TForm1.Button1Click(Sender: TObject);begin if Edit1
6、.text= then showmessage(请输入书名!) else with Table1 dobegin IndexFieldNames:=书名; SetKey; FieldByName(书名).AsString:=Edit1.Text; if GoToKey then else showmessage(查询不成功!); end;end;end.3图书借阅模块实现( 使用SQL语言实现查询数据和添加数据功效):l 创建窗体l 添加控件并设置属性: (1)SQL数据集控件Query1(BDE部件): databasename属性(book-access);SQL属性(select * f
7、rom 图书表); active属性(true)(2)SQL数据集控件Query2(BDE部件): databasename属性(book-access); SQL属性(select * from 读者表); active属性(true)(3)SQL数据集控件Query3(BDE部件): databasename属性(book-access); (5)数据源控件DataSource1(DataAccess部件): dataset属性(query1)(6)数据源控件DataSource2(DataAccess部件): dataset属性(query2) (8)数据编辑框控件DBEdit1(Dat
8、aControls部件): datasource属性(DataSource1);Datafield属性(书名)(9)数据编辑框控件DBEdit2(DataControls部件): datasource属性(DataSource1);Datafield属性(借出否)(10)数据编辑框控件DBEdit3(DataControls部件): datasource属性(DataSource2);Datafield属性(编号)(11)数据编辑框控件DBEdit4(DataControls部件): datasource属性(DataSource2);Datafield属性(姓名) l 审核按纽OnClick
9、事件代码:核实图书信息和读者信息procedure TForm1.Button1Click(Sender: TObject);begin if (edit1.text=) or (edit2.text=) then showmessage(请输入书号和读者编号!) else begin query1.SQL.Clear; query1.SQL.Add(select * from 图书表 where 书号=:a); query1.ParamByName(a).AsString:=trim(edit1.text); query1.Open; query2.SQL.clear; query2.SQL
10、.Add(select * from 读者表 where 编号=:b); query2.ParamByName(b).AsString:=trim(edit2.text); query2.Open; end;end;l 借书按纽OnClick事件代码:在借书表中增加借阅统计;修改图书表中被借书借出否字段值procedure TForm1.Button2Click(Sender: TObject);var instr:string;beginif dbedit2.Text=是 thenshowmessage(该书已经被借出!)elsebegin/将借阅信息写入借阅表instr:=insert i
11、nto 借阅表values(+trim(edit1.text)+,+trim(edit2.text)+,+datetostr(date()+);query3.SQL.Clear;query3.SQL.Add(instr);query3.Execsql;/将借阅信息写入借阅表query3.SQL.Clear;/在图书表中标识借出图书 query3.SQL.Add(update 图书表 set 借出否=:jcfname where 书号=:a); query3.ParamByName(jcfname).AsString:=是; query3.ParamByName(a).AsString:=trim(edit1.text); query3.Execsql; /在图书表中标识借出图书 showmessage(已经完成借书!); end;end;