PHP+MYsql图书管理系统

更新时间:2024-01-17 16:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

题 目 图书管理系统 院 系 信息科学与技术学院 专 业 软件技术专业

姓 名 刘赛 樊双起 刘利文 授课教师 程霄

班级学号 23 04 38

目录

1 绪论............................................................................................................................................... 3

1.1 研究背景 .............................................................................................. 3

1.2 研究现状 .............................................................................................. 4 1.3 研究意义 .............................................................................................. 4

2相关技术综述 ................................................................................................................................ 5

2.1 PHP技术 .............................................................................................. 5 2.2 MYSQL数据库 .................................................................................... 6 2.3 Apache ................................................................................................... 7 2.4 WampServer .......................................................................................... 8 2.5 数据库简介 .......................................................................................... 8 2.6 网页制作工具 ...................................................................................... 9 2.7 B/S模式 .............................................................................................. 10

3 需求分析 ..................................................................................................................................... 13

3.1 系统需求 ............................................................................................ 13 3.2 需求分析 ............................................................................................ 13

3.2.1 功能分析 ................................................................................. 13 3.2.2 功能描述 ................................................................................. 13 3.2.3可行性分析 .............................................................................. 14

1

4 总体设计 ..................................................................................................................................... 15

4.1 系统流程图 ........................................................................................ 15

4.2 数据库设计 ........................................................................................ 15

4.2.1 数据库概念设计 ..................................................................... 15 4.2.2 创建数据库及数据表 ............................................................. 17

5 设计思想与实现 ......................................................................................................................... 28

5.1 首页设计 ............................................................................................ 28

5.1.1首页概述 .................................................................................. 28 5.1.2 首页实现过程 ......................................................................... 30 5.2 管理模块设计 .................................................................................... 31

5.2.1 管理员模块概述 ..................................................................... 31 5.2.2 管理员模块技术分析 ............................................................. 32 5.2.3系统登录的实现过程 .............................................................. 33 5.2.4查看管理员的实现过程 .......................................................... 35 5.2.5 添加管理员的实现过程 ......................................................... 37 5.2.6设置管理员权限的实现过程 .................................................. 38 5.2.7删除管理员的实现过程 .......................................................... 40 5.3图书档案管理模块设计 ..................................................................... 41

5.3.1图书档案管理模块概述 .......................................................... 41 5.3.2图书档案管理模块技术分析 .................................................. 42 5.3.3查看图书信息列表的实现过程 .............................................. 42 5.3.4添加图书信息的实现过程 ...................................................... 44 5.3.5 修改图书信息的实现过程 ................................................... 45 5.3.6 删除图书信息的实现过程 ................................................... 46 5.4.1 图书借还模块概述 ............................................................... 47 5.4.2 图书借还模块技术分析 ....................................................... 47 5.4.3图书借阅的实现过程 .............................................................. 48 5.3.4 图书续借的实现过程 ........................................................... 52 5.4.5图书归还的实现过程 .............................................................. 54 5.4.6 图书借阅查询的实现过程 ................................................... 55

6.系统测试 ...................................................................................................................................... 61

6.1 软件测试概念与方法 ........................................................................ 61

6.2 测试内容 ............................................................................................ 62 6.3测试结果 ............................................................................................. 62

6.3.1 登陆测试 ................................................................................. 63 6.3.2添加会员页面 .......................................................................... 63

2

6.3.3借还书测试 .............................................................................. 64

7.总结.............................................................................................................................................. 66 8.参考文献 ..................................................................................................................................... 67

1 绪论

1.1 研究背景

随着社会的发展和经济的进步, 科学技术的飞速发展把人类社会推向了一个崭新的时代——信息时代。学校是人们学习知识、获取信息的主要场所。由于我国的教育行业飞速发展,目前各类学校的学生人数与日俱增,随之而来的是学校所拥有的图书越来越多,在这种情况下,对图书的管理和查询以及对借阅者的管理都变得非常困难,利用计算机设计的图书馆管理系统对其进行辅助管理,是一种很好的方法。图书管理系统的开发和应用,可以提高学校的管理水平以及办公效率,为学校的图书信息的管理提供了一个良好的工具,化简了繁琐的工作模式,从而使得学校的管理更加规范化和科学化。良好的管理信息系统节省了大量的人力和物力,避免了大量重复性工作。它作为计算机应用的一部分,使用计算机对图书信息进行管理,有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书管理的效率,也是学校科学化、正规化管理的重要条件。

3

1.2 研究现状

随着计算机及网络技术的飞速发展,信息自动化的作用也越来越大。这就使传统的图书管理方式受到了很大的冲击,有关图书的借阅工作部分还是手工管理,工作效率很低,并且不能及时了解图书的种类和读者们比较需求的图书等,不能更好的适应当前读者的借阅要求。手工管理还存在这许多弊端,由于不可避免的人为因素,造成数据的遗漏、误报。现今许多学校图书馆已经逐步实现了利用计算机对图书进行信息化管理,但大部分使用的是VB、VC++等系统,这些系统多数使用access数据库,它在并发操作的控制和数据库安全性方面远没有MYSQL强大,不能够进行基于web的管理,即使如此,还有更多的二级学院因经费等各种原因还是延续传统手工管理模式,工作量巨大、存放麻烦、更新困难、不易备份,已不能适应信息化社会的要求。

1.3 研究意义

