《软件工程》课程设计
图书馆管理系统设计
姓 名:x 学 号:xx
指导教师:x 学科专业:x
一、可行性研究分析
1.1 引言 1.1.1 目的
图书管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。为此,我们设计图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,做到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校服务。
从以前的手工管理的记录中我们可以发现这样的问题: 1. 检索速度慢、效率低
因为图书馆的藏书种类多、数量多,将藏书准确地分门别类,快速检索,手工进行非常困难,往往是终于查到了书的信息,但馆中没有此书或已被别人借走。图书馆的规模越大,这个问题就越突出。 2. 借书、还书工作量大
借书、还书频率越大,说明图书馆的作用越大,然而随之而来的大量的借书、 还书登记、实存图书的更新以及借出图书超期、遗失等的处理,其工作量之大,往往是人工操作所难以胜任的,而且经常会出现差错。 3. 图书统计工作难,藏书更新不能及时完成
图书馆的图书应根据科学技术的发展和教学工作的需要及时添加和更新,然而由于藏书数量及图书种类越来越多,加上自然损耗,人为破坏,使图书的统计工作难以及时完成,藏书的更新也就很难有针对性地进行,藏书的知识结构得不到良好地控制。
1.1.2 背景
A 开发软件系统的名称是:图书馆管理系统 B xx
xx 1.1.3 参考资料
1、《中华人民共和国著作权法》、《计算机保护条例》 2、参考文献
[1]. 张海藩. 软件工程导论(第五版). 北京:清华大学出版社,2008.2
[2]. 张荣梅,梁晓林,赵宝琴. Visual C++实用教程. 北京:中国铁道出版社,2008.9 3.、网络资源
1.2 可行性研究的前提 1.2.1软件的基本要求:
1. 功能:可分为查询、用户管理、书籍管理三大部分,具体功能如下图:
2. 性能:能运行良好。
3. 数据库流程图(如图1-2所示)。
4. 在安全与保密方面的要求:用户管理员密码不可见,数据库实行加密。 5. 输入与输出:条形英文、数字和汉字输入,英文、数字和汉字输出。 6. 完成期限;2011年7月1前。 1.2.2 目标
1. 减少人力与设备费用; 2. 提高借书的处理速度; 3. 减少操作出错; 4. 提高人员利用率;
1.2.3 条件、假定和限制
1. 系统运行寿命的最小值:4年; 3. 经费投资方面的来源和限制 :无
4. 法律和政策方面的限制:不违背宪法,不违背合同法; 5. 硬件软件的运行环境和开发环境的条件和限制:windowsXP 等
6. 可利用的信息资源:《 C++实用教程》《软件工程案例开发与实践》等以及网络资源;
1.2.4 进行可行性投资研究的方法
通过调查分析开发图书馆管理所具备的能力及实践方法,确定总体结构,利用Microsoft Office 所具有的能力,以最简洁最容易的方法用C++编写使其成为一个初级的系统软件。
1.3 对现有系统的分析 1.3.1处理流程和数据流程
传统的图书馆管理系统的操作流程相当繁琐,在借阅读书时首先要将图书证和所借的书交给图书管理员,图书管理员然后将每本书的信息卡片和读者的信证放在一起,最后再将每本书的借阅卡片和读者阅览证填写借阅信息,在归还时找到相应的借阅卡和借阅证并填写归还信息。
1.3.2 工作负荷
处理较慢,人工操作较为繁琐。 1.3.3 费用开支
维护费用较大,人力消耗大,设备使用率低,占用空间,实现功能少。 1.3.4 人 员
因原有的系统技术含量较低,故不需要多少高技术人员,今后由于数据量的扩大,人员数量也会日益扩大。
1.3.5 设 备
设备含量也较低,没有达到大量普及计算机的程度。 1.3.6 局限性
经过严谨的分析,可知原来的系统有很大的局限性,如技术比较陈旧,人员工作负荷量大,系统维护费用支出大,这些都明确需要一个高科技系统。
1.4 所建议的系统 1.4.1 对建议系统的说明
新系统在原有系统上加入了数据库支持:使用先进的数据库技术和数据库管理技术,
使数据的安全性和正确性得到很大的提高,且在用户的并行操作和用户的管理方面也有了很大的改善。
1.4.2 处理流程和数据流程
读者可以登录到本系统,进行的操作可以是借阅、续借、归还,管理员可以接受到读者的信息,并能管理图书将图书分类,并能查到读书的借阅情况。
1.4.3 改进之处
1. 减少人力和设备费用,从前需要较多的人员处理图书的借阅,操作繁琐,时间较长,现在使用计算机操作,大大提高效率。
2. 借书的处理速度:以前一人借书等待的时间大大缩短;
3. 减少操作出错:以前人工手写信息会出现各种错误,现在计算机扫描几乎不会出错了;
4. 提高人员利用率,以前图书管理员在场场面混乱时,会提高出错的几率,现在一个管理员也不会手忙脚乱。
1.4.4 影 响
预期将带来的影响:包括对图书管理员需要一定的培训,让他们迅速了解软件的使用,还要购买相应的计算机服务器以及进行数据库的录入。
1. 对设备的影响
现有的一些非电子操作的物理设备要跟换为计算机操作的环境。 2. 对软件的影响
因建议系统在原有的基础上采用先进的技术和高科技技术,将原来的软件无法使用,所以系统也会考虑到软件的兼容性。
3. 对用户单位机构的影响
建议系统建立在原有的系统基础上,所以不用考虑人员培训问题。 4. 对系统运行过程的影响
1)用户的操作规程:与原来系统规程无异; 2)运行中心的操作规程:与原系统操作规程无异; 3)运行中心与用户之间的关系运行中心培训用户使用; 5. 对开发的影响
1)为了支持所建议系统的开发,用户需要进行密切配合,阐述要求; 2)要求的数据资源:原数据库;
3)为了开发和检测所建议系统而需要的计算机资源:一台微机; 4)无保密与安全问题; 6. 对地点和设施的影响
需要一些良好的设备和图书管理操作 7. 对经费开支的影响 1)系统开放的人力开支 2)硬件设备,书籍材料 3)开发工具,环境费用 4)不可预见费用 1.4.5 局 限 性
鉴定建议系统尚没有高端技术支持,故无法普及所开发的建议系统。 1.4.6 技术方面的可行性
本系统基于局域网、windows 操作系统,这个在限制内完成开发,应该能实现系统功能目标,开发人群、质量也能满足。
1.5 投资收益分析
零投资,投入使用时既可获得一定收益。 1.6 社会因素方面的可行性 1.6.1 法律方面的可行性
本项目为独立开发,没有使用现成的软件和方法,法律上不会造成侵犯,完全可以按照同规定的责任履行。
1.6.2 使用方面的可行性
用户单位的行政管理,工作制度等方面来看,可以使用该软件系统,从用户单位的工作人员素质上来看,能满足使用该软件的要求。
1.7 结论
经过一系列各方面可行性的分析,分析员、用户以及其负责人对解决的问题有一致的看法,如能审批则可以运行。
二、需求分析
2.1 功能需求分析 对图书管理系统的域描述如下:
在图书管理系统中,要为每一个借阅者建立一个账户,并发放借阅卡(此卡可以提供借阅卡号、借阅者名)给借阅者,其中账户中存储借阅者的个人信息、借阅信息。持有借阅卡的的借阅者可以借阅书籍、返还书籍、查询书籍信息,所有这些操作都是通过图书管理员进行的,也就是说,借阅者不直接与系统交互,而是让图书管理员充当借阅者的代理与系统交互。借阅书刊时,需要输入所借阅的书刊名、书刊的ISBN/ISSN号,然后输入借阅者的借阅卡号(学生学号、教师职工号)和借阅者名,完成后提交所填表格,系统验证借阅者是否有效(在系统中是否存在账户),若有效,借阅请求被接受,系统查询数据库系统,看借阅者要求借阅的书看是否存在,若存在,则借阅者可以借出书刊,并在系统中建立存储借阅记录。借阅者还书后,删除关于所还书刊的借阅记录。另外,为了简化系统,暂时不考虑书籍的丢失和预定情况。
对上述图书管理系统的域描述进行分析,可以获得如下的功能性需求: 1. 借阅者持有借阅卡(借阅卡包含借阅者名和借阅卡号); 2. 图书管理员代理借阅者借书; 3. 图书管理员代理借阅者还书;
4. 图书管理员可以创建新的借阅者账户; 5. 图书管理员可以修改借阅者的账户信息; 6. 图书管理员可以删除已存在的借阅者账户; 7. 图书管理员可以添加新书籍种类; 8. 图书管理员可以修改书籍种类信息; 9. 图书管理员可以删除系统中的书籍种类; 10. 图书管理员可以在系统中添加书目信息; 11. 图书管理员可以编辑书目信息; 12. 图书管理员可以删除书目信息。
注:“书籍种类”和“书目信息”是两个不同的概念“书籍种类”代表了书籍的种类,它不仅包括书刊名,还包括ISBN/ISSN号等信息,他出现在书籍目录中;“书目信息”则指书籍的信息,即图书信息。此外,第一部分提到的用户含借阅者和管理员,但侧重指借阅者。
2.1.1 系统功能模块分析
根据开发者和客户的需求分析后,可以把系统功能分为三个大的功能模块: 1. 查询模块
包括:借阅者查询和管理员查询。 2.用户管理模块
包括:增加及删除用户信息以及修改用户信息。 3.书籍管理模块
包括:增加及删除书目信息以及修改书目信息。 2.1.2 识别参与者
通过对系统需求的分析,可以确定系统中有两个参与者,即借阅者和管理员。 1.借阅者
描述:借阅者可以借阅、归还书籍。 示例:持有借阅卡的任何人或组织。 2.管理员
描述:管理员维护系统,他可以增加、修改、删除借阅者的信息;可以增加、修改、删除书目信息,即维护书目目录。 示例:管理员。 2.1.3 用例图分析
在上面,已经识别出了系统的两位参与者,经过对需求的进一步分析,可以确定系统中有如下用例存在。
1. 借阅书籍
本用例提供了借阅书籍的功能。 2. 返还书籍
本用例提供了返还书籍的功能。 3.用户管理
本用例提供了增加、修改以及删除用户信息的功能。 4. 书籍管理
本用例提供了增加、修改以及删除书目信息的功能。
用例图,如下所示:
图2-1 图书管理系统用例图
2.2 非功能性需求分析
非功能性需求是从各个角度对系统的约束和限制,反映了应用系统对软件系统质量和特性的额外要求,例如响应时间、数据精度、可靠性等。下面是关于该图书管理系统的非功能性需求:
1. 系统在短时间内相应所有的用户请求; 2. 系统应该每周7天、每天24小时都可以使用;
3. 对于一个没有经验的用户而言,经过短期的培训就可以使用系统的所有功能,稍加练习,便可熟练操作了;
4. 系统运行时占用内存空间为低;
5. 当系统发生故障时,只需重启便可以重新使用,在重启后,数据可以自动恢复,不会受到破坏。 2.3. 定义系统对象
通过对系统进行需求分析后,就可以识别出在该系统中存在的对象。从前述的系统需求描述中可以找到以下对象类:借阅者、书籍、管理员。
借阅者包含学生和教师。学生的属性有学号、姓名和单位,教师的属性有职工号、姓名和单位。借阅者可以借书、还书和查询。
1) 书籍包含很多种类,这里大致分为理工和文史类。书籍的属性有书号、书名、作者、类型和价格。书籍是整个系统的主要部分,借阅者可以借阅及归还图书(学生可以借1-3本,教师可以借1-6本,这里用1...n 表示借阅书籍数),管理员则管理书籍、维护书籍
信息。
2) 管理员(可以有多个管理员,这里用m 表示管理员个数)的属性主要是登录系统的用户名及密码。管理员的作用是书籍管理和用户管理,即增加、删除和修改信息。
管理员每天工作时先登录系统,再进行挂机等待借阅者操作。借阅者借书时,先出示借阅卡。管理员扫描借阅卡,验证借阅者身份,系统读取相应信息并显示借阅者信息。此后,管理员扫描借阅者要借阅的书籍,增加书目信息。系统对应显示书目信息后,借阅书籍成功,书籍借出。借阅者续借时,步骤一直,故省略续借时的情况。
逾期处理是还书时的扩展动作,因此在这里一起考虑。还书时扫描图书,若显示正常,则管理员只需修改删除相应书目信息,在系统显示书目信息后还书成功。若显示图书逾期,则管理员需按照处罚条例给以一定的罚款处理。等借阅者交纳罚金后,修改删除相应书目信息,在系统显示书目信息后还书成功。
2.4. 状态图分析
描述系统用例的状态图如下所示:
图2-2 图书馆管理系统的状态图
登录系统后显示系统界面,借阅者可以进入查询界面直接进行信息查询。管理员输入用户名和密码后进入管理员界面,此后管理员可以进行查询、书籍管理和用户管理三个功
能操作。当借阅者借书时,管理员验证借阅者信息后系统显示借阅者信息,而后添加书目信息,借阅者借书成功。还书时管理员扫描图书,若未逾期则显示正常和相应的更新书目信息后还书成功;若逾期则做出罚款处理后修改书目信息,待系统显示更新的书目信息后还书成功。
三、系统设计
系统设计通常分为两个阶段进行,首先是总体设计,其任务是设计系统的框架和概貌,并向用户做详细报告,若获得认可,在此基础上进行第二阶段—详细设计。此部分将对这两部分进行详细介绍。
3.1 总体设计 3.1.1 系统目标设计
系统设计的目标是评价和衡量系统设计方案优劣的基本标准,也是选择系统设计方案的主要依据。而对于此系统设计的目标主要有以下几方面:
1. 系统的可靠性很好,不会受到外界的干扰。因为此系统是为图书馆而设计的,对系统的硬件、软件和运行环境的要求不是很高,只要不进行误操作和非法使用,该图书管理系统就可以很好的运行。
2. 系统的可变更性强,它便于维护,便于不断扩充完善。 3. 系统的效率高,在10秒内就可以响应用户请求。 4. 系统可以在不同的Windows 平台运行,它的通用性很好。
5. 系统处理数据的准确度很高,能够很快输出各种信息,其工作质量很高。 6. 信息分类清晰、准确,便于查找。 7. 强大的查询功能,保证数据查询的灵活性。 8. 具有易维护性和易操作性。 3.1.2系统功能设计
该系统主要分为两部分:借阅者部分和图书管理员部分。为了方便读者查找自己感兴趣的主题进行阅读,要将书刊按照内容进行分类。借阅者可以按照借阅者号进行查找,逐级浏览,可以查看自己的信息。图书管理员作为借阅者的代理,进行借阅、返还、预订及取消预订等操作,还可以对书刊及借阅者信息进行管理。
3.2系统功能模块设计
在对系统的不断分析中,可以确定一下两个模块:
1. 借阅者管理模块:登录系统,进入主界面,可以创建新的借阅者账户,修改借阅者的账户信息,借阅者在输入自己的姓名和借阅卡号后,可以查询自己的相关信息以及借书,预订书刊,取消预订,还书等。
2. 图书管理模块:图书管理员可以在系统中添加书刊信息,编辑书刊信息,删除书刊信息,查询书刊信息等一系列对书刊的管理。
在该图书管理系统中,存在以下实体:借阅者、图书管理员和书籍。
1) 借阅者:它具有的属性有:姓名(name )和借阅卡号(id )(学号或职工号)最大借阅数目maxnum_can_borrow、借阅状态flag_borrow,其中主属性是借阅卡号。
2) 图书管理员:它所具有的属性有:用户名(name )、管理员号(clerk _id)、密码(password )等,其中主属性是管理员号。
3) 书籍:书名(name )、书号(book_id)、作者(writer )、出版社(press )、存馆信息(flag_borrow)、ISBN/ISSN号等,其中主属性是书号。
2.联系描述
在现实世界中,事物内部及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系(Relationship )。实体内部的联系通常指组成实体的各属性之间的联系,实体之间的联系是指不同实体集之间的联系。两个实体集之间的联系可以归纳为以下三种:
1) 一对一联系:如果对于实体集A 中的每个实体,实体集B 之都有一个(也可以没有)实体与之联系,反之亦然,那么实体集A 与B 之间的联系称为“一对一联系”,记作1:1 。
2) 一对多联系:如果实体集A 中的每个实体可以与实体集B 中的任意个(零个或多个)实体有联系,而B 中的每个实体之多和A 中的一个实体有联系,那么称A 对B 的联系为“一对多联系”,记作1:n 。
3) 多对多联系:如果实体集A 中的每个实体可以与实体集B 中的任意个(零个或多个)实体有联系,反之亦然,那么实体集A 与B 之间的联系称为“多对一联系”,记作n :n 。
那么,在此系统中,借阅者与书刊之间为“一对多联系”,管理员与借阅者之间是“一对多联系”, 管理员与书刊之间为“一对多联系”。
3.设计E-R 图
系统设计的目的是获取数据库的概念模型,将现实世界转化为信息世界,形成一组描述现实世界中的实体及实体间的联系的概念。
概念模型是现实世界到信息世界的第一层抽象,是数据库设计的工具,也是数据库设计人员和用户进行交流的语言,因此建立的概念模型要有如下的特点:反映现实,易于理解,易于修改和易于转换。在此,用E-R 图表示该图书资料管理系统的概念模型。
E-R 图中表示实体、属性和联系的方法如下:
实体:用矩形框表示,矩形框内写明实体的名称。
属性:用椭圆形表示,椭圆形内写明属性的名称用无向边与相应的实体相连。 联系:用菱形表示,菱形内写明联系的名称,用无向边分别与实体连接起来,在无向边上注明联系的类型(1:1,1:n ,n :n ), 如果联系有属性,则这些属性同样用椭圆表示,用无向边与联系连接起来。
以下是该图书管理系统的E-R 图
3.3 逻辑和物理结构设计 3.3.1逻辑结构设计
概念结构设计所得的概念模型是独立于任何一种信息结构,与现实无关。逻辑结构的任务是将概念结构设计阶段所得的E —R 图,转化为与选用的DBMS 所支持的数据模型相符的逻辑结构,形成逻辑模型。它的转化有以下两种方式:
第一种转化是将实体转化为关系表。这种转化较简单,需要将实体的属性定义为表的属性即可。
第二种转化是联系的转化。即将各个实体之间的联系转化为表格之间的关系,如外部键的定义。根据联系的类型,
3.3.2物理结构设计
本系统使用的数据库管理系统为SQL Server 2002。数据库中的表有管理员信息表tb_clerk、书刊信息表tb_book、借阅者信息表tb_reader等,具体的如下表3-4、3-5、3-6所示。
表3-4 tb_clerk(管理员)表
表3-5 tb_reader(借阅者信息) 表
表3-6 tb_book (书刊信息) 表
3.4系统总体结构设计
用户在登录系统后,输入用户名和密码后,如果输入正确,系统自动连接数据库,进入主界面。在主界面主要有两方面的管理:
1. 图书管理,主要的操作有:添加书刊信息,编辑书刊信息,删除书刊信息和查询。 2. 借阅者管理,主要的操作有:创建新借阅者账户,修改借阅者信息,查询借阅者信息,借书,还书,预定书刊及取消预订。该系统的总体结构如下图所示:
3.5主要模块运行
用户登陆该图书管理系统,进入系统主界面,输入用户名和密码后,进入系统首页,在此选择具体的操作。以下对系统的功能模块进行简要说明。
登陆界面的主要代码设计如下: v oid CMainFrame::OnLoginIn() {
CLoginDlg mDlg;
if (mDlg.DoModal() == IDOK) { } else
m_bLogin = TRUE;
m_strUserName = mDlg.m_strName ; m_strUserID = mDlg.m_strUSERID;
{ }
CString Name;
Name = "当前用户:" + m_strUserName; m_wndStatusBar.SetPaneText(0,Name); }
在此图书管理系统中,用户管理员的名称为tsoft ,密码为111,点击“确定”便可
m_bLogin = FALSE; m_strUserName = _T(""); m_strUserID = _T("");
进入系统首页。在此界面还可以对管理员的名称和密码进行重置。
当点击“读者管理”中的读者档案管理,便可以查看读者的基本信息。 当点击图书借还时,可以看到有图书归还和图书借阅两个选项,在图书归还中,首先要验证读者信息,然后再对图书进行归还和借阅操作。
主要代码如下所示:
void CMainFrame::OnReturnBack() {
CReturnBookDlg mDlg; mDlg.DoModal();
}
3.6 系统测试
系统测试是伴随着系统的产生而产生的,有了系统的生成和运行就必然有系统测试。 1. 测试是一个程序的执行过程,其目的在于发现错误; 2. 一个好的测试用例很可能发现至今尚未察觉的错误; 3. 一个成功的测试用例是发现至今尚未察觉的错误的测试。
总体来说,系统测试的目的在于以最少的时间和人力系统地找出系统中存在的各种错误和缺陷。 3.7 系统开发的体会
经过数天的设计和开发,图书管理系统已经完成了。其功能基本符合需求,能够实现书刊的借阅、归还,增加书目信息,编辑书目信息,删除书目信息等功能。
通过此次设计,使我们对自己所学专业有了更深一层次的了解,并且有了一些切身的
体会。在设计过程中,我认识到光有计算机理论知识是不行的,还得有更丰富的实践经验,也就是多动手、多动脑。此次收获最大的要属开发软件、编写代码。开发出一个好的系统,要细心,要有激情的态度,且持之有恒,还要耐得住寂寞。
这个图书管理系统的编成,可以说还存在很多问题,有很多功能还有待扩充。限于我们的编程技术水平,有很多更深层的技术未使用,但可以这样说,这次课程设计只是一个开始,只有以后通过不断的努力、不断的研究和学习、不断的实践,才能掌握更多的软件设计的技术和方法,才能设计出更好更完善的软件作品。
整个开发过程中我们深深体会到,要严格按照软件工程的开发思路,不能急于求成,一来就马上编程,应该多做分析和研究,理清思路。前一阶段的工作的好坏将直接影响后一阶段工作的开展。多学习多请教,更多新的技术会不断的涌现,同时可以通过请教别人或者多上网学习别人的编程方法、参考编程案例,尽量吸收转变为自己的知识,才能做的更好。这些经验是相当宝贵的,为我们以后能够编出更好的程序是一个良好的启发。
限于我们的技术水平有限,这次的课程设计论文和编程软件的错误和不当之处在所难免,还望老师多多指教!在这次的课程设计中学到了很多,既感觉到团队的重要性,也感到自身知识的贫乏。希望在日后的努力学习中把它做成更完善的系统,并学着做其他的系统。
《软件工程》课程设计
图书馆管理系统设计
姓 名:x 学 号:xx
指导教师:x 学科专业:x
一、可行性研究分析
1.1 引言 1.1.1 目的
图书管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。为此,我们设计图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,做到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校服务。
从以前的手工管理的记录中我们可以发现这样的问题: 1. 检索速度慢、效率低
因为图书馆的藏书种类多、数量多,将藏书准确地分门别类,快速检索,手工进行非常困难,往往是终于查到了书的信息,但馆中没有此书或已被别人借走。图书馆的规模越大,这个问题就越突出。 2. 借书、还书工作量大
借书、还书频率越大,说明图书馆的作用越大,然而随之而来的大量的借书、 还书登记、实存图书的更新以及借出图书超期、遗失等的处理,其工作量之大,往往是人工操作所难以胜任的,而且经常会出现差错。 3. 图书统计工作难,藏书更新不能及时完成
图书馆的图书应根据科学技术的发展和教学工作的需要及时添加和更新,然而由于藏书数量及图书种类越来越多,加上自然损耗,人为破坏,使图书的统计工作难以及时完成,藏书的更新也就很难有针对性地进行,藏书的知识结构得不到良好地控制。
1.1.2 背景
A 开发软件系统的名称是:图书馆管理系统 B xx
xx 1.1.3 参考资料
1、《中华人民共和国著作权法》、《计算机保护条例》 2、参考文献
[1]. 张海藩. 软件工程导论(第五版). 北京:清华大学出版社,2008.2
[2]. 张荣梅,梁晓林,赵宝琴. Visual C++实用教程. 北京:中国铁道出版社,2008.9 3.、网络资源
1.2 可行性研究的前提 1.2.1软件的基本要求:
1. 功能:可分为查询、用户管理、书籍管理三大部分,具体功能如下图:
2. 性能:能运行良好。
3. 数据库流程图(如图1-2所示)。
4. 在安全与保密方面的要求:用户管理员密码不可见,数据库实行加密。 5. 输入与输出:条形英文、数字和汉字输入,英文、数字和汉字输出。 6. 完成期限;2011年7月1前。 1.2.2 目标
1. 减少人力与设备费用; 2. 提高借书的处理速度; 3. 减少操作出错; 4. 提高人员利用率;
1.2.3 条件、假定和限制
1. 系统运行寿命的最小值:4年; 3. 经费投资方面的来源和限制 :无
4. 法律和政策方面的限制:不违背宪法,不违背合同法; 5. 硬件软件的运行环境和开发环境的条件和限制:windowsXP 等
6. 可利用的信息资源:《 C++实用教程》《软件工程案例开发与实践》等以及网络资源;
1.2.4 进行可行性投资研究的方法
通过调查分析开发图书馆管理所具备的能力及实践方法,确定总体结构,利用Microsoft Office 所具有的能力,以最简洁最容易的方法用C++编写使其成为一个初级的系统软件。
1.3 对现有系统的分析 1.3.1处理流程和数据流程
传统的图书馆管理系统的操作流程相当繁琐,在借阅读书时首先要将图书证和所借的书交给图书管理员,图书管理员然后将每本书的信息卡片和读者的信证放在一起,最后再将每本书的借阅卡片和读者阅览证填写借阅信息,在归还时找到相应的借阅卡和借阅证并填写归还信息。
1.3.2 工作负荷
处理较慢,人工操作较为繁琐。 1.3.3 费用开支
维护费用较大,人力消耗大,设备使用率低,占用空间,实现功能少。 1.3.4 人 员
因原有的系统技术含量较低,故不需要多少高技术人员,今后由于数据量的扩大,人员数量也会日益扩大。
1.3.5 设 备
设备含量也较低,没有达到大量普及计算机的程度。 1.3.6 局限性
经过严谨的分析,可知原来的系统有很大的局限性,如技术比较陈旧,人员工作负荷量大,系统维护费用支出大,这些都明确需要一个高科技系统。
1.4 所建议的系统 1.4.1 对建议系统的说明
新系统在原有系统上加入了数据库支持:使用先进的数据库技术和数据库管理技术,
使数据的安全性和正确性得到很大的提高,且在用户的并行操作和用户的管理方面也有了很大的改善。
1.4.2 处理流程和数据流程
读者可以登录到本系统,进行的操作可以是借阅、续借、归还,管理员可以接受到读者的信息,并能管理图书将图书分类,并能查到读书的借阅情况。
1.4.3 改进之处
1. 减少人力和设备费用,从前需要较多的人员处理图书的借阅,操作繁琐,时间较长,现在使用计算机操作,大大提高效率。
2. 借书的处理速度:以前一人借书等待的时间大大缩短;
3. 减少操作出错:以前人工手写信息会出现各种错误,现在计算机扫描几乎不会出错了;
4. 提高人员利用率,以前图书管理员在场场面混乱时,会提高出错的几率,现在一个管理员也不会手忙脚乱。
1.4.4 影 响
预期将带来的影响:包括对图书管理员需要一定的培训,让他们迅速了解软件的使用,还要购买相应的计算机服务器以及进行数据库的录入。
1. 对设备的影响
现有的一些非电子操作的物理设备要跟换为计算机操作的环境。 2. 对软件的影响
因建议系统在原有的基础上采用先进的技术和高科技技术,将原来的软件无法使用,所以系统也会考虑到软件的兼容性。
3. 对用户单位机构的影响
建议系统建立在原有的系统基础上,所以不用考虑人员培训问题。 4. 对系统运行过程的影响
1)用户的操作规程:与原来系统规程无异; 2)运行中心的操作规程:与原系统操作规程无异; 3)运行中心与用户之间的关系运行中心培训用户使用; 5. 对开发的影响
1)为了支持所建议系统的开发,用户需要进行密切配合,阐述要求; 2)要求的数据资源:原数据库;
3)为了开发和检测所建议系统而需要的计算机资源:一台微机; 4)无保密与安全问题; 6. 对地点和设施的影响
需要一些良好的设备和图书管理操作 7. 对经费开支的影响 1)系统开放的人力开支 2)硬件设备,书籍材料 3)开发工具,环境费用 4)不可预见费用 1.4.5 局 限 性
鉴定建议系统尚没有高端技术支持,故无法普及所开发的建议系统。 1.4.6 技术方面的可行性
本系统基于局域网、windows 操作系统,这个在限制内完成开发,应该能实现系统功能目标,开发人群、质量也能满足。
1.5 投资收益分析
零投资,投入使用时既可获得一定收益。 1.6 社会因素方面的可行性 1.6.1 法律方面的可行性
本项目为独立开发,没有使用现成的软件和方法,法律上不会造成侵犯,完全可以按照同规定的责任履行。
1.6.2 使用方面的可行性
用户单位的行政管理,工作制度等方面来看,可以使用该软件系统,从用户单位的工作人员素质上来看,能满足使用该软件的要求。
1.7 结论
经过一系列各方面可行性的分析,分析员、用户以及其负责人对解决的问题有一致的看法,如能审批则可以运行。
二、需求分析
2.1 功能需求分析 对图书管理系统的域描述如下:
在图书管理系统中,要为每一个借阅者建立一个账户,并发放借阅卡(此卡可以提供借阅卡号、借阅者名)给借阅者,其中账户中存储借阅者的个人信息、借阅信息。持有借阅卡的的借阅者可以借阅书籍、返还书籍、查询书籍信息,所有这些操作都是通过图书管理员进行的,也就是说,借阅者不直接与系统交互,而是让图书管理员充当借阅者的代理与系统交互。借阅书刊时,需要输入所借阅的书刊名、书刊的ISBN/ISSN号,然后输入借阅者的借阅卡号(学生学号、教师职工号)和借阅者名,完成后提交所填表格,系统验证借阅者是否有效(在系统中是否存在账户),若有效,借阅请求被接受,系统查询数据库系统,看借阅者要求借阅的书看是否存在,若存在,则借阅者可以借出书刊,并在系统中建立存储借阅记录。借阅者还书后,删除关于所还书刊的借阅记录。另外,为了简化系统,暂时不考虑书籍的丢失和预定情况。
对上述图书管理系统的域描述进行分析,可以获得如下的功能性需求: 1. 借阅者持有借阅卡(借阅卡包含借阅者名和借阅卡号); 2. 图书管理员代理借阅者借书; 3. 图书管理员代理借阅者还书;
4. 图书管理员可以创建新的借阅者账户; 5. 图书管理员可以修改借阅者的账户信息; 6. 图书管理员可以删除已存在的借阅者账户; 7. 图书管理员可以添加新书籍种类; 8. 图书管理员可以修改书籍种类信息; 9. 图书管理员可以删除系统中的书籍种类; 10. 图书管理员可以在系统中添加书目信息; 11. 图书管理员可以编辑书目信息; 12. 图书管理员可以删除书目信息。
注:“书籍种类”和“书目信息”是两个不同的概念“书籍种类”代表了书籍的种类,它不仅包括书刊名,还包括ISBN/ISSN号等信息,他出现在书籍目录中;“书目信息”则指书籍的信息,即图书信息。此外,第一部分提到的用户含借阅者和管理员,但侧重指借阅者。
2.1.1 系统功能模块分析
根据开发者和客户的需求分析后,可以把系统功能分为三个大的功能模块: 1. 查询模块
包括:借阅者查询和管理员查询。 2.用户管理模块
包括:增加及删除用户信息以及修改用户信息。 3.书籍管理模块
包括:增加及删除书目信息以及修改书目信息。 2.1.2 识别参与者
通过对系统需求的分析,可以确定系统中有两个参与者,即借阅者和管理员。 1.借阅者
描述:借阅者可以借阅、归还书籍。 示例:持有借阅卡的任何人或组织。 2.管理员
描述:管理员维护系统,他可以增加、修改、删除借阅者的信息;可以增加、修改、删除书目信息,即维护书目目录。 示例:管理员。 2.1.3 用例图分析
在上面,已经识别出了系统的两位参与者,经过对需求的进一步分析,可以确定系统中有如下用例存在。
1. 借阅书籍
本用例提供了借阅书籍的功能。 2. 返还书籍
本用例提供了返还书籍的功能。 3.用户管理
本用例提供了增加、修改以及删除用户信息的功能。 4. 书籍管理
本用例提供了增加、修改以及删除书目信息的功能。
用例图,如下所示:
图2-1 图书管理系统用例图
2.2 非功能性需求分析
非功能性需求是从各个角度对系统的约束和限制,反映了应用系统对软件系统质量和特性的额外要求,例如响应时间、数据精度、可靠性等。下面是关于该图书管理系统的非功能性需求:
1. 系统在短时间内相应所有的用户请求; 2. 系统应该每周7天、每天24小时都可以使用;
3. 对于一个没有经验的用户而言,经过短期的培训就可以使用系统的所有功能,稍加练习,便可熟练操作了;
4. 系统运行时占用内存空间为低;
5. 当系统发生故障时,只需重启便可以重新使用,在重启后,数据可以自动恢复,不会受到破坏。 2.3. 定义系统对象
通过对系统进行需求分析后,就可以识别出在该系统中存在的对象。从前述的系统需求描述中可以找到以下对象类:借阅者、书籍、管理员。
借阅者包含学生和教师。学生的属性有学号、姓名和单位,教师的属性有职工号、姓名和单位。借阅者可以借书、还书和查询。
1) 书籍包含很多种类,这里大致分为理工和文史类。书籍的属性有书号、书名、作者、类型和价格。书籍是整个系统的主要部分,借阅者可以借阅及归还图书(学生可以借1-3本,教师可以借1-6本,这里用1...n 表示借阅书籍数),管理员则管理书籍、维护书籍
信息。
2) 管理员(可以有多个管理员,这里用m 表示管理员个数)的属性主要是登录系统的用户名及密码。管理员的作用是书籍管理和用户管理,即增加、删除和修改信息。
管理员每天工作时先登录系统,再进行挂机等待借阅者操作。借阅者借书时,先出示借阅卡。管理员扫描借阅卡,验证借阅者身份,系统读取相应信息并显示借阅者信息。此后,管理员扫描借阅者要借阅的书籍,增加书目信息。系统对应显示书目信息后,借阅书籍成功,书籍借出。借阅者续借时,步骤一直,故省略续借时的情况。
逾期处理是还书时的扩展动作,因此在这里一起考虑。还书时扫描图书,若显示正常,则管理员只需修改删除相应书目信息,在系统显示书目信息后还书成功。若显示图书逾期,则管理员需按照处罚条例给以一定的罚款处理。等借阅者交纳罚金后,修改删除相应书目信息,在系统显示书目信息后还书成功。
2.4. 状态图分析
描述系统用例的状态图如下所示:
图2-2 图书馆管理系统的状态图
登录系统后显示系统界面,借阅者可以进入查询界面直接进行信息查询。管理员输入用户名和密码后进入管理员界面,此后管理员可以进行查询、书籍管理和用户管理三个功
能操作。当借阅者借书时,管理员验证借阅者信息后系统显示借阅者信息,而后添加书目信息,借阅者借书成功。还书时管理员扫描图书,若未逾期则显示正常和相应的更新书目信息后还书成功;若逾期则做出罚款处理后修改书目信息,待系统显示更新的书目信息后还书成功。
三、系统设计
系统设计通常分为两个阶段进行,首先是总体设计,其任务是设计系统的框架和概貌,并向用户做详细报告,若获得认可,在此基础上进行第二阶段—详细设计。此部分将对这两部分进行详细介绍。
3.1 总体设计 3.1.1 系统目标设计
系统设计的目标是评价和衡量系统设计方案优劣的基本标准,也是选择系统设计方案的主要依据。而对于此系统设计的目标主要有以下几方面:
1. 系统的可靠性很好,不会受到外界的干扰。因为此系统是为图书馆而设计的,对系统的硬件、软件和运行环境的要求不是很高,只要不进行误操作和非法使用,该图书管理系统就可以很好的运行。
2. 系统的可变更性强,它便于维护,便于不断扩充完善。 3. 系统的效率高,在10秒内就可以响应用户请求。 4. 系统可以在不同的Windows 平台运行,它的通用性很好。
5. 系统处理数据的准确度很高,能够很快输出各种信息,其工作质量很高。 6. 信息分类清晰、准确,便于查找。 7. 强大的查询功能,保证数据查询的灵活性。 8. 具有易维护性和易操作性。 3.1.2系统功能设计
该系统主要分为两部分:借阅者部分和图书管理员部分。为了方便读者查找自己感兴趣的主题进行阅读,要将书刊按照内容进行分类。借阅者可以按照借阅者号进行查找,逐级浏览,可以查看自己的信息。图书管理员作为借阅者的代理,进行借阅、返还、预订及取消预订等操作,还可以对书刊及借阅者信息进行管理。
3.2系统功能模块设计
在对系统的不断分析中,可以确定一下两个模块:
1. 借阅者管理模块:登录系统,进入主界面,可以创建新的借阅者账户,修改借阅者的账户信息,借阅者在输入自己的姓名和借阅卡号后,可以查询自己的相关信息以及借书,预订书刊,取消预订,还书等。
2. 图书管理模块:图书管理员可以在系统中添加书刊信息,编辑书刊信息,删除书刊信息,查询书刊信息等一系列对书刊的管理。
在该图书管理系统中,存在以下实体:借阅者、图书管理员和书籍。
1) 借阅者:它具有的属性有:姓名(name )和借阅卡号(id )(学号或职工号)最大借阅数目maxnum_can_borrow、借阅状态flag_borrow,其中主属性是借阅卡号。
2) 图书管理员:它所具有的属性有:用户名(name )、管理员号(clerk _id)、密码(password )等,其中主属性是管理员号。
3) 书籍:书名(name )、书号(book_id)、作者(writer )、出版社(press )、存馆信息(flag_borrow)、ISBN/ISSN号等,其中主属性是书号。
2.联系描述
在现实世界中,事物内部及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系(Relationship )。实体内部的联系通常指组成实体的各属性之间的联系,实体之间的联系是指不同实体集之间的联系。两个实体集之间的联系可以归纳为以下三种:
1) 一对一联系:如果对于实体集A 中的每个实体,实体集B 之都有一个(也可以没有)实体与之联系,反之亦然,那么实体集A 与B 之间的联系称为“一对一联系”,记作1:1 。
2) 一对多联系:如果实体集A 中的每个实体可以与实体集B 中的任意个(零个或多个)实体有联系,而B 中的每个实体之多和A 中的一个实体有联系,那么称A 对B 的联系为“一对多联系”,记作1:n 。
3) 多对多联系:如果实体集A 中的每个实体可以与实体集B 中的任意个(零个或多个)实体有联系,反之亦然,那么实体集A 与B 之间的联系称为“多对一联系”,记作n :n 。
那么,在此系统中,借阅者与书刊之间为“一对多联系”,管理员与借阅者之间是“一对多联系”, 管理员与书刊之间为“一对多联系”。
3.设计E-R 图
系统设计的目的是获取数据库的概念模型,将现实世界转化为信息世界,形成一组描述现实世界中的实体及实体间的联系的概念。
概念模型是现实世界到信息世界的第一层抽象,是数据库设计的工具,也是数据库设计人员和用户进行交流的语言,因此建立的概念模型要有如下的特点:反映现实,易于理解,易于修改和易于转换。在此,用E-R 图表示该图书资料管理系统的概念模型。
E-R 图中表示实体、属性和联系的方法如下:
实体:用矩形框表示,矩形框内写明实体的名称。
属性:用椭圆形表示,椭圆形内写明属性的名称用无向边与相应的实体相连。 联系:用菱形表示,菱形内写明联系的名称,用无向边分别与实体连接起来,在无向边上注明联系的类型(1:1,1:n ,n :n ), 如果联系有属性,则这些属性同样用椭圆表示,用无向边与联系连接起来。
以下是该图书管理系统的E-R 图
3.3 逻辑和物理结构设计 3.3.1逻辑结构设计
概念结构设计所得的概念模型是独立于任何一种信息结构,与现实无关。逻辑结构的任务是将概念结构设计阶段所得的E —R 图,转化为与选用的DBMS 所支持的数据模型相符的逻辑结构,形成逻辑模型。它的转化有以下两种方式:
第一种转化是将实体转化为关系表。这种转化较简单,需要将实体的属性定义为表的属性即可。
第二种转化是联系的转化。即将各个实体之间的联系转化为表格之间的关系,如外部键的定义。根据联系的类型,
3.3.2物理结构设计
本系统使用的数据库管理系统为SQL Server 2002。数据库中的表有管理员信息表tb_clerk、书刊信息表tb_book、借阅者信息表tb_reader等,具体的如下表3-4、3-5、3-6所示。
表3-4 tb_clerk(管理员)表
表3-5 tb_reader(借阅者信息) 表
表3-6 tb_book (书刊信息) 表
3.4系统总体结构设计
用户在登录系统后,输入用户名和密码后,如果输入正确,系统自动连接数据库,进入主界面。在主界面主要有两方面的管理:
1. 图书管理,主要的操作有:添加书刊信息,编辑书刊信息,删除书刊信息和查询。 2. 借阅者管理,主要的操作有:创建新借阅者账户,修改借阅者信息,查询借阅者信息,借书,还书,预定书刊及取消预订。该系统的总体结构如下图所示:
3.5主要模块运行
用户登陆该图书管理系统,进入系统主界面,输入用户名和密码后,进入系统首页,在此选择具体的操作。以下对系统的功能模块进行简要说明。
登陆界面的主要代码设计如下: v oid CMainFrame::OnLoginIn() {
CLoginDlg mDlg;
if (mDlg.DoModal() == IDOK) { } else
m_bLogin = TRUE;
m_strUserName = mDlg.m_strName ; m_strUserID = mDlg.m_strUSERID;
{ }
CString Name;
Name = "当前用户:" + m_strUserName; m_wndStatusBar.SetPaneText(0,Name); }
在此图书管理系统中,用户管理员的名称为tsoft ,密码为111,点击“确定”便可
m_bLogin = FALSE; m_strUserName = _T(""); m_strUserID = _T("");
进入系统首页。在此界面还可以对管理员的名称和密码进行重置。
当点击“读者管理”中的读者档案管理,便可以查看读者的基本信息。 当点击图书借还时,可以看到有图书归还和图书借阅两个选项,在图书归还中,首先要验证读者信息,然后再对图书进行归还和借阅操作。
主要代码如下所示:
void CMainFrame::OnReturnBack() {
CReturnBookDlg mDlg; mDlg.DoModal();
}
3.6 系统测试
系统测试是伴随着系统的产生而产生的,有了系统的生成和运行就必然有系统测试。 1. 测试是一个程序的执行过程,其目的在于发现错误; 2. 一个好的测试用例很可能发现至今尚未察觉的错误; 3. 一个成功的测试用例是发现至今尚未察觉的错误的测试。
总体来说,系统测试的目的在于以最少的时间和人力系统地找出系统中存在的各种错误和缺陷。 3.7 系统开发的体会
经过数天的设计和开发,图书管理系统已经完成了。其功能基本符合需求,能够实现书刊的借阅、归还,增加书目信息,编辑书目信息,删除书目信息等功能。
通过此次设计,使我们对自己所学专业有了更深一层次的了解,并且有了一些切身的
体会。在设计过程中,我认识到光有计算机理论知识是不行的,还得有更丰富的实践经验,也就是多动手、多动脑。此次收获最大的要属开发软件、编写代码。开发出一个好的系统,要细心,要有激情的态度,且持之有恒,还要耐得住寂寞。
这个图书管理系统的编成,可以说还存在很多问题,有很多功能还有待扩充。限于我们的编程技术水平,有很多更深层的技术未使用,但可以这样说,这次课程设计只是一个开始,只有以后通过不断的努力、不断的研究和学习、不断的实践,才能掌握更多的软件设计的技术和方法,才能设计出更好更完善的软件作品。
整个开发过程中我们深深体会到,要严格按照软件工程的开发思路,不能急于求成,一来就马上编程,应该多做分析和研究,理清思路。前一阶段的工作的好坏将直接影响后一阶段工作的开展。多学习多请教,更多新的技术会不断的涌现,同时可以通过请教别人或者多上网学习别人的编程方法、参考编程案例,尽量吸收转变为自己的知识,才能做的更好。这些经验是相当宝贵的,为我们以后能够编出更好的程序是一个良好的启发。
限于我们的技术水平有限,这次的课程设计论文和编程软件的错误和不当之处在所难免,还望老师多多指教!在这次的课程设计中学到了很多,既感觉到团队的重要性,也感到自身知识的贫乏。希望在日后的努力学习中把它做成更完善的系统,并学着做其他的系统。