图书管理系统需求分析信息需求:为了加强图书的管理,设计图书管理系统,方便用户借阅、管理员管理,减少管理员的工作量。1)主要信息需求1.图书信息:简介、出版日期、出版社、作者、书名、书号2.读者信息:姓名、性别、读者编号、所在系、联系电话3.借阅信息:借书日期、还书日期、工作号、书号、是否续借、读者编号4.管理员信息:姓名、性别、电话、工资、工作号5.管理_书籍信息:工作号、书号、添加时间、是否在馆6.管理_读者信息:工作号、读者编号、借还确认、违章情况、累计借书2)信息间的主要联系1.一个读者可以借阅多本书籍(1:m)2.一本图书可以被一个读者借阅(1:1)3.一个图书管理员可以管理多个读者(1:n)4.一个读者信息只能被一个图书管理员管理(1:1)5.一本图书可以被多个图书管理员管理(1:n)6.一个图书管理员可以管理多本图书(1:m)处理需求:1.借阅功能:可以方便地借阅图书、续借图书、归还图书2.查询功能:按图书编号查找图书、按图书名称查找图书、按图书作者查找图书、能够按照自己的图书证编号查询自己的状态信息3.读者注册功能:能够对新的读者进行登记,或注销读者的信息4.图书录入功能:能够将新到的图书信息输入到系统的图书信息库中5.统计功能:按图书编号统计书籍数量、按图书名称统计数量、按作者统计书籍数量安全性需求1.管理员的权限最高,可以查询、修改借阅关系表、管理员_书籍表、管理员_读者表2.读者,可以查看图书基本信息、个人自己的借阅信息。不可以对其中的信息进行添加、修改等操作。完整性需求1.在图书管理信息表中,书号、书名、作者、出版社、出版日期、简介输入信息的时候都有类型、长度要求。书号、书名、作者不能为空,其中书号为主码2.在读者信息表中,其中的各类信息都有类型、长度要求。读者编号、读者姓名、读者性别、所在系不能为空,读者编号为主码3.在管理员信息表中,其中的各类信息都有类型、长度要求。工作号、姓名、性别不能为空,工作号为主码4.在借阅关系表中,其中的各类信息都有类型、长度要求,且均不可为空。工作号、书号为外码5.在管理员_书籍表中,其中的各类信息都有类型、长度要求。工作号、书号不能为空,且为外码6.在管理员_读者表中,其中的各类信息都有类型、长度要求,均不可为空。工作号、读者编号为外码程序流程图图1读者借阅图书,系统查询图书是否在馆。若已借出,显示借出;未借出进行下一步,图书管理员将书借出并登记相关信息。数据流图顶层数据流图添加图书图书信息借出信息借书图书还书拒绝信息修改信息查询图2读者借阅图书判断图书是否在馆图书管理员管理所借图书借阅图书管理系统管理员管理员读者读者第0层数据流图所借图书信息借书借书拒绝借书库存信息借书信息查询信息还书违章情况图3第一层数据流图第一次借书借书信息借书编号存在借出图书借书累计过多、无库存拒绝借出库存信息图4.借书的数据流图借书审核借书还书审核查询读者编号建档借书审核修改图书信息还书借书信息库存信息图5.还书的数据流图查询要求借书信息表库存图书信息表查询结果图6.查询的数据流图还书审核修改图书信息使用者查询选择读者信息图书信息查询图书统计查询使用者数据字典1.数据项数据项名数据项含义说明数据类型长度与其他数据项的逻辑关系读者编号读者相关信息整型10决定要借阅的图书读者姓名读者相关信息字符型6读者性别读者相关信息字符型2联系电话读者相关信息整型7所在系读者相关信息字符型10书名图书相关信息字符型20作者图书相关信息字符型6出版社图书相关信息字符型20管理员工作号管理员相关信息整型10管理图书的借还管理员姓名管理员相关信息字符型6管理员性别管理员相关信息字符型2借书日期借书相关信息整型10还书日期借书相关信息整型102.数据结构数据结构名含义说明组成图书信息表定义图书的相关信息简介、出版日期、出版社、作者、书名、书号读者信息表定义读者的相关信息姓名、性别、读者编号、所在系、联系电话管理员信息表定义管理员的相关信息姓名、性别、电话、工资、工作号借阅关系表定义借阅图书的相关信息借书日期、还书日期、工作号、书号、是否续借、读者编号管理员_书籍信息表定义管理员与图书的有关信息工作号、书号、添加时间、是否在馆管理员_读者信息表定义管理员与学生的有关信息工作号、读者编号、借还确认、违章情况、累计借书3.数据流数据流名来源去向组成借书读者、图书借书审核读者编号、书名、读者姓名、借书日期还书图书、读者还书审核读者编号、书名、还书日期4.数据存储数据存储名组成借书信息姓名、性别、读者编号、所在系、联系电话、管理员姓名库存信息简介、出版日期、出版社、作者、书名、书号、是否在馆5.处理过程处理过程名含义说明输入输出借书过程查看图书是否被借出图书信息借阅信息还书过程查看借阅图书的信息读者信息图书信息概念结构设计局部E-R图1.读者—借阅—图书一个读者可以借阅多本书籍(1:m)一本图书可以被一个读者借阅(1:1)图1.借阅关系E—R图所在系性别姓名违章数读者编号读者借阅借书日期还书日期图书出版日期出版社作者书名书号1m累计借书简介联系电话2.管理员—管理—读者一个图书管理员可以管理多个读者(1:n)一个读者信息只能被一个图书管理员管理(1:1)图2.管理员_读者关系E—R图3.管理员—管理—图书一本图书可以被多个图书管理员管理(1:n)一个图书管理员可以管理多本图书(1:m)图3管理员_图书关系E—R图所在系性别姓名违章数读者管理借还确认管理员电话工作号性别姓名n1累计借书读者编号工资性别工作号电话工资管理员管理添加时间是否在馆图书出版日期出版社作者书名书号nm姓名简介联系电话全局E-R图图4.系统全局E—R图所在系性别姓名违章数读者借阅借书日期图书出版日期出版社作者书名书号1m累计借书读者编号简介还书日期管理管理n,m确认借还m添加时间是否在馆管理员1n电话工资工作号管理员姓名管理员性别联系电话逻辑概念设计将E-R图转化为关系模式1.读者(读者编号、读者姓名、读者性别、联系电话、所在系、违章情况、累计借书)2.图书(书号、书名、作者、出版社、出版日期、简介)3.管理员(工作号、姓名、性别、电话、工资)4.借阅(读者编号、书号、是否续借、借书日期、还书日期)5.管理员_图书(工作号、书号、添加时间、是否在馆)6.管理员_读者(工作号、读者编号、确认借还)数据模型优化将数据关系模式优化,最终达到第三范式。优化后的关系模式:1.读者(读者编号、读者姓名、读者性别、联系电话、所在系、违章情况、累计借书)2.图书(书号、书名、作者、出版社、出版日期、简介)3.管理员(工作号、姓名、性别、电话、工资)4.借阅(读者编号、书号、是否续借、借书日期、还书日期)5.管理员_图书(工作号、书号、添加时间、是否在馆)6.管理员_读者(工作号、读者编号、确认借还)物理概念设计数据的存储结构根据以上的逻辑概念设计,得出各类数据的存储结构1.图书信息表字段名称数据类型长度约束属性书号char20NOTNULL主码书名char50NOTNULL非主属性作者char20NOTNULL非主属性出版社char50非主属性出版日期data非主属性简介char200非主属性2.读者信息表字段名称数据类型长度约束属性读者编号char20NOTNULL主码读者姓名char10NOTNULL非主属性读者性别char2NOTNULL非主属性联系电话char10非主属性所在系char20NOTNULL非主属性违章情况char2非主属性累计借书int非主属性3.管理员信息表字段名称数据类型长度约束属性工作号char12NOTNULL主码姓名char20NOTNULL非主属性性别char2NOTNULL非主属性电话char12非主属性工资char12非主属性4借阅关系表字段名称数据类型长度约束属性工作号char12NOTNULL外码书号char20NOTNULL外码读者编号char20NOTNULL非主属性借书日期dataNOTNULL非主属性还书日期dataNOTNULL非主属性是否续借char4NOTNULL非主属性5管理员_图书表字段名称数据类型长度约束属性工作号char12NOTNULL外码书号char20NOTNULL外码添加时间data非主属性是否在馆char14非主属性6.管理员_读者表字段名称数据类型长度约束属性工作号char12NOTNULL外码读者编号char20NOTNULL外码借还确认char4非主属性数据库建立建表1.图书信息表BOOKCREATETABLEBOOK(书号char(20)PRIMARYKEYNOTNULL,书名char(50)NOTNULL,作者char(20)NOTNULL,出版社char(50)出版日期data,简介char(200));2.读者信息表STUDENTCREATETABLESTUDENT(读者编号char(20)PRIMARYKEYNOTNULL,读者姓名char(10)NOTNULL,读者性别char(2)NOTNULL,联系电话char(10),所在系char(20)NOTNULL,违章情况char(2),借书累计int);3.管理员信息表MANAGERCREATETABLEMANAGER(工作号char(12)PRIMARYKEYNOTNULL,姓名char(20)NOTNULL,性别char(2)NOTNULL,电话char(12),工资char(12));4.借阅关系表R—BCREATETABLER—B(工作号char(12)NOTNULL,书号char(20)NOTNULL,读者编号char(20)NOTNULL,借书日期dataNOTNULL,还书日期dataNOTNULL,是否续借char(4)NOTNULL,PRIMARYKEY(书号,读者编号),FOREIGNKEY(书号)REFERENCES(书号),FOREIGNKEY(读者编号)REFERENCES(读者编号));5.管理员_图书表M—BCREATETABLEM—B(工作号char(12)NOTNULL,书号char(20)NOTNULL,添加时间data,是否在馆char(14),PRIMARYKEY(工作号,书号),FOREIGNKEY(工作号)REFERENCES(工作号),FOREIGNKEY(书号)REFERENCES(书号));6.管理员_读者表M—SCREATETABLEM—S(工作号char(12)NOTNULL,读者编号char(20)NOTNULL,借还确认char(4),PRIMARYKEY(工作号,读者编号),FOREIGNKEY(工作号)REFERENCES(工作号),FOREIGNKEY(读者编号)REFERENCES(读者编号))权限1.将图书信息查询权限授给读者S1GRANTSELECTONTABLEBOOKTOS12.将图书借阅表、管路员_图书表、管理员_读者表的查询和修改权限授给管理员M1GRANTUPDATE,SELECTONTABLER—B,M—B,M—STOM1视图性别为女的管理员信息表建立工资视图MANAGERWAGECREATEVIEWMANAGERWAGEASSELECT姓名,性别,工资FROMMANAGERWHERE性别='女';触发器建立管理员工资不足1000元,自动改为1000元的触发器Insert_Or_Update_WageCREATETRIGGERInsert_Or_Update_WageBEFOREINSERTORUPDATEONMANAGERFOREACHROWASBEGINIF(new.Professinal='管理员')AND(new.工资1000))THENnew.工资:=1000;ENDIF;END;索引1.在图书信息表BOOK建立唯一索引B-BOOKNAMECREATEUNIQUEINDEXB-BOOKNAMEONBOOK(书名);2.在读者信息表STUDENT建立唯一索引S-STUDENTNOCREATEUN