图书管理系统-SQL_第1页
图书管理系统-SQL_第2页
图书管理系统-SQL_第3页
图书管理系统-SQL_第4页
图书管理系统-SQL_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图书管理系统Booksmanagementsystem学院:信息工程教学部班级:2023级计算机科学与技术一班小组:第一小组小组成员:韦亚勇〔组长〕、郭珏君、何志刚、杨海滨、宋伟楠、王文浩分工情况序号学号姓名完成内容成绩101002001韦亚勇所有内容均有参与,着重在需求分析、详细设计、库表设计、代码设计。201002021郭珏君参与详细设计、代码设计、库表设计。301002023何志刚参与软件测试、概要设计、详细设计。401002022杨海宾参与概要设计、详细设计。501002042宋伟楠参与库表设计、详细设计。600868200王文浩参与库表设计、详细设计。开发方案2012年11月5日——2012年11月20日:进行做需求分析,写出需求分析文档,确定系统需求,为以后设计做铺垫。2012年11月21日——2012年11月25日:进行概要设计,写出概要设计文档,确定系统的初步构架,为详细设计奠定根底。2012年11月26日——2012年11月30日:做库表设计,写建库sql脚本文件,做出数据库表,为以后与网页的链接做前提。2012年12月1日——2012年12月5日:详细设计,写出详细设计文档,对系统进行详细设计,做到能实现局部功能。2012年12月6日——2012年12月12日:编码实现程序,对局部功能进行编码实现,确保功能实现正确。2012年12月13日——2012年12月16日:测试,写出测试报告文档,检测系统是否能正常运行,每个功能是否还有缺陷。一、需求分析概述当今时代是飞速开展的信息时代。在各行各业中离不开信息处理,这使得计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其平安性。随着Intranet的飞速开展,移动办公和分布式办公越来越普及,B/S(Browser/Server)架构应运而生,并得到普遍应用。B/S架构最大的优点就是客户端无需安装任何专用的客户端软件,只需配置浏览器〔如IntranetExplorer〕即可,这样为程序的安装、调试和维护带来了极大的方便。ASP.NET所开发的应用软件一般都是B/S架构,用户可直接通过浏览器来使用系统,而无需安装软件的客户端。图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理。根据调查得知,以前对信息管理的主要方式是基于纸介质的手工处理,对于图书借阅情况〔如借书天数、超过限定借书时间的天数〕的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丧失,且不易查找。总的来说,缺乏系统,标准的信息管理手段。现今,有很多的图书馆都是开始使用计算机进行信息管理。使图书管理工作进入标准化,系统化,程序化的轨道,同时防止了图书管理的随意性,提高了信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书及用户信息。开展趋势处在知识经济形势下的新信息浪潮,是以信息技术的高速兴旺和全方位应用为特征,以生产科学知识和信息为根底的,它形成了图书管理的新的生存环境——信息和信息技术环境。新的世纪人类社会正面临知识经济和信息社会的急剧变革,世界各个角落的人们都强烈地感受到新时代的冲击与震撼。知识更新经济朝代和网络时代的一些特征,已经深入到人们的社会生活中。知识经济是以知识更新为根底的经济,这各经济直接领带于知识更新和信息的生产、扩散和应用。面对现代化管理,必须适应信息世界的变化。新型的图书管理软件必须向现代化转变。必须具有信息咨询效劳、信息资源数据库效劳、网络信息效劳等代化效劳。网络飞速开展的环境下,未来的图书管理应该以信息网络为目的加快信息的传播速度,提高信息效劳质量.在网络化条件下,图书的借阅主要由计算机流通管理系统或读者在自己的终端上自动完成。在完成方式上,更多地利用,移动通讯、电子邮件等来完成;在咨询内容上,更多的是关于信息源查询、信息内容的鉴定等内容。系统基于互动的客户/效劳模型,其系统结构包括元数据效劳器、WEB应用效劳器、对象数据效劳器、以及客户端机等。系统应该具备在开放式、异构型环境中的运行能力。1.2课题提出在当今知识大爆炸的时代,图书作为信息的一种载体,仍是人们获得知识的一种重要途径,因而作为图书管理与借阅的图书馆,它的运行情况那么关系到知识的传播速度问题。以往旧的图书管理模式完全是手工操作,从新书的购置、编码、入库、上架,到借阅、续借、归还、查询,无一不是人工处理,需要大量的劳动力与工作量,而且由于人为的原因造成一些错误,也是再所难免的。当读者想要借阅一本书时,首先要查询大量的卡片,而且要有一定的图书管理知识,才能很快的查到。自己想要的图书,在借阅过程中还要填写许多相关的卡片,使得图书的管理效率低下,图书流通速度较慢,因而从一定程度上也影响了知识的传播速度。