本系统主要适用于二级学院的图书管理,编写本系统是为了达到图书管理工作系统化、智能化、规范化、自动化、科学化,减轻管理人员的工作强度,方便查询与统计,节约时间,从而达到提高图书管理效率的目的。使用本系统,图书管理人员作为桥梁、导航的作用将变得更为重要,图书管理工作变得更加便利和高效,系统将传统的方式与现代的信息技术相结合,为读者提供更加优质的服务,只有如此,才能有效地提高学校的科研和教学水平。 本系统服务器端采用MYSQL数据库系统和PHP组件来构成整个图书管理系统客户端采用浏览器来实现信息管理的全过程,同时管理员通过浏览器也可以进行远程系统的维护和管理。本系统选择使用目前比较流行的apache服务器结合mysql数据库使用php语言进行web设计。

4

2相关技术综述

2.1 PHP技术

PHP“PHP Hypertext Preprocessor”超文本预处理器的字母缩写,是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。它是一种服务器端的 HTML 脚本编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言。

PHP代码在服务器端被解释转变成普通的HTML页面内容,送给浏览器端,这种模式可使我们用它来完成相当复杂的功能。它能运行在包括Windows、Linux等在内的绝大多数操作系统环境中,常与免费的Web服务器软件Apache和免费数据库软件MySQL配合使用于Linux平台上,具有较高的性能价格比。

强大的数据库支持 目前其支持范围覆盖了包括Oracle,Sybase,Microsoft SQL,MySQL,Informix、Solid dBase,ODBC,Unix db,PostgreSQL,Adabas D等在内的大多数常见数据库。用它编写一个含有数据库功能的网页程序十分简单。

PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是绝佳组合。你还可以自己编写外围的函数去间接存取数据库。通过这样的途径当你更换使用数据库时,可以轻松的更改编码以适应变化。

可扩展性 就像前面说的那样PHP已经进入了一个高速发

5

展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。

面向对象编程 PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。

可伸缩性 传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。

2.2 MYSQL数据库

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能

有限,MySQL不支持视图已经被列入5.1版的开发计划、事件等等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。在数据库的发展历程中曾出现过多种不同形式的数据库系统,但关系型数据库管理系统(RDBMS)以其优越性而被广为采用,象现在几种广泛使用的数据库全为关系型数据库。同样,MySQL也是关系型的数据库系统,支持标准的结构化查询语言(Structured Query Language)。MySQL是C/S架构的服务器服务器端是多线程的,为客户端提供了不同的程序接口和链接库,如C、C++、Java、Perl、PHP、Tcl等,也提供了简单的管理工具,如mysqladmin,mysql等。目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP)即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站

6

系统。相比较其他系统而言,MySQL数据库可以称得上是目前运行速度最快的SQL语言数据库之一,除了具有许多其它数据库所不具备的功能和选择之外,MySQL数据库是一种完全免费的产品,用户可以直接从网上下载数据库,用于个人或商业用途,而不必支付任何费用。

总体来说,MySQL数据库具同时访问数据库的用户数量不受限制;可以保存超过50,000,000条记录,是目前市场上现有产品中运行速度最快的数据库系统;用户权限设置简单、有效。

2.3 Apache

Apache是世界使用排名第一的Web服务器软件。

Apache起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发。此后,Apache Httpd被开放源代码团体的成员不断的发展和加强。Apache Http网站服务器拥有牢靠可信的美誉,已经在全球超过半数的网站中被使用-特别是几乎所有最热门和浏览量最大的网站。比方说,维基百科网站服务器就是使用Apache的。

刚开始发展时,Apache只是Netscape网页服务器(现在是Sun ONE)之外的开放源代码选择之一。慢慢地,它开始在功能和速度超越其他基于Unix的HTTP服务器。到了Apache 2.x的时代,实际效率又比Apache 1.x更快,2.x比1.x能同时服务更多的网页连线数。

1996年4月以来,Apache一直是Internet上最流行的HTTP服务器:1999年5月它在57%的网页服务器上运行,到了2005年7月这个比例上升到了69%。在2005年11月最风光的时候达到接近70%的市占率,不过在部份拥有大量域名的主机域名商转换为微软IIS平台后,Apache市占率近年来呈现些微下滑。同时搜寻引擎巨擘Google自己的网页服务器平台GWS推出后(也可说是一种修改版的Apache[3]),再加上nginx、Lighttpd等轻量化网页服务器软件在市场上有一些能见度,这些因素都反应在整体网页服务器市占率的消长,Apache的市占率就随之滑落。根据Netcraft在2009年12月的最新统计数据,Apache的市占率已经降为53.67%,IIS降为18.26%,谷歌网页服务器13.53%,nginx 8.75%。尽管如此,Apache仍旧是当前互联网市场上,市占率最高的网页服务器软件。

7

2.4 WampServer

WampServer是Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。在windows下将Apache+PHP+Mysql 集成环境,拥有简单的图形和菜单安装和配置环境。PHP扩展、Apache模块,开启/关闭鼠标点点就搞定,再也不用亲自去修改配置文件了,WAMP它会去做。再也不用到处询问php的安装问题了,wampserver一切都搞定了。这个软件是完全免费的,可以在其官方网站下载到最新的版本。本文中使用的版本是WampServer 2.0f(发布日期2008年12月16日),其中包括Apache 2.2.11,PHP 5.2.8,MySQL 5.1.30

2.5 数据库简介

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。 数据整体性

数据库是一个单位或是一个应用领域的通用数据处理系统,他存储的是属于企业和事业部门、团体和个人的有关数据的集合。数据库中的数据是从全局观点出发建立的,他按一定的数据模型进行组织、描述和存储。其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。 数据共享性

数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约。不同的用户可以按各自的用法使

8

用数据库中的数据;多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。

2.6 网页制作工具

本系统的开发主要依靠Macromedia Dreamweaver 8制作动态网页。

Macromedia Dreamweaver 8是一款专业的HTML编辑器,用于对Web站点、Web页和Web应用程序进行设计、编码和开发。无论是喜欢直接编写HTML代码的驾驭感还是偏爱在可视化编辑环境中工作,Dreamweaver 都能提供帮助良多的工具,丰富 Web 创作体验。

