1、Access 数据库应用实例图书借阅管理系统本“图书借阅管理系统”是以实现图书馆借阅工作系统化为目的和背景而设计开发的一个简单系统。图书借阅管理系统主要实现对图书馆工作的信息化管理。本系统实现了对图书的基本信息和会员(图书借阅者)的基本信息的登记、保存、统计和查询等功能,另外还对会员的借阅信息进行了登记、保存、统计并能查询,同时实现了对图书的数据化管理。很大程度上实现了图书馆图书借阅工作的信息化管理。一、系统总体分析与设计根据图书馆借阅场景中为方便图书管理人员工作的需求, “图书借阅管理系统”可以分为对图书的管理、对会员的管理、对借阅过程的管理和对系统的维护等几方面。(1) 图书管理:主要包括
2、对图书基本信息、图书存放位置、图书进出库情况等数据的记录、统计和查询,以方便图书管理人员的工作。(2) 会员管理:主要包括新增会员、会员资料查询和会员的借书、续借、还书和超期情况的查询等。(3) 借阅过程管理:主要包括对图书每日借阅情况的记录、统计和查询,根据不同等级会员借书册数的限制和不同图书限借天数的限制等对图书借阅进行管理。(4) 系统维护:主要包括系统数据维护(如:会员信息数据和图书信息数据)和系统数据备份及还原。 以实现上述需求为目标,经过全面分析,我们可以初步将整个系统划分为“数据管理” 、“借阅管理” 、 “数据查询” 、 “每日统计”和“系统维护”五个子模块,通过分别实现各个子
3、模块的功能来实现整个系统的整体功能。各模块功能如下:(1) 数据管理:包括对图书和会员基本信息数据的管理,这两块又可细分基本信息管理和等级限制设置。本模块主要实现记录浏览、记录增加、记录修改、记录删除和记录打印等功能。(2) 借阅管理:本模块是整个系统的最核心部分,图书借阅管理系统的核心功能基本全部在该模块体现“借书” 、 “续借” 、 “还书” 、 “罚款缴纳” 。该模块对会员借阅图书的全过程进行管理。(3) 数据查询:包括图书查询、会员查询、借阅超期查询、借阅记录查询。通过该模块能够实现对图书信息、会员信息、超过借阅期限而未归还的图书、每本图书及每个读者的历史借阅情况等的查询。(4) 每日
4、统计:包括统计当天借出的图书、续借的图书、归还的图书、到期该归还的图书和新入库的图书等。(5) 系统维护:包括对系统数据库中全部数据信息的维护和系统数据的备份及还原。将上述模块设计图示化后我们便可以得到如图 1 所示的系统功能模块图:图书借阅管理系统数据管理图 书 管 理会 员 管 理借 书图书类别设置会员基本信息管理会员级别设置图书基本信息管理借阅管理还 书续 借罚 款 缴 纳数据查询每日统计系统维护退出系统图 书 查 询会 员 查 询借阅超期查询借阅记录查询今 日 借 出今 日 入 库今 日 还 书今 日 到 期数 据 维 护数 据 备 份备 份 还 原会员表数据维护图书表数据维护图书借阅
5、表数据维护会员级别表数据维护图书类别表数据维护图 1 系统功能模块图二、数据库分析与设计1数据库数据结构分析通过对图书借阅管理的内容和数据分析,创建该管理系统数据库,名为“图书借阅管理系统 mdb ”,主要包含的数据表有“会员表” 、 “会员级别表” 、 “图书表” 、 “图书类别表” 、 “图书借阅表”共五个表。这五个表之间存在着一定的关联关系,各表间的关系如图2 所示:图 2 系统中各表间关系图2数据库逻辑结构设计“图书借阅管理系统”的各个数据库表结构设计如表 1表 5 所示:表 1 “会员表”表结构字段名 数据类型 字段大小 格式 主键 必填字段会员证编号 文本 12 是 是会员级别 文
6、本 8 是会员姓名 文本 8 是会员性别 文本 2 是身份证号 文本 18 是单位名称 文本 50 否单位地址 文本 50 否联系电话 文本 15 否办证日期 日期/时间 短日期 是有效日期 日期/时间 短日期 否照片 OLE 对象 否备注 备注 否表 2 “会员级别表”表结构字段名 数据类型 字段大小 格式 主键 必填字段会员级别 文本 8 是 是限借册数 数字 整型 是表 3 “图书表”表结构字段名 数据类型 字段大小 格式 主键 必填字段图书编号 文本 7 是 是图书分类号 文本 30 是图书类别 文本 30 是书名 文本 50 是作者 文本 50 是出版社 文本 30 是出版日期 日期
7、/时间 短日期 是价格 数字 双精度型 货币 是存放位置 文本 50 是入库时间 日期/时间 短日期 是库存总数 数字 整型 是在库数量 数字 整型 是借出数量 数字 整型 是新书入库 数字 整型 否旧书出库 数字 整型 否借出次数 数字 整型 是备注 备注 否表 4 “图书类别表”表结构字段名 数据类型 字段大小 格式 主键 必填字段图书类别 文本 30 是 是限借天数 数字 整型 是超期罚款/天 数字 双精度型 货币 是表 5 “图书借阅表”表结构字段名 数据类型 字段大小 格式 主键 必填字段 默认值借阅编号 自动编号 长整型 是图书编号 文本 7 是会员证编号 文本 12 是借阅日期
8、日期/时间 短日期 是还书日期 日期/时间 短日期 否罚款已缴 文本 2 是 “否”备注 备注 否3创建数据库和表在数据库数据结构分析和数据库逻辑结构设计完成之后,接下来便可以用 Access 来创建数据库。一般步骤是首先创建数据库,再创建数据表,最后建立表间关系。(1)创建数据库的操作步骤:首先启动 Microsoft Access 2003,通过“文件”菜单中的“新建”命令,创建一个名为“图书借阅管理系统 mdb”的数据库,如图 3 所示:图 3 “新建数据库”文件对话框(2)创建表:在数据库“图书借阅管理系统 mdb ”中通过“使用设计器创建表”如图 4 所示,分别创建“会员表” 、 “
9、会员级别表” 、 “图书表” 、 “图书类别表”和“图书借阅表” ,各表结构如表 1表 5 所示。其中“图书表”表的设计视图如图 5 所示:图 4 新建“表”对象用同样的方法在表设计视图中可以分别创建“会员表” 、 “会员级别表” 、 “图书类别表”和“图书借阅表” 。(3)建立表间关系:单击“工具”菜单的“关系”按钮 ,从打开的关系窗口中建立表间的关系,得到如图 2 所示的关系图。至此,已完成了数据库结构的分析设计和表结构的创建。在各个表中输入相关记录,如图 6图 10 所示:图 5 “图书表”结构图 6 会员表信息图 7 会员级别表信息 图 8 图书类别表信息图 9 图书表信息图 10 图
10、书借阅表信息三、查询的设计与实现在本图书借阅管理系统中,要用到大量的查询功能。Access 2003 提供了 5 种查询:选择查询、参数查询、交叉表查询、操作查询和 SOL 查询。其中操作查询又包括生成表查询、更新查询、追加查询和删除查询 4 种查询。(1) 生成表查询 :这种查询可以根据一个或多个表中的全部或部分数据新建表。生成表查询有助于创建表以导出到其他 Microsoft Access 数据库或包含所有旧记录的历史表。(2) 更新查询 :这种查询可以对一个或多个表中的一个或一组记录作全局更改。使用更新查询可以更改已有表中的数据。(3) 追加查询 :追加查询将一个或多个表中的一组记录添加
11、到一个或多个表的末尾。(4) 删除查询 :这种查询可以从一个或多个表中删除一组记录。 (使用删除查询,通常会删除整个记录,而不只是记录中的部分字段。 )该图书借阅管理系统中主要用到了选择查询、操作查询的更新查询和追加查询,下边我们以实例主要说明一下这几种查询在本系统中的实现方法与过程。1选择查询的设计与实现分析:在实际图书馆图书借阅过程中,会员(借阅者)或者图书馆管理员经常需要对图书借阅情况进行查询,比如查看某本书是否已归还、某人是否未按期归还图书、某本书是否已到归还期或是某本书是否忘记归还了等等。为了解决上述这些问题,我们就需要设置一些相应的查询(一般都是以“选择查询”为居多) 。这些查询能
12、有效地帮我们解决这些问题。步骤:(以“图书借阅超期查询”为例)第一步:选择“在设计视图中创建查询” 。 (见图 11)图 11第二步:分别添加“会员表” 、 “图书表” 、 “图书借阅表”和“图书类别表” 。 (见图 12)见图 12第三步:选择“图书表”中的“图书编号” 、 “书名” 、 “作者” 、 “图书类别” ;“会员表”中的“会员证编号” 、 “会员姓名” 、 “会员级别” ;“图书借阅表”中的“借阅日期” 、“还书日期”字段,然后再设立 2 个新字段“超期天数”和“应还日期” 。这两个新字段是原表中没有的,它们是以原表的部分字段为数据基础,通过数学表达式计算得出的新数据所组成的。
13、(表达式的写入可以通过单击工具栏上的“生成器”按钮 ,打开“表达式生成器”对话框来完成如图 13)最后在“还书日期”字段的“条件”约束栏中写入约束条件“IS NULL”并在“超期天数”字段的“条件”约束栏中写入约束条件“0” (此处正值为有效值,负值是无效值,因为负值说明还未超期,在该查询中无实用意义,故舍去) 。 (见图 14)下边给出这两个新字段的数学表达式:(1)超期天数: Date ()-借阅日期-限借天数 ;(2)应还日期: 借阅日期 +限借天数。图 13图 14第四步:保存查询。 (见图 15)图 15第五步:运行该查询。 (见图 16)图 16其他选择查询的设计可参照“图书借阅超
14、期查询”的设计来进行,如“借阅历史记录查询” 、 “今日借出查询” 、 “今日到期查询” 、 “今日还书查询” 、 “今日入库查询” 、 “借书查询” 、 “还书查询” 、 “续借查询” 、 “罚款查询”等。下边给出上述这几个选择查询的主要设计视图供大家参考: “借阅历史记录查询”主设计视图:(见图 17)图 17 “今日借出查询”主设计视图:字段“借阅日期”须以“Date () ”(当前日期)作为约束条件。 (见图 18)图 18 “今日到期查询”主设计视图:须通过“表达式生成器”建立新字段“应还日期”且以“Date() ”为约束条件,表达式为:应还日期: 借阅日期+限借天数。 (见图 19
15、)图 19 “今日还书查询”主设计视图:字段“还书日期”须以“Date () ”作为约束条件。(见图 20)图 20 “今日入库查询”主设计视图:字段“入库时间”须以“Date () ”作为约束条件。(见图 21)图 21 “借书查询”主设计视图:由于“借书查询” 、 “还书查询” 、 “续借查询” 、 “罚款查询”这 4 个选择查询是专门为“借书窗体” 、 “还书窗体” 、 “续借窗体” 、 “罚款窗体”的功能实现而量身打造的专用查询,故其设计上有别与上述几个一般选择查询。区别主要体现在在这些查询中要设计与相应窗体中控件的功能链接,如大家现在在图 22“借书查询1”和图 23“借书查询 2”
16、(此处将借书查询分为 1 和 2 两部分也是应借书窗体的功能要求而针对设计的)中看到的“图书编号”字段和“会员证编号”字段中的条件约束即为功能链接的一部分。例如“借书查询 1”中的“图书编号”字段的条件“Forms!借书窗体!Text13” 意为与“借书窗体”中的文本框“Text13”相链接,该条件其实起到了一个“指针”的作用(后边几个查询中的相似条件约束的功能与此相同,不再多作解释) 。 “借书查询 1”中的字段“在库数量”的约束条件为“0” ,表示某本书只有在有库存的情况下才允许借出。 (见图 22图 23)图 22图 23 “还书查询”主设计视图:“还书日期”字段的约束条件要设置为“Is
17、 Null”,表示未还的书才会被列出。 (见图 24)图 24 “续借查询”主设计视图:(见图 25)图 25 “罚款查询”主设计视图:须设立 2 个新字段“超期天数”和“罚款数额”且“超期天数”字段的约束条件为“0” ,另外“罚款缴纳”字段的约束条件为“否” ,表示已欠费且未缴纳过罚款的会员才会被列出,未欠费或已缴纳过的会员不会再被列出。下边给出这两个新字段的数学表达式:(1)超期天数: 还书日期-借阅日期- 限借天数 ;(2)Forms! 续借窗体!Text15。 (见图 26)图 262操作查询的设计与实现分析:在“图书借阅管理系统”中,图书的借阅功能是该系统的核心功能,如何实现该功能便
18、是设计该系统的核心问题。我们知道,图书在借出、归还、续借等过程发生后,数据表中的数据就应发生相应的改变(即更新) ,那么在系统中如何实现数据的自动更新或添加呢?答案是利用“操作查询” 。步骤:(以“借书更新”和“借书追加”为例)第一步:在设计视图中创建查询,并添加“会员表” 、 “图书表”和“图书借阅表” 。第二步:将“图书表”中的“图书编号” 、 “借出次数” 、 “借出数量” 、 “在库数量”字段;“会员表”中的“会员证编号”字段;“图书借阅表”中的“还书日期”字段添加进来。并将查询类型设置为“更新查询” (设置方法:在选中查询窗口的情况下在“查询设计菜单栏”中单击“查询类型” 进行更改,
19、或者在查询窗口中的表添加栏中的空白处单击鼠标右键,在弹出的菜单中选择查询类型) 。 (见图 27图 28)图 27图 28第三步:对各个字段的更新条件进行设置。 (如图 29)图中“借出次数” 、 “借出数量” 、 “在库数量”三个字段的“更新到”一栏中的条件表示当借书操作使得某本图书被借出时,相应数据表中的原数据应该根据这一条件更新为新数据。约束条件“0”表示只有当该书有库存的情况下才能借出;而字段“图书编号”和“会员证编号”的约束条件“Forms! 借书窗体 !Text13”和“Forms!借书窗体!Text14”与前边在选择查询中提到的条件一样,是查询与相应窗体中控件的功能链接条件。图
20、29第四步:保存该“更新查询” 。 (如图 30)图 30第五步:再在设计视图中创建查询,并添加“会员表” 、 “图书表”和“图书借阅表” 。第六步:将查询类型更改为“追加查询”并将所需的字段添加进来。第七步:对所需追加记录的字段进行追加条件限制。 (如图 31)追加查询与更新查询不太一样,它的工作原理是将“字段”中的表达式数值“追加”到相应的数据表字段中。如:对表达式 3 的操作即是将“Date () ”(当前日期)这一新数据追加到图书借阅表的借阅日期这一字段的数据中。至于表达式 1和表达式 2 则是功能链接条件。图 31第八步:保存该“追加查询” 。 (如图 32)图 32其他需用到操作查
21、询的查询设计可参照“借书更新”和“借书追加”的设计来进行,如“还书更新” 、 “罚款更新” 、 “续借更新” 、 “续借追加”等。下边给出上述这几个操作查询的主要设计视图供大家参考: “还书更新”主设计视图:(见图 33)图 33 “罚款更新”主设计视图:(见图 34)图 34 “续借更新”主设计视图:(见图 35图 36)此处将续借功能的实现变通为以先还再借的方式来实现,故将“续借更新”分为两块:先还“续接更新 1”;再借“续借更新 2”。图 35图 36 “续借追加”主设计视图:(见图 37)图 37四、窗体的设计与实现窗体是 Access 2003 数据库系统的一个重要对象。前面介绍的浏
22、览记录、显示查询结果等都是在“数据表”视图中所进行的操作,只能用于对表的一般维护。如果要改变表记录的显示界面,则需要通过界面窗口来添加、修改、删除记录或改变应用程序控制流程,这就需要数据库的一个重要组件窗体。窗体是用户与数据之间的主要窗口,使用窗体可以对数据库进行查询、修改、添加和打印等操作,而且可以灵活的设计窗体的布局。窗体按其功能可以分为数据窗体、流程控制面板窗体和交互窗体。(1) 数据窗体:主要用来显示、浏览、添加、修改、删除表或查询中的记录。 (如图 38)图 38(2) 流程控制面板窗体:主要用来控制应用程序的运行流程。 (如图 39)图 39(3) 交互窗体:是在不同的状态下,给出
23、系统提示信息或要求用户输入的窗口。(如图 40)图 40在 Access 2003 数据库中,窗体有设计视图、窗体视图、数据表视图、数据透视表视图和数据透视图视图 5 种视图,它们之间可以通过工具栏“视图”按钮进行切换。 (见下图)我们将主要介绍使用设计视图创建窗体的方法。使用窗体的设计视图来创建、修改和美化窗体,窗体的设计视图一般由窗体页眉/页脚、页面页眉 /页脚和主体 5 部分组成。一般情况下,窗体的页眉/页脚很少用到,而主体是窗体的核心,通过在主体中添加控件可以实现对数据的管理功能。1使用窗体向导创建窗体使用“窗体向导”可以创建使用“自动创建窗体” (“自动创建窗体”所创建的窗体较粗糙,
24、一般在用户对窗体效果要求不高时使用)所创建的 5种类型的窗体,不同之处在于窗体中的数据可以来源于一个或多个表与查询。在使用“窗体向导”创建窗体时,可以重新设置字段的排列顺序。下面我们以创建“会员基本信息管理窗体”为例说明一下利用“窗体向导”来创建窗体的过程。第一步:双击“使用向导创建窗体” ,打开窗体向导设计界面。 (见图 41)图 41第二步:在“表/查询” 栏中选择“表:会员表”项,并将其中要用到的字段全部添加到“选定的字段”中。 (见图 42)图 42第三步:选择窗体布局。Access 中有“纵栏表” 、 “表格” 、 “数据表” 、 “两端对齐” 、“数据透视表”和“数据透视图”6 种
25、可供选择的布局类型,在这里我们以“两端对齐”为例。 (见图 43)图 43第四步:选择窗体样式。Access 中有“国际” 、 “宣纸” 、 “工业” 、 “标准” 、 “水墨画”和“砂岩” 、 “混合” 、 “石头” 、 “蓝图”和“远征”10 种默认的可供选择的布局类型,在这里我们以“标准”为例。 (图 44)图 44第五步:确定窗体的标题。这一步除了指定窗体标题外,我们还可以选择在向导设置完成后我们是要“打开窗体查看或输入信息”还是“修改窗体设计” 。由于一般情况下通过向导创建的窗体不可能尽善尽美,有很多地方需要做适当的添加和修改,所以我们通常都选择“修改窗体设计”项并完成创建。 (见图
26、45)图 45第六步:在“会员基本信息管理窗体”的设计视图中对窗体的大小、各个字段的位置和顺序进行调整,并添加“标签”“会员基本信息”和 8 个命令按钮“转至上一条记录” 、 “转至最后一条记录” 、 “添加记录” 、 “保存记录”等。(见图 46)图 46说到控件,Access 的窗体设计很大程度表现在窗体控件的使用上。控件是窗体中用于显示数据、执行操作命令或修饰窗体的一种对象。在窗体设计视图窗口中,单击工具栏上的“工具箱”按钮 ,屏幕出现控件“工具箱”工具栏。工具箱中包括各种控件按钮,如标签、文本框、选项组、复选框、列表框、组合框、绑定对象框、未绑定对象框、选项按钮、命令按钮、切换按钮、分
27、页符、选项卡控件、子窗体/ 子报表、矩形、直线、图像等。下面以“转至下一条记录”命令按钮的添加为例来简单说明一下窗体控件的使用。(1)单击“工具箱”中的“命令按钮” ,然后将鼠标移至窗体设计视图界面中要添加该命令按钮的地方单击鼠标左键进行命令按钮的添加。 (如图 47)图 47(2)在弹出的“命令按钮向导”窗口中选择该按钮所要执行的命令或其该具备的功能。(如图 48)图 48(3)选择按钮的显示类型。Access 支持两种显示方式:“文本”型和“图片”型。我们以“图片”型为例进行说明。 (如图 49)图 49(4)为命令按钮命名。 (如图 50)图 50第七步:窗体最终效果预览与功能验证。 (
28、如图 51)图 51可用同样方法创建“会员级别设置窗体” 、 “图书基本信息管理窗体” 、 “图书类别设置窗体”等窗体。下边列出上述几个窗体的主要设计视图: “会员级别设置窗体”设计视图:(如图 52)图 52 “图书基本信息管理窗体”设计视图:(如图 53)图 53 “图书类别设置窗体”设计视图:(如图 54)图 542使用窗体设计视图创建窗体利用设计视图创建窗体随意性很大,你可以完全按照自己的想法或用户具体的需求有针对性的进行窗体设计。下面我们以“还书窗体”为例来对运用设计视图创建窗体的过程步骤进行说明。第一步:双击“在设计视图中创建窗体” ,打开窗体视图设计界面。 (见图 55)图 55
29、第二步:调整窗体“主体”大小到所需的值。 (见图 56)图 56第三步:添加所需的窗体控件。 (见图 57图 58)标 签“还书”标签(Label0 ) ;文 本 框 “会员证编号”文本框(Text11)和“图书编号”文本框(Text12 ) ;命令按钮“确定”按钮(Command11)和“还书”按钮(Command12) ;子 窗 体“还书子窗体”窗体(Child15) 。图 57图 58其中“还书子窗体”窗体只是对“还书查询”查询(已在前边查询的设计与实现部分介绍过)的窗体化,即“还书子窗体”的记录源是“还书查询” 。“还书子窗体”的主要设计视图如图 59。图 59第四步:设置各控件的数据连接或事件过程。 (见图 60图 65)“子窗体”控件的数据源对象为“还书子窗体” 。 (见图 60)