《图书管理系统需求分析与设计及实现.doc》由会员分享,可在线阅读,更多相关《图书管理系统需求分析与设计及实现.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、图书管理系统的分析与设计1. 设计内容设计开发一个图书管理系统,主要包括如下要求:1) 对读者基本信息的管理,包括读者信息的录入、修改、删除及查询;2) 对图书信息的管理,进行新书入库、现有图书信息修改、删除以及查询;3) 图书借阅的管理;4) 图书归还的管理。2. 设计目的数据库课程设计是为数据库原理及应用课程而独立开设的实践性课程,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。通过本实验达到以下目的:1) 培养具有C/S和B/S模式的数据库应用软件系统的设计和开发能力。2) 熟练掌握一种数据库系统(如SQL SERVER)的使用。3) 熟练掌握一种数据库应用软件开发
2、工具(如ASP、VB、VC)的使用。4) 通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。要求:要求掌握数据库的设计的每个步骤;掌握数据库设计各阶段的设计内容、设计方法和工具。3. 设计过程3.1 需求分析3.1.1 用户需求图书馆在正常运营中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于提高管理效率。(1)对用户信息的管理n 能够对一定数量的读者信息进行存储与管理,这其中包括:读者信息的登记、删除及修改;读者基
3、本信息的查询。 (2)对图书信息的管理n 能够存储一定数量的图书信息,并方便有效地进行书籍数据的操作和管理,这主要包括:图书信息的录入、删除及修改;图书信息的查询,即可根据不同的条件(条形码、书名、类别、作者、书架、出版社等信息)查询读者需要的图书,而读者可根据不同的条件(条形码、图书名称、读者编号、读者姓名、到期时间等信息)查询自己借阅图书的信息。(3)对图书借阅的管理n 借书管理:读者从书架上选取所需图书后,将图书和借阅卡交管理人员,管理人员利用条形码扫描仪及读卡器将图书和借阅卡上的信息读入系统。系统根据借阅卡信息从借阅者的借阅文件中找到相应记录;根据图书信息从图书文件中找到相应记录,读者
4、如果有如下列情况之一将不予办理借书手续。读者所借阅图书已超过该读者允许的最多借书数目。该读者还有已超过归还日期而仍未归还的图书。n 若读者符合所有借书条件时,予以借出。系统在借阅文件中增加一条记录,记入读者编号(学生学号或教师编号)、图书编号(可以使用ISBN号)、借阅日期等内容。(4)对图书归还的管理n 还书管理:还书时,读者将图书交给管理人员,管理员通过条形码扫描仪将图书上的图书条码读入系统,系统从借阅文件上找到相应记录,填上还书日期,同时系统根据借书、还书日期进行计算,判断是否超过归还日期,若未超期则结束过程,若超期则计算出超期天数、罚款数。通知读者交纳罚款。3.1.2数据流图依据用户需
5、求,绘制系统的顶层数据流图,如图3-1所示。第一层数据流图(如图3-2所示),借书处理的数据流图(图3-3),还书处理的数据流图(图3-4)以及入库处理的数据流图(图3-5)。图3-1 顶层数据流图将顶层数据流图分层细化,下面是第一层数据流图(如图3-2所示)。图3-2第一层数据流图图3-3是借书处理的数据流图。图3-3 借书处理的数据流图图3-4是还书处理的数据流图。图3-4 还书处理的数据流图3.1.3 数据字典1. 数据结构字典-数据结构名:借阅者含义说明:借阅者信息组成:借阅者姓名,借阅证号,班级,专业,院系,借书数量-数据结构名: 管理员含义说明: 管理员信息组成: 管理员编号,管理
6、员姓名,职称,负责书库-数据结构名: 图书含义说明: 图书信息组成:图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期-2.数据流字典-数据流名:借阅证说明:借阅者信息数据流来源:借阅者数据流去向:借书处理组成:借阅者姓名,借阅证号,班级,院系-数据流名:图书说明:借阅图书信息数据流来源:借书处理数据流去向:借阅者组成:图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期-数据流名:还书说明:借阅者还书数据流来源:借阅者数据流去向:还书处理组成:借阅者姓名,借阅证号,班级,院系-数据流名:不合格的借阅证说明:借阅证无法使用数据流来源:借
7、书处理数据流去向:借阅者组成:借阅者姓名,借阅证号,班级,院系-数据流名:借书清单说明:借出书目信息数据流来源:借书处理数据流去向:图书库存情况存档组成:图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期-数据流名:还书清单说明:归还书目信息数据流来源:还书处理数据流去向:图书库存情况存档组成:图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期-数据流名:入库新书清单说明:入库新书信息数据流来源:管理员数据流去向:新书入库处理组成:图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期-数据流名:库存清单说明
8、:库存图书信息数据流来源:新书入库处理数据流去向:图书库存情况存档组成:图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期-数据流名:销书计划说明:销毁图书信息数据流来源:管理员数据流去向:销书处理组成:图书编号,图书名称,日期,数量-数据流名:销书清单说明:销毁图书目录数据流来源:销书处理数据流去向:图书库存情况存档组成:图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期-数据流名: 罚款清单数据流来源:罚款处理数据流去向:借阅者组成:管理员编号,借阅证号,借书编号,罚款数目-3. 处理逻辑字典-处理逻辑名: 借书处理含义说明:完成
9、读者对图书的借阅处理输入数据流:借阅证 来源:借阅者输出数据流:(1) 不合格的借阅证 去向:借阅者(2) 图书 去向:借阅者(3) 借书清单 去向:图书库存情况存档,借阅者信息,借阅情况存档 处理:检索“借阅情况存档”,“借阅者信息”,根据借阅者的借阅卡信息,审核借阅者的借阅条件,若不符合条件,则退回借阅卡;若符合条件,则检索“图书在库情况存档”,有在库图书,则完成审核,形成合格的借书单,据此完成图书借阅,并将借书信息加入到“借阅情况存档”,根据借书清单修改“图书库存情况存档”,“借阅者信息”文件。-处理逻辑名: 还书处理含义说明:完成读者对图书的归还处理输入数据流:还书 来源:借阅者输出数
10、据流:还书清单 去向:图书库存情况存档,借阅者信息,借阅情况存档 处理:检索“借阅情况存档”,通过计算图书借阅的时间,审核借阅者所借阅的图书是否过期,若过期则通知借阅者缴纳罚款,并归还图书,若未过期则完成图书入库处理,并根据形成的还书清单,修改“借阅情况存档”、“图书库存情况存档”、借阅者信息”文件。-处理逻辑名: 入库处理含义说明:完成新书入库处理输入数据流:入库新书清单 来源:管理员输出数据流:库存清单 去向:图书库存情况存档 处理:根据管理员提交的入库新书清单完成图书入库处理,并根据形成的库存清单,修改 “图书库存情况存档”文件。-处理逻辑名: 销书处理含义说明:完成图书的出库销书处理输
11、入数据流:销书计划 来源:管理员输出数据流:销书清单 去向:图书库存情况存档 处理:根据管理员提交的销书计划完成图书出库处理,并根据形成的销书清单,修改 “图书库存情况存档”文件。-4. 数据存储字典-数据存储名:图书库存情况存档含义说明:每类图书库存情况输入数据流:借书清单、还书清单、库存清单、销书清单输出数据流:图书库存情况数据存储的组成:图书-数据存储名:借阅情况存档含义说明:借阅者借阅情况输入数据流:借书清单、还书清单输出数据流:借阅情况数据存储的组成:借阅证号,图书编号,管理员编号,借出日期,归还日期,到期日期,拖欠日期,罚款数目-数据存储名:借阅者信息含义说明:借阅者信息输入数据流
12、:借书清单、还书清单输出数据流:借阅者信息数据存储的组成:借阅者-3.1.4 功能模块分析根据用户需求,以及数据流图分析,提取出系统应该实现的功能,如图3-5所示。图3-5 系统功能结构图主要包括: (1)实现对图书信息的修改,包括定义、查询、更新、删除等操作n 图书信息包括图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期等。(2)实现对借阅者信息的修改,包括定义、查询、更新、删除等操作n 借阅者信息包括借阅证号,姓名,班级,院系、借书数量等。(3)实现借书功能n 借书信息的输入,包括借阅证号,图书编号,借出日期,到期日期,归还日期,拖欠日期,罚款数目等。n 借
13、书信息的查询,修改,包括图书编号,借阅证号,借阅者姓名,图书名称,借出日期等。(4)实现还书功能n 还书信息的查询和修改,包括还书信息编号,借阅者编号,姓名,图书编号,图书名称,借书日期,还书日期等。(5)实现销书功能n 对不符合要求的图书进行出库处理,包括图书编号,书名,作者姓名,出版社,出版日期,在库数,所在书库,入库日期,出库日期等。3.2 概念结构设计分析了数据流图及数据字典,列出图书管理系统中涉及到的实体以及基本的E-R图。(1)实体属性图该系统中涉及到的实体有:图书实体、借阅者实体、 管理员实体、书库实体,上述实体对应的属性图见图3-6、图3-7、图3-8以及图3-9所示。图3-6
14、 图书实体属性图图3-7 借阅者实体属性图图3-8 管理员实体属性图图3-9 书库实体属性图 (2)基本E-R图图3-10 基本E-R图3.3 逻辑结构设计3.3.1 关系模型将上述E-R图转换为逻辑模型,其中实体转换为独立的关系模式,多对多联系也转换为独立的关系模式,而一对多联系与n端实体的关系模式进行合并,可得到如下关系模式。图书(图书编号,书名,作者姓名,出版社,出版日期,在库数,入库日期,出库日期,书库编号),其中“图书编号”为主码,“书库编号”为外码。借阅者(借阅证号,姓名,学号,专业,年级,院系,借书数量),其中“借阅证号”是主码。管理员(管理员编号,姓名,职称,书库编号),其中“
15、管理员编号”是主码,“书库编号”为外码。书库(书库编号,书库名称,地点),其中“书库编号”是主码。借阅(借阅证号,图书编号,管理员编号,借出日期,归还日期,到期日期,拖欠日期,罚款数目),其中“借阅证号”、“图书编号”及“管理员编号”共同构成主码。管理(管理员编号,借阅证号),其中“管理员编号”及“借阅证号”共同构成主码。处理(管理员编号,图书编号),其中“管理员编号”及“图书编号”共同构成主码。3.3.2 数据模型优化在“图书”、“借阅者”、“管理员”、“书库”、“借阅”“管理”及“处理”关系模式中,不存在非主属性对码的部分函数依赖以传递函数依赖,因此这些关系模式属于第三范式。3.3.3 视
16、图设计视图是从一个特定的角度来查看数据库中的数据,从数据库系统内部看,一个视图是由SELECT语句组成的查询定义的虚表,它是由一张或多张表中的数据组成的;从数据库系统外部来看,视图就如同一张表,对视图的操作最终转换为对基本表的操作。可以在上述基本表上建立如下视图。表3-1 视图定义编号视图(View)作用(共性:提供数据保密和安全保护机制)V1BookView1便于查询和更新图书的基本信息V2BookView2便于查询和更新图书的入库、出库日期V3BorrowView用于查询当前的借阅信息V4FineView便于查询罚款信息BookView1(图书编号,书名,作者姓名,出版社,出版日期,在库数
17、,书库编号);BookView2(图书编号,书名,入库日期,出库日期);BorrowView(借阅证号,图书编号,管理员编号,借出日期,到期日期);FineView(借阅证号,图书编号,到期日期,拖欠日期,罚款数目)。3.4 物理结构设计根据上述分析,数据库中应包含7张基本表,下面列出了每张表中数据项的定义,见表3-2、表3-3、表3-4、表3-5、表3-6、表3-7以及表3-8所示。表3-2 图书表(Book)列名数据类型约束条件说明BookNoCharPrimary key图书的编号BookNameCharNot Null图书的书名BookWriterCharNot Null图书作者Boo
18、kPulishCharNot Null图书出版社BookPDateDate图书的出版日期BookQuantityIntNot Null图书的在库数量BookInDateNot Null图书入库时间BookOutDateNot Null图书出库时间BookRNoCharForeign Key图书所在书库编号表3-3 借阅者表(Reader)列名数据类型约束条件说明ReaderNoCharPrimary Key借阅证号ReaderNameCharNot Null借阅者姓名ReaderIDCharNot Null借阅者学号ReaderPrefCharNot Null借阅者所属专业ReaderGrad
19、eCharNot null借阅者的年级ReaderDepCharNot null借阅者所在院系BorrowQuantityIntNot null and =10 借书数量表3-4 管理员表(Manager)列名数据类型约束条件说明ManagerNoCharPrimary Key管理员编号ManagerNameCharNot Null管理员姓名ManagerTitleCharNot Null管理员职称BookRNoCharForeign Key管理员所负责的书库编号表3-5 书库表(Stackroom)列名数据类型约束条件说明StackroomNoCharPrimary Key书库编号Stack
20、roomNameCharNot Null书库名称StackroomLocCharNot Null地点表3-6 借阅信息表(Borrow)列名数据类型约束条件说明ReaderNoCharPrimary key借阅证号BookNoCharPrimary key图书的编号ManagerNoCharPrimary Key管理员编号OutDateDateNot Null借出日期BackDateDate归还日期InDateDateNot Null到期日期ArrearsDateDateNot Null拖欠日期FineIntNot Null罚款数目表3-7 管理表(Manage)列名数据类型约束条件说明Man
21、agerNoCharPrimary Key管理员编号BookNoCharPrimary key图书的编号表3-8 处理表(Handle)列名数据类型约束条件说明ManagerNoCharPrimary Key管理员编号ReaderNoCharPrimary key借阅证号根据上述视图的定义,下面列出了每个视图中数据项的定义,见表3-9、表3-10、表3-11以及表3-12所示。表3-9 图书基本信息视图列名数据类型可否为空说明BookNoCharNot Null图书的编号BookNameCharNot Null图书的书名BookWriterCharNot Null图书作者BookPulishC
22、harNot Null图书出版社BookPDateDate图书的出版日期BookQuantityIntNot Null图书的在库数量BookRNoCharNot Null图书所在书库编号表3-10 图书的出入库信息视图列名数据类型可否为空说明BookNoCharNot null图书的编号BookNameCharNot Null图书的书名BookInDateNot Null图书入库时间BookOutDateNot Null图书出库时间表3-11 读者当前借阅信息视图列名数据类型可否为空说明ReaderNoCharNot null借阅证号BookNoCharNot null图书编号ManagerN
23、oCharNot null管理员编号OutDateDateNot Null借出日期InDateDateNot Null到期日期表3-12 罚款信息视图列名数据类型可否为空说明ReaderNoCharNot null借阅证号BookNoCharNot null图书编号InDateDateNot Null到期日期ArrearsDateDateNot Null拖欠日期FineIntNot Null罚款数目数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成的主要任务为确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构。为数据库中各基本表建立索引,如下
24、所示。n 由于基本表Reader,Book的主码ReaderNo,BookNo经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;n 由于基本表Reader的属性ReaderDep,Book的属性BookPublish经常在查询条件中出现,在两个属性上建立聚簇索引;n 借阅信息基本表Borrow的属性ReaderNo, BookNo,经常在查询条件中出现,考虑在其之上建立聚簇索引。4. 系统的实现利用VB、Accesss实现了图书管理系统中,图书信息录入、图书信息查询功能,代码如下:Private Sub Command1_Click() 首页 “进入系统”按
25、钮的事件过程,进入登录窗口首页.Hide登录窗口.ShowEnd Sub如图4-1所示:图4-1 系统首页Private Sub Command1_Click() 登录界面中的“登录”按钮对应的事件过程If Text1 = admin And Text2 = 12345 Then 需要输入账号admin,密码12345,才能进入系统 登录窗口.Hide 登录界面隐藏 主界面.Show 系统主界面出现End IfEnd SubPrivate Sub Command2_Click() “退出”按钮的事件过程,退出系统EndEnd Sub如图4-2所示:图4-2 登录界面系统主界面如图4-3所示:主
26、界面中根据系统结构,设置了四个菜单,每个菜单下有对应的菜单选项,这里只实现了图书录入、图书查询功能。选择图书录入则进入到图4-4所示界面,选择图书查询则进入图4-5所示界面。Private Sub 图书查询_Click() 选择图书查询菜单项进入图书信息查询界面图书信息查询.ShowEnd SubPrivate Sub 图书录入_Click() 选择图书录入菜单项进入图书信息录入界面图书信息录入.ShowEnd Sub图4-3 系统主界面图4-4 图书信息录入界面Private Sub Command1_Click() 图书录入界面中“增加信息”按钮的事件过程Dim sql As String
27、 定义变量sql为字符串类型,下同Dim bookno1 As String Dim bookname1 As StringDim bookwriter1 As StringDim bookpublish1 As StringDim bookin1 As DateDim bookout1 As DateDim bookpdate1 As DateDim bookquantity1 As IntegerDim bookrno1 As StringDim conn As New ADODB.Connection 定义数据库链接Set conn = CreateObject(ADODB.Connec
28、tion)conn.Open Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Persist Security Info=False;Data Source= & App.Path + dbbook.mdb & 链接数据库bookno1 = Trim(Text1(0).Text) 从录入界面的文本框中获取用户输入的数据,即图书信息,下同 bookname1 = Trim(Text2.Text) Trim函数是去掉字符串两边的空格bookwriter1 = Trim(Text3.Text)bookpublish1 = T
29、rim(Text4.Text)bookpdate1 = Trim(Text5.Text)bookin1 = Trim(Text6.Text)bookout1 = Trim(Text7.Text)bookquantity1 = Trim(Text8.Text)bookrno1 = Trim(Text9.Text)sql = insert into 图书表(bookno ,bookname,bookwriter,bookpublish,bookpdate,bookin,bookout,bookquantity,bookrno) values( & bookno1 & , & bookname1 &
30、 , & bookwriter1 & , & bookpublish1 & , & bookpdate1 & , & bookin1 & , & bookout1 & , & bookquantity1 & , & bookrno1 & ) conn.Execute (sql) 向数据库中插入用户输入的数据End SubPrivate Sub Command2_Click() 退出按钮的事件过程,点击该按钮则退出图书录入界面。图书信息录入.HideEnd Sub图4-5 图书信息查询界面Private Sub Command1_Click(Index As Integer) 图书查询界面中“查
31、询”按钮对应的事件过程 Dim sql As String 定义字符串变量 If Check1.Value = 1 Then 如果选择书名前的选项,则按书名进行查询 sql = bookname= & Trim(Text1.Text & ) & End If If Check3.Value = 1 Then If Trim(sql) = Then 如果没有选择书名前的选项,则按作者名进行查询 sql = bookwriter= & Trim(Text2.Text & ) & Else 如果选择书名前的选项,也选择作者名前的选项则查询条件有两个,即书名、作者名, sql = sql & and
32、bookwriter= & Trim(Text2.Text & ) & 按书名、作者查询 End If End If If Trim(sql) = Then MsgBox 请选择查询方式!, vbOKOnly + vbExclamation 如果既没有按书名也没按作者名查询,则给出提示对话框 Exit Sub End If Adodc1.RecordSource = select * from 图书表 where & sql 根据上面形成的查询条件,在数据库中执行SELECT语句,查询满足条件的记录 Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 将查询结果显示在DataGrid1控件中。 DataGrid1.Refresh DataGrid1.AllowAddNew = False 不允许直接在DataGrid1控件中添加、删除、修改记录 DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = FalseEnd SubPrivate Sub Command2_Click() “取消”按钮的事件过程,退出Unload MeEnd Sub