利用 Dreamweaver中的可视化编辑功能,可以快速创建 Web 页面而无需编写任何代码。可以查看所有站点元素或资源并将它们从易于使用的面板直接拖到文档中。可以在 Macromedia Fireworks 或其它图形应用程序中创建和编辑图像然后将它们直接导入 Dreamweaver,从而优化开发工作流程。Dreamweaver 还提供了其它工具,可以简化向 Web 页中添加 Flash 资源的过程。除了可帮助生成 Web 页的拖放功能外,Dreamweaver 还提供了功能全面的编码环境,其中包括代码编辑工具(例如代码颜色、标签完成、“编码”工具栏和代码折叠);有关层叠样式表 (CSS)、JavaScript、ColdFusion 标记语言 (CFML) 和其它语言的语言参考资料。Macromedia 的可自由导入导出 HTML 技术可导入手工编码的 HTML 文档而不会重新设置代码的格式,可以随意用首选的格式设置样式来重新设置代码的格式。

Dreamweaver 还可使用服务器技术(如 CFML、ASP.NET、ASP、JSP 和 PHP)生成动态的、数据库驱动的 Web 应用程序。如果使用 XML 数据,Dreamweaver 也提供了相关工具,可帮助创建 XSLT 页、附加 XML 文件并在 Web 页中显示 XML 数据。

Dreamweaver 可以完全自定义。可以创建自己的对象和命令

JavaScript 代码,用新的行为、属性检

查器和站点报告来扩展 Dreamweaver 的功能。

9

2.7 B/S模式

在因特网上,万维网即Web以B/S(Browser/Server)形式运行,网页以文件形式存储在服务器中。万维网与因特网是有根本区别的,万维网只是因特网提供的服务之一,是存储在全世界Internet计算机中、数量巨大的文档的集合,是一种图形化的和易于导航的与平台无关的超文本信息系统,它具有分布式、新闻性、动态、交互的特性。Web服务器,就是在因特网上昼夜不停地运行某些特别的程序(如服务器程序等)的计算机,使得世界各地的用户可随时对其进行访问或获取其中的网页。网站开发采用的是PHP、JavaScript、MySQL、Apache组合模式考虑了各种技术原有的优点。

B/S模式中PHP和JavaScript作为实现交互的开发工具,起到了连接纽带的作用。

C/S和B/S是当今世界开发模式技术架构的两大主流技术。

C/S(Client/Server)结构,即客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件。因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。

传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用

10

户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。 (1) C/S 服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。

(2) B/S 客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。用户界面完全通过浏览器实现,主要事务逻辑在服务器端实现。浏览器通过Web服务器同数据库进行数据交互。 B/S系统的三层体系结构

在B/S的系统中,用户可以通过浏览器向分布在网络上的许多服务器发出请求。B/S结构极大的简化了客户机的工作,客户机上只需安装、配置少量的客户端软件即可,服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。 在Browser/Server三层体系结构下,表示层(Presentation)、功能层(Business Logic)、数据层(Data Service)被分割成三个相对独立的单元:

第一层--表示层:Web浏览器

在表示层中包含系统的显示逻辑,位于客户端。它的任务是由Web浏览器向网络上的某一Web服务器提出服务请求,Web服务器对用户身份进行验证后用HTTP协议把所需的主页传送给客户端,客户机接受传来的主页文件,并把它显示在Web浏览器上。

第二层--功能层:具有应用程序扩展功能的Web服务器 在功能层中包含系统的事务处理逻辑,位于Web服务器端。它的任务是接受用户的请求,首先需要执行相应的扩展应用程序与数据库进行连接,通过SQL等方式向数据库服务器提出数据处理申请,然后数据库服务器将数据处理的结果提交给Web服务器,再由Web服务器传送回客户端。

第三层--数据层:数据库服务器

在数据层中包含系统的数据处理逻辑,位于数据库服务器端。它的任务是接受Web服务器对数据库操纵的请求,实现对数据库查询、修改、更新等功能,最终把运行结果提交给Web服务器。

11

从上面的分析中可以看出,三层的B/S体系结构是把二层C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由单独组成的一层功能层来负担其任务,这样客户机的压力大大减轻了,把负荷均衡地分配给了Web服务器,于是由原来的两层的C/S结构转变成三层的B/S结构。

B/S与C/S的区别表现在下述八个方面

(1)硬件环境不同 C/S一般建立在专用的、小范围的网络环境上, 局域网之间再通过专门服务器提供连接和数据交换服务;而B/S建立在广域网之上, 不必是专门的网络硬件环境,例如电话上网, 租用设备等。信息自己管理,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。

(2)对安全要求不同 C/S一般面向相对固定的用户群, 对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构较适宜。可以通过B/S发布部分公开信息;而B/S建立在广域网之上, 对安全的控制能力相对弱, 可能面向的是不可知用户。

(3)对程序架构不同 C/S 程序可以更加注重流程,可以对权限多层次校验, 对系统运行速度可以较少考虑;而B/S 对安全以及访问速度的多重考虑, 建立在需要更加优化的基础之上。它比C/S有更高的要求,B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统。 SUN 和IBM推的JavaBean 构件技术等,都使 B/S更加成熟。

(4) 软件重用不同 C/S 程序不可避免的需要整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好;而B/S 的多重结构,要求构件相对独立的功能,能够较好的重用。

(5)系统维护不同 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级较难,很有可能就是再做一个全新的系统;而B/S 构件组成,方便构件个别更换,能实现系统的无缝升级,同时系统维护开销减到最小,用户只需从网上自己下载安装就可以实现升级。 (6) 处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求较高,并与操作系统相关,应该都是相同的系统;而B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法做到的,与操作系统平台关系最小。

