课程设计样板1884董坤.docx

上传人:b****3 文档编号:6555165 上传时间:2023-05-10 格式:DOCX 页数:30 大小:4.19MB
下载 相关 举报
课程设计样板1884董坤.docx_第1页
第1页 / 共30页
课程设计样板1884董坤.docx_第2页
第2页 / 共30页
课程设计样板1884董坤.docx_第3页
第3页 / 共30页
课程设计样板1884董坤.docx_第4页
第4页 / 共30页
课程设计样板1884董坤.docx_第5页
第5页 / 共30页
课程设计样板1884董坤.docx_第6页
第6页 / 共30页
课程设计样板1884董坤.docx_第7页
第7页 / 共30页
课程设计样板1884董坤.docx_第8页
第8页 / 共30页
课程设计样板1884董坤.docx_第9页
第9页 / 共30页
课程设计样板1884董坤.docx_第10页
第10页 / 共30页
课程设计样板1884董坤.docx_第11页
第11页 / 共30页
课程设计样板1884董坤.docx_第12页
第12页 / 共30页
课程设计样板1884董坤.docx_第13页
第13页 / 共30页
课程设计样板1884董坤.docx_第14页
第14页 / 共30页
课程设计样板1884董坤.docx_第15页
第15页 / 共30页
课程设计样板1884董坤.docx_第16页
第16页 / 共30页
课程设计样板1884董坤.docx_第17页
第17页 / 共30页
课程设计样板1884董坤.docx_第18页
第18页 / 共30页
课程设计样板1884董坤.docx_第19页
第19页 / 共30页
课程设计样板1884董坤.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

课程设计样板1884董坤.docx

《课程设计样板1884董坤.docx》由会员分享,可在线阅读,更多相关《课程设计样板1884董坤.docx(30页珍藏版)》请在冰点文库上搜索。

课程设计样板1884董坤.docx

课程设计样板1884董坤

 

重庆大学

基础性实践环节(数据库)实践报告

 

实践课程名称数据库原理

开课实验室数理学院理科楼201实验室

学院数理学院年级2005级专业班信息与计算科学一班

学生姓名董坤学号20051884

开课时间2007至2008学年第一学期

 

总成绩

教师签名

 

数理学院制

课程名称

《数据库原理》

实践课时

20学时

实践项目

重庆大学图书馆管理系统

实践时间

2007.5.8--2007.5.20

实践目的

图书馆管理是任何学校都要涉及的内容,其中包括对读者基本信息的管理以及图书管理,这就要求对这些数据进行统一管理,制作一个简便易操作的系统是很有必要的。

通过对本系统得设计,可以增强我们对数据库知识的理解。

更好的掌握面向对象编程的BorlandDelphi的编程技巧,体现其在数据库设计方面的优越性和简易性,使得系统变得更为人性化、智能化。

下面是对课程设计的具体实验目的:

(1)掌握BorlandDelphi中常见的控件的作用并能熟练运用。

(2)掌握数据库系统设计的思路以及基本方法。

(3)通过实际例子的制作,体会数据库原理课程的基本概念和基本知识在实例中的运用,最后体会理论知识在实际中的体现。

实践环境

Delphi6.0

实践内容(算法、程序、步骤和方法)

一、系统功能的分析与设计

本系统将涉及多个窗体的制作,从而实现多个管理的功能,其中涉及图书信息、系统用户信息、读者信息、图书借阅信息等多种数据管理。

从管理角度出发可将图书管理分为三类:

图书信息管理、系统用户管理和读者数据管理。

图书信息管理包括图书征订、编目、典藏、借还和查询操作,系统用户管理包括系统用户类别和用户数据管理,读者数据管理包括读者类别管理和读者个人数据的录入、修改、删除。

重庆大学图书管理系统主要具有如下的一些功能:

1)图书征订:

包括图书征订数据的录入、修改、编辑等功能。

2)图书编目:

包括图书编目信息的录入、修改等功能。

3)图书典藏:

包括新书分配、库室调配等功能。

4)图书流通:

包括图书借阅、续借,图书返还,图书书目查询等功能。

5)系统用户管理:

包括系统用户数据的录入、修改、删除等功能。

6)读者数据管理:

包括读者类别管理,读者个人数据的录入、修改、删除等功能。

