图书管理系统.docx
《图书管理系统.docx》由会员分享,可在线阅读,更多相关《图书管理系统.docx(42页珍藏版)》请在冰豆网上搜索。
图书管理系统
图书馆图书管理系统
一、设计目的
(1)系统设计目的
1.1目的
该文档是关于用户对图书馆图书流通系统的功能和性能的要求,重点描述了图书馆图书流通系统的功能需求,是概要设计阶段的重要输入。
本文档的预期读者是:
·设计人员
·开发人员
·项目管理人员
·测试人员
·用户
1.2范围
该文档是借助于当前系统的逻辑模型导出目标系统的逻辑模型的,解决整个项目系统的“做什么”的问题。
在这里,没有涉及到开发技术,而主要是通过建立模型的方式来描述用户的需求,为客户、用户、开发方等不同参与方提供一个交流的平台。
1.3缩写说明
UML,UnifiedModelingLanguage(统一建模语言)的缩写,是一个标准的建模语言。
1.4术语定义
无
1.5引用标准
[1]<<企业文档格式标准>>,北京长江软件有限公司软件工程过程化组织
[2]<<需求规格说明书格式标准>>,北京长江软件有限公司软件工程过程化组织
1.6参考资料
[1]《UML说明》,北京长江软件有限公司
[2]《需求规格报告格式标准》,北京长江软件有限公司软件工程过程化组织
(2)系统定义
分别分析一下项目的来源、背景、项目的用户特点和项目的目标。
2.1项目来源及背景
本项目是为某图书馆开发的一个图书馆图书流通系统,由于图书馆的图书条目和数量非常庞大,对于系统管理员和图书管理员带来了很繁重的工作量。
为此希望有一个自动化的图书流通系统能够给他们带来工作的便利,提高工作效率,同时能够给图书管理员和借阅者提供一个方便快捷的平台。
为方便管理图书,现开发了图书流通系统。
当图书采购员购入图书后,由系统管理员登记、编目、记入总账(即编入书目)后,按类分别送入各图书室(库)。
借阅者凭借书证到相应的图书室查找所需借阅的图书后,交给图书管理员办理借书手续;若所需借阅的图书已被他人借阅,可办理预约登记,待书归还后,图书管理员将通知预约者前来办理借阅手续;还书者将借书证和图书,交给管理员,经审查合格后,办理还书手续;若不合格,在办理还书手续的同时,做出相应的处罚。
图书管理员定期对借阅情况进行清点,发现借阅超期者发催还通知;定期对书库进行盘点,当图书丢失(或严重损坏或过时)需从分类账(即书籍信息)中删除,总账中做出说明。
2.2用户的特点
本系统的用户共有三类:
一类为系统管理员,他们是图书馆内部人员,对系统很熟悉,一类为图书管理员他们对业务管理非常熟悉;一类为借阅者,他们的差异较大,有的对借阅流程非常熟悉,有的对借阅流程不是很清楚。
2.3项目目标
本项目的目标如下:
·系统能够提供友好的用户界面,使操作人员的工作量最大限度的减少;
·系统具有良好的运行效率,能够达到提高生产率的目的;
·系统应有良好的可扩充性,可以容易地加入其他系统的应用;
·平台的设计具有一定超前性,灵活性,能够企业生产配置的变化
·通过这个项目可以锻炼自己,提高自己的开发能力和项目管理能力
(3)应用环境
根据对系统的需求描述,可以确定本项目分为客户端和管理端,客户端的主要功能是为借阅者办理借书手续、预约手续、还书手续等;管理端的功能是提供系统管理员的图书书目管理、借阅者信息管理,图书管理员的图书借阅管理、图书预约管理等。
它们的关系如下图1所示:
图1
3.1系统运行的网络环境
本系统的网络运行图如下图2所示.无论是管理端的系统管理员、图书管理员还是客户端的借阅者都可以通过网络登录到本系统中。
借阅者可以进行借书、还书、预约登记;图书管理员通过网络处理书籍借阅、归还、预约管理;系统管理员通过网络处理图书书目和书籍信息、借阅者账号信息。
图2
3.2系统运行的硬件环境
本系统的硬件环境如下:
客户机:
普通PC
·CPUP41.8GHz以上
·内存:
256MB以上
·能够运行IE5.0以上或者Netscape4.0以上版本的机器
·分辨率:
推荐使用1024*768像素
Web服务器
·CPU:
P42.0GHz
·内存:
1GB以上
·硬盘:
80GB以上
·网卡:
KMb/s速度
数据库服务器
·CPU:
P42.0GHz
·内存:
1GB以上
·硬盘:
80GB以上
3.3系统运行软件环境
本系统的软件环境如下:
·操作系统:
UNIX/Linux/Windows2000或以上版本
·数据库:
SQLServer2000
·开发工具:
MicrosoftVisualC++6.0
二、设计说明
(1)需求分析
1.功能规格(功能需求)
系统的功能需求包括以下几个方面:
(1)借阅者可以通过网络进行图书查询和预约
(2)借阅者能够借阅书记和还书。
(3)图书管理员能够处理借阅者的借阅和还书请求。
(4)系统管理员可以对系统的数据进行维护,如增加、删除和更新书目,增加、删除和更新借阅者账户,增加和删除书籍。
我们采用面向对象分析作为主要的系统建模方法,使用UML(UnifiedModelingLanguage)作为建模语言。
UML为建模活动提供了从不同角度观察和展示系统的各种特征的方法。
在UML中,从任何一个角度对系统所做的抽象都可能需要几种模型来描述,而这些来自不同角度的模型图最终组成了系统的映像。
用例描述角色(用户、外部系统以及系统处理)是如何来与系统交互完成工作的。
用例模型提供了一个非常重要的方式来界定边界以及定义系统功能,同时,该模型将来可以派生出动态对象模型。
设计用例时,遵循下列步骤:
1)识别出系统的角色。
角色可以是用户、外部系统,甚至是外部处理,通过某些途径与系统交互。
重要的是着重从系统外部执行者的角度来描述系统需要提供哪些功能,并指明这些功能的执行者(角色)是谁,尽可能地确保所有角色都被完全识别出来。
2)描述主要的用例。
可以采取不断问自己“这个角色究竟想通过系统做什么?
”里准确地描述用例。
3)重新审视每个用例,为它们下个详尽的定义。
1.1确定系统涉及的总体信息
图书馆流通系统是对书籍及读者进行统一管理的系统,具体包括读者的借书、还书、书籍预约;图书管理员的书籍接触处理、书籍归还处理、预约信息处理;还有系统管理员的系统维护,包括增加书目、删除和更新书目、增加书籍、减少书籍、增加读者账户信息、删除或更新读者账户信息、书籍查询信息、读者查询信息等。
系统的总体信息确定以后,就可以分析系统的参与者,确定系统的用例了。
1.2确定系统的参与者
确定系统的参与者首先需要分析系统所涉及的问题领域和系统运行的主要任务:
分析使用该系统主要功能的是哪些人,谁需要该系统的支持一完成其工作,还有系统的管理者和维护者。
根据图书馆流通系统的需求分析,可以确定如下几点:
1)作为一个图书馆流通系统,首先需要读者(借阅者)的参与,读者可以登录到系统查询所需要的书籍,查到所需书籍后可以考虑预约,当然最重要的还是借书、还书的操作。
2)对于系统来说,读者发起的借书、还书等操作最终还需要图书管理员来处理,他们可以负责图书的预约和取消预约。
3)对于图书馆流通系统来说,系统的维护操作也是相当重要的,维护操作主要包括增加书目、删除及更新书目、增加书籍、减少书籍等操作。
由以上分析可以得出,系统的参与者主要有3类:
读者(也可以称为借阅者)、图书馆管理员、图书馆系统管理员。
1.3确定系统用例
用例是系统参与者与系统在交互过程中所需要完成的事务,识别用例最好的方法就是从分析系统的参与者开始,考虑每个参与者是如何使用系统的。
由于系统存在借阅者、图书管理员、系统管理员3个参与者,所以在识别用例的过程中,可以将系统分为3个用例图分别考虑。
1)借阅者请求服务的用例
借阅者请求服务的用例图包括如下用例:
(1)登录系统;
(2)查询自己的借阅信息;
(3)查询书籍信息;
(4)预约书籍;
(5)借阅书籍;
(6)归还书籍;
2)图书管理员处理借书、还书等的用例
图书馆管理员处理借书、还书包含如下用例:
(1)处理书籍借阅;
(2)处理书籍归还;
(3)删除预约信息;
3)系统管理员进行系统维护的用例
系统管理员进行系统维护包含如下用例:
(1)查询借阅者信息;
(2)查询书籍信息;
(3)增加书目;
(4)删除或更新书目;
(5)增加书籍;
(6)删除书籍;
(7)增加借阅者账户;
(8)删除或更新借阅者账户;
1.4系统中的用例图
下面给出系统中所涉及到的3个用例图。
1)借阅者请求服务的用例图
【用例图说明】
(1)SearchforBook:
书籍查询用例
(2)Reservethebook:
书籍预约用例
(3)Logonthesystem:
登录系统
(4)QueryInfo:
查询借阅信息
(5)Borrowthebook:
借阅书籍
(6)Returnthebook:
归还书籍
(7)ReturnWithFine:
还书时缴纳罚金
其中,用例QueryInfo与Reservethebook都与Logonthesystem之间存在<
2)图书馆管理员处理借书、还书等的用例图
【用例图说明】
(1)Getbook:
书籍归还处理
(2)Lendbook:
书籍借阅处理
(3)RemoveReservation:
删除书籍预约处理
(4)Getwithfine:
还书时收取罚金
(5)checkusercount:
检查用户借阅凭证的合法性
其中,用例Lendbook和RemoveReservation至今存在<
3)系统管理员进行系统维护时的用例图
【用例图说明】
(1)QueryBorrowerInfo:
查询读者信息
(2)QueryBookInfo:
查询书籍信息
(3)AddTitle:
增加书目
(4)RemoveorUpdateTitle:
删除或更新书目
(5)AddBook:
增加书籍
(6)RemoveBook:
删除书籍
(7)AddBorrower:
增加借阅者账户
(8)RemoveorUpdateBorrower:
删除或更新借阅者账户
2.性能需求、
根据用户对本系统的需求,确定系统在响应时间、可靠性、安全性等方面有较高的性能要求。
2.1界面需求
系统的界面需求如下:
1)页面内容:
主题突出,页面定义、术语和行文格式统一、规范、明确,栏目、菜单设置和布局合理,传递的信息准确、及时。
内容丰富,文字准确,语句通顺,专用术语规范,行文格式统一规范。
2)导航结构:
页面具有明确的导航指示,且易于理解,方便用户使用。
3)技术环境:
页面大小适当,支持在windows的各种环境下运行。
2.2响应时间需求
无论是客户端还是管理端,当用户登录,进行任何操作时,系统应该及时的进行反映。
系统能监视出各种非正常的情况,如与数据库的通信终端,无法连接数据库服务器等,以避免出现长时间等待甚至无响应。
2.3系统安全性需求
系统有严格的权限管理功能,各功能模块需有相应的权限方能进入。
系统需能够防止各类误操作可能造成的数据丢失、破坏。
防止用户非法获取其中内容。
(2)总体设计
1.系统体系结构分析
系统的总体设计遵循如下的原则。
1)系统应具有良好的适应性:
能适应用户对系统的软件环境、管理内容、模式和界面的要求;
2)系统应具有可靠性:
采用成熟的技术方法和软件开发平台,以保证系统在以后的应用中安全、可靠;
3)系统应具有较好的安全性:
应提高安全机制和用户权限限制机制的完善程度,确保数据的受限访问;
4)系统应具有良好的可维护性:
系统应易于维护、安装;
5)系统应具有良好的可扩展性:
系统应适应未来信息化的要求,能方便地进行功能扩展,以建立完善的信息集成管理体系。
2.界面设计
本系统的部分界面设计如下:
(1)用户登录界面
用户登录界面是为了让工作人员或图书馆管理员按照用户名和密码进行登录,如下图:
(2)信息管理主界面
登录系统后,即进入图书管理的主界面,如下:
(3)新书入库和查询主界面
(4)借书还书管理界面
其余设计界面详见程序.
4.系统数据库设计
1)概念设计
在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。
然后再把概念模式转换成逻辑模式。
将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。
利用ER方法进行数据库的概念设计,可分成三步进行:
首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。
(1)设计局部ER模式
实体和属性的定义:
图书(图书编号,图书名称,作者,出版社,出版日期,备注,价格,数量,)
借阅者(借书证号,姓名,性别,身份证,联系电话,密码)
身份(身份编号,身份描述,最大借阅数)
图书类别(图书类别编号,类别描述)
ER模型的“联系”用于刻画实体之间的关联。
一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。
若有联系,进一步确定是1:
N,M:
N,还是1:
1等。
还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系,等等。
(2)设计全局ER模式
所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。
全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。
1.确定公共实体类型
为了给多个局部ER模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。
在这一步中我们仅根据实体类型名和键来认定公共实体类型。
一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候选。
2.局部ER模式的合并
合并的原则是:
首先进行两两合并;先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。
3.消除冲突
冲突分为三类:
属性冲突、结构冲突、命名冲突。
设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模型。
4.全局ER模式的优化
在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。
一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:
实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。
综上所述,“图书管理系统”的ER模式如下图所示。
2)数据库的实现
我选用MicrosoftSQLServer2000(企业版)数据库来进行数据库的逻辑设计。
首先创建七个基本数据库表如下表所示,然后根据全局ER图,建立各个表之间的联系,如下图所示。
表1系统管理员表的结构(Admin_Info)
字段名称
数据类型
可否为空
约束条件
备注
User_Name
Nvarchar(24)
Notnull
无
用户名
Password
Nvarchar(24)
Notnull
无
密码
WorkID
Integer
Notnull
主键
成员ID
表2图书信息表的结构(Book_Info)
字段名称
数据类型
可否为空
约束条件
备注
Book_ID
Varchar(10)
Notnull
主键
书籍ID
Book_name
Varchar(50)
Notnull
无
书名
Writer
Varchar(10)
Notnull
无
作者
Press
Varchar(50)
Notnull
无
出版社
Price
float
Notnull
无
单价
InLibrary_Date
date
Notnull
无
入库时间
Total_Amount
integer
notnull
无
书的总量
Now_Amount
integer
Notnull
无
现存量
表3借阅情况信息表的结构(Borrow_Info)
字段名称
数据类型
可否为空
约束条件
备注
BorrowID
integer
Notnull
主键
借书ID
Proof_ID
Varchar(10)
Notnull
外键(Proof_Info)
借阅卡ID
Book_ID
Varchar(10)
Notnull
外键(Book_Info)
书籍ID
Borrow_Date
date
Notnull
无
借出时间
表4借阅者身份信息表的结构(Proof_Info)
字段名称
数据类型
可否为空
约束条件
备注
Proof_ID
Varchar(10)
Notnull
主键
借阅卡ID
Name
Varchar(10)
Notnull
无
姓名
Sex
Varchar(6)
Notnull
无
性别
Brith_Time
Date
Notnull
无
出生日期
Address
Varchar(50)
Notnull
无
地址
ID_Number
Varchar(20)
Notnull
无
身份证号码
Tel_Number
Varchar(15)
Notnull
无
电话号码
Now_Borrow_Amount
Integer
Notnull
无
现借书总量
表5借阅处罚信息表的结构(Owner)
字段名称
数据类型
可否为空
约束条件
备注
Puni_ID
Integer
Notnull
主键
罚单ID
Proof_ID
Varchar(10)
Notnull
外键
借阅卡ID
Book_ID
Varchar(10)
Notnull
外键
书籍ID
Borrow_Date
Date
Notnull
无
借出时间
Return_Date
Date
Notnull
无
返还时间
Puni_Money
integer
Notnull
无
罚金
(3)关键模块的功能、结构
系统主要包括以下几个基本模块。
(1)基本数据维护模块。
基本数据维护模块提供了使用者录入、修改并维护基本数据的途径。
例如对借阅者的、书籍的各项信息的更改与修改。
(2)基本业务模块。
基本业务模块要用于实现用户借书与还书的管理,例如借阅者可以登录系统预约书籍,图书管理员可以取消书籍的预约,当然还可以进行借书还书等操作。
(3)数据库管理模块。
在系统中,所有书籍的信息以及借阅者的账户信息都要统一管理,书籍的借阅情况、预约情况也要进行详细的记录,所以要用统一的数据库平台进行管理。
(4)信息查询模块。
信息查询模块主要用于查询书籍的信息和借阅者的信息。
下图3即表示图书馆图书流通系统的功能需求:
图3
基本数据维护模块包括如下图4所示的几个方面。
图4
(1)添加借阅者信息。
系统管理员可以添加借阅者账户。
(2)修改更新借阅者信息。
系统管理员可以修改更新借阅者信息。
(3)添加书目信息。
系统管理员可以添加书目。
(4)修改更新书目信息。
系统管理员可以修改和更新书目信息。
(5)添加书籍信息。
系统管理员可以添加书籍。
(6)删除书籍信息。
系统管理员可以删除书籍。
基本业务模块包括如图5所示的几个方面。
图5
(1)借书。
处理借书业务。
(2)还书。
处理还书业务。
(3)书籍预约。
借阅者可以通过网络进行书籍预约。
(4)取消书籍预约。
图书馆管理员可以根据情况取消书籍预约,如果借阅者已经借了此书或者借阅者要求取消预约都涉及此项业务。
数据库模块包括如图6所示的几个方面。
图6
(1)借阅信息管理。
书籍借阅信息包括书的书名、ISBN以及借书的时间等。
(2)书籍信息管理。
书籍信息包括书籍的名字、ISBN、作者、入库时间以及出版社,出版日期,页数,开本,价格,备注等。
(3)账户信息管理。
账户信息管理包括借阅者的账户ID、姓名,性别,出生日期,所在部门,职务,允许借书数等。
(4)书籍预约信息管理。
负责管理书籍预约信息。
信息查询模块主要是查询数据库中的相关信息,如图7所示。
图7
(1)查询书籍信息。
负责书籍信息的查询。
(2)查询借阅者信息。
负责借阅者信息的查询。
(4)详细设计
1.连接数据库
当系统启动之后,就要连接数据库了,需要3个参数:
ODBC数据源名称、数据库用户名称,数据库用户密码。
其中数据源名称为Library。
数据库用户的名称和密码均为dbaccess。
登录到主界面之前,首先调用管理员登录模块。
从数据库中读入Admin_Info表的内容,,判断用户输入的用户名和密码是否正确。
主要代码如下:
voidCLibraryDlg:
:
OnOK()
{UpdateData();
if(m_strUsername.IsEmpty())
{MessageBox("Pleaseinputyourusername!
","登录系统",MB_OK|MB_ICONEXCLAMATION);
m_strUsername.Empty();
UpdateData(FALSE);
return;
}
if(!
m_database.IsOpen())
{//连接数据源
if(!
m_database.Open(_T("Library")))
{MessageBox("连接数据库失败!
","图书管理系统",MB_OK|MB_ICONINFORMATION);
return;
}
}
CLoginSet*m_pLogset=newCLoginSet(&m_database);
//编写SQL语句
CStringstrSQL;
strSQL.Format("select*fromAdmin_InfowhereUser_Name='%s'ANDPassword='%s'",m_strUsername,m_strPassword);
//编写SQL语句结束
m_pLogset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
if(m_pLogset->GetRecordCount()==0)
{if(count<5)
{MessageBox("登录失败!
","图书管理系统",MB_OK|MB_ICONERROR);
count++;
m_strPassword.Empty(