(7) 用户接口不同 C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高;而B/S 建立在浏览器上, 有

12

更加丰富和生动的表现方式与用户交流,并且大部分难度减低,减低了开发成本。

(8) 信息流不同 C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低;而B/S 信息流向可变化, B-B、B-C、B-G等信息、流向的变化, 更像是交易中心。

针对本网站系统的开发,经过对比,B/S比较合适。

3 需求分析

3.1 系统需求

学校图书管理系统使基于任意操作系统上的,通过对目前存在的大量的学校或社会上图书管理系统的分析和总结,然后根据学校的特点,研究一套合适于学校内部的图书管理系统。系统要求有优良的可视化图形操作界面,大力提高系统的可操作性和交互性,尽量减少操作员的负担,让他们更方便、更快捷、更简单的进行操作。还有要求系统有很强的稳定性、可维护性、扩充性、可移植性。同时,实现控制各种用户系统权限,从而保证系统的安全性。

3.2 需求分析

3.2.1 功能分析

信息技术学院图书管理系统是为学院图书管理而设计的书管理员提供提供科学化图书管理数据的平台。图书管理系统主要实现以下5方面的能:图书入库、查询、修改信息、图书借还、系统管理。

3.2.2 功能描述

13

1.书籍管理功能:包括书籍类别管理和书籍信息管理两部分。 2.读者管理部分:这一部分包括对读者信息进行管理的功能。 3.借阅管理部分:这一部分包括借书信息管理和还书信息管理两部分。

4.系统管理:包括修改系统用户密码、增加新用户以及退出系统等。

3.2.3可行性分析

技术可行性

根据系统功能、性能及实现系统的各项约束条件,现有的技术已较为成熟

好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发。

经济可行性

本系统建立在PHP开发的基础上,项目开发成本非常小。并且本系统实施后可以显著提高工作效率。所以本系统在经济上是可行的。 运行可行性

本系统采用完全的图形化界面,充分得考虑了用户对系统的易于管理,管理者方便查询设备信息效率,完全满足了使用者的要求。该系统应该提供简单的操作界面,能够快速的实现查书、借书、还书功能,该系统主要使用通用的浏览器因此便于系统的移植和使用。

14

4 总体设计

4.1 系统流程图

4.2 数据库设计

4.2.1 数据库概念设计

根据以上各节对系统所做的需求分析、系统设计,规划出本系统中使用的数据库实体分别为图书档案实体、读者档案实体、

15

借阅档案实体、归还档案实体和管理员实体。

1.图书档案实体

图书档案实体包括编号、条形码、书名、类型、作者、译者、出版社价格、页码、书架、录入时间和操作员等属性。

2.读者档案实体

读者档案实体包括编号、姓名、性别、条形码、职业、出生日期、有效证件、证件号码、电话、电子邮件、登记日期、操作员、类型和备注等属性。

1. 借阅档案实体

16

借阅档案实体包括编号、读者编号、图书编号、借书时间、应还时间、操 作员和是否归还等属性。

4.归还档案实体

归还档案实体包括编号、读者编号、图书编号、归还时间和操作员等属性。 数据库具体实现

4.2.2 创建数据库及数据表

17

结合实际情况及对用户需求的分析,学校图书馆管理系统library数据库主要包含如下11个数据

表library

表tb_bookcase

18

表tb_bookinfo

表tb_booktype

19

表tb_borrow

表tb_library

表tb_manager

20

表tb_parameter

表tb_publishing

表tb_purview

21

表tb_reader

表tb_readertype

22

-- phpMyAdmin SQL Dump -- version 3.4.10.1

-- http://www.phpmyadmin.net --

-- 主机: localhost

-- 生成日期: 2012 年 05 月 01 日 06:46 -- 服务器版本: 5.5.20 -- PHP 版本: 5.3.10

SET SQL_MODE=\SET time_zone = \ --

-- 数据库: `library` -- --

-- 表的结构 `tb_bookcase` --

CREATE TABLE IF NOT EXISTS `tb_bookcase` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1 ; --

-- 表的结构 `tb_bookinfo`

23

--