根据分析,图书管理系统主要的功能模块如下图所示:

二、数据表结构设计与创建

按照系统创建的顺序,首先是建立系统创建所必要的数据表的逻辑结构和物理结构。

1、图书信息表

图书信息管理的表,它分别包含了图书代码、图书名称、图书类别、图书作者、出版社、借出日期、图书价格、备注共8项,具体定义由下表反映:

图1图书信息表的逻辑结构

在图书信息数据表的逻辑结构定义中,将图书代码字段定义为关键字段,因为在图书管理系统中,图书代码是不能重复的,每本图书必须有惟一的一个代码。

此外,关键字段的建立处使该字段记录的数据具有惟一性之外,关键字段是进行数据表之间连接的重要手段。

往往在数据表之间的连接中,是通过一个数据表的关键字段与另外的数据表的关键字段或第二索引的字段进行关联,从而将两个数据表的记录有机的联系起来。

因此,为一个数据表建立关键字段或第二索引是非常重要的。

通过数据库桌面工具就可以根据图书信息表的逻辑结构创建它的物理结构,如下图所示:

图2图书信息表

当表建立完后,可以将其保存在特定路径的文件夹中,在后面的系统界面制作中将引用,我将其安排的保存位置为:

“D:

\Delphi”,保存的数据表名为“book.db”。

2、读者信息表

它包括读者号、读者姓名、性别、备注共4项内容,将读者号设为主键,因为读者号是唯一的,能唯一识别。

读者信息表的逻辑结构,如下图所示:

图3读者信息表的逻辑结构

通过数据库桌面工具就可以根据客房表的逻辑结构创建它的物理结构,如下图所示:

图4读者信息表

读者信息表建立好后,保存到“D:

\Delphi”里,保存的数据表名为“reader.db”。

3、借还信息表

它包括订单号、位置、房间号等内容,订单号、位置、房间号都设置为第二索引,用于和其他表建立关联。

它的逻辑结构定义结构如下:

图5借还信息表的逻辑结构

通过数据库桌面工具就可以根据客房表的逻辑结构创建它的物理结构,如下图所示:

图6借还信息表

借还信息表建立好后,保存到“D:

\Delphi”里,保存的数据表名为“owner.db”。

4、创建数据库别名

以上表格均保存在“D:

\Delphi”中,因此在窗体制作或报表中调用数据表名时需要用到新的数据库别名,这里我们创建新的数据库别名为“STANDARD1”,别名连接的路径为“D:

\Delphi”。

三、创建工程与系统权限认证界面设计

在系统所需要的一切数据表完成后,就可以着手进行系统界面的设计与创建了,一般进入主控界面前都会有权限认证界面,因此,我们把系统启动界面作为Form1,权限认证界面设置为Form2。

其窗体创建的过程如下:

新建一个工程,保存工程和相应的单元文件。

其中启动界面如图7所示:

图7启动窗体

在系统启动窗体的制作中,对“进入系统”按钮编写相关的过程代码如下:

procedureTForm1.SpeedButton1Click(Sender:

TObject);

begin

Form2.show;

end;

对“退出系统”编写代码为:

procedureTForm1.SpeedButton2Click(Sender:

TObject);

begin

close;

end;

权限认证界面如图7所示:

图8权限认证窗体

在权限认证窗体的制作中,对“Load”按钮编写相关的过程代码如下:

procedureTForm2.SpeedButton1Click(Sender:

TObject);

begin

if(combobox1.text='管理员')and(edit1.text='dk')and(edit2.text='20051884')thenbegin

form3.show;form2.Hide;

endelsebegin

if(combobox1.text='学生')and(edit1.text='111111')and(edit2.text='111111')thenbegin

form14.show;form2.Hide;

endelsebegin

showmessage('你无权进入该系统');

end;

end;

end;

对“Exit”按钮编写相关的过程代码如下:

procedureTForm2.SpeedButton2Click(Sender:

TObject);

begin

close;

end;

四、系统主控界面设计

通常一个系统必须存在一个主控界面,主控界面是调用其他界面的截体,本系统的主控界面和它的基本结构如下图:

图9系统主控界面

在窗体上依次放上控件,各控件描述如表所示:

表1

控件类型

控件名称

描述

窗体控件Form

Form3

图书馆管理程序的主窗体,Caption属性设置为“图书室管理”;FormStyle属性设置为fsMDIForm

