php+MySQL图书管理系统(一)

第一 用到的技术

技术和语言:php + MySQL

开发环境:windows 8.1

开发工具:wampsever + sublime2

开源类库:PHPExcel 下载地址

第二 需求分析

模块名称

功能描述

管理员登陆

输入管理员ID, 密码; 登入系统 或 返回ID/密码 错误.

图书入库

1.        单本入库

2.        批量入库 (方便最后测试)

图书信息存放在文件中, 每条图书信息为一行. 一行中的内容如下

( 书号, 类别, 书名, 出版社, 年份, 作者, 价格, 数量 )

Note: 其中 年份、数量是整数类型; 价格是两位小数类型; 其余为字符串类型

Sample:

( book_no_1, Computer Science, Computer Architecture, xxx, 2004, xxx, 90.00, 2 )

图书查询

要求可以对书的 类别, 书名, 出版社, 年份(年份区间), 作者, 价格(区间) 进行查询. 每条图书信息包括以下内容:

( 书号, 类别, 书名, 出版社, 年份, 作者, 价格, 总藏书量, 库存 )

 

可选要求: 可以按用户指定属性对图书信息进行排序. (默认是书名)

 

借书

1.输入借书证卡号

显示该借书证所有已借书籍 (返回, 格式同查询模块)

2.输入书号

        如果该书还有库存,则借书成功,同时库存数减一。

        否则输出该书无库存,且输出最近归还的时间。

还书

1.输入借书证卡号

显示该借书证所有已借书籍 (返回, 格式同查询模块)

2.输入书号

        如果该书在已借书籍列表内, 则还书成功, 同时库存加一.

        否则输出出错信息.


第三 数据库设计

对象名称

包含属性

书号, 类别, 书名, 出版社, 年份, 作者, 价格, 总藏书量, 库存

借书证

卡号, 姓名, 单位, 类别 (教师 学生等)

管理员

管理员ID, 密码, 姓名, 联系方式

借书记录

卡号, 借书证号 ,借期, 还期, 经手人 (管理员ID)


建表sql

-- 第一步创建一个数据库 使用默认用户
create database Libray; 

-- 第二步创建各个表结构

Create TABLE Book(
	BookID int(12) PRIMARY KEY,
	Classification varchar(20),
	BookName varchar(20),
	Press varchar(20),
	PublicTime date,
	Author varchar(20),
	Price real,
	NumberAll int(5),
	StoreNumber int(5)
);

Create TABLE Card(
	CardID int(12) PRIMARY KEY,
	UserName varchar(20),
	Department varchar(20),
	Category bit
);

Create TABLE Admin(
	AdminID int(12) PRIMARY KEY,
	Password_MD5 varchar(16),
	AdminName char(20),
	Contect char(11)
);

Create TABLE Record(
	BookID int(12),
	OutTime date,
	InTime date,
	AdminID int(12),
	CardID int(12),
	PRIMARY KEY (CardID, BookID),
	FOREIGN KEY (CardID) REFERENCES Card(CardID),
	FOREIGN KEY (BookID) REFERENCES Book(BookID)
);

第四 使用PHPExcel导入图书数据

下载下载地址 好PHPExcel的开源包,然后将classes这个文件夹放置到你的项目中去,使用的时候require(".../PHPExcel.php");后就可以使用使用里面的类来读写xls文件了,非常简单好用。

这里简单的说明一下使用方法,有什么不会的或者需要新的功能的话直接去阅读源代码就好了。

<?php
	//header("content-type:text/html;charset=utf-8");
	//引入PHPExcel
	require("./phpexcel/PHPExcel.php");
	require("./phpexcel/PHPExcel/Reader/Excel2007.php");
	require("./phpexcel/PHPExcel/Reader/Excel5.php");
	require("./phpexcel/PHPExcel/Cell.php");
	//定义文件路径
	$filePath = "./tushuxinxi/libray.xls";
	$objPHPExcel = new PHPExcel();
	$objPHPExcelReader = new PHPExcel_Reader_Excel2007();
	//判断文件是否可以读
	if($objPHPExcelReader->canRead($filePath)){
		//echo "yes";
	}else{
		//版本不对的时候切换版本
		$objPHPExcelReader = new PHPExcel_Reader_Excel5();
		if($objPHPExcelReader->canRead($filePath)){
		}else{
			echo "<Script>alert('文件不存在或者文件不可读,
				请检查后重试!');</Script>";
			return;
		}
	}
	$objPHPExcel = $objPHPExcelReader->load($filePath);
	//读取excel文件中的第一个工作表
	$currentSheet = $objPHPExcel->getSheet(0);
	//取到最大的列号
	$allColumn = $currentSheet->getHighestColumn();
	//取到最大的行号
	$allRow = $currentSheet->getHighestRow();
	//连接数据库
	mysql_connect("127.0.0.1", "root", "");
	$link = mysql_connect("127.0.0.1", "root", "") 
				or die("不能连接到数据库".mysql_error());
	if($link){
		//echo "连接成功!";
	}
	$db_select = mysql_select_db("libray");
	if ($db_select) {
		//echo "yes";
	}
        //双重循环读取每一个cell里面的数值
