题 目 基于PHP的图书管理系统
学院 专业班级 姓名 指导教师
2015年12月
江苏开放大学计算机本(论文)
摘 要
随着科学技术的进步和计算机行业的迅速发展,人们的工作效率得到大大提高。计算机信息处理系统的引进已彻底改变了许多系统的经营管理.
图书管理系统是学校管理机制中的重要组成部分,通过对图书馆管理系统的运行管理机制进行调查和研究,开发了此图书馆管理系统。本文中主要介绍了图书馆管理事务中的常见基本问题等研究背景,进行了全面的可行性分析,详细论证了系统的需求分析、系统设计、系统实现和系统测试过程。
本系统使用PHP进行网页界面的设计,使用MVC设计模式,采用集成开发环境DreamWeaver进行开发。后端的数据库采用MySQL,通过ODBC驱动和数据库进行无缝连接。
系统实现了用户登录、图书管理、借书证管理、图书借阅管理等功能模块。用户登录模块实现用户的登录和权限判定;图书管理模块实现了对图书的添加、删除、修改、查询等功能;借书证管理模块实现了对学生的添加、删除、修改、查询等功能;图书借阅管理模块实现了学生对图书的借阅、还书和所借图书的查看等功能。
测试结果表明,本系统实现了图书馆图书管理的主要功能,基本满足图书管理的需要。
关键词:图书馆,图书管理系统,PHP, MySQL ,JavaScript。
-I-
江苏开放大学计算机本(论文)
目 录
1 绪 论 ........................................................... 4 1.1 目前图书馆管理系统存在的问题 .................................. 4 1.2 系统设计的目的和意义 .......................................... 4 2 可行性分析 .................................................... 6 2。1 技术可行性 ................................................... 6 2。2 经济可行性 ................................................... 7 2.3 操作可行性 .................................................... 7 3 需求分析 ........................................................ 8 3.1 图书馆管理系统需求概述 ........................................ 8 3.2 功能需求 ...................................................... 8 3。2.1 与读者相关的基本功能元素 .................................. 8 3.2.2 与管理员相关的基本功能元素 ................................. 9 3.2。3 总体系统的基本功能元素 .................................... 9 3.3 性能需求 ...................................................... 9 3.4运行需求 ....................................................... 10 4 系统设计 ....................................................... 11 4.1 图书馆管理系统设计指导思想和原则 .............................. 11 4。2 设计模式 .................................................... 11 4.3 图书馆管理系统总体功能概述 .................................... 12 4。4 图书馆管理系统各功能模块概述 ................................. 13 4。4.1 系统登录模块 ............................................. 13 4.3。2 图书管理模块 ............................................. 14 4.3。3 学生管理模块 ............................................. 15 4。3。4 借阅信息管理模块 ........................................ 16 4.3。5 图书检索模块 ............................................. 18 4.4 系统数据库设计 ................................................ 19 5 系统实现 ....................................................... 24 5.1 系统的软件结构 ............................................... 24 5.2 登录系统模块的实现 ........................................... 24 5.3 图书管理模块的实现 ........................................... 26 5.3。1 图书入库功能的实现 ...................................... 26
-II-
江苏开放大学计算机本(论文)
5。3。2 图书维护功能的实现 ..................................... 27 5.4 学生管理模块的实现 ........................................... 31 5.4。1 学生添加功能的实现 ...................................... 31 5。4。2 学生维护功能的实现 ..................................... 32 5。5 借阅信息管理模块的实现 ...................................... 36 5.5。1 办理图书借阅功能的实现 .................................. 36 5.5.2 办理图书归还功能的实现 ................................... 37 5.6 图书检索模块的实现 ........................................... 38 5。7 系统设计的创新点 ............................................ 40 5.7.1 系统后台管理的安全性 ..................................... 40 5.7。2 DAO数据访问接口 ......................................... 40 6 系统测试 ....................................................... 42 6.1 系统测试的方法与步骤 ......................................... 42 6.2 模块测试 ..................................................... 42 6。2.1 登录模块测试 ............................................. 42 6。2.2 图书管理测试 ............................................. 43 6.2。3 学生管理测试 ............................................. 43 6。2。4 借阅信息管理测试 ........................................ 44 6.3 评价 .......................................................... 44 7 结束语 ......................................................... 46 致 谢 ............................................................ 47 参考文献 .......................................................... 47
-III-
江苏开放大学计算机本(论文)
1 绪 论
1。1 目前图书馆管理系统存在的问题
(1)检索速度慢、效率低
因为图书馆的藏书种类多。数量大,将藏书准确的分门别类,快速检索,手工进行非常困难,往往是终于查到了二维的信息,馆中却没有此书或已被别人借走.图书馆的规模越大,这个问题就越突出。
(2)借书、还书工作量大
借书、还书频率越大,说明图书馆的作用越大,然而随之而来的大量的借书、还书登记、实存图书的更新以及借出图书超期,遗失等的处理,其工作量之大,往往是人工操作所难以胜任的,而且经常会出现这样那样的差错。
(3)图书统计工作难、藏书更新不能及时完成
图书馆的图书应根据科学技术的发展和教学工作的需要及时添加和更新,然而由于藏书数量及图书种类越来越多,加上自然损耗,人为破坏,使图书的统计工作难以及时完成,藏书的更新也就很难有针对性的进行,藏书的知识结构得不到良好地控制。
我校也是一所发展中的高校,近几年的发展速度很快,图书馆的规模和藏书的数量也在不断地扩大,为了解决海量图书的管理问题,以及学生借阅图书的信息问题,改变传统的管理方式也就成了迫在眉睫的问题了。
1.2 系统设计的目的和意义
随着计算机的广泛应用,其逐步成为现代化的标志。图书馆或者一些企业内部,甚至是书店,在正常运行的过程中总是面对大量的读者信息,书籍信息以及两
-4-
江苏开放大学计算机本(论文)
者相互作用产生的借书信息,还书信息。因此需要对读者资源,书籍资源,借书信息,还书信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高图书馆或者企业内部对图书存销的自动化的管理,能够更快速地满足读者的要求,提高各种工作效率,现对其设计相应的系统,以达到上述的目的.
图书馆管理系统的主要功能是实现图书馆图书的借阅和归还的管理自动化,图书新增及销毁的及时化,用户及图书信息的更新,围绕这些主要功能,本系统涉及到以下核心功能:借阅管理,归还管理,图书管理,学生管理.除了这些核心功能外,还包括一些基本和辅助的功能,它们是:图书信息管理,查询功能等。
该系统设计的主要目标是:
设计一个图书馆管理系统,该系统主要功能分为图书查询、图书借阅归还和图书管理三大部分。在图书查询模块中要求用户能在浏览器中分别书名、著译者、类型等条件查询;在图书管理模块中要求能完成如办理借书证(即添加新的学生)、新书录入、借书还书登记、图书修改等日常管理功能。
(1) 网站前台设计:前台供学生使用,学生登录后有如下权利 ①图书查询:用户可以按多种方式对图书库中的图书进行查询; ②借阅信息查询:用户可以查看自己的历史借阅信息。
(2)网站后台设计:后台是供管理员使用的,管理员登陆后有如下权利 ①办理借阅证:将学生信息填写完整,在数据库中注册新用户;
②书籍的录入及删除:可以对现有图书库中的图书进行删除,也可以添加新书;
-5-
江苏开放大学计算机本(论文)
③借书还书登记:普通用户借阅或归还图书时,管理员将在借阅信息表中添加相应的记录;
④图书修改:管理员可以对现有图书的详细信息进行修改。
2 可行性分析
采用现代化统一的计算机信息网站系统,能够有效优化图书馆管理系统,使
其高校的发挥最大的作用,能够迅捷的为读者提供相应的服务.开发本系统的可行性如下:
2.1 技术可行性
在软、硬件方面对系统的需求来看,由于中小企业信息化水平比较低,软硬件配置较差;而且资金实力并不雄厚。所以其对硬件的配置要求是尽可能的低,对软件配置的要求则是系统最好是基于日常办公软件如OFFICE系列上的应用系统,这样既不用花大量资金添置软件,员工又较容易学会使用应用。本系统所实现的功能是一般性质的办公业务,总体的开发时间不用很长,它用到的硬件平台不高,软件基本上是开源且较易懂,项目开发过程中遇到的技术上的问题在网上或书上可找到,因此是在技术上是可行的.
该系统所用的软件平台有数据库MYSQL、开发工具包WAMP2.0、服务器Apache5。0,浏览器IE 8.0都是开源的其中操作的细节和配置都易学。 本系统开发出来时在技术上具有代表当时办公自动化信息系统的先进性,本系统在建成后一段时间内,不会因技术的落后而需要大规模的调整,并且能够跟随时逐步的升级而保持整个系统的先进性。同时本系统对计算机硬件要求不算太高,运行速度较快,对企业办公很方便。
本系统最重要的是基于php的Web应用程序开发提供了一个框架.本系统的工作流程,分为以下步骤:
-6-
江苏开放大学计算机本(论文)
(1) 浏览器向服务器发出请求,Controller获得这些请求。
(2) Controller根据配置文件php—config。xml中的定义将这些请求发送到相应的Action,对应图中的Model。
(3) Action完成相应的业务逻辑处理后,将处理结果返回到Controller. (4) Controller再根据配置文件config。xml中的定义将处理结果显示到用户视图View。
本系统正是利用了MVC工作流程来完成此次设计的整个流程,如图2.2所示:
ControllerServletModelJavaBean浏览器ViewJspStruts-config.xml图2.2 本系统工作流图
2.2 经济可行性
根据成本/效益分析法,本系统所需的软硬件资源都已具备,该系统简单易懂,本系统具有成本相对较低、利益高的特点,经济上可行.
2。3 操作可行性
本系统开发的开发宗旨是以便捷为中心.开发后的系统应具有美观、大方、简单、易操作等优点,即使是不懂计算机的人员也可以根据系统提示使用和管理本系统,它的操作简单的特点使本系统在操作上可行。
-7-
数据库江苏开放大学计算机本(论文)
3 需求分析
3。1 图书馆管理系统需求概述
图书馆管理系统的开发主要涉及到图书的管理,学生信息的管理,借阅信息的管理三大功能的数据管理。从管理的角度可将图书分为三类:图书信息管理、系统用户管理、读者数据管理。图书信息管理包括:添加新进图书、删除旧图书、修改图书信息.系统用户管理包括:修改用户信息、办理新用户、注销用户。读者数据管理主要包括:读者借阅信息的管理,借阅图书以及归还图书。
图书借阅者的需求是查询图书室所存的图书。个人借阅情况以及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书管理人员的功能最为复杂,包括对图书借阅者、图书进行管理和维护、以及系统状态的查询和维护等.
图书馆管理员可以浏览、查询、添加、删除、修改的基本信息;浏览、查询、添加、删除和修改图书借阅者的基本信息;浏览、查询、添加、删除和修改图书的借阅信息。
3.2 功能需求
在本系统中,对读者来说,他们关心的问题其实是如何方便的查询到图书馆中的书籍以及自己正在借阅或者已经借阅过一些什么书籍,也就是借阅历史,另一个关心的问题就是所借阅的图书是否到期等等。由此可以得出系统一些需求。
3.2。1 与读者相关的基本功能元素
(1)图书查询:应该能够按照图书不同信息对图书进行查询,如书名、作者、图书类型等条件查询.
-8-
江苏开放大学计算机本(论文)
(2)读者信息查询,读者信息的查询内容应包括以下几个方面: ①读者信息--对读者的基本信息进行显示。 ②书刊借阅--对该读者借阅书籍记录进行查询. ③欠款查询--对该读者超期图书的欠款情况的查看。 3。2.2 与管理员相关的基本功能元素 在面向系统的管理员来说,应注意如下几点: (1)图书馆中有哪些书籍,是否可以被借阅; (2)对学生的添加、修改和删除操作的方便性; (3)查看学生都借阅着哪些书籍;
(4)对书籍的添加、修改和删除操作的方便性。 3.2。3 总体系统的基本功能元素
从以上问题出发,可以得出本系统应该具有的功能: (1)图书查询-—对馆内的图书进行查询;
(2)借阅管理—-对读者的每一次借阅,还书进行登记和管理; (3)图书管理——对图书馆的书籍进行管理,添加、删除以及修改信息; (4)学生管理--对学生进行管理,添加、删除以及修改信息; (5)欠款情况管理——对读者借阅图书超期欠款的情况进行管理。
3.3 性能需求
3。3。1人身和环境安全性需求
(1)系统中的软件不构成对人身健康的损害; (2)系统中的软件失效时不造成财产的损失;
-9-
江苏开放大学计算机本(论文)
(3)系统中的软件失效时不造成环境的破坏. 3。3.2可靠性和可用性需求
(1)系统中的软件可以每天使用24小时,每年使用365天; (2)系统中的软件故障率小于等于5%. 3。3.3容错性需求
用户输入错误信息时,系统应提示,不应崩溃. 3。3.4易用性
软件适合12-70周岁的智力、视力、体力和肢体正常且具有图书借阅相关知识的人使用;
3.3.5易学性
经过1—2天培训的使用者可以正常使用本软件。
3。4 运行需求
3.4。1预期的物理环境 (1)系统在常温环境下使用; (2)系统在洁净的室内使用。 3.4.2预期的技术环境
(1)宽带网、1M以上宽带互联网;
(2)台式计算机:CPU P4 2。0G以上,内存256M以上,硬盘40G以上,10M/100M网卡,Windows 2000/2003/NT/XP中文操作系统;
(3)数据库管理系统:MySQL5.0及以上。
-10-
江苏开放大学计算机本(论文)
4 系统设计
4.1 图书馆管理系统设计指导思想和原则
(1)利用软件开发现有软硬件环境,及先进的管理系统开发方案,从而到达充分利用现在资源提高系统开发水平和应用效果的目的。
(2)系统应该符合软件工程开发的理论,开发方法等开发依据。
(3)系统应满足图书馆管理工作的需要,并达到操作过程中的直观,方便,实用,安全,准确等要求。
(4)系统应具备数据库维护功能,及时根据用户需求进行数据库的各种操作. (5)系统采用原型,实用模块化程序设计方法,便于系统功能的各种组合和修改,以及系统的测试与维护。
(6)图书馆管理系统的设计应适合校园的发展。 (7)图书馆管理系统的设计应当遵循数据库设计规范。
4.2 设计模式
设计模式是面向对象的程序设计人员用来解决编程问题的一种形式化表示。本
系统开发采用目前一种广泛流行的软件设计模式MVC。MVC(Model-View—Controller)应用程序结构被用来分析分布式应用程序的特征.这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易。把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层—-模型层、视图层、控制层.
-11-
江苏开放大学计算机本(论文)
更新Model抽象系统应用功能;处理业务逻辑;数据持久化状态查询调用View抽象数据表达;表示针对用户的数据;选择视图请求Contronller定义应用系统的行为将用户请求映射到模型更新;选择视图作为对请求的回应; 图4—1 MVC模式
MVC模式的出现,很好的解决了传统开发WEB应用方式中存在的问题。M代表模型(Model),包含完成任务所需要的所有的行为和数据;V代表视图(View)界面,现实模型提供的数据;C代表控制器(Controller),它将模型映射到界面中,处理用户的输入并相应请求。其模型的关系如图所示.在MVC模型中,三层各尽其职、相互独立,各层内部的改变不会影响到其它层,从而降低了数据表达、数据描述和应该操作的耦合度,也能更好的实现开发中的分工,加速工程进度。
4。3 图书馆管理系统总体功能概述
图书管理系统包含五个模块分别是:系统登录、图书管理、学生管理、借阅信息管理、图书检索。
系统登录模块:一般用户和管理员都必须登录才能进入系统,用户登录时在后台判断用户的权限类型,分为普通用户和管理员,普通用户可以对书籍进行浏览及个人借阅信息的查询,管理员可以对多种信息进行操作.
图书管理模块:管理员通过验证界面进入系统后,进入到图书管理模块,可
-12-
江苏开放大学计算机本(论文)
以对图书进行添加,删除、修改图书信息、查询、查看等一系列的操作。
学生管理模块:管理员可以在此模块中创建新的普通用户,并且可以对用户的信息进行修改,删除等操作.
借阅信息管理模块:这是图书管系统中最重要的模块之一,管理员进入该模块中可以为普通用户办理借阅图书,归还图书的功能,并且能够实现还款的操作。
图书检索模块:普通用户通过验证界面进入系统后,能够按照书名,作者等多种条件对图书进行查询操作,确保查询到的都是最新的信息.
整体系统的功能模块如图4-2所示:
图书馆管理系统登录系统模块图书管理模块借书证管理模块借阅信息模块图书检索模块 图4—2 图书馆管理系统功能图
4.4 图书馆管理系统各功能模块概述
4.4。1 系统登录模块
用户进入系统时调用的一个模块.该模块根据用户输入的用户名、密码来判断用户的类型,跳转到该类用户的界面。
-13-
江苏开放大学计算机本(论文)
本模块的功能点包括:
(1) 判断用户名和密码是否相符;
(2) 根据用户的权限类型,登录到系统的制定界面操作使用. 登录功能模块流程图如图4—3所示:
开始显示登录界面N是否存在用户YN用户界面是否是管理员Y管理员界面结束 图4—3 登录模块流程图
4。3。2 图书管理模块
在本模块中图书馆工作人员可以对图书进行管理操作. 本模块的功能点包括:
(1) 新书入库,将新进图书按其类型将图书的基本信息录入系统数据库; (2) 图书出库,某一部分图书会随着时间的增长及知识的更新而变得不再有收藏的价值,或者图书被损坏,这些图书就要在图书库中除去。即从图书库中删除此图书记录;
(3) 新书编码,图书入库后,需要贴上条形码,以便以后提供借阅,本系统不
-14-
江苏开放大学计算机本(论文)
涉及到条形码阅读器,只是假定此过程已经生成条形码。编码只是将条形码帖于书上以唯一标识图书;
(4) 图书信息修改,图书信息由于工作人员的疏忽,而出现录入错误,提供其图书ID就可以查看图书的基本信息并对其进行修改;
图书管理功能模块流程图如图4—4所示:
开始图书管理新书入库图书出库图书信息修改是否成功Y入库成功页面N入库失败页面Y出库成功页面是否成功N出库失败页面Y修改成功页面是否成功N修改失败页面结束 图4-4 图书管理模块流程图
4。3.3 学生管理模块
本模块主要是工作者对学生信息(读者借书证信息)进行管理。 本模块的功能点包括:
(1) 办理借书证,为新读者办理借书证,填写用户基本信息;
(2) 注销借书证,输入读者借书证编号,根据借书证ID删除读者表中此借书证信息;
(3) 挂失借书证,主要是将借书证的状态改为挂失,更新读者表状态字段,
-15-
江苏开放大学计算机本(论文)
有图书管理员操作;
(4) 修改图书证信息,由于工作人员的疏忽,而出现办理借书证时录入信息有误,则可根据借书证编号对其信息进行查看和修改.
借书证管理功能模块流程图如图4—5所示:
开始借书证管理借书证办理借书证注销读者信息修改图书证挂失Y是否成功NY是否成功NY是否成功NY是否成功N办理成功页面办理失败页面注销成功页面注销失败页面修改成功页面修改失败页面挂失成功页面挂失失败页面结束 图4—5 借书证管理模块流程图
4。3.4 借阅信息管理模块
本模块主要是工作者对图书外借和归还进行管理. 本模块的功能点包括:
(1) 图书借阅,记录借阅证编号和图书编号,进行借书过程。在数据库中插入一天借书记录,该记录包括图书ID、借书证ID、借阅日期、归还日期等;
(2) 图书归还,输入借书证编号,图书编号,根据输入的编号在借阅登记表中找到相应的记录,将借阅记录删除,并将该记录相应的数据更新到历史借阅记录信
-16-
江苏开放大学计算机本(论文)
息表中;
(3) 查看借阅记录,可以根据借书证ID以及图书ID查询借阅记录。 (4) 办理还款,如读者有图书超期的情况将会有欠款,可以根据借书证的ID来为读者班里还款。
借阅信息管理功能模块流程图如图4-6所示:
开始
借书信息管理办理借阅归还图书办理还款填写借书证编号和图书编号填写借书证编号和图书编号填写借书证编号Y是否存在编号NY是否存在借阅记录NN是否存在编号Y是否已经借阅Y归还成功借阅失败归还失败还款失败N是否有欠款借阅成N功还款成Y功结束 图4-6 借阅信息管理模块流程图
-17-
江苏开放大学计算机本(论文)
4。3.5 图书检索模块
使用该模块的用户有:读者和管理员。 本模块的功能点包括: (1) 根据图书ID进行检索; (2) 根据图书名称进行检索; (3) 根据图书类型进行检索。 (4) 根据图书作者或译者进行检索。 图书检索功能模块流程图如图4—7所示:
开始图书检索根据图书ID查询根据书名查询根据类型查询根据作者查询Y图书列表是否检索到图书N提示页面结束 图4—7 图书检索模块流程图
-18-
江苏开放大学计算机本(论文)
4。4 系统数据库设计
4。4。1 概念结构设计 (1)实体图
学生:学生属性有学号、姓名、密码、性别、学院、班级、电话、email、宿舍、地址、已借书数量、创建日期。学生实体图如图4-8所示:
创建日期 学号 姓名 密码
已借书数量 地址 宿舍 email 电话 班级 学生 性别 学院 图4-8 学生实体图
图书:图书属性有图书编号、书名、作者、类别、单价、出版社、出版日期、总数量、当前数量、购买日期、内容摘要。图书实体图如图4—9所示:
当前数量 购买日期 作者 图书 类别 总数量 出版日期 出版社 单价 内容摘要 图书编号 书名
图4—9 图书实体图
-19-
江苏开放大学计算机本(论文)
(2)E—R图
根据以上实体图,分析了各个实体的属性,根据这些属性,可以得到系统的E—R图,如图4—10所示
班级 1 属于 n 学生 借书日期 还书日期 n n 属于 借阅 1 学生 n 超期罚款 图书
图4。8 系统E—R图
4。4。2 逻辑结构设计
根据上述功能模块的需求,设计如下主要数据库表:
表4.1 图书信息表(t_book)
字段英文名称 Book_num Book_name Writer Sort_id 字段中文名称 图书编号 书名 作者 类加ID 字段类型 Varchar2(15) Varchar2(20) Varchar2(10) Varchar2(5) -20-
字段约束 主键 是否可为空 否 否 否 否 江苏开放大学计算机本(论文)
表4.1图书信息表(t_book) 续表01
Price Pub_company Pub_date Total_num Current_num Buy_date Brief 单价 出版社 出版日期 总数量 当前数量 入库日期 内容摘要 Number(5.2) Varchar2(20) Date Number(3) Number(3) Date Varchar2(100) 是 是 是 否 否 否 是 表4.2 学生信息表 (t_student)
字段英文名称 Student_num Student_name Password Academy_id Class_id Sex Telephone Email Lended_num Create_date 字段中文名称 学号 姓名 密码 学院ID 班级ID 性别 电话 Email 已借书数量 创建日期 字段类型 Varchar2(15) Varchar2(10) Varchar2(20) Varchar2(10) Varchar2(10) Varchar2(2) Varchar2(15) Varchar2(20) Number(2) Date 字段约束 主键 默认为0 是否可为空 否 否 否 否 否 是 是 是 否 否 -21-
江苏开放大学计算机本(论文)
表4.3 借阅信息表(t_book_student)
字段英文名称 Id Book_id Student_id borrow_date return_date Money 字段中文名称 ID号 图书编号 学号 借书日期 还书日期 超期罚款 字段类型 Varchar2(35) Varchar2(15) Varchar2(15) Date Date Number(5。2) 字段约束 主键 是否可为空 否 否 否 否 否 否
表4.4 管理员表(t_admin)
字段英文名称 Admin_id Admin_name Admin_password 字段中文名称 管理员ID 管理员姓名 管理员密码 字段类型 Number(5) Varchar2(10) Varchar2(20) 字段约束 主键 是否可为空 否 否 否
表4。5 学院表(t_admin)
字段英文名称 Academy_id Academy_name 字段中文名称 学院ID 学院名 字段类型 Varchar2(10) Varchar2(30) 字段约束 主键 是否可为空 否 否
-22-
江苏开放大学计算机本(论文)
表4。6 班级表(t_class)
字段英文名称 Class_id Class_name Academy_id
表4.7 图书类别表(t_admin)
字段英文名称 Sort_id Sort_name 字段中文名称 类别ID 类别名 字段类型 Varchar2(5) Varchar2(20) 字段约束 主键 是否可为空 否 否 字段中文名称 班级ID 班级名 所属学院ID 字段类型 Varchar2(10) Varchar2(30) Varchar2(10) 字段约束 主键 是否可为空 否 否 否
-23-
江苏开放大学计算机本(论文)
5 系统实现
5。1 系统的软件结构
处理静态WEB是由Web浏览器向Web发送静态页面, Web服务器直接对发送的静态网页进行处理。
处理动态WEB数据库查询的过程是:当Web浏览器向Web服务器发送请求时,动态网页的处理流程是,屏蔽掉HTML语言,只输入动态网页文件,由Web服务器向数据库中传递信息,经过数据库的处理返回数据集,Web应用服务器再把含有程序代码的动态网页转换为静态网页返还给Web浏览器.这就是用动态网页对数据库进行查询并将数据返还给浏览器处理的全过程,具体见图5-1所示.
Web服务器发送请求
…… …… 查询数据Web浏览器返回响应返回数据集应用程序服务器数据库Web浏览器 图5—1数据库查询示意图5.2 登录系统模块的实现
本模块主要是用户通过图书馆管理系统的首页进入该系统。用户输入正确的用户名和密码,如果登录信息有错误,则系统提示登录错误信息,并且禁止系统
-24-
江苏开放大学计算机本(论文)
用户进行任何操作.若登录信息正确,系统会根据用户的身份进行相应权限的判断,读者进入前台系统,管理员进入后台系统。图书馆系统登录主页面如图5—2所示。
图5-2 图书馆管理系统登录界面
其实现的代码如下:
Action层:
public String login() { boolean flag = iss。login(admin); if(flag) { return \"success\"; } message = ”用户名或口令错误!\"; return \"fail”; }
Service层:
public boolean login(TAdmin admin) { TAdmin a = isd.login(admin); if(a != null) { return true; } return false; }
Dao层:
public TAdmin login(TAdmin admin) {
Session session = this。getHibernateTemplate()。getSessionFactory()。openSession();
Query q = session.createQuery(”from TAdmin a where a.adminName = ? and a.adminPassword = ?\")。setString(0, admin.getAdminName()).setString(1, admin。getAdminPassword());
-25-
江苏开放大学计算机本(论文)
TAdmin a = (TAdmin)q。uniqueResult(); return a;
}
5。3 图书管理模块的实现
图书管理模块主要分为图书入库、查看图书、统计图书,其中图书入库是往图书管理数据库中添加图书信息.看图书功能中可以查看图书详细信息,并对图书信息进行修改或删除某些废弃图书信息。
5。3.1 图书入库功能的实现
点击添加图书功能,填写图书基本信息,为图书选择类型,类型是与数据库交互动态生成的下拉列表,具体界面如图5—3所示.
图5-3 图书入库界面
其实现的代码如下:
public String addInfoBook() { this。sortList = ibs。listBookSort(); return ”add\";
-26-
江苏开放大学计算机本(论文)
}
public List public String addSaveBook() { ibs.saveBook(book); book = null; bookList = this。listBook(); return ”Book”; } public void saveBook(TBook book) { Date now = new Date(); book.setBuyDate(now); book。setCurrentNum(book.getTotalNum()); ibd.saveBook(book); } public void saveBook(TBook book) { this.getHibernateTemplate()。save(book); } 5。3。2 图书维护功能的实现 点击图书维护功能,展示所有图书的信息列表,在每个图书信息行后提供删除和修改操作功能,并且可以单击选定某一个图书信息后的详细信息进行详细查看图书信息。具体图书列表界面如图5-4所示 图5—4 图书列表界面 其实现的代码如下: public String listAllBook() { bookList = this。listBook(); return ”Book”; } -27- 江苏开放大学计算机本(论文) public List if(book.getBookNum() != null && !\"\".equals(book。getBookNum().trim())) { hql = hql + \" and tb.bookNum = '\" + book。getBookNum()+\"'\"; } if(book。getBookName() != null && !””.equals(book。getBookName().trim())) { hql = hql + ” and tb.bookName = '\" + book。getBookName()+\"'\"; } if(book.getWriter() != null && !\"”.equals(book.getWriter()。trim())) { hql = hql + ” and tb。writer = ’” + book。getWriter()+”'”; } if(!book.getSortId()。getSortId().trim()。equals(\"—1\")) { hql = hql + \" and tb.sortId。sortId = '\" + book.getSortId().getSortId()+”’”; } hql = hql + ” order by tb。bookName”; } else { hql = hql + ” order by tb.buyDate desc”; } Session session = this。getHibernateTemplate().getSessionFactory()。openSession(); Query q = session.createQuery(hql); q。setFirstResult(page.getStartRow()); q.setMaxResults(5); List 管理员删除图书,删除时可删除一个,也可同时多选删除, 其实现的代码如下: public String deleteOneBook() { ibs。delBookById(bookNum); bookList = this。listBook(); return ”Book”; } public String deleteMoreBook() { ibs。delMoreBook(bookNums); bookList = this.listBook(); return ”Book\"; -28- 江苏开放大学计算机本(论文) } public void delBookById(String bookNum) { this。getHibernateTemplate().delete(this.getHibernateTemplate()。get(TBook。class, bookNum)); } public void delMoreBook(String[] bookNums) { for(int i=0; i〈bookNums.length;i++) { this。getHibernateTemplate().delete(this。 getHibernateTemplate().get(TBook.class, bookNums[i])); } } (2)修改图书信息功能的实现 在管理员修改图书信息时,跳转到图书信息详细表单中,列出所要修改图书的详细信息,并可以进行修改,则修改界面如图5-5所示。 图5—5 修改图书信息界面 其实现的代码如下: public String modifyInfoBook() { this。sortList = ibs.listBookSort(); -29- 江苏开放大学计算机本(论文) book = ibs。queryOneBookById(bookNum); return ”modifyInfo”; } public String modifySaveBook() { ibs.modifyBook(book); book = null; bookList = this。listBook(); return ”Book”; } public TBook queryOneBookById(String bookNum) { TBook book = (TBook)this。getSession().createQuery(\"from TBook tb where tb.bookNum = ?\")。setString(0, bookNum).uniqueResult(); this。getSession()。close(); return book; } public void modifyBook(TBook book) { this。getHibernateTemplate()。update(book); } (3)查看图书详细信息功能的实现 在管理员点击详细信息时,跳转到某图书信息详细表单中,列出所选图书的详细信息,则显示界面如图5-6所示。 图5-6图书详细信息界面 其实现的代码如下: -30- 江苏开放大学计算机本(论文) public String infoDetailBook() { book = ibs.queryOneBookById(bookNum); return ”Detail\"; } public TBook queryOneBookById(String bookNum) { TBook book = (TBook)this.getSession().createQuery(”from TBook tb where tb。bookNum = ?”)。setString(0, bookNum).uniqueResult(); this.getSession()。close(); return book; } 5.4 学生管理模块的实现 学生管理模块主要分为添加学生、查看学生、修改学生,查看学生的详细信息。 5.4.1 学生添加功能的实现 点击添加学生,填写学生基本信息,具体界面如图5—7所示. -31- 江苏开放大学计算机本(论文) 图5—7办理借书证界面 其实现的代码如下: public String addInfoStudent() { this.academyList = iss。listAllAcademy(); return \"add\"; } public void addStudent(TStudent student) { Date now = new Date(); student。setCreateDate(now); student.setLendedNum(0); isd.saveStudent(student); } public List public List public void saveStudent(TStudent student) { this。getHibernateTemplate().save(student); } 5。4。2 学生维护功能的实现 点击学生维护功能,展示所有读者的信息列表,在每个读者信息行后提供删除和修改操作功能,并且可以单击选定某一个读者信息后的详细信息进行详细查看读者信息。具体读者列表界面如图5—8所示 图5—8 读者列表界面 -32- 江苏开放大学计算机本(论文) 其实现的代码如下: public String listAllStudent() { studentList = this。getStudentListByPage(); return \"Student\"; } public List Session session = this。 getHibernateTemplate().getSessionFactory().openSession(); Query q = session。createQuery(\"from TStudent ts”); q.setFirstResult(page。getStartRow()); q.setMaxResults(5); List (1)删除学生功能的实现 管理员删除读者,删除时可删除一个,也可同时多选删除。 其实现的代码如下: public String deleteOneStudent() { iss.deleteOneStudent(studentNum); studentList = this。getStudentListByPage(); return \"Student\"; } public String deleteMoreStudent() { iss.deleteMoreStudent(studentNums); studentList = this.getStudentListByPage(); return \"Student”; } public void deleteOneStudent(String studentNum) { this。getHibernateTemplate()。delete(this。getHibernateTemplate()。get(TStudent。class, studentNum)); } public void deleteMoreStudent(String[] studentNums) { for(int i=0;i〈studentNums。length;i++) { this。getHibernateTemplate().delete(this。getHibernateTemplate()。get(TStudent.class, studentNums[i])); } } (2)修改学生信息功能的实现 -33- 江苏开放大学计算机本(论文) 在管理员修改学生信息时,跳转到学生信息详细表单中,列出所要修改学生的详细信息,并可以进行修改,则修改界面如图5-9所示。 图5-9 修改读者信息界面 其实现的代码如下: public String modifyInfoStudent() { this。student = iss.getStudentByid(studentNum); this.academyList = iss。listAllAcademy(); this.classList = iss.listClassById(student.getAcademyId()。getAcademyId()); return \"modifyInfo”; } public String modifySaveStudent() { iss。modifyStudentByid(student); student = null; studentList = this。getStudentListByPage(); return ”Student”; } public TStudent getStudentByid(String studentNum) { -34- 江苏开放大学计算机本(论文) return (TStudent)this.getHibernateTemplate().get(TStudent.class, studentNum); } public void modifyStudentByid(TStudent student) { this.getHibernateTemplate().update(student); } (3)查看读者详细信息功能的实现 在管理员点击详细信息时,跳转到某读者信息详细表单中,列出所选读者的详细信息,则显示界面如图5—10所示。 图5-10读者详细信息界面 其实现的代码如下: public String infoDetailStudent() { student = iss.getOneStudentById(studentNum); return \"Detail”; } public TStudent queryOneStudentById(String studentNum) { TStudent student = (TStudent)this。getSession().createQuery(\"from TStudent ts where ts.studentNum = ?\")。setString(0, studentNum).uniqueResult(); this.getSession()。close(); return student; } -35- 江苏开放大学计算机本(论文) 5。5 借阅信息管理模块的实现 借书信息管理模块主要分为办理图书借阅、办理图书归还、借阅信息查看,其中借阅信息查看可按图书编号和借书证编号查看. 5。5。1 办理图书借阅功能的实现 点击图书借阅,填写图书编号和借书证编号,具体界面如图5-11所示. 图5-11办理图书借阅界面 其实现的代码如下: public String saveBookStudent() { message = ils。saveBookStudent(bookStudent); return ”success”; } public String saveBookStudent(TBookStudent bookStudent) { TBook book = ild。getOneBook(bookStudent。getBookId()); if(book。getCurrentNum() == 0) { return \"该书已被借完!\"; } TStudent student = ild。getOneStudent(bookStudent。getStudentId()); if(student.getLendedNum() == 9) { return ”借书数量已达到最大,不能在借!”; } Date borrowDate = new Date(); long l = borrowDate。getTime(); long ll = l + 30*24*60*60*1000L; Date returnDate = new Date(ll); bookStudent.setBorrowDate(borrowDate); -36- 江苏开放大学计算机本(论文) bookStudent。setReturnDate(returnDate); bookStudent。setMoney(0d); //补上所欠金额的计算 ild。saveBookStudent(bookStudent); book。setCurrentNum(book。getCurrentNum()-1); ild.modifyBook(book); student.setLendedNum(student.getLendedNum()+1); ild.modifyStudent(student); return ”借书成功!”; } public void saveBookStudent(TBookStudent bookStudent) { this。getHibernateTemplate().save(bookStudent); } 5.5.2 办理图书归还功能的实现 点击图书归还,填写图书编号和借书证编号,具体界面如图5—12所示。 图5-12 办理图书归还界面 其实现的代码如下: public String delBookStudent() { message = ils。delBookStudent(bookStudent); return ”success\"; } public String delBookStudent(TBookStudent bookStudent) { TBook book = ild.getOneBook(bookStudent.getBookId()); TStudent student = ild.getOneStudent(bookStudent.getStudentId()); boolean flag = ild。delBookStudent(bookStudent。getStudentId(), bookStudent.getBookId()); if(!flag) { return ”没有该 记录!”; } -37- 江苏开放大学计算机本(论文) book.setCurrentNum(book.getCurrentNum()+1); student.setLendedNum(student.getLendedNum()-1); return \"还书成功”; } public boolean delBookStudent(String studentId, String bookId) { Session session = this。getHibernateTemplate().getSessionFactory().openSession(); Query q = session。createQuery(\"from TBookStudent tbs where tbs。studentId = ? and tbs.bookId = ?”)。setString(0, studentId)。setString(1, bookId); List〈TBookStudent〉 list = q。list(); if(list。size() != 0) { TBookStudent bookStudent = list。get(0); this。getHibernateTemplate().delete(bookStudent); return true; } return false; } 5.6 图书检索模块的实现 本模块主要是用户能够输入自己想要查询图书的条件来快速的检索.图书检索页面如图5-13示。 图5—13图书检索界面 -38- 江苏开放大学计算机本(论文) 其实现的代码如下: public List〈TBook〉 listBook() { this.sortList = ibs.listBookSort(); if(page == null) { page = new Page(); page.setCurrentPage(1); } page。setTotalRow(ibs。getBookNum(book)); page.setTotalPage((page.getTotalRow()+4)/5); page。setStartRow((page.getCurrentPage()—1) * 5); return ibs。listBook(book, page); } public List if(book.getBookName() != null && !”\".equals(book.getBookName()。trim())) { hql = hql + ” and tb。bookName = '\" + book.getBookName()+\"'”; } if(book。getWriter() != null && !\"”.equals(book。getWriter()。trim())) { hql = hql + ” and tb。writer = ’\" + book.getWriter()+”'\"; } if(!book。getSortId().getSortId()。trim().equals(”-1\")) { hql = hql + \" and tb。sortId。sortId = ’” + book.getSortId()。 getSortId()+”’”; } hql = hql + \" order by tb.bookName”; } else { hql = hql + ” order by tb。buyDate desc”; } Session session = this。getHibernateTemplate().getSessionFactory().openSession(); Query q = session。createQuery(hql); q。setFirstResult(page。getStartRow()); q。setMaxResults(5); List〈TBook> list = q.list(); return list; } -39- 江苏开放大学计算机本(论文) 5.7 系统设计的创新点 5。7。1 系统后台管理的安全性 为了不让一般读者用户通过输入网址直接进入后台管理系统,必须采取一定的安全判断措施来进行系统的保护.在这里是通过PHP技术的“session”功能来实现的.session可以在网页运行期间记录某个对象的值,例如session.setAttribute(”KEY”,“super”)这句话就是给 “KEY”这样一个对象赋予了“super\"的值.管理员登录系统时,一旦登录成功,就可以为某个对象设置一个session值,然后再进入每个系统管理界面之前都进行一次此对象session值得判断,如果此对象的session值并不是管理员在成功登陆系统后所设置的值,即可跳转到错误页面,反之则成功进入管理页面。由于session的对象是编写者随机设置的,session值也是随机设置的,而且必须在系统网页运行期间进行session的设置才起作用,所以用户是无法直接进入系统后台管理的。这样一来,系统后台管理的安全性就得以保障了. 5。7。2 DAO数据访问接口 DAO是数据访问接口(Data Access Object)的缩写,把数据库的连接和操作封装在DAO内。其优点一是让业务代码无需依赖于任何特定的数据访问API;二是提高数据库操作代码的重用率;三是实现了持久层与业务逻辑的分离;四是简化了数据库程序设计。因此,该文档与档案系统采用DAO模式实现与数据库的操作。 在工程文件的目录如图5—14示: -40- 江苏开放大学计算机本(论文) 图5—14 工程目录 其中dao包中有三个类文件,分别是对于不同模块所创建的借口,而在service包中有与dao包中名字对应的三个类文件,跟别实现了dao包中的所有将诶口。这样做就实现了数据与业务的分离。 -41- 江苏开放大学计算机本(论文) 6 系统测试 6.1 系统测试的方法与步骤 该系统在本地服务器上进行运行和调试,鉴于对系统的内部结构和处理算法的完全了解以及对系统功能的全面掌握对系统进行白盒测试和黑盒测试。 在开发软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误.测试目的在于:发现错误而执行一个程序的过程,测试的最重要目的是发现其中尚未发现的错误。 为了设计出有效的测试方案按照下面准则进行测试:所有测试都应追溯到用户需求;在完成了需求模型就要着手制定测试计划,在编码之前对所有测试工作进行计划和设计;御用Pareto原理着重对占出错误89%的容易出错的20%的模块进行测试,从小规模开始逐步进行大规模测试,通常先重点测试单个程序模块再转向集成的模块;精心设计测试方案,尽可能充分覆盖程序逻辑使之达到要求的可能性. 6.2 模块测试 6.2。1 登录模块测试 进入系统,输入用户名和密码,根据用户身份的不同,显示的操作菜单有所不同,一般读者只能查看图书信息和个人信息,并可以查询自己的借阅图书的历史记录;图书管理员可以对图书信息,读者信息以及借阅信息进行查看和管理.当输入错误的用户名称密码时显示登录错误并自动返回登录窗口。 -42- 江苏开放大学计算机本(论文) 6.2.2 图书管理测试 图书管理员进入系统图书管理模块后,可对图书进行添加,修改,删除操作。 (1)添加图书,填写图书基本信息,点击确定按钮,添加成功跳转到成功页 面并提示添加成功,可继续添加,添加失败跳转到失败页面并提示添加失败,请重新添加。当填写的信息不完全时,点击确定按钮将根据没有填写的信息给出提示。 (2)删除图书,单个删除时,点击删除则根据图书的ID删除此图书信息,成功则返回列表,不成功则提示未删除成功的原因,多选删除时也根据图书ID数组删除多个图书,并跳转到相应的提示页面。 (3)修改图书信息,点击查看图书信息时,可对图书信息进行修改,修改成功或失败跳转到相应提示页面。 6.2.3 学生管理测试 图书管理员进入系统借书证管理模块后,可对借助正进行添加,修改,注销等 操作。 (1)办理借书证,填写读者基本信息,点击确定按钮,添加成功跳转到成功页面并提示添加成功,可继续添加,添加失败跳转到失败页面并提示添加失败,请重新添加.当填写的信息不完全时,点击确定按钮将根据没有填写的信息给出提示。 (2)注销借书证,单个删除时,点击删除则根据借书证编号注销此借书证,成功则返回列表,不成功则提示未删除成功的原因,多选删除时也根据借书证ID的数组删除多个借书证,并跳转到相应的提示页面。 (3)修改读者信息,点击查看读者借书证信息时,对其进行修改并根据结果成功或失败跳转到相应提示页面。 -43- 江苏开放大学计算机本(论文) 6。2.4 借阅信息管理测试 图书管理员进入系统借阅信息管理模块后,可对借阅信息进行管理操作。 (1)办理借阅,根据读者借书证编号和图书编号办理读者借阅此图书,若图 书剩余数量为0,则提示不能借阅,图书数量不足,如此图书证已经借阅此图书,则提示不能借阅相同的图书,若借阅成功则转向成功界面。 (2)图书归还,根据读者借书证编号和图书编号办理归还图书,借阅信息中必须有这条信息,否则不能归还,跳转提示页面。图书归还成功后不再有这条借阅信息,图书数量加1,并且计算好欠费情况。 (3)查看借阅信息,能够根据图书编号或借书证编号查询借阅信息。 (4)办理还款,根据读者借书证编号为读者办理还款业务,根据结果能够跳转到相应的提示页面. 6.3 评价 测试过程严格按照测试的流程,经过单元测试,子系统测试和系统测试。通过单元测试,查找出了系统各个模块内部的错误;通过子系统测试,发现了模块间相互协调和通信上的错误;通过系统的集成测试,发现了软件设计过程中存在的错误。通过改正错误的设计和实现部分,保证了图书借阅管理系统可以完成需求分析中指定的需求。 从上面的测试中可以看出,此系统可以完成用户登录,系统设置,图书管理,读者管理,借阅管理和系统查询等功能。读者在本系统的应用下可以实现按照各种方式(如:书名、编号、作者)查询图书馆的藏书,方便的借阅图书,归还图书,能够查询自己的借阅图书情况.图书馆工作人员能够方便的对图书进行查询,方便 -44- 江苏开放大学计算机本(论文) 的进行读者借阅情况,方便的进行借书还书处理等,便捷的对图书信息进行添加、修改、删除、分类管理等操作,对系统用户进行添加、修改、删除、权限设置等操作,对图书馆的办证参数进行修改维护等操作功能.测试阶段的工作一方面发现了系统的各种错误,另外一方面验证了修改后的系统能够实现提高图书馆工作效率的预期目的。 -45- 江苏开放大学计算机本(论文) 7 结束语 不知不觉中,毕业设计已接近尾声。回顾这几个月,短暂而充实。经过这几个月的学习,使我对用例设计有了一定的了解,从开始的式样理解到后来的需求分析到最后的用例设计,一步一步的前进,一点一点的完善,最后完成了该图书馆管理系统的设计与实现.该图书馆管理系统从开始设计到目前为止基本功能已经实现。 本系统具有如下特点: (1) 采用B/S三层体系结构,使系统具有很好的可维护性和可重用性。 (2) 在本系统的开发过程中采用的是MVC框架开发模式,此模式将明显的把显示和逻辑分离,使代码容易管理,适合于大型项目的开发。 (3) 后台采用的MySQL数据库,MySQL的数据库引擎集成了对XML的支持,同时以可扩展、易于使用和安全的特点,成为建设大型Web站点最好的数据存储设备之一。 但因为本系统相对来说较大,而且在本项目开始的时候,在PHP和Web应用程序设计方面不太熟悉,再加上毕业设计的时间有限,许多方面在下一步的工作中还需要进一步改进和完善.主要针对以下几方面: (1) 尽量采用满足MVC/模式2要求的框架开发,分离表示层和事物层,使系统具有高的可重用性和适应性以及良好的可维护性.. 总之,经过本次毕业设计使我学到了很多,也懂得了很多,为我今后更好的工作打下坚实的基础。 -46- 江苏开放大学计算机本(论文) 致 谢 转眼间,一年的毕业设计马上就要过去了,随之我的大学生活也要结束了.大学生活总是使人难忘,特别是在毕业设计最后阶段令我的更加记忆深刻. 首先我要感谢我的校内和校外导师。在做毕业设计的三个月中,是他们一直在各方面给予我指导和关怀,使我能够顺利地完成毕业设计。他们渊博的学识、仔细认真的态度、对问题深刻的分析以及对我热情的指导和鼓励,都给我留下了深刻的印象,使我终身难忘。 虽然我不在校内实习,但是老师对我也是十分的负责,使我对本系统设计从需求分析到总体分析、总体设计、功能模块划分、程序实现以及测试、调试方面有了正确的方向.在此,要对老师表示衷心的感谢.老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅.他无论在理论上还是在实践中,都给予我很大的帮助,也使我在很大方面都得到了很大的提高,感谢他耐心的辅导. 本系统开发的成功,是对我几年来的大学学习生活所作的总结,通过它扩大了知识面,也增加了不少实践的经验,为以后的学习生涯打下了坚实的基础. 同时,也要感谢在我大学几年的学习、生活中给予我关怀的老师和同学,更要感谢我的家人对我学业上的支持和鼓励,感谢所有关心帮助过我的人,感谢学校! 参考文献 [1] 高红岩.PHP实用开发指南[M].北京:科学出版社,2012。7 -47- 江苏开放大学计算机本(论文) [2] 耿祥义,张跃平.PHP实用教程[M].北京:清华大学出版社,2013。5 [3] 王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2015.5 [4] 廖义奎.PHP编程基础与实例精讲[M].北京:中国电力出版社,2009.1 [5] 王俊标.Java Web开发—-基于Struts、EJB、Hibernate、Builder [M].北京:人民邮 电出版社,2007.2 [6] 林琪,朱涛江.PHP设计 [M].北京:中国电力出版社,2014。12 [7] 邱哲,王俊标,马斗.PHP WEB设计与开发大全[M].北京:清华大学出版社,2011。2 [8] 孙卫琴. 基于MVC的PHP WEB。设计与开发[M].北京:电子工业出版社,2015。6 [9] 唐有明, 吴华等. PHP动态网站开发 清华大学出版社,2012.8 [10] 孔长征,姜岭. Dreamweaver短期培训教程.北京电子希望出版社,2012.4 [11] 林康司,林上杰。 PHP技术手册[M]. 电子工业出版社,2014 [12] 张桂元,贾燕枫。 PHP开发入门与项目实践[M]。 人民邮电出版社,2015 [13] 赵强. PHP应用开发[M]. 电子工业出版社,2006 [14] 明日科技。 PHP开发技术大全[M]。人民邮电出版社,2007 [15] (印度)克里斯那。MySQL应用开发[M]。清华大学出版社,2005 [16] 吴京慧, 杜宾, 杨波. MySQL数据库管理及应用开发教程[M]. 清华大学,2009 -48- 因篇幅问题不能全部显示,请点此查看更多更全内容