主菜单控件MainMenu

MainMenu1

用于为应用程序提供主菜单,这分别是:

查询、图书借阅、数据维护、安全设置、帮助、退出系统

图书信息查询

SpeedButton1

查询菜单下的子菜单Caption属性设置为“图书查询”

读者信息查询

SpeedButton2

查询菜单下的子菜单Caption属性设置为“读者查询”

在库图书查询

SpeedButton3

查询菜单下的子菜单Caption属性设置为“在库图书查询”

出借图书

SpeedButton4

借阅菜单下的子菜单Caption属性设置为“出借图书”

归还图书

SpeedButton5

借阅菜单下的子菜单Caption属性设置为“归还图书”

图书登记

SpeedButton6

数据维护下的子菜单Caption属性设置为“图书登记”

读者登记

SpeedButton7

数据维护下的子菜单Caption属性设置为“读者登记”

安全设置

SpeedButton8

用于安全维护,Caption属性设置为“密码设置”

帮助

Help

Caption属性设置为“帮助”

退出系统

ExitMenu

Caption属性设置为“退出系统”

状态栏控件StatusBar

StatusBar1

用于显示系统状态信息

在状态栏中放入一个Timer1,为状态条显示日期和时间编程,双击Timer控件编写代码如下:

procedureTForm3.Timer1Timer(Sender:

TObject);

begin

statusbar1.SimpleText:

=Datetostr(Date)+''+timetostr(time);

end;

对SpeedButton控件编写程序,使得鼠标指向控件时,控件变为红色,鼠标离开时,控件变回黑色,其中代码如下:

procedureTForm3.Label4MouseLeave(Sender:

TObject);

begin

ifSenderisTLabelthen

TLabel(Sender).Font.Color:

=clBlack;

end;

procedureTForm3.Label8MouseLeave(Sender:

TObject);

begin

ifSenderisTLabelthen

TLabel(Sender).Font.Color:

=clBlack;

end;

五、其它功能窗体(管理员)的设计

1、图书信息查询窗体的设计

该窗体的主要功能是对图书各相关信息的查询,其中窗体的基本设置结构布局如图:

图10图书信息查询窗体

窗体制作主要过程如下:

(1)在窗体中放入一个Table1,设置其属性DataBaseName为STANDARD1,

TableName为“book.db”,Active为True。

(2)在窗体中添加一个DataSource1,设置其DataSet为Table1。

(3)在窗体中放入一个DBGird1,设置其DataSource为DataSource1。

(4)放入一个DBNavigator1,设置DataSource为DataSource1。

在窗体插入的控件中,数据表控件和数据源控件以及数据导航控件都是相联系

的。

对“查询”按钮编写相关的过程代码如下:

procedureTForm4.BitBtn1Click(Sender:

TObject);

var

gjz,gjzsz:

string;

begin

gjz:

=combobox1.Text;

gjzsz:

=edit1.Text;

if(gjz='')and(gjzsz='')then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('frombook');

sql.Add('orderbyCode');

prepare;

open;

end

elseif(gjz<>'')and(gjzsz='')then