学校作为教书育人的中坚力量,图书馆的作用更是举足轻重。学校图书馆要做到平安顺畅的运转,为广阔同学提供良好的效劳,就必须有一套完善健全的运行管理机制。联系实际,考虑各层次学校的情况,软件本身要求易学,界面友好,容易掌握,可以较简单方便的管理各种图书信息;硬件的配置要求不能太高,这样可以很好的适应当前的学校图书馆。系统的总体特点应该是方便、简单、实用。1.3处理需求本系统采用ASP语言实现,开发平台使用Dreamweaver8.0,数据库使用SQLServer2005。ASP是一种网络编程技术,能够支持动态网络编程。Dreamweaver8.0是一种编辑网页的工具,支持ASP、JSP、PHP等根本网络技术及其语言。SQLServer2005可以简化根本的数据库操作,通过与VisualStudio工程的集成,数据库应用程序的设计和开发也变得更加简单。此外,效劳和修补也得到了简化和自动化。用户的需求具体表达在各种对图书馆书籍信息的查询、借阅、归还、续借和资料的修改,这就要求数据库结构能充分满足各种信息的输出和输入。二、概要设计概要设计的目的是通过本系统软件,能帮助前台操作人员〔读者〕利用计算机快速方便的进行图书预定、图书检索等操作。概要设计的任务是根据需求分析得到的用例图确定一个合理的软件系统的体系结构,作为系统的详细设计的根底和准备。以下内容为读者借阅模块的流程图和结构图:2.1系统前台运行〔读者借阅模块〕流程图用户登陆用户登陆读者图书检索图书借阅查询个人信息查询密码修改图2.1系统前台运行流程图系统运行流程图描绘了读者借阅模块的总体运行情况。浏览此图可对整个基于web的图书馆管理系统的读者借阅模块有一个快速、清晰的认识。上图为基于web的图书馆管理系统的前台运行流程图。2.2目标系统体系结构2系统前台运行〔读者借阅模块〕结构图读者借阅读者借阅模块个人信息管理图书检索图书操作密码修改按图书类别按书名按作者按书架按出版社图书借阅查询图书到期查询个人信息查询图系统前台运行结构图四、数据库表设计读者读者图书借还属于角色学号用户名密码性别院系住址角色标识出生年月书号书名分类号作者出版社价格摘要关键词图书状态登记日期出版日期角色名称n1mn角色标识属于图书类型类型名类型号类型描述n1读者:〔学号、用户名、密码、读者性别、所在院系、家庭住址、联系、出生年月、角色标识〕图书:〔书号、图书名称、所属分类号、作者、出版社、价格、出版日期、摘要信息、关键词、图书状态、登记日期〕角色:〔角色标识、角色名称〕借阅:〔借阅号、学号、书号、借书日期、还书日期、图书的状态〔是否借出〕、超出天数、罚款金额〕图书类型:〔类型号、图书类型名称、图书类型描述〕4.2数据库结构描述主要包括各个表结构设计表User表(系统用户信息数据表)表Book表(图书信息表)表BorrowRec表(图书借阅信息表)表BookType表(图书类型表)表Role表(角色表)表之间的关系图:以下是局部SQL脚本视图局部:CREATEVIEW[dbo].[View_4]ASook.bookID,dbo.Reservation.bookIDASExpr1,dbo.BorrowRec.borrowRecID,dbo.BorrowRec.bookIDASExpr2,dbo.BorrowRec.readerIDASExpr3FROMdbo.BorrowRecINNERJOINdbo.ReservationONdbo.BorrowRec.readerID=dbo.Reservation.readerIDINNERJOIN'GOCREATEVIEW[dbo].[View_3]ASFROMdbo.UsersINNERJOIN'GOCREATEVIEW[dbo].[View_2]ASFROMdbo.BorrowRecINNERJOIN'GOCREATEVIEW[dbo].[View_1]ASSELECTdbo.BookType.bookTypeID,dbo.Book.bookTypeIDASExpr1FROMdbo.BookINNERJOIN'GO建表局部:〔生成脚本〕SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Users]')ANDtypein(N'U'))BEGINCREATETABLE[dbo].[Users]( [userID][nvarchar](50)NOTNULL, [userName][nvarchar](50)NULL, [userPassword][nvarchar](50)NULL, [userGender][bit]NULL, [userDepartment][nvarchar](50)NULL, [userAddress][nvarchar](50)NULL, [userPhone][nvarchar](50)NULL, [userBirthday][datetime]NULL, [roleID][int]NULL,CONSTRAINT[PK_Reader]PRIMARYKEYCLUSTERED( [userID]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Role]')ANDtypein(N'U'))BEGINCREATETABLE[dbo].[Role]( [roleID][int]IDENTITY(1,1)NOTNULL, [roleName][nvarchar](50)NULL,CONSTRAINT[PK_Role]PRIMARYKEYCLUSTERED( [roleID]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Book]')ANDtypein(N'U'))BEGINCREATETABLE[dbo].[Book]( [bookID][nvarchar](50)NOTNULL, [bookName][nvarchar](50)NULL, [bookIndex][nvarchar](50)NULL, [bookTypeID][int]NULL, [author][nvarchar](50)NULL, [publish][nvarchar](50)NULL, [price][money]NULL, [publishDate][datetime]NULL, [abstract][ntext]NULL, [keyword][nvarchar](50)NULL, [status][int]NULL, [registeDate][datetime]NULL,CONSTRAINT[PK_BookInfo]PRIMARYKEYCLUSTERED( [bookID]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[BookType]')ANDtypein(N'U'))BEGINCREATETABLE[dbo].[BookType]( [bookTypeID][int]IDENTITY(1,1)NOTNULL, [bookTypeName][nvarchar](50)NOTNULL, [bookTypeDesc][nvarchar](50)NULL)ON[PRIMARY]ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[BorrowRec]')ANDtypein(N'U'))BEGINCREATETABLE[dbo].[BorrowRec]( [borrowRecID][int]IDENTITY(1,1)NOTNULL, [readerID][nvarchar](50)NOTNULL, [bookID][nvarchar](50)NOTNULL, [beginDate][datetime]NULL, [endDate][datetime]NULL, [borrowStatus][bit]NULL, [overdueDays][int]NULL, [penalty][money]NULL,CONSTRAINT[PK_BorrowRec_1]PRIMARYKEYCLUSTERED( [borrowRecID]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]END存储过程脚本:SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_SearchBook]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEPROCEDURE[dbo].[Proc_SearchBook] (@bookTypeID int, @queryByCol [varchar](10), @Content [varchar](50) )ASbegindeclare@sqlnvarchar(1000)--生成的sql语句if@bookTypeID=0--0为“全部〞begin set@sql=''select*fromBookwhere''+@queryByCol+''like''''%''+@Content+''%'''''' execsp_executesql@sqlendelsebegin set@sql=''select*fromBookwhere[bookTypeID]=''+str(@bookTypeID)+''and''+@queryByCol+''like''''%''+@Content+''%'''''' execsp_executesql@sqlendend'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[proc_InAndOut]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEproc[dbo].[proc_InAndOut](@outParamintoutput,@inParamnvarchar(50))asifexists(select*from[user]whereuserName=@inParam)beginset@outParam=1;endelsebeginset@outParam=0;end'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_UpdateUserInfo]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEPROC[dbo].[Proc_UpdateUserInfo]@userIDNVARCHAR(50),……)ASUPDATEUsersSETuserDepartment=@userDepartment,......)WHEREuserID=@userID'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_UsersDetail]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'createPROCEDURE[dbo].[Proc_UsersDetail] @UserID [varchar](50)ASSELECT*FROM[dbo].[Users]WHEREuserID=@UserID'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_GetUserInfoByID]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEPROCEDURE[dbo].[Proc_GetUserInfoByID] @userIDVARCHAR(50)ASSELECT*FROM [dbo].[Users]WHERE userID=@userID'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_GetUsers]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEPROCEDURE[dbo].[Proc_GetUsers]ASSELECT*FROMUsers'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_DeleteUsers]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'Createprocedure[dbo].[Proc_DeleteUsers]@userIDnvarchar(50)AS DELETEFROMUserswhereUserID=@userID'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_UpdateUser]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEPROC[dbo].[Proc_UpdateUser](@userIDnvarchar(50),……)ASupdate[Users]setuserName=@userName,......whereuserID=@userID'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_GetRole]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'createproc[dbo].[Proc_GetRole]AS SELECT*FROM[Role]'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_GetBooks]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'createPROC[dbo].[Proc_GetBooks]AS SELECT*FROMBook'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_DeleteBook]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEPROC[dbo].[Proc_DeleteBook]@bookIDnvarchar(50)ASDELETEFROMBookWHEREbookID=@bookID'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_GetBookInfoByID]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEPROC[dbo].[Proc_GetBookInfoByID]@bookIDnvarchar(50)ASSELECT*FROMBookWHEREbookID=@bookID'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_AddBook]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'createPROCEDURE[dbo].[Proc_AddBook] ( @bookID nvarchar(50),……)ASINSERTINTO[Book] ([bookID],……)VALUES (@bookID,……)'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_GetCurrentBorrow]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEPROCEDURE[dbo].[Proc_GetCurrentBorrow] @userIDVARCHAR(50)ASSELECT [dbo].[borrowRec].[readerID],…… FROM [dbo].[borrowRec], [dbo].[book]WHERE book.bookID=borrowRec.bookID ANDborrowStatus=''True'' ANDreaderID=@userID'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_GetBorrowHistory]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEPROC[dbo].[Proc_GetBorrowHistory]@userIDNVARCHAR(50)ASSELECT*FROMBookWHEREbookIDIN(SELECTbookIDFROMBorrowRecWHEREreaderID=@userIDANDborrowStatus=''False'')'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_UpdateBookByID]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'CREATEproc[dbo].[Proc_UpdateBookByID]@bookIDnvarchar(50),……ASupdateBooksetbookName=@bookName,.....wherebookID=@bookID'ENDGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMWHEREobject_id=OBJECT_ID(N'[dbo].[Proc_SelectBookType]')ANDtypein(N'P',N'PC'))BEGINEXECdbo.sp_executesql@statement=N'--=============================================--Author: <Author,,Name>--Createdate:<CreateDate,,>--Description: <Description,,>--=============================================CREATEPROCEDURE[dbo].[Proc_SelectBookType] --AddtheparametersforthestoredprocedurehereASBEGIN --SETNOCOUNTONaddedtopreventextraresultsetsfrom --interferingwithSELECTstatements. SETNOCOUNTON;--Insertstatementsforprocedurehere SELECTBookTypeID,BookTypeNameFROMBookTypeEND,END详细设计 读者读者查询个人信息图书管理系统操作员管理员查询图书信息查看借阅情况修改密码借书处理查看读者借阅情况还书处理读者信息管理图书信息管理修改密码5.2系统局部功能模块具体分析及实现借书/还书处理功能的实现借书和还书是图书借阅管理系统的一个最重要也是最根本功能。它在图书管工作人员的操作下,对本公司(企业)员工的借还书情况进行录入、修改、查询等一系列的过程。在程序中,利用vbscript脚本语言实现画面的控制,利用asp语言来实现对库的操作和算法流程的控制。借书功能的具体实现借书是图书管工作人员根据借阅者所借书籍的图书编号〔当然这个编号于每一本图书是唯一的〕将该图书登入借书表单,并对其借阅时间和借阅数量进行控制的过程。因为该系统是针对公司〔企业〕的图书馆进行管理的,所以图书借阅也仅对公司内部人员进行开放,所以借阅者必须根据自己的工号〔工作证编号〕和其它一些在公司的相关信息办理读者证后,工作人员根据借阅者所持读者证的读者证号〔该读者的唯一标识〕进行查询,如果该读者在读者信息数据库中有记录,那么调出该读者个人信息和他〔她〕已借书籍的信息,如果读者信息数据库中无该读者信息,那么此人不能借阅书籍。一般来说,只要该读者信息真实存在,就可以借阅书籍了,但为了有效控制图书的借阅秩序,对于有过期未还书籍的读者和借书数目超过最大限制的读者,不能继续借书,此外,当该读者借阅了一本书后,系统应即时显示他〔她〕最新的借阅情况,如果借阅数目未满,那么可以在原界面继续操作〔借书〕。算法描述如下:首先导入数据库连接,以便对读者信息表和图书根本信息表进行查询和修改,因为借书只能是拥有图书馆工作人员以上的权限的人才能进行的操作,所以在程序开始部份还应先判断一下用户的权限,如果没有工作人员的权限,那么要先进行管理员登陆,即转向登陆界面:〔此处用到“session“这个物件来[4]存取一个变量记录登陆的用户名,它可以在同一个客户端多个翻开的浏览器之间传递变量值,如果用户能过了管理员登陆,那么变量值不会为空,相反那么为空:ifsession("user_name")=""then导向管理员登陆界面endif接下来就是借书操作了://变量说明局部//readerno为读者证号//borrowno为借书编号//number为是否标志是否查询的读者信息是否存在,初始为1,表示有信息,如果输入读者证号后,没有查到读者信息,那么更新为0。//clickselect为是否查询过读者信息,即是否点击过读者信息的“查询“按扭//booknumber统计已借书籍的数据量,初始化设为0,如果查到已借书籍大于或等于3时,该变量设为3。//count统计过期第个读者过期未还的书籍数目先查询读者证号,如果读者证号为空,提示要求输入。这里可以放在读者证“查询〞的单击事件中:subreaderno_onclick//读者证“查询〞的单击事件ifreaderno=""then//如果读者证号为空,提示要求输入显示"请输入读者证号!"将光标定位于读者证号的输入框endif clickselect="1"//已查询读者信息 booknumber="0//借阅书目初始化为0提交当前表单的信息 endsub查询了读者信息后,如果该读者在数据库中有记录,而且已借书籍没有超过去3本,那么可以借书,如果没有记录,那么屏蔽“借书〞的功能,要求用户输入正确的读者证号:Ifreaderno<>""then根据readerno查询读者信息数据库readerinformationif查询的记录数=0then提示用户“无相应记录〞number="0"将光标定位于读者证号输入框结束后面的ASP程序的运行,即不再查询已借书目信息else显示读者的个人信息endififreaderno<>""orborrowno<>""then根据readerno将book_input与reaerinformation关联起来查询book_input中loaner(借阅者)为readerno的所有图书信息 if查询的记录数=0then显示“没有借书记录〞elseif已借书记录>=3then显示"你的书已借满"booknumber="3"endifIf已借书记录<=3and已借书记录>0thenForI=1to已借书记录数显示已借的书目信息dd=读取数据库中“借阅日期〞字段ifdd<>""thenif当前日期-当前读取的借阅日期>60thencount=count+1 endifendifNextendifendififcount<>0then提示"你有过期未还的书!"更新book_input中刚查到的过期未还的书的book_state为1更新readerinfomation中该读者的reader_state为1endifEndififbooknumber>=3orcount<>0then屏蔽“借书“功能,即不显示借书按扭endif假设未屏蔽借书功能,那么可以借书先输入借书编号,按下借书按扭,如果编号为空,要求输入,如果未查询读者证号就点击借书按扭,那么提示用户先查询读者证号后,此段程序可放入借书按扭单击事件中:subborrowbook ifreaderno=""then显示"请先查询借书者的读者证号!" elseifborrowno=""then显示"请输入借书编号" endif提交当前表单信息 endsub提交信息后,除运行上面的程序外,还要执行提交状态后的程序:ifborrowno<>""then查询book_input中的book_no为borrowno记录if查询记录数<>0if是否已借字段内容=1then 显示"该书已借出!"else是否已借字段内容=1借阅日期字段=今天的日期借阅者字段=当前输入的读者证号endif else显示"没有这本书!" endifendif在借书这个程序中,我们利用读者证号这个关键字,把读者信息表和图书根本信息表联系起来,多方面考虑问题,把借书过程中可能出现的状况,都要一一考虑进来,方便能工作人员和读者。还书功能的具体实现还书是在借书的根底上来操作的过程,总的原那么是,没有借书,就没有还书,还书所要实现的功能,在某种程度上和借书是相似的,同样要提示读者是否有过期未还的书,此时也需要对库中的信息进行更改。还书以后,也要即时的反溃当前的借书状况,以便读者和工作人员知道“还书〞是否操作成功。与借书相比,借书是通过读者证号和图书编号来登记,而还书只需要且必须要图书编号来登记还书。当查到该编号的图书,而且确实是未还图书,那么将显示还书者的读者信息和所有他(她)的已借书目信息.我们要实现的目标是尽可能方便能的操作和尽可能直观的反溃!所以我们采用输入图书编号来还书的同时,查阅出借该书的读者的所有借书记录,只要点击所列出的该读者借书记录中的某一条,就可以还这本书.还有一点是还书需要处理的,那就是续借,如果读者想要续借,应该很方便的进行,与还书一样,只要点击要续借的书按“续借〞即可,但是要考虑如果该书已过期,那么不能续借。算法描述如下:首先导入数据库连接,以便对读者信息表和图书根本信息表进行查询和修改:<!--#includefile="data_cnn.inc"-->因为还书只能是拥有图书馆工作人员以上的权限的人才能进行的操作,所以在程序开始部份还应先判断一下用户的权限,如果没有工作人员的权限,那么要先进行管理员登陆,即转向登陆界面,这局部的操作和借书是一样的:ifsession("user_name")=""then导向管理员登陆界面endif接下来是还书的操作://变量说明局部//returnno为还书编号 //state表示当前有无可还书的记录//reloan表示是否要续借//step表示是否提交过表单,1-初始状态,2-已经提交//reader_no表示还书者读者编号//book_no表示当前要还的或要续借的图书编号//count表示当前有没有过期未还的书subreturn//还书按扭单击事件ifreturnno=""then显示"请输入还书编号!"光标定位到输入还书编号栏else step=1带上还书编号提交表单endif接下是查询该还书编号的书Ifrequest("returnno")<>""then在数据库中查询该编号的图书 if查询的记录数=0andreader_no=""then提示“可能输入了无效的图书编号或该书没有借出,请重输!〞结束程序的继续执行 else对将要显示的当前所要还的书籍的表格中的借阅者,书籍编号,书名,作者,借阅日期单元格的内容填值if当前日期-借阅日期>60then更改读者信息表中的reader_state为1提示用户“你的书已过期!〞endif//根据借阅者的读者证号查询该读者的相关信息sqlstr2="select*frombook_readerinfowherereader_no='"&loaner&"'"对要显示读者信息的栏位赋值endif如果找到了要还的书,便可以还书或续借了ifreturnno=""then显示"请先输入还书编号"光标定位于还书编号 exitsubendif ifstate="no"then光标定位于还书编号 exitsub endif ifbook_no=""then显示"请选择要还的书!" exitsub endifreturn_book.submit//提交当前表单*****以上这段程序可以放在借书按的单击事件中*****以下是续借按扭的单击事件的算法subcontiborrow//续借按扭单击事件ifbook_no=""then显示"请选择要续借的书!" exitsubendifreloan="yes"提交表单endsub提交表单后,要对库中的数据表进行还书和续借的操作了从提交的表单中提取所有的读者信息和当前所要还的图书编号 count=0//设当前无过期书籍 ifbook_no<>""andreader_no<>""then if当前日期-借阅日期>60then ifreloan="yes"then提示"书已过期,不能续借!"不再做任何更改库中记录的操作,所回续借前的状态结束ASP程序的运行 endif endififreloan="yes"then将当前书籍的借阅日期减一个月,因为续借只能是一个月else复原当前所还书籍的借阅者,借阅日期,是否借阅为初始状态。 //再一次查找当前还书者的所有借书情况sqlstr3="select*frombook_inputwhereisloan=1andloaner='"&reader_no&"'" if查询记录数>0then fori=1to查询记录数//查找在还了当前所要还的书以后是否还有过期未还的书if当前-借阅日期>60then count=count+1 endif next ifcount=0then将当前的还书者的状态reader_state复原为0 endif else//如果已经没有要还的书籍将当前的还书者的状态reader_state复原为0 endif endif 编码实现程序6.1管理员及用户登陆界面(adminlogin.asp)管理员登陆界面主要功能是实现管理员的登陆,其主要代码如下:程序清单:ifSession("username")="admin"ThenResponse.Redirect("sele_dele_messages.asp")Endif%><html><head><meta-equiv="Content-Type"content="text/html;charset=gb2312"><title>登陆界面</title><styletype="text/css"></head><body><divalign="center"><imgsrc="Images/BackGround_Top0.gif"alt="dl"width="1024"height="100"hspace="100"align="middle"/></div><p> </p><p> </p><p> </p><tablewidth="43%"border="0"align="center"><tralign="center"bgcolor="#00FFFF"><tdcolspan="3"><spanclass="STYLE2">图书管理系统登录</span></td></tr><tralign="center"bgcolor="#99FF00"><tdwidth="27%"height="40"><spanclass="STYLE3">用户名:</span></td><tdwidth="47%"valign="middle"><tablewidth="90%"border="1"align="center"><trbgcolor="#FFFFFF"><tdheight="24"> </td></tr></table></td><tdwidth="26%"> </td></tr><tralign="center"bgcolor="#99FF00"><tdheight="45"><spanclass="STYLE3">密码:</span></td><td><tablewidth="90%"height="30"border="1"><tralign="left"valign="middle"bgcolor="#FFFFFF"><td> </td></tr></table></td><td> </td></tr><tralign="center"bgcolor="#00FFFF"><tdheight="40"colspan="2"><ahref="Operater/opt3.html"><imgsrc="Images/Login.GIF"alt="dlbt"width="65"height="29"border="0"/></a></td><tdheight="40"> </td></tr><p></table><inputtype="submit"value="登录"><inputtype="reset"value="全部重填"></p></form></body></html>程序清单<%OptionExplicit%><%DimuserName,passworduserName=Trim(Request.Form("txtUserName"))password=Trim(Request.Form("pwdPassword"))DimstrDSNDimconnGuestbookstrDSN="Proviser=NSDASQL;DRIVER={SQLNativeClient};SERVER=localhost;DATABASE=Guestbook;UID=manager;PWD=123456"SetconnGuestbook=Server.CreateObject("ADODB.Connection")connGuestbook.OpenstrDSNDimrsAdminsDimstrSqlSelectAdminsSetrsAdmins=Server.CreateObject(“ADODB.Recordset〞)strSqlSelectAdmins=〞SELECT*FROMAdminsWHEREusername=’〞+username+〞’Andpassword=’〞+password+〞’〞rsAdmins.OpenstrSqlSelectAdmins,connGuestbookifNotrsAdmins.EofthenSession(“username〞)=usernameResponse.Redirect(“sele_dele_messages.asp〞)EndIf%><html><head><meta-equiv=〞Content-Type〞content=〞text/html;charet=gb2312”><title>留言板</title></head><body><divalign="center"><imgsrc="Images/BackGround_Top0.gif"alt="dl"width="1024"height="100"hspace="100"align="middle"/></div><p> </p><p> </p><p> </p><tablewidth="43%"border="0"align="center"><tralign="center"bgcolor="#00FFFF"><tdcolspan="3"><spanclass="STYLE2">图书管理系统登录</span></td></tr><tralign="center"bgcolor="#99FF00"></td></tr><tdcolspan=〞2”Width=〞542”height=〞1”><hr></td></tr></table>用户名或密码错误!<br><br>单击<ahref=〞logon.asp〞>重新登录</a></body></html>2.退出登录:<%Session(“username〞)=〞〞Response.Redirect(“sele_disp_message.asp〞)%>6.2管理员操作平台界面〔admin_alterinfo.asp〕管理员操作平台,包括:管理员用户对图书的查询、借阅者图书的归还、图书的借阅、图书的添加、图书的删除、查询用户、添加用户和删除用户功能模块。6.3图书借阅界面(jieshu.asp)管理员用户通过借阅者的学号以及所借书号,对用户实现借书。实现该功能的主要代码如下:<tableborder="0"align="center"cellpadding="0"cellspacing="0"><tr><td> </td><tdcolspan="2"><divalign="center"class="title">借阅图书</div></td><td> </td></tr><tr><td><imgname="img"src=""width="120"height="8"alt=""></td><tdclass="style3"><imgname="img"src=""width="80"height="8"alt=""></td><td><imgname="img"src=""width="80"height="8"alt=""></td><td><imgname="img"src=""width="120"height="8"alt=""></td></tr><tr><td> </td><tdvalign="bottom"class="style4"> </td><td> </td><td> </td></tr><tr><td> </td><tdvalign="bottom"class="style4"><divalign="center"class="style3">输入学号:</div></td><tdvalign="bottom"><divalign="center"><inputname="xuehao"type="text"class="style3"size="10"></div></td><td> </td></tr><tr><td> </td><tdclass="style2"> </td><td> </td><td> </td></tr><tr><td> </td><tdvalign="bottom"class="style4"><divalign="center"class="style3">输入书号:</div></td><tdvalign="bottom"><divalign="center"><inputname="shuhao"type="text"class="style3"size="10"></div></td><td> </td></tr><tr><td> </td><td> </td><td> </td><td> </td></tr><tr><td> </td><td><divalign="center"><inputtype="Submit"class="style3"value="确认"></div></td><td><divalign="center"><inputtype="reset"class="style3"value="重新输入"></div></td><td> </td></tr><tr><td> </td><td> </td><td> </td><td> </td></tr></table>〔huanshu.asp〕管理员用户通过借阅者的学号以及所借书号,对用户实现还书。6.5图书查询界面〔guest.asp〕借阅者用户和管理员用户均可选择性地查询图书,类型包括:书号、书名、作者、出版社、单价、图书类型。按照书号条件查询:strsql="select*from图书表where书号='"&shuhao&"'"代码:<!DOCTYPEhtmlPUBLIC"-//W3C/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论