CREATE TABLE IF NOT EXISTS `tb_bookinfo` ( `barcode` varchar(30) DEFAULT NULL, `bookname` varchar(70) DEFAULT NULL, `typeid` int(10) unsigned DEFAULT NULL, `author` varchar(30) DEFAULT NULL, `translator` varchar(30) DEFAULT NULL, `ISBN` varchar(20) DEFAULT NULL, `price` float(8,2) DEFAULT NULL,

`page` int(10) unsigned DEFAULT NULL, `bookcase` int(10) unsigned DEFAULT NULL, `storage` int(10) unsigned DEFAULT NULL, `inTime` date DEFAULT NULL,

`operator` varchar(30) DEFAULT NULL, `del` tinyint(1) DEFAULT '0',

`id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1 ; --

-- 表的结构 `tb_booktype` --

CREATE TABLE IF NOT EXISTS `tb_booktype` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `typename` varchar(30) DEFAULT NULL, `days` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1 ; --

-- 表的结构 `tb_borrow` --

CREATE TABLE IF NOT EXISTS `tb_borrow` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

24

`readerid` int(10) unsigned DEFAULT NULL, `bookid` int(10) DEFAULT NULL, `borrowTime` date DEFAULT NULL, `backTime` date DEFAULT NULL,

`operator` varchar(30) DEFAULT NULL, `ifback` tinyint(1) DEFAULT '0', PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1 ; --

-- 表的结构 `tb_library` --

CREATE TABLE IF NOT EXISTS `tb_library` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `libraryname` varchar(50) DEFAULT NULL, `curator` varchar(10) DEFAULT NULL, `tel` varchar(20) DEFAULT NULL,

`address` varchar(100) DEFAULT NULL, `email` varchar(100) DEFAULT NULL, `url` varchar(100) DEFAULT NULL, `createDate` date DEFAULT NULL, `introduce` text, PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1 ; --

-- 表的结构 `tb_manager` --

CREATE TABLE IF NOT EXISTS `tb_manager` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) DEFAULT NULL, `pwd` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=3 ;

25

--

-- 转存表中的数据 `tb_manager` --

INSERT INTO `tb_manager` (`id`, `name`, `pwd`) VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3'),

(2, 'bulongwind', '845d07a73a3c0bbf6ff27b4b2130413a'); --

-- 表的结构 `tb_parameter` --

CREATE TABLE IF NOT EXISTS `tb_parameter` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `cost` int(10) unsigned DEFAULT NULL, `validity` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1 ; --

-- 表的结构 `tb_publishing` --

CREATE TABLE IF NOT EXISTS `tb_publishing` ( `ISBN` varchar(20) DEFAULT NULL, `pubname` varchar(30) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=gb2312; --

-- 表的结构 `tb_purview` --

CREATE TABLE IF NOT EXISTS `tb_purview` ( `id` int(11) NOT NULL DEFAULT '0', `sysset` tinyint(1) DEFAULT '0', `readerset` tinyint(1) DEFAULT '0', `bookset` tinyint(1) DEFAULT '0',

26

`borrowback` tinyint(1) DEFAULT '0', `sysquery` tinyint(1) DEFAULT '0', PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312; --

-- 转存表中的数据 `tb_purview` --

INSERT INTO `tb_purview` (`id`, `sysset`, `readerset`, `bookset`, `borrowback`, `sysquery`) VALUES (1, 1, 1, 1, 1, 1); --

-- 表的结构 `tb_reader` --

CREATE TABLE IF NOT EXISTS `tb_reader` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `sex` varchar(4) DEFAULT NULL,

`barcode` varchar(30) DEFAULT NULL, `vocation` varchar(50) DEFAULT NULL, `birthday` date DEFAULT NULL,

`paperType` varchar(10) DEFAULT NULL, `paperNO` varchar(20) DEFAULT NULL, `tel` varchar(20) DEFAULT NULL, `email` varchar(100) DEFAULT NULL, `createDate` date DEFAULT NULL,

`operator` varchar(30) DEFAULT NULL, `remark` mediumtext,

`typeid` int(11) DEFAULT NULL, PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1 ; --

27

-- 表的结构 `tb_readertype` --

CREATE TABLE IF NOT EXISTS `tb_readertype` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `number` int(4) DEFAULT NULL, PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1 ;

5 设计思想与实现

5.1 首页设计

5.1.1首页概述

管理员通过“系统登录”模块的验证后,可以登录到图书馆管理系统的首页。系统首页主要包括导航栏、排行榜和版权信息3部分。其中,导航栏中的功能菜单将根据登录管理员的权限进行显示。例如,系统管理员admin登录后,将拥有整个系统的全部功能,因为它是超级管理员。

28

5.1.2 首页技术分析

学校图书馆管理系统是一个功能全面、大型的Web网站,通过对网站的安全性考虑,本网站对该系统进行权限的分配,只有管理员级别的超级用户可以对普通用户的权限进行管理和设置。系统首页主要通过判断管理员的权限来显示该用户所操作的功能模块,关键代码如下:

session_start(); //初始化session变量 include(\连接数据库文件

$query=mysql_query(\

m.id,m.name,p.id,p.sysset,p.readerset,p.bookset,p.borrowback,p.sysquery from tb_manager as m left join (select * from tb_purview ) as p on m.id=p.id where name='$_SESSION[admin_ name]'\

$info=mysql_fetch_array($query); //检索用户权限 ?>

if($info[sysset]==1){

?>

onmouseover=showmenu(event,sysmenu) onmouseout=delayhidemenu()

style=\

class=\系统设置 ┊

if($info[readerset]==1){?>

onmouseover=showmenu(event,readermenu)

onmouseout=delayhidemenu() style= \class=\读者管理 ┊

if($info[borrowback]==1){?>

onmouseover=showmenu(event,borrowmenu) onmouseout=delayhidemenu()

style=\>图书借还 ┊

if($info[sysquery]==1){

?>

onmouseover=showmenu(event,querymenu) onmouseout=delayhidemenu()

style=\

class=\系统查询 ┊

┊ ?

5.1.2 首页实现过程

系统首页的内容显示区用于显示图书的排行信息,并将排行结果按借阅数量降序排列。该页的关键代码如下:

30

style=\

style=\style=\align=\align=\

echo echo echo echo echo

$info[barcode];?> $info[bookname];?> $info[typename];?> $info[bookcasename];?> $info[pubname];?>

5.2 管理模块设计

5.2.1 管理员模块概述

管理员模块主要包括管理员登录、查看管理员列表、添加管理员信息、管理员权限设置、管理员删除和更改口令6个功能。

31

5.2.2 管理员模块技术分析

在管理员模块中,涉及的数据表是tb_manager(管理员信息表)和tb_purview(权限表)。其中,管理员信息表中保存的是管理员名称和密码等信息,权限表中保存的是各管理员的权限信息,这两个表通过各自的id字段相关联。通过这两个表可以获得完整的管理员信息。

从网站安全的角度考虑,仅有上面介绍的系统登录页面并不能有效地保存系统的安全,一旦系统首页面的地址被他人获得,就可以通过在地址栏中输入系统的首页面地址而直接进入到系统中。为了便于网站的维护,因此将验证用户是否登录的代码封装在独立的PHP文件中,即check_login.php文件。验证用户是否登录的具体代码如下:

session_start(); //初始化session变量 if($_SESSION[admin_name]==\如果session变量为空,则说明用户未登录

32

echo \对不起,请通过正确的途径登录博考图} ?>

统!');window.location.href='login.php';\

5.2.3系统登录的实现过程

系统登录是进入学校图书馆管理系统的入口,主要用于验证管理员的身份。运行本系统,首先进入的是系统登录页面,在该页面中,系统管理员可以通过输入正确的管理员名称和密码登录到系统首页,当用户没有输入管理员名称或密码时,系统会通过JavaScript进行判断,并给予信息提示。

系统登录页面主要用于收集管理员的输入信息及通过自定义的JavaScript函数验证输入信息是否为空。

编写自定义的JavaScript函数,用于判断管理员名称和密码是否为空。代码如下:

提交表单到数据处理页,页面中为了防止非法用户进入学校图书馆管理系统首页,通过调用类的

chkinput()方法实现判断用户名和密码是否正确。如果为合法用户,则可以登录学校图书馆管理系统的首页; 否则,弹出相应的错误提示。关键代码如下:

session_start(); //初始化session变量 $A_name=$_POST[name]; //接收表单提交的用户名

$A_pwd=$_POST[pwd]; //接收表单提交的密码

class chkinput{ //定义类

var $name; var $pwd;

function chkinput($x,$y){ //定义一个方法

$this->name=$x; //将管理员名称传给类对象 $this->pwd=$y; //将管理员密码传给类对象}

function checkinput(){

include(\连接数据库文件

$sql=mysql_query(\* from tb_manager where name='\and pwd='\$conn);

$info=mysql_fetch_array($sql); //检索管理员名称和密码是否正确

if($info==false){ //如果管理

34

$this->name $this->pwd

员名称或密码不正确,则弹出相关提示信息

echo \您输入的管理员名称错误,请重新输入!');history.back();\

exit; }

else{ //如果管理员名称或密码正确,则弹出相关提示信息

echo \管理员登录成功!');window.location='index.php';\

$_SESSION[admin_name]=$info[name]; //将管理员名称存到

$_SESSION[admin_name]变量中

$_SESSION[pwd]=$info[pwd]; //将管理员密码存到$_SESSION[pwd]变量中

}

$obj=new chkinput(trim($name),trim($pwd)); //创建对象

$obj->checkinput(); //调用类

?>

} }

5.2.4查看管理员的实现过程

管理员登录后,选择“系统设置”/“管理员设置”菜单项,进入到查看管理员列表页面。在该页面中,将以表格的形式显示全部管理员及其权限信息,并提供添加管理员信息、删除管理员信息和设置管理员权限的超链接。

首先使用左外联接语句(left join?on)从数据表

35

tb_manager和tb_purview中查询出符合条件的数据,然后将查询结果应用do?while循环语句输出到浏览器。关键代码如下:

include(\连接数据库文件 $sql=mysql_query(\

m.id,m.name,p.sysset,p.readerset,p.bookset,p.borrowback,p.sysquery from tb_manager as m left join (select * from tb_purview) as p on m.id=p.id\

$info=mysql_fetch_array($sql); //检索数据信息do{ //应用do?while循环语句输出查询结果 ?>

/*输出符合查询条件的记录*/

style=\align=\

echo

$info[name];?>

name=\

type=\class=\value=\disabled=\align=\

name=\

name=\

type=\class=\value=\disabled=\

36

if($info[readerset]==1){echo(\

align=\

type=\class=\value=\

align=\name=\

type=\class=\value=\

if($info[borrowback]==1){echo(\

if($info[sysquery]==1){echo(\

$info[id]; ?>','','width=292,height=175')\权限设置

\删除 /*

************************************************************************************* */

}while($info=mysql_fetch_array($sql)); //do?while循环语句结束 ?>

align=\

href=\

onClick=\

align=\

name=\

type=\class=\value=\

5.2.5 添加管理员的实现过程

在添加管理员页面中,输入合法的管理员名称及密码后,单击“保存”按钮,提交表单信息到数据处理页,将添加的管理员信息保存到数据表中。如果添加成功,弹出成功的提示信息;否则,弹出错误提示。 代码如下:

37

include(\连接数据库文件 if($_POST[submit]!=\如果单击了“保存”按钮,则执行下面的作

$name=$_POST[name]; //获取管理员名称 $pwd=$_POST[pwd]; //获取管理员密码

$sql=mysql_query(\into tb_manager (name,pwd) values('$name','$pwd')\

if($sql==true){ //向数据表中添加管理员信息成功,则给出提示信息

echo \管理员添加

\}

else{ //向数据表中添加管理员信息失败,则给出提示信息

echo \管理员添加

script>\} } ?>

');window.close();window.opener.location.reload();

');window.close();window.opener.location.reload();

5.2.6设置管理员权限的实现过程

在查看管理员列表页面中添加“权限设置”列,并在该列中添加以下用于打开“权限设置”页面的超链接代码。

38

href=\

onClick=\echo $info[id]; ?>','','width=292,height= 175')\权限设置

从上面的URL地址中可以获取设置管理员权限页所涉及的id号,将id号提交给处理页manager_ modifyok.php,修改id号所对应的管理员信息。具体代码如下:

include(\连接数据库文件 if($_POST[submit]!=\如果提交表单,则执行以下操作

$id=$_POST[id]; //获取id信息

$sysset=$_POST[sysset]==\应用三目运算符求出“系统设置”复选框的值

$readerset=$_POST[readerset]==\应用三目运算符求出“读者管理”复选框的值

$bookset=$_POST[bookset]==\应用三目运算符求出“图书管理”复选框的值

$borrowback=$_POST[borrowback]==\应用三目运算符求出“图书借还”复选框的值

$sysquery=$_POST[sysquery]==\应用三目运算符求出“系统查询”复选框的值

$query=mysql_query(\* from tb_purview where id=$id\

$info=mysql_fetch_array($query); //检索权限信息表中是否存在该管理员

if($info==false){ //如果不存在,向权限表中添加管理员权限信息

mysql_query(\query)

39

into

tb_purview(id,sysset,readerset,bookset,borrowback,sys

values($id,$sysset,$readerset,$bookset,$borrowback,$sysquery)\}

else{ //否则,更新管理员的权限信息 mysql_query(\

sysset=$sysset,readerset=$readerset,bookset=$bookset,borrowback=$borrowback,sysquery=$sysquery where id='$id'\}

echo\权限设置修改成

');window.close();window.opener.location.reload(); \更新成功,弹出提示信息,并更新父窗口 } ?>

5.2.7删除管理员的实现过程

在查看管理员列表页面中单击指定管理员信息后面的“删除”超链接,该管理员及其权限信息将被删除。

在查看管理员列表页面中添加以下用于删除管理员信息的超链接代码。

从上面的URL地址中,可以获取删除管理员所涉及的id号,将id号提交给manager_del.php处理页删除id号所对应的管理员信息。具体代码如下:

include(\连接数据库文件 $id=$_GET[id]; //获取管理员的id号

40

$sql=mysql_query(\from tb_manager where

id='$id'\删除管理员表中id号所对应的管理员信息 $query=mysql_query(\from tb_purview where id='$id'\删除权限表中id号所对应的管理员权限 if($sql==true and $query==true ){ //如果删除操作成功,则弹出提示信息

echo \管理员删除成功!');history.back();\}

else{ //如果删除操作失败,则弹出提示信息

echo \管理员删除失败!');history.back();\} ?>

5.3图书档案管理模块设计

5.3.1图书档案管理模块概述

图书档案管理模块主要包括查看图书列表、添加图书信息、修改图书信息、删除图书信息和查看图书信息5个功能。

41

5.3.2图书档案管理模块技术分析

在图书档案管理模块中,涉及的数据表是tb_bookinfo(图书信息表tb_bookcase(书架设置表)、tb_booktype(图书类型表)和tb_publishing(出版社信息表),这4个数据表间通过相应的字段进行关联。

5.3.3查看图书信息列表的实现过程

管理员登录后,选择“图书管理”/“图书档案管理”菜单项,进入到查看图书列表页面,在该页面中将显示全部图书信息列表,同时提供添加图书信息、删除图书信息、修改图书信息的超链接。

打开功能导航navigation.php文件,设置“图书档案管理”菜单项的超链接的代码如下:

图书档案管理 首先应用join?on内联接语句将tb_bookinfo、tb_bookcase、tb_booktype和tb_publishing 4个数据表连

接起来检索指定条件的图书信息,然后应用do?while循环语句输出查询结果到浏览器。查看图书信息页面的代码如下:

42

include(\连接数据库文件 $query=mysql_query(\book.barcode,book.id as bookid,book.bookname,bt.typename,pb.pubname,bc.name from tb_bookinfo book join tb_booktype bt on book.typeid=bt.id book.ISBN=pb.ISBN

join join

tb_publishing tb_bookcase

pb bc

on on

book.bookcase=bc.id\

$result=mysql_fetch_array($query); //应用外联接检索图书信息

?>

? //省略图书信息标题HTML标记部分

do{ //应用do?while循环语句输出查询结果 ?>

href=\$result[bookid];?>\$result[bookname];?>

href=\

43

style=\echo

$result[barcode];?>

style=\

echo

style=\style=\style=\

echo echo echo

$result[typename];?> $result[pubname];?> $result[name];?>

align=\

echo

$result[bookid];?>\修改

\删除

}while($result=mysql_fetch_array($query)); //do?while循环语句结束 ?>

5.3.4添加图书信息的实现过程

管理员登录系统后,在导航栏中单击“图书档案管理”超链接,进入到查看图书列表页面。在该页面中单击“添加图书信息”超链接,进入到添加图书信息页面。

在查看图书列表页面中设置“添加图书信息”超链接的代码如下:

添加图书信息 添加图书信息页面主要用于收集输入的图书信息以及通过自定义的JavaScript函数验证输入信息是否合法。

由于添加图书信息的方法同添加管理员信息的方法类似,所以此处只给出向图书信息表中插入数据的SQL语句,详细代码参见光盘。向图书信息表中插入数据的SQL语句如下:

mysql_query(\

tb_bookinfo(barcode,bookName,typeid,author,translator,ISBN,price,page,bookcase,inTime,operator )values('$barcode','$bookName','$typeid','$author','$translator','$isbn','$price','$page','$bookcaseid','$inTime','$operator')\

44

5.3.5 修改图书信息的实现过程

管理员登录系统后,在导航栏中单击“图书档案管理”超链接,进入到查看图书列表页面。单击想要修改的图书信息后面的“修改”超链接,进入到“修改图书信息”页面。修改图书信息页面的运行结果

在图书信息列表页面中,添加“修改”超链接的代码如下:

href=\

echo

$result[bookid];?>\修改

在修改图书信息页面中修改图书信息后,单击“保存”按钮,提交表单信息到数据处理页book_Modify_ok.php,应用UPDATE语句将修改的图书信息保存到数据表tb_bookinfo中,并弹出“图书信息修改成功!”提示信息,将页面重定向到修改图书信息页。数据处理页的代码如下:

session_start(); //初始化session变量 include(\连接数据库文件 $bid=$_POST[bid]; //获取图书id号 $operator=$_SESSION[admin_name]; //获取管理员名称

$barcode=$_POST[barcode]; //获取图书条形码 $bookName=$_POST[bookName]; //获取图书名称 $typeid=$_POST[typeId]; //获取图书类型id号 $author=$_POST[author]; //获取图书作者 $translator=$_POST[translator]; //获取图书译者

$isbn=$_POST[isbn]; //获取出版社ISBN $price=$_POST[price]; //获取图书单价 $page=$_POST[page]; //获取图书页码

45

$bookcase=$_POST[bookcaseid]; //获取图书书架id号$inTime=date(\设置图书更新日期为当前日期

$query=mysql_query(\barcode='$barcode', typeid='$typeid', translator='$translator',

tb_bookinfo

set , ,

bookName='$bookName'

ISBN='$isbn'

author='$author',

price='$price' , page='$page' , bookcase='$bookcaseid', inTime='$inTime', operator='$operator' where id=$bid\//更新数据表

echo \图书信息修改成功!');history.back();\?>

5.3.6 删除图书信息的实现过程

在查看图书列表页面中,设置“删除”超链接的代码如下:

单击想要删除的图书信息后面的“删除”超链接,提交表单信息到数据处理页book_del.php,应用DELETE语句将指定的图书信息从数据表tb_bookinfo中删除,如果删除操作执行成功,则弹出“图书信息删除成功!”提示信息,并将页面重定向到图书信息列表页面。数据处理页的代码如下:

include(\连接数据库文件 $info_del=mysql_query(\id=$_GET[id]\删除指定的图书信息

if($info_del){ //如果信息删除成功,则弹出

46

href=\echo

$result[bookid];?>\

提示

echo \language='javascript'>alert('图书信息删除功!');history.back(); \} ?>

5.4图书借还模块设计

5.4.1 图书借还模块概述

图书借还模块主要包括图书借阅、图书续借、图书归还、图书档案查询、图书借阅查询和借阅到期提醒6个功能。在图书借阅模块中的用户只有一种身份,那就是操作员,通过该身份可以进行图书借还等相关操作。图书借还模块的用例图如图所示。

5.4.2 图书借还模块技术分析

在图书借还模块中涉及的数据表是tb_borrow(图书借阅信息表)、tb_bookinfo(图书信息表)和tb_reader(读者信息表),

47

这3个数据表间通过相应的字段进行关联。

5.4.3图书借阅的实现过程

tb_borrowtb_bookinfotb_reader

管理员登录后,选择“图书借还”/“图书借阅”菜单项,进入到图书借阅页面,在该页面的“读者条形码”文本框中输入读者的条形码(如123456789)后,单击“确定”按钮,系统会自动检索出该读者的基本信息和未归还的借阅图书信息。如果检索到对应的读者信息,则将其显示在页面中,此时输入图书的条 形码或图书名称后,单击“确定”按钮,借阅指定的图书。

图书借阅页面总体上可以分为两个部分:一部分用于查询并显示读者信息,另一部分用于显示读者的借阅信息和添加读者借阅信息。

在进行图书借阅时,系统要求每个读者只能同时借阅一定数量的图书,并且该数量由读者类型表tb_readerType中的可借数量number决定,所以笔者编写了自定义的checkbook()函数,用于判断当前选择的读者是否还可以借阅新的图书,同时该函数还具有判断输入读者条形码或图书名称文本框是否为空的功能。 代码如下:

?

检索读者的基本信息和未归还的借阅图书信息的SQL语句如下:

$sql=mysql_query(\tb_readerType

t

on

r.*,t.name r.typeid=t.id

as where

typename,t.number from tb_reader r left join r.barcode='$barcode'\

$info=mysql_fetch_array($sql); //检索读者信息 获取读者借阅信息的SQL语句如下:

$sql1=mysql_query(\

r.*,borr.borrowTime,borr.backTime,book.bookname,book.price,pub.pubname,bc.name as bookcase from tb_borrow as borr join tb_bookinfo as book on book.id=borr.bookid join tb_publishing as pub on book.ISBN=pub.ISBN join tb_bookcase as bc on book.bookcase=bc.id join tb_reader as r on borr.readerid=r.id where

borr.readerid='$readerid' and borr.ifback=0\

49

alert(\您不能再借阅其他图书了!\

//弹出提示信 息

$info1=mysql_fetch_array($sql1); //检索读者的借阅信息

$borrowNumber=mysql_num_rows($sql1); //获取结果集中行的数目

在“图书条形码”/“图书名称”文本框中输入图书条形码或图书名称后,单击“确定”按钮,检索图书信息是否存在,如果不存在,则向图书借阅信息表中添加该读者的图书的借阅记录,完成图书借阅操作;

否则,弹出该书不能被同一读者重复借阅的提示信息。图书借阅的具体代码如下:

if($_POST[inputkey]!=\如果“图书条形码”/“图书名称”后的文本框不为空

$f=$_POST[f]; //获取用户选择的条件值 $inputkey=trim($_POST[inputkey]); //获取用户输入的查询关键字

$barcode=$_POST[barcode]; //获取读者的条形码 $readerid=$_POST[readerid]; //获取读者id号 $borrowTime=date('Y-m-d'); //图书的借阅时间为系统当前时间

$backTime=date(\ //归还图书日期为当前期日期+30天期限

$query=mysql_query(\* from tb_bookinfo where $f='$inputkey'\

$result=mysql_fetch_array($query); //检索图书信息是否存在

if($result==false){ //如果读者借阅的图书不存在,那么弹出提示信息

echo \该图书不存在!

50

本文来源:https://www.bwwdw.com/article/3mvo.html

Top