showmessage('请输入"查询关键字设置"信息!

')

elseif(gjz='')and(gjzsz<>'')then

showmessage('请选择"查询关键字选择"信息!

')

else

begin

gjzsz:

=gjzsz+'%';

ifgjz='图书编号'then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('frombook');

sql.Add('whereCodelike:

gjzszname');

sql.Add('orderbyCode');

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end

else

begin

gjzsz:

=gjzsz+'%';

ifgjz='图书名称'then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('frombook');

sql.Add('whereNamelike:

gjzszname');

sql.Add('orderbyCode');

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end

else

begin

gjzsz:

=gjzsz+'%';

ifgjz='图书类别'then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('frombook');

sql.Add('whereClasslike:

gjzszname');

sql.Add('orderbyCode');

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end

else

begin

gjzsz:

=gjzsz+'%';

ifgjz='图书作者'then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('frombook');

sql.Add('whereAuthorlike:

gjzszname');

sql.Add('orderbyCode');

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end

else

begin

gjzsz:

=gjzsz+'%';

ifgjz='出版社'then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('frombook');

sql.Add('whereConcernlike:

gjzszname');

sql.Add('orderbyCode');

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end;

end;

end;

end;

end;

end;

end;

报表打印与预览窗体如下所示:

图11报表打印与预览窗体

2、读者信息查询窗体设计

该窗体的主要功能是对读者相关信息的查询,其中窗体的基本设置结构布局如图:

图12读者信息查询窗体

该窗体的制作同“图书信息查询窗体”的制作相同,其“查询”控件的代码为:

procedureTForm5.BitBtn1Click(Sender:

TObject);

var

gjz,gjzsz:

string;

begin

gjz:

=combobox1.Text;

gjzsz:

=edit1.Text;

if(gjz='')and(gjzsz='')then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('fromreader');

sql.Add('orderbyIdcard');

prepare;

open;

end

elseif(gjz<>'')and(gjzsz='')then

showmessage('请输入"查询关键字设置"信息!

')

elseif(gjz='')and(gjzsz<>'')then

showmessage('请选择"查询关键字选择"信息!

')

else

begin

gjzsz:

=gjzsz+'%';

ifgjz='借书证号'then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('fromreader');

sql.Add('whereIdcardlike:

gjzszname');

sql.Add('orderbyIdcard');

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end

else

begin

gjzsz:

=gjzsz+'%';

ifgjz='读者姓名'then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('fromreader');

sql.Add('whereNamelike:

gjzszname');

sql.Add('orderbyIdcard');

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end

else

begin

gjzsz:

=gjzsz+'%';

ifgjz='读者性别'then

withquery1do

begin

close;

sql.Clear;

sql.Add('select*');

sql.Add('fromreader');

sql.Add('whereSexlike:

gjzszname');

sql.Add('orderbyIdcard');

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end;

end;

end;

end;

end;

报表打印与预览窗体如下所示:

 

图13报表打印与预览窗体

3、在库图书查询窗体设计

该窗体的主要功能是对在库图书信息的查询,其中窗体的基本设置结构布局如图:

 

图14在库图书查询窗体

该窗体的制作同“图书信息查询窗体”的制作相同,其“查询”控件的代码为:

procedureTForm6.BitBtn1Click(Sender:

TObject);

var

gjz,gjzsz,jc:

string;

begin

gjz:

=combobox1.Text;

gjzsz:

=edit1.Text;

jc:

='借出';

if(gjz='')and(gjzsz='')then

withquery1do

begin

close;

sql.Clear;

sql.Add('selectbook.code,book.name,reader.idcard,reader.name,owner.landdate');

sql.Add('fromowner,book,reader');

sql.Add('where(book.code=owner.code)and(reader.idcard=owner.idcard)

and(owner.memo=:

jcname)');

sql.Add('orderbybook.code');

parambyname('jcname').AsString:

=jc;

prepare;

open;

end

elseif(gjz<>'')and(gjzsz='')then

showmessage('请输入"查询关键字设置"信息!

')

elseif(gjz='')and(gjzsz<>'')then

showmessage('请选择"查询关键字选择"信息!

')

else

begin

gjzsz:

=gjzsz+'%';

ifgjz='图书编号'then

withquery1do

begin

close;

sql.Clear;

sql.Add('selectbook.code,book.name,reader.idcard,reader.name,owner.landdate');

sql.Add('fromowner,book,reader');

sql.Add('where(book.code=owner.code)and(reader.idcard=owner.idcard)

and(owner.memo=:

jcname)and(book.codelike:

gjzszname)');

sql.Add('orderbybook.code');

parambyname('jcname').AsString:

=jc;

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end

elseifgjz='图书名称'then

withquery1do

begin

close;

sql.Clear;

sql.Add('selectbook.code,book.name,reader.idcard,reader.name,owner.landdate');

sql.Add('fromowner,book,reader');

sql.Add('where(book.code=owner.code)and(reader.idcard=owner.idcard)

and(owner.memo=:

jcname)and(book.namelike:

gjzszname)');

sql.Add('orderbybook.code');

parambyname('jcname').AsString:

=jc;

parambyname('gjzszname').AsString:

=gjzsz;

prepare;

open;

end

elseifgjz='借书证号'then

withquery1do

begin

close;

sql.Clear;

sql.Add('selectbook.code,book.name,reader.idcard,reader.name,owner.landdate');

sql.Add('fromowner,book,reader');

sql.Add('where(b

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2