<span style="white-space:pre">	</span>//对于那些特殊的数据,比如日期等等可以通过行列值来特殊处理一下
<span style="white-space:pre">	</span>//为了简单,这里直接拼接SQL语句然后直接插入数据
<span style="white-space:pre">	</span>//在数据量不是很大的情况下不会占很大内存
<span style="white-space:pre">	</span>$allInsertNumber = 0;
<span style="white-space:pre">	</span>$insertSuccessNumber = 0;
	for($currentRow = 2; $currentRow <= $allRow; $currentRow++){
		$sql = "insert INTO Book values (";
		for($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++){
			$str = $currentColumn.$currentRow;
			$val = $currentSheet->getCell($str)->getValue();
			if($currentColumn == 'B' || $currentColumn == 'C'
				|| $currentColumn == 'D' || $currentColumn == 'F'){
				$val = convertToUTF8($val);
				$val = "'".$val."'";
			}
			if ($currentColumn == 'E') {
				$val = excelTime($val);
			}
			if ('A' != $currentColumn) {
				$sql = $sql.",";
			}
			$sql = $sql.$val;
		}
		$sql = $sql.")";
		$b = mysql_query($sql);
<span style="white-space:pre">		$allInsertNumber++;</span>
		if ($b) {
			echo "yes";
<span style="white-space:pre">			</span>$insertSuccessNumber++;
		}else{
			echo "no";
		}
		//echo "$sql";
	}
<span style="white-space:pre">	</span>echo "共 $allInsertNumber 条数据,成功执行 $insertSuccessNumber 条数据!";
	mysql_close($link);
	//工具函数 解决中文乱码
	function convertToUTF8($str){
		return iconv('utf-8','gb2312', $str);
	}
<span style="white-space:pre">	</span>//格式化读出的日期
	function excelTime($date, $time = false) {
    	if(function_exists('GregorianToJD')){
        	if (is_numeric( $date )) {
        	$jd = GregorianToJD( 1, 1, 1970 );
        	$gregorian = JDToGregorian( $jd + intval ( $date ) - 25569 );
        	$date = explode( '/', $gregorian );
        	$date_str = str_pad( $date [2], 4, '0', STR_PAD_LEFT )
       		."-". str_pad( $date [0], 2, '0', STR_PAD_LEFT )
        	."-". str_pad( $date [1], 2, '0', STR_PAD_LEFT )
        	. ($time ? " 00:00:00" : '');
        	return $date_str;
        	}
    	}else{
        	$date=$date>25568?$date+1:25569;
        	/*There was a bug if Converting date before 1-1-1970 (tstamp 0)*/
        	$ofs=(70 * 365 + 17+2) * 86400;
        	$date = date("Y-m-d",($date * 86400) - $ofs).($time ? " 00:00:00" : '');
   		}
  		return $date;
	}
?>

到上面为止 就可以向数据库里插入图书数据了












  • 25
    点赞
  • 191
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
PHP+MySQL图书管理系统是一种基于Web的应用程序,用于管理图书馆或书店的图书。以下是实现PHP+MySQL图书管理系统的步骤: 1. 首先,你需要下载并安装一个Web服务器,例如Apache,并确保PHPMySQL已经安装并配置好了。 2. 创建一个MySQL数据库,用于存储图书信息。你可以使用phpMyAdmin等工具来创建数据库和表。 3. 下载并解压缩PHP+MySQL图书管理系统源码包。 4. 将源码包中的文件复制到Web服务器的根目录下。 5. 修改config.php文件,将其中的数据库连接信息修改为你自己的信息。 6. 运行Web服务器,并在浏览器中输入http://localhost/来访问图书管理系统。 7. 在图书管理系统中,你可以添加、删除、编辑和搜索图书信息。此外,你还可以生成报表和统计数据。 关于PHPExcel的使用,你可以按照以下步骤来读写xls文件: 1. 下载并解压缩PHPExcel开源包。 2. 将classes文件夹复制到你的项目中。 3. 在你的PHP文件中,使用require函数引入PHPExcel.php文件。 4. 创建一个PHPExcel对象,并使用它来读取或写入xls文件。 以下是一个读取xls文件的例子: ```php require_once 'path/to/PHPExcel.php'; // 创建一个PHPExcel对象 $objPHPExcel = new PHPExcel(); // 读取xls文件 $objReader = PHPExcel_IOFactory::createReader('Excel5'); $objPHPExcel = $objReader->load('path/to/your/file.xls'); // 获取第一个工作表 $sheet = $objPHPExcel->getSheet(0); // 获取行数和列数 $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); // 遍历每一行 for ($row = 1; $row <= $highestRow; $row++){ // 获取单元格的值 $value = $sheet->getCellByColumnAndRow(0, $row)->getValue(); echo $value; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值