1、1案例 1 图书馆管理系统一、问题描述对我校图书馆图书管理流程进行调研,开发设计一个能对图书、读者及图书借阅情况进行管理的图书馆管理系统。要求该系统能满足管理人员对图书管理以及读者借阅需要,根据权限不同,用户具有不同的功能和操作界面。二、应用需求分析1、用户需求调查通过对现行图书馆业务的调查,明确了图书馆工作由图书管理、读者管理、借书服务和还书服务 4部分组成。用户对现有系统功能的描述如下:(1)图书管理1)对馆内的所有图书按类别统一编码;对各类图书建立图书登记卡,登记图书的主要信息。2)新购的图书要编码和建卡,对遗失的图书要注销其图书登记卡。(2)读者管理1)建立读者信息表,对读者统一编号。
2、2)对新加盟的读者,将其信息加入到读者信息表中;对某些特定的读者,将其信息从读者信息表中删除。3)当读者情况变化时,修改读者信息表中相应的记录。(3)借书服务1)未借出的图书要按类别上架,供读者查看。2)建立借书登记卡,卡上记录着书号、读者姓名和编号、借书日期;将借书登记卡按读者单位、读者编号集中保管。3)读者提出借书请求时,先查看该读者的借书卡,统计读者已借书的数量。如果该读者无借书超期或超量情况,则办理借书手续。4)办理借书手续的方法是:填写借书登记卡,管理员核实后读者可将图书带走。(4)还书服务1)读者提出还书要求时,先对照相应的借书卡,确认书号和书名无误后可办理还书手续。2)办理还书手
3、续的方法是:在借书卡上填写还书时间,管理员签名;将2已还的借书卡集中保管;收回图书。3)将收回的图书上架,供读者查看和借阅。2、系统数据流程图经过详细的调查,弄清了系统现行的业务流程。通过分析和抽象后,用数据流图表示。图 1 是图书馆管理系统的顶层数据流图。图 1 图书馆管理系统顶层数据流图在图书馆管理系统顶层数据流图中, “ P1 内部管理”和“P2 借书管理”两个处理框所表示的功能都太复杂,对它们进一步细化后得出第二层数据流图。见图 2 和图3。实际上“P1.1 图书管理”还可以细化,分为新书处理和图书记录维护两个下级处理框,而“P1.2 读者管理”也可以细化为新读者入户和读者读者情况图书
4、情况 图书信息P2借书管理P3安全管理D4 用户记录D3 借书记录D2 读者记录图书读者管理员P1内部管理D1 图书记录图书读者用户身份管理员情况读者信息 借还书要求3记录维护两个下级处理框。图 2 “内部管理”的细化数据流图图 3 “借书管理”的细化数据流图经过整理后得出细化后得系统数据流图,如图 4 所示。图书情况 P1.2读者管理D2 读者记录图书P1.1图书管理D1 图书记录读者读者情况D2 读者记录借书请求 图书信息P2.2借书处理D3 借书记录读者P2.1查看书目D1 图书记录图书读者P2.3还书处理图书情况还书请求图书情况 P1.2读者管理D2 读者记录图书P1.1图书管理D1
5、图书记录读者读者情况D2 读者记录借书请求 图书信息P2.2借书处理D3 借书记录读者P2.1查看书目D1 图书记录图书读者P2.3还书处理图书情况还书请求P3安全管理D4 用户记录管理员 管理员情况用户身份 用户身份用户身份用户身份4图 4 细化后的图书馆管理系统数据流图3、系统数据字典图书馆管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述清楚。下面主要对数据流图中的数据流、数据存储和处理过程进行说明。(1)主要的数据流定义1)数据流名称:图书情况位置:图书-P1.1,图书-P2.3定义:图书情况=类别+出版社+作者+书名+定价+完好否数据流量:平均流量为每月传输 1000 次
6、,高峰期流量每天传输 100 次。说明:图书入库时,根据图书情况建立图书记录;读者还书时要核实图书基本信息是否与图书记录相符,要检查图书是否完好。2)数据流名称:用户身份位置:P3-P1.1,P1.2,P2.1,P2.3定义:用户身份=非法用户|管理员|读者 数据流量:平均流量为每天传输 2000 次,高峰期流量每小时传输100 次。说明:不同的用户身份进入的处理过程不同。(2)主要的数据存储定义1)数据存储编号:D3数据存储名称:借书记录输入:P2.2输出:P2.2,P2.35数据结构:借书记录=书号+读者编号+借阅日期数据量和存取频度:数据量为 50000 条,存取频度为每天 1000 次
7、。存取方式:联机处理;以更新操作为主;随机检索。说明:读者借阅了一本书,就生成一条借阅记录。借阅日期为添加记录的当天日期。2)数据存储编号:D4数据存储名称:用户记录输入:P3输出:P3数据量和存取频度:数据量为 1000 条;存取频度为每天 100次。存取方式:联机处理;以检索为主;顺序检索。数据结构:用户+密码+级别说明:级别是“管理员”或“读者” 。(3)主要处理过程1)处理过程编号:P2.1处理过程名:查看书目输入:借书请求,D1,用户身份输出:借书请求,图书信息处理说明:实现根据图书类别查询图书、根据书名模糊查询图书的功能。2)处理过程编号:P3处理过程名:安全管理输入:管理员情况,
8、D4输出:用户身份,D4,管理员情况处理说明:通过用户名和口令,确认用户身份,保证系统的安全性。三、系统数据库设计数据库设计的步骤是:根据系统需求分析得到的数据流图和数据字典建立概念模型;将数据库的概念模型转换为数据模型;进行规范化处理,使数据模型满足实际应用需要。1、数据库的概念模型根据系统需求分析,可以得出图书馆管理系统数据库的概念模型,这里用6E-R 图表示,见图 6 所示。2、数据库逻辑模型将图书馆管理系统的 E-R 图转换为关系数据库的数据模型,其关系模式为:用户(用户登录名,密码,级别,职工编号,职工名) ;图书(书号,类别,出版社,作者,书名,定价,借出否) ;读者(编号,姓名,
9、单位,性别,电话) ;借阅(书号,读者编号,借书日期,还书日期,借书经办人 ,还书经办人) 。其中标注下划线的属性为主码。3、数据库结构的详细设计关系属性的设计包括属性名、数据类型、数据长度、该属性是否允许空值、是否为主码、是否为索引项及约束条件。表 1 详细列出了图书读者库各表的属性设计情况。 (表 1 略)(a)(b)用户用户名密码级别职工号职工名读者姓名编号性别单位电话图书书号书名作者类别出版社定价 借出否7(c)(d)图 6 图书馆管理系统的 E-R 图a)用户实体图 b)读者实体图 c)图书实体图 d)各实体间的联系图四、系统体系结构及功能结构1、系统体系结构及实现方法图书馆管理系统
10、采用 C/S(客户端/服务器)结构。服务器主要任务是承担网络监听和实现客户端链接、数据库管理、数据存取和数据传输功能。客户端面向用户,承担着图书馆管理系统的管理和服务工作。2、系统工作环境及支撑软件(1)服务器端的工作环境要求及支撑软件操作系统:Windows 2000 高级服务器版数据库管理系统:SQL Server 2000 企业版数据库应用系统开发软件:Delphi 7.0 企业版(2)客户机的工作环境要求及支撑软件操作系统:Windows 98 或更高数据库应用系统开发软件:Delphi 7.0 企业版3、系统功能及结构图书馆管理系统的系统功能结构如图 5 所示。n图书读者 管理员用户
11、经办借阅借书日期 还书日期118图 5 系统功能结构图(1)用户登录模块功能:根据用户名和密码决定用户权限,从而提供不同的功能,进入不同的操作界面。(2)图书馆内部管理模块功能:用于图书信息的录入、更改、查询,学生(读者)信息的录入、更改、查询,用户密码修改设置。(3)图书馆服务模块功能:用于读者查询图书信息、借阅及归还图书、查询个人借阅信息。五、系统功能实现用户登录模块图书馆内部管理模块 图书馆服务功能模块修改图书记录 修改学生记录 修改密码设置 借阅选定的图书查询个人借阅信息 归还借阅过的图书查询所有图书记录91、程序结构框架2、开发工具介绍系统采用 C/S 架构,后台采用 SQL Ser
12、ver 2000 数据库管理系统,前台采用可视化编程工具 Delphi。Delphi 使用了 Microsoft Windows 图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。它是目前开发客户/服务器数据库应用程序的强有力的工具。在 Delphi 中使用SQL 语言非常方便,一般来说,都是通过 Tquery或TADOquery组件来使用SQL 语言的。可以在 Tquery 或TADOquery 组件的 SQL属性中设置SQL 语句。3、数据模块设计数据窗体主要
13、属性设置如下所示:StudentDS: TDataSource DataSet = StudentTa b l eBookDS: TDataSource DataSet = BookTa b l eRecordDS: TDataSource DataSet = RecordTa b l eQueryDS: TDataSource DataSet = Query1S t u d e n t Table: TTable DatabaseName = workIndexFieldNames = StudentNoTableName = Student.dbR e c o r d Table: TTa
14、ble DatabaseName = work数据库应用程序数据模块窗体用户登录窗口的窗体图书馆管理系统界面窗体 图书馆服务系统界面窗体修改图书记录窗体 修改学生记录窗体 修改密码设置窗体 查询借阅图书窗体 查询个人借阅信息归还借阅图书窗体10TableName = brecord.DBQuery1: TQuery DatabaseName = workB o o k Table: TTable DatabaseName = workIndexFieldNames = BookNoMasterFields = BookNoTableName = Book.db数据模块窗体中的各组件分别联系到需要访问和操作的数据表格。4、各个功能窗体设计与实现(1) 用户登录窗体设计登录模块实现过程见程序流程图(略) 。(2) 图书馆管理系统界面窗体11实现的程序流程图略。(3) 修改图书记录窗体实现的程序流程图略。(4) 修改学生记录窗体12(5) 修改密码窗体设计(6) 图书馆服务系统窗体(7) 查询、借阅图书窗体13(8) 查询个人借阅情况及归还图书5、源代码清单(略)