您的位置:首页 > 编程语言 > PHP开发

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

2015-06-05 21:41 656 查看

第一 用到的技术

技术和语言: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;
}
?>


到上面为止 就可以向数据库里插入图书数据了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: