PHP+MYsql图书管理系统 毕业设计 毕业论文

密级:

JINING UNIVERSITY

学士学位论文

THESIS OF BACHELOR

题目基于PHP+MYSQL的图书馆管理系统

系别:计算机科学系

专业年级:计算机科学与技术09级本科

学生姓名:李振建学号:2009371005

指导教师:蒿琳职称:助教

起讫日期:2012.10 -2013.5

李振建基于PHP+MYSQL的图书馆管理系统

目录

摘要..... .. (1)

关键词 (1)

Abstract (1)

Key words (1)

1 绪论 (1)

1.1 研究背景 (1)

1.2 研究现状 (1)

1.3 研究意义 (2)

2 开发环境与相关技术简介 (2)

2.1 PHP概述 (2)

2.2 MYSQL概述 (2)

2.3 Apache服务器 (2)

2.4 WampSever集成开发环境 (2)

2.5 EclipsePHP studio概述 (2)

2.6 B/S模式 (3)

2.7 Jquery EasyUI概述 (3)

3 系统需求分析 (3)

4 总体功能设计 (4)

4.1系统流程图与功能结构图 (4)

4.2系统数据库设计 (4)

4.2.1数据库概念设计 (4)

4.2.2创建数据库及数据表 (5)

5 系统设计与实现 (9)

5.1系统首页设计 (9)

5.2系统管理员模块设计 (9)

5.3系统图书档案管理模块设计 (13)

5.4系统图书借还模块设计 (13)

6.系统安装文件的制作 (18)

7.系统测试 (19)

7.1系统测试目的 (19)

7.2系统测试方法 (19)

7.3.系统测试结论 (19)

参考文献 (21)

致谢 (22)

附录 (23)

1

基于PHP+MYSQL的图书馆管理系统

计算机科学与技术专业学生李振建

指导教师蒿琳

摘要:随着计算机的不断普及和发展,很多大型的学校图书馆虽然已经有一整套比较完善的图书馆管理系统,然而在一些中小型的学校图书馆中,绝大部分的工作仍需图书管理员由手工来完成,工作效率低下。本文设计的图书馆管理系统基于B/S架构,使用最流行的服务器端脚本语言PHP,并以与PHP良好匹配的MYSQL数据库为本系统的数据库,Apache作为本系统的服务器,实现了图书信息的添加、查询、删除和借阅归还等功能。系统使用Jquery EasyUI插件编写用户界面,实现了良好的用户体验。

关键词:图书管理 PHP MySQL Apache

Library management system based on PHP and MYSQL Student majoring in Computer Science and Technology Li Zhenjian

Tutor Hao Lin

Abstract:With the growing popularity of computers and development, although many large school library has a set of relatively complete library management system, but in some small and medium school library, most of the work still needs librarian done by hand, the working efficiency is low. This design of the library management system based on B / S structure, using the most popular server side scripting language PHP, and well-matched with the PHP MYSQL database-oriented systems Database, Apache server as the system to achieve a book information add, query, delete, and borrow restitution and other functions. System uses Jquery EasyUI user interface plug-ins written to achieve a good user experience.

Key words: library management ; PHP ; MySQL; Apache;

1 绪论

1.1 研究背景

随着我国的教育产业的快速发展,各个学校的学生数量越来越多,在这种情况下的图书馆书籍管理和查询,以及读者的管理变得非常困难,使用计算机软件的图书管理系统来协助管理是一个很好的方法。图书馆管理系统的开发和应用,可以提高管理水平和效率,为学校图书馆提供了一个很好的管理工具,简化繁琐的工作模式,使学校图书馆管理更加规范化,科学化。

1.2 研究现状

人工图书管理效率低下,不能及时了解的各类图书的类别和读者的需求,不能更好

地适应当前的读者要求。虽然绝大部分学校图书馆已经有了自己的图书管理系统,但多数是采用C/S架构的,不能基于WEB管理,即便如此我国各类高等学校中仍有相当一部分学校图书管理还停留在人工管理的基础上。

1.3 研究意义

DEEPIN图书馆管理系统主要应用于学校中小型图书馆的管理。使用这个系统,图书馆管理工作变得更加便捷、高效,系统将用最先进的技术结合传统的方式,为读者提供更好的服务,只有这样,可以有效地提高学校科研和教学水平。

2开发环境与相关技术简介

2.1 PHP概述

PHP是一种广泛使用的开源的脚本语言,可嵌入到HTML中,尤其是对于Web开发[1]。它是一种服务器端HTML的脚本语言,是一种简单的、高效的、面向对象的、解释的、健壮的、安全性非常高的动态的脚本语言[2]。

2.2 MYSQL概述

MySQL数据库是一个小型关系型数据库管理系统。由于MySQL体积小、速度快和低成本,尤其是在开放源代码的特点,目前MySQL被广泛用于中小型网站[3]。

2.3 Apache服务器

目前世界使用排名第一的Web服务器软件就是Apaache[4]。

Apache起初由NCSA(伊利诺伊大学香槟分校的国家超级电脑应用中心)开发。此后,随着Apache httpd的开源社区的成员不断发展和加强,Apache的HTTP Web服务器有可靠的声誉,有超过一半正在使用它的网站 ,特别是几乎所有最流行的大网站。例如,维基百科使用的就是Apache 服务器[5]。

2.4 WampSever集成开发环境

WampServer是Apache服务器,PHP解释器和MySQL数据库集成软件包。WAMP是完全免费的,在官网可以下载到最新的版本。本文中使用的版本是WampServer Version 2.1,其中包括Apache 2.2.17,PHP 5.3.3,MySQL 5.5.8[6]。

2.5 EclipsePHP studio概述

本系统的开发主要依靠EclipsePHP studio制作。EclipsePHP是一个大型PHP项目开发编译器。此编译器为PHP编译器,辅助PHP代码的开发和调试,集成了代码高亮、函数跟踪、实时纠错等功能。内嵌浏览器可以在调试简单代码实时浏览。不仅支持php ,也支持其他网络语言像html、xhtml、xml、css和javascript、java、perl、python 等。

2.6 B/S模式

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

2.7 Jquery EasyUI概述

Jquery EasyUI是一组基于jQuery的UI插件集合,而Jquery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签[8]。

Jquery EasyUI为我们提供了大多数UI控件的使用,如:accordion、combobox、menu、dialog、tabs、tree、validatebox、datagrid、window等等。

本系统应用EASYUI的dialog控件完成一些比较小的页面,获得更好的用户体验。

3 系统需求分析

DEEPIN图书馆管理系统实现了以下功能:图书管理、读者管理、图书借还和系统设置。

1.图书管理功能: 图书类别管理功能和图书信息管理功能。

2.读者管理部分:读者信息管理。

3.图书借还部分:借阅信息管理功能和归还信息管理功能。

4.系统设置:修改用户密码、添加新用户、退出系统和管理员权限修改等功能。

图3.1 DEEPIN图书馆管理系统功能结构图

李振建基于PHP+MYSQL的图书馆管理系统

4 总体功能设计

4.1 系统流程图

图4.1 DEEPIN图书馆管理系统系统流程图4.2 系统数据库设计

4.2.1 数据库概念设计

1.图书档案实体

图4.2图书档案实体E-R图

2.读者档案实体

图4.3读者档案实体E-R图3.借阅档案实体

图4.4借阅档案实体E-R图

4.归还档案实体

图4.5归还档案实体E-R图

4.2.2 创建数据库及数据表

结合实际情况和分析图书管理员需求,DEEPIN图书馆管理系统数据库包含以下10个表格。

图4.6 tb_bookcase表

图4.7 tb_booktype表

图4.8 tb_bookinfo表

图4.9 tb_borrow表

图4.10 tb_library表

图4.11 tb_manager表

图4.12 tb_publishing表

图4.13 tb_purview表

图4.14 tb_reader表

图4.15 tb_readertype表

创建数据库代码如下:

CREATE DATABASE;

USE `lee_library`;

DROP TABLE IF EXISTS `tb_bookcase`;

CREATE TABLE `tb_bookcase` (

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

`name` varchar(30) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=58 DEFAULT CHARSET=gb2312; . . . . . .省略掉的其它的数据库创建代码

5 系统设计与实现

5.1 系统首页设计

系统首页显示管理员基本信息, $_SERVER["REMOTE_ADDR"]用来获取客户端IP 地址[9]。

图5.1首页效果图

5.2 系统管理员模块设计

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

系统只能通过login.php文件进行登录,访问其它页面首先验证是否登录,若没有登录跳转到登录页,验证用户是否登录的关键代码如下:

if($_SESSION['admin_name']=="")

{echo "";}?>

图5.2管理员登录页面效果图

系统登录界面,自定义的JavaScript函数,用于判断管理员名和密码是否为空。

相关代码如下:

图5.3未输入管理员名弹出的提示框

图5.4未输入密码弹出的提示框

图5.5 管理员设置页面效果图

系统设置页面列出所有管理员及其相对应的权限,可对某个管理员进行权限设置和管理员添加和删除,相关代码如下:

include("conn/conn.php");//引入数据库配置文件

$sql=mysql_query("select

m.id,https://www.360docs.net/doc/8318649385.html,,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);

if($info==false){

. . . . . .省略的非关键代码

. . . . . .同理省略的非关键代码

. . . . . .同理其它权限判断如果值为1则复选框为勾选状态

}while($info=mysql_fetch_array($sql));

}?>

图5.6 管理员添加页面效果图

在管理员设置界面点击添加管理员链接,在弹出的EASYUI对话框中填写用户名及密码,点击保存完成管理员添加,相关代码如下:

图5.7 权限设置页面效果图

在权限设置对话框中可编辑对应管理员的权限,勾选相应权限代表拥有该权限,没有勾选代表没有该项权限,点击保存更改数据库数据。数据处理相关代码如下:

include("conn/conn.php");

if($_POST['submit']!=""){

$id=$_POST['id'];

$sysset=$_POST['sysset']==""?0:1;

$readerset=$_POST['readerset']==""?0:1;

$bookset=$_POST['bookset']==""?0:1;

$borrowback=$_POST['borrowback']==""?0:1;

$sysquery=$_POST['sysquery']==""?0:1;

$query=mysql_query("select * from tb_purview where id=$id");

$info=mysql_fetch_array($query);

if($info==false){ // $info返回值假执行

mysql_query("insert into

tb_purview(id,sysset,readerset,bookset,borrowback,sysquery)

values($id,$sysset,$readerset,$bookset,$borrowback,$sysquery)");

}

else{

mysql_query("update tb_purview set

sysset=$sysset,readerset=$readerset,bookset=$bookset,borrowback=$borrowback ,sysquery=$sysquery where id='$id'");

}

echo"";

}?>

5.3系统图书档案管理模块设计

图书档案管理模块主要包括所有图书列表、图书列表分页、添加图书信息、修改图书信息、删除图书信息和查看详细图书信息等功能。

图5.8 图书档案管理页面效果图

查看图书档案管理页面用来显示所有图书的基本信息,并提供修改、删除,添加图书信息的功能,本页面调用了一个page.class.php的分页类,对该页面进行分页显示,相关代码如下:

$page=$_GET['page'];

$sql = "select book.barcode,book.id as

bookid,book.bookname,bt.typename,pb.pubname,https://www.360docs.net/doc/8318649385.html, from tb_bookinfo book join tb_booktype bt on book.typeid=bt.id join tb_publishing pb on

book.ISBN=pb.ISBN join tb_bookcase bc on book.bookcase=bc.id";

$query = mysql_query($sql);

$totail = mysql_num_rows($query);//记录总条数

$number = 20;//每页显示条数

$my_page=new PageClass($totail,$number,$page,'?page={page}');//参数设定:总记录,每页显示的条数,当前页,连接的地址

$sql_p = "select book.barcode,book.id as

bookid,book.bookname,bt.typename,pb.pubname,https://www.360docs.net/doc/8318649385.html, from tb_bookinfo book join tb_booktype bt on book.typeid=bt.id join tb_publishing pb on

book.ISBN=pb.ISBN join tb_bookcase bc on book.bookcase=bc.id LIMIT

".$my_page->page_limit.",".$my_page->myde_size;

$query_p = mysql_query($sql_p);

$result=mysql_fetch_array($query_p);

. . . . . .省略掉的非关键代码 ?>

5.4系统图书借还模块设计

图书借还模块包括图书借阅、图书续借、图书归还、图书借阅查询、图书档案查询和借阅到期提醒等功能。

图5.9 图书借阅效果图

在图书借阅页面,如图5.9输入正确的读者条形码,点击确定显示读者信息。在添加数据依据中可以根据图书条形码或者图书名称进行添加。图书借阅页面的相关代码如下:

if($_POST['inputkey']!=""){

$f=$_POST['f'];

$inputkey=trim($_POST['inputkey']);

$barcode=$_POST['barcode'];

$readerid=$_POST['readerid'];

$borrowTime=date('Y-m-d');

$backTime=date("Y-m-d",(time()+3600*24*30)); //归还图书日期为当前期日期+30天期限

$query=mysql_query("select * from tb_bookinfo where $f='$inputkey'"); $result=mysql_fetch_array($query); //检索图书信息是否存在

if($result==false){

echo "";

}

else{

$query1=mysql_query("select

r.*,borr.borrowTime,borr.backTime,book.bookname,book.price,pub.pubname,bc.n ame as bookcase from tb_borrow as borr join tb_reader as r on borr.readerid=r.id 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 where borr.bookid=$result[id] and borr.readerid=$readerid and ifback=0"); //检索该读者所借阅的图书是否与再借图书重复

$result1=mysql_fetch_array($query1);

if($result1==true){ //如果借阅的图书已被该读者借阅,那么提示不能重复借阅echo "";

}

else{ //否则,完成图书借阅操作

$bookid=$result['id'];

mysql_query("insert into

tb_borrow(readerid,bookid,borrowTime,backTime,operator,ifback)values('$read erid','$bookid','$borrowTime','$backTime','$_SESSION[admin_name]',0)");

echo ""; }}}?>

图5.10 图书续借页面效果图

图书续借功能,如图5.10首先要输入读者条形码,点击确定会显示相应读者的基本信息,下面列出已经借阅的图书,点击续借会在应归还时间上加30天,系统提示“书

续借操作成功!”,图书续借相关代码如下:

session_start();

include("conn/conn.php");

$barcode=$_GET['barcode'];

$new=$_GET['backTime'];

$newbackTime=date("Y-m-d",(mktime(0, 0, 0, substr($new,5,2), substr($new,8,2), substr($new,0,4))+3600*24*30)); //更新续借期,将动态获取的还书期日转化为时间截,然后再求出续借后的还书日期

$borrid=$_GET['borrid'];

mysql_query("update tb_borrow set

backTime='$newbackTime',ifback=0,operator='$_SESSION[admin_name]' where

id=$borrid");

echo "";

?>

图5.11 图书归还的实现过程

在图书归还页面输入读者条形码如图5.11,点击确定会显示相应读者的基本信息,下面列出读者已经借阅的图书信息,在相应图书下点击归还超链接,便可完成图书归还操作,图书归还的相关代码如下:

session_start();

include("conn/conn.php");

$backTime=date("Y-m-d"); //归还图书日期

$borrid=$_GET['borrid'];

mysql_query("update tb_borrow set

backTime='$backTime',ifback=1,operator='$_SESSION[admin_name]' where

id=$borrid");

echo "";

?>

图5.12 图书借阅查询页面效果图

图书借阅查询功能是查询已经借阅的图书的基本信息,查询依据可根据图书条形码、图书名称、读者条形码、读者名称和借阅时间进行查询,勾选查询条件后,点击查询便可完成指定条件下的查询。图书借阅相关代码如下:

include("conn/conn.php");

$sql=mysql_query("select b.borrowTime,b.backTime,b.ifback,r.barcode as readerbarcode,https://www.360docs.net/doc/8318649385.html,,k.id,k.barcode,k.bookname from tb_borrow b join tb_reader r on b.readerid=r.id join tb_bookinfo k on b.bookid=k.id");

if($_POST['Submit']!=""){

$f=$_POST['f'];

$key1=$_POST['key1'];

$sdate=$_POST['sdate'];

$edate=$_POST['edate'];

$flag1=$_POST['flag1'];

$flag2=$_POST['flag2'];

if($flag1=="a"){

$sql=mysql_query("select b.borrowTime,b.backTime,b.ifback,r.barcode as readerbarcode,https://www.360docs.net/doc/8318649385.html,,k.id,k.barcode,k.bookname from tb_borrow b join tb_reader r on b.readerid=r.id join tb_bookinfo k on b.bookid=k.id where $f like

'%$key1%'");

相关文档
最新文档
管理员名称

class="noborder" value="checkbox" disabled="disabled"

if($info['sysset']==1){echo ("checked");}?>>

href="javascript:windowopen('manager_modify.php?id=

$info['id']; ?>','权限设置')">权限设置

删除