基于ASP的图书馆图书管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
图书馆管理系统作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理。
图书馆若采取手工方式对图书资料和图书借阅情况进行人工管理,由于资料繁多,手工处理的工作量大,整体的管理效率就会低下,也不方便读者对图书资料的查阅。
为了提高日常的图书管理效率,必须开发满足大多数中小型的图书管理要求的图书管理系统。
本系统采用ASP和Access数据库技术,其中包含四个模块:“图书资料管理模块”、“读者资料管理模块”、“借阅管理模块”和“系统管理模块”。
本图书管理系统是为了实现图书管理工作系统化、规范化、自动化的目的。
关键词:图书管理系统;数据库;图书借阅
Abstract
The library today is called a Media Center and it is a kind of distribution centre for information resources. Libraries serve to deliver quality information achieved through proper management and updated information control. In order to cope with new patterns of information provision, technology innovations and emergences of new research practices. This paved way to information services becoming more technologically sophisticated and complex in allocating human and financial resources effectively. Maintaining an appropriate storage environment will contribute to the long term preservation of library books and archive collections in -based records and computer mainframes. The changing pros of libraries from free access -based information to facilitated research and access centers for electronic information requires adjustment in how libraries will be managed.
The system uses ASP and Access database technology, which consists of four modules: “the Book of the information management module,”“the reader’s data management module,” "loan management module"and "System Management Module.” The library management system is to achieve systematic management, standardization and automation purposes.
Keywords:The library manages system;Data Base;Book loan
目录
摘要 (I)
Abstract (II)
第1章课题简介 (1)
1.1 课题内容 (1)
1.2 课题目标 (1)
第2章开发工具 (3)
2.1 ASP技术 (3)
2.2 Access数据库 (3)
第3章概要设计 (5)
3.1 总体设计 (5)
3.2 模块分析 (5)
第4章详细设计 (7)
4.1 数据库设计 (7)
4.2 程序模块设计 (8)
4.3 系统模块的实现 (11)
第5章测试 (15)
5.1 测试计划 (15)
5.2 测试结果 (17)
5.2 测试评价 (17)
结论 (18)
参考文献 (19)
附录 (20)
致谢 (45)
用户操作手册 (46)
第1章课题简介
1.1课题内容
图书馆图书管理系统是图书馆管理工作中不可缺少的部分,它的内容对于图书馆的管理者和使用者来说都至关重要,所以图书管理系统应该能够为管理者或读者提供充足的信息和快捷的数据处理手段。
但图书馆管理若采用完全手工操做,通过卡片记录信息,既浪费时间,又浪费人工、纸张,而且书籍和读者的信息查询比较麻烦,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识。
它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对图书信息进行管理,具有着手工管理所无法比拟的优点。
例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低。
这些优点能够极大地提高图书管理的效率,也是图书馆的科学化、正规化管理,与世界接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情[1]。
图书管理系统是典型的信息管理系统。
其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于后台数据库的建立要求建立起数据一致性和完整性强。
数据安全性好的库。
而对于前端应用程序则要求应用程序功能完备,易使用等特点。
通过对系统功能进行分析,本系统功能模块主要分为“图书资料管理”模块、“读者资料管理”模块、“借还书操作”模块、“系统管理”模块[2]。
1.2 课题目标
图书馆图书管理系统是为实现图书管理工作系统化、规范化、自动化而开发的,本系统是运用ASP并结合Access数据库制作的。
它将计算机操作及管理融到图书管理系统的实际运用中,使日常手工管理的复杂方法被计算机简单、易行的操作所替代,由于图书馆的图书资料复杂、繁多,读者的需求各不相同,因此为了能够更好的管理图书馆的图书资料就需要对读者资源、书籍资源、借书信息、还书信息进行管理。
及时了解各个环节的变更,通过这个图书管理系统能够迅速、准确地向图书馆管理者提供有效的信息。
这样一个图书馆图书管理系统也可以极大地减轻工作人员的工作强度、提高工作效率,充分地发挥了人力资源的作用。
通过开发本系统,可以对图书馆种类繁多的书籍进行高效管理控制,并且合理管理好用户的借还信息,提高图书馆的工作效率,降低管理成本。
因此图书管理系统需要能够存储一定数量的图书信息,读者信息,其中主要包括:图书信息的录入、删除及修改;图书的出借、返还和资料统计。
能够对一定数量的读者进行相应的信息存储与管理,其中包括:读者信息的登记、删除和修改;读者借阅资料的统计与查询。
能够提供一定的安全机制,提供数据信息授权访问,防止随意删改。
第2章开发工具
2.1 ASP技术
ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。
可以用来创建和运行动态网页或web应用程序。
ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。
与HTML相比,ASP网页具有以下特点[3]:
(1)利用ASP可以实现突破静态网页的一些功能限制,实现动态网页技术;
(2)ASP文件是包含在HTML代码所组成的文件中的,易于修改和测试;
(3)服务器上的ASP解释程序会在服务器端执行ASP程序,并将结果以HTML 格式传送到客户端浏览器上,因此使用各种浏览器都可以正常浏览ASP所产生的网页;
(4)ASP可以使用服务器端Active X组件来执行各种各样的任务,例如存取数据库、发送E-mail或访问文件系统等。
(5)由于服务器是将ASP程序执行的结果以HTML格式传回客户端浏览器,因此使用者不会看到ASP所编写的原始程序代码,可防止ASP程序代码被窃取。
(6) 方便连接ACCESS与SQL数据库[4]。
2.2 Access数据库
Access是Office系列软件中用来专门管理数据库的应用软件,它可以运行于各种Windows系统环境中。
由于Access继承了Windows的特性,不仅易于使用,而且界面友好,因此被用户广泛采用。
使用Access的时候不需要数据库管理者具有专业的程序设计水平,任何非专业的用户都可以用它来创建功能强大的数据库管理系统。
Access使用标准的SQL(Structured Query Language,结构化查询语言)作为它的数据库语言,从而提供了强大的数据处理能力和通用性,使其成为一个功能强大而且易于使用的桌面关系型数据库管理系统和应用程序生成器。
Access数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块[5]。
表(Table):是数据库的基本对象,是创建其他5种对象的基础。
表由记录组成,
记录由字段组成,表用来存贮数据库的数据,故又称数据表。
查询(Query):可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。
窗体(Form):窗体提供了一种方便的浏览、输入及更改数据的窗口。
还可以创建子窗体显示相关联的表的内容。
窗体也称表单。
报表(Report):报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。
宏(Macro):宏相当于DOS中的批处理,用来自动执行一系列操作。
Access列出了一些常用的操作供用户选择,使用起来十分方便。
模块(Module):模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。
第3章概要设计
3.1 系统需求分析
要实现一个软件系统,首先应该进行需求分析,这样才能令设计出的软件满足用户的各项功能。
图书管理系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。
图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护。
图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人用户名和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。
一般情况下,图书借阅者只应该查询和维护本人的借书情况和个人信息,若查询和维护其他借阅者的借书情况和个人信息,就要知道其他图书借阅者的用户名和密码。
这些是很难得到的,特别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。
图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登录本模块进行更多的考虑。
在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录。
图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。
本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。
图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息和图书借阅者的基本信息。
3.2 模块分析
本系统可以划分为以下四个子模块:图书资料管理模块,读者管理模块,借阅图书管理模块,系统管理模块。
本系统的层次结构如图3—1所示。
图3—1图书馆图书管理系统结构图
1. 图书资料管理模块
图书馆工作人员通过此模块来管理各类图书,包括图书品种的添加,修改,删除等。
在进行图书的添加时,弹出新的窗口进行图书信息的录入,在输入书籍的条形码时要检验条形码是否唯一,如果添加的书籍编号重复要对用户进行提示,只有在不重复的情况下才能够进行图书的添加。
在进行图书的删除操作时,要首先弹出提示窗口让管理员确认是否删除,只有在管理员确认后才能够进行图书的删除。
在进行图书的修改时,要能够根据用户选定的书进行修改,即列出所有用户选定书的信息,在这个基础上进行图书信息的修改。
2. 借还书管理
此模块包括借书信息管理和还书信息管理两部分。
其中,借书信息管理中包括借书信息的添加、借书信息的修改、借书信息的查询。
读者和管理员可以通过本功能查询到读者的借阅信息以及对书籍的管理。
3. 系统管理
在该模块中管理员可以添加新的用户,以及修改用户密码和权限的设置。
4. 读者资料管理
其中包含普通用户的管理,用户可以对自己的密码进行修改,登录自己的账户可以查询到借阅的相关信息。
第4章详细设计
4.1 数据库设计
数据库管理系统是用于描述、管理和维护数据库的程序系统,是数据库系统的核心组成部分。
它建立在操作系统的基础上,对数据库进行统一的管理和控制。
其主要功能有:
(1)描述数据库:描述数据库的逻辑结构、存储结构、语义信息和保密要求等。
(2)管理数据库:控制整个数据库系统的运行,控制用户的并发性访问,检验数据的安全、保密与完整性,执行数据检索、插入、删除、修改等操作。
(3)维护数据库:控制数据库初始数据的装入,记录工作日志,监视数据库性能,修改更新数据库,重新组织数据库,恢复出现故障的数据库。
(4)数据通信:组织数据的传输。
DBMS主要有四种类型:文件管理系统、层次数据库系统、网状数据库系统和关系数据库系统。
因为目前关系数据库系统应用最为广泛,所以我们重点对关系数据库系统中的几个概念进行介绍。
表(Table):一个表就是一组相关的数据按行排列,象一张表格一样。
比如一个班所有学生的期末考试成绩,存在一个表中,每一行对应一名学生,在这一行中,包括学生的学号、姓名以及各门课程的成绩。
字段(Field):在表中,每一列称为一个字段。
每一个字段都有相应的描述信息,如数据类型、数据宽度等。
记录(Record):在表中,每一行称为一条记录。
索引(Index):为了加快访问数据库的速度,许多数据都使用索引具体内容。
根据模块的设计,以及前面章节的规范化的设计要求,该系统中的表主要有3个,分别如下所示。
(1)manager(用户名表):该表主要存储了用户的名称,如表4—1所示。
表4—1 manager表
userid 数据类型说明
admin Text 用户名称
test Text 唯一
(2)ebook(图书信息表):该表主要存储了图书序号、书名、出版社、作者、图书简介、图书损害程度的基本信息,如表4—2所示。
表4—2 ebook表
列名数据类型说明
书号Text 图书书号
书名Text 书名
类别Text 图书类别
出版社Text 出版社
作者Text 作者
字数Text 字数
定价Currency 图书定价
是否损坏Boolean 是否损坏的标志
是否遗失Boolean 是否遗失的标志
入库时间Date、Time 图书入库的日期
图书介绍Text 图书的简单介绍
(3)booklog(图书借阅信息):该表主要存储图书的借阅时间、用户名、图书序号,如表4—3所示。
表4—3 booklog表
列名数据类型说明
图书序号Text 图书的编号,唯一
书名Text 不唯一
借阅用户名Text 学生姓名
借书日期Text 借书的时间
还书日期Text 还书的时间
4.2 程序模块设计
1. 主模块
图书资料管理系统中又包含图书管理,系统管理以及借阅管理功能的添加、修改、删除。
通过借阅管理系统,用户可以通过查询了解到自己的借阅书情况;系统管理,
可以添加用户,控制管理员与普通用户的区别;图书管理,可以对图书的基本信息进行了解。
在图书馆管理图书的功能中可以输入图书条形码,点查找按钮后就会在各个相应的组件中显示出信息或查找到所要的记录,在各个相应的组件中显示第一条记录的信息,也可在下端的ListView 组件中点击某一条记录,在各个相应的组件中也会显示所选记录的信息。
在入库功能中只要不是相同的图书编号并且带*号提示的字段不为空就可插入新的图书记录。
删除则删除那些ebook 表中的图书记录,如果借出还可依用户要求连带删除manager 表中的记录。
主模块如图4—1所示。
.
·
图4—1 图书资料管理系统结构图
2. 借还书管理模块
借还书管理又分为借书信息、还书信息功能,读者和管理员可以通过本功能查询到读者的借阅信息以及对书籍的管理。
借阅者的登录功能的实现与工作人员和管理人员登录功能实现的方法大致一样,并且还要简单。
借还书结构图如图4—2所示。
图4—2 借还书管理结构图
3. 系统管理模块
系统管理又分为密码管理、读者信息的添加、修改、查询功能,本功能可以对用户进行系统的管理。
这模块的功能的实现过程与图书的删除、添加和修改一样,但是这个窗体还能跟据图书类别进行统计,还可统计出图书总数目,库存图书数目,借出图书数目及借阅过期的图书数目。
系统管理模块结构图如图4—3所示。
图4—3 系统管理结构图
4. 读者资料管理模块
读者资料管理实现当前借阅者部份资料的修改,但用户名和角色类别这样的信息不允许修改,这是图书馆管理员模块的功能。
在此界面中点击修改按钮将出现“修改”窗体,点击修改密码按钮将在这里进行密码修改。
结构图如图4—4所示。
图4—4读者资料管理系统结构图
4.3 系统模块的实现
1. 用户角色管理的实现
因为有2种角色:管理员、普通用户,每个角色的权限都不同,在用户表manager 中有一个权限字段Power No。
所以,在登录时根据用户名和密码选出manager表中合法用户的权限号Power No,根据权限号将用户跳转到不同的页面。
并为Session["U_Power_No"]赋一个值,值为相应的权限号。
为了解决用户不经验证而直接访问管理页面,我的做法是为所有的用户定义一个全局的Session["U_Power_No"]。
方法为配置网站的全局配置文件Global. sax,在它的后台代码Global.asax.cs中的Session Start事件中初始化Session["U_Power_No"]为空值:protected void Session Start(Object sender,EventArgs e)
{Session["U_Power_No"]=""; }
然后在需要验证才能访问的页面的Page Load事件中加入Session["U_Power_No"]的判断,如果为空,则跳转到首页让用户登录;而经过登录的用户,Session["U_Power_No"]值不为空,则不会跳转。
代码如下:
private void Page Load(object sender,System. EventArgs e)
{判断用户是否登录,如果Session["U_Power_No"]的值为空,则跳转到首页
if(Session["U_Power_No"].ToString()=="")
{ Response.Redirect("Default. aspx"); }
}
用户角色管理界面如图4—5所示
图4—5 用户角色管理界面
2. 图书分类功能的实现
图书的分类管理中可以实现修改、删除、添加的功能,如图4—6所示
图4—6 所示图书分类管理界面
此页面中,图书分类项我用下拉菜单Dropdown List,并绑定到数据库的图书分类表(folder)。
从folder表中选出分类号和分类名的存储过程为:
CREATE PROCEDURE P_BookClassify AS
select B_Classify_No,B_Classify_Name from Book Classify
3. 修改图书信息功能的实现
图书信息的修改功能主要实现了对图书的类别、名称、作者、出版社、定价、书籍简介、书籍状况的更改。
修改图书信息的界面如图4—7所示
图4—7修改图书信息界面
4. 图书入库下架管理功能的实现
图书管理中图书的入库和下架也是关键的部分,不但可以给图书馆中的书库注入新鲜血液还可以将陈旧的或者已经有损坏的书进行下架处理。
可以保证图书馆书库的质量。
新书入库功能界面如图4—8所示。
图4—8 新书入库功能界面
5. 借还书功能的实现
借书还书的功能可以说是图书馆图书管理系统中的重要组成部分之一,它实现了图书的借阅管理功能。
需要在借还书时输入图书的条形码进行查找图书,之后可以借还图书,并且进行备注信息。
以借书为例,首先输入所借书籍的条形码出现如图4—9所示。
图4—9 图书借阅条形码输入界面
当单击“确定”按钮时,出现借阅登记界面,如图4—10所示。
图4—10 图书借阅登记界面
确认后将出现“借阅成功”的提示信息,如图4—11所示。
图4—11 借阅成功提示信息界面
第5章测试
5.1 测试计划
单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。
(1)对用户管理按钮测试,如图5—1所示。
图5—1用户管理界面
(2)对分类管理按钮进行测试,如图5—2所示。
图5—2分类管理界面
(3)对图书管理按钮进行测试,如图5—3所示。
.
图5—3 图书管理界面(4)对新书入库按钮进行测试,如图5—4所示。
图5—4 新书入库界面(5)对注销登录按钮进行测试,如图5—5所示。
图5—5 注销登录界面
5.2 测试结果
通过对系统的测试确定系统能够实现如下主要功能:对图书信息的查询,添加,修改,对读者信息的查询,添加,修改,对借还图书信息的查询等。
优点是操作方便、易查询、可修改、管理简单、方便。
存在的问题:对读者的信息管理不够完善,在用户设置密码的时候没有提示密码的难易程度,不知情的读者的信息可能会被盗取,如果增设密码检测功能就更加完善了。
5.3 评价
经过努力,图书管理系统基本能完成预计的功能。
此项目开发的还是比较成功,但是还是存在着一些问题,造成这些问题的原因是多方面的。
如:前期系统数据库的设计缺陷和部分代码的构建缺陷、客户需求的理解上也存在一定问题,这就需要我们用一定的时间来维护客户使用过程中提出的新问题和存在的潜在问题。
总的来说,此系统的功能开发还是一个比较成功的案例。
结论
通过本次课程设计,加深了对软件开发流程的深入理解。
这是第一次严格的按照软件工程开发的标准开发项目。
在课程设计过程中,认真编写软件开发文档和程序代码。
代码编写完后,再认真测试,检查系统的不足之处。
由于之前开发系统都没有编写软件开发文档的习惯,因此,在编写软件的过程中遇到了一些问题,但是通过查阅资料等途径解决了。
通过本次课程设计,深刻体会到软件工程的重要性,软件工程文档是指导我们进行项目开发的指挥棒。
编写好一份高效可行的软件工程文档对软件开发非常重要。
还有,对系统的需求分析非常重要,需求的变成直接影响项目的开发进度。
这次课程设计首先对系统的需求理解不透彻,走了一点弯路,浪费了一些时间。
在以后的软件开发过程中尽量吸取本次课程设计的经验教训,提高项目开发效率
参考文献
[1] 黄宗忠,图书馆学导论 [M],武昌:武汉大学出版社,(1998)
[2] 吴慰慈,董焱,图书馆学概论(修订本) [M],北京:北京图书馆出版社,(2002)
[3]杨威,ASP网络开发技术[M],北京:人民邮电出版社,(2001)
[4] 宣小平,ASP数据库系统开发实例导航 [M], 北京:人民邮电出版社,(2003)
[5] 刘凤玲,Access教程与实训 [M],北京:中国人民大学出版社,(2009)
[6] 郭星寿,现代图书馆学教程 [M],太原:山西高校联合出版社,(1992)
[7] 胡贵平,用ASP实现图书期刊远程订阅管理 [M],北京:人民出版社,(2005)
[8] 张曙,利用ASP技术开发图书管理系统 [M],上海:上海大学出版社,(2000)
[9] 窦秋生,网页制作 [M],西安:电子科技大学出版社,(2004)
[10] 王子舟,图书馆学基础教程 [M],武昌:武汉大学出版社,(2003)
[11] Gill,R. Mastering English Literature [M],北京:人民邮电出版社,(1995)
[12] Mike Morrison,Jonline Morrison,数据库的WEB站点[M],北京:清华大学出版
社,(2002)
附录
1.main.asp文件(主界面的代码)
<HTML>
<HEAD>
<meta http-equiv=content-type content="text/html; charset=gb2312"> <link rel="stylesheet" type="text/css" href="common/style.css">
<script language="JavaScript" src="common/script.js"></script>
<TITLE>图书管理系统</TITLE>
<style>
BODY{
font-family:verdana,arial,helvetica;
margin:0;
}
td {
font-family:Tahoma,Verdana, Arial;
font-size:11px;
}
A:link, A:active,A:visited
{
color: #FFFFFF;
text-decoration: none;
padding-left:6px;
padding-right:6px;
}
A:hover
{
color: #FF3300;
text-decoration: none;
padding-left:6px;
padding-right:6px;
}
</style>
</HEAD>
<!--#include file="conn.asp"-->
<BODY TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" BGCOLOR="#336699" TEXT="#000000">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="25" height="20" align="right" nowrap>
</td>
<td height="80" width="386" nowrap>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="386" align="left" nowrap>
<img src="Images/book_Logo.png"/>
</td>
</tr>
<tr>
<td width="386" align="left" nowrap>
<%
Set rs=conn.execute("select sum(ceshu) from ebook")
zongji=rs(0)
Set rs=conn.execute("select sum(yijie) from ebook ")
yijie=rs(0)
Set rs=conn.execute("select count(*) from booklog")
jiyueshu=rs(0)
Set rs=Conn.execute("Select Count(*) From ebook")
alltotal=rs(0)
rs.close
set rs=nothing
response.Write "图书统计:共有图书<font color=red>"&zongji&"</font>册["&alltotal&"种]; 借出"&yijie&"册;共借阅"&jiyueshu&"次"
%>
</td>
</tr>
</table>
</td>
<td width="381"> <nobr id="barlink" > <a href="welcome.htm"
target="fraRightFrame">首页</a>
| <a href="hotbook.asp" target="fraRightFrame">借阅排行</a>
| <a href="newbook.asp" target="fraRightFrame">新到图书</a>
| <a href="jieyue.asp" target="fraRightFrame">我要借书</a>
| <a href="huanshu.asp" target="fraRightFrame">我要还书</a>
| </td>
<td width="228" height="20" align="right" nowrap><script language="JavaScript"
type="text/javascript" src="common/Date.js"></script>
</td>
</tr>
</table>
<SCRIPT LANGUAGE="JavaScript">
<!--
getstatus();
//-->
</SCRIPT>。