PHP图书管理平台课程报告
图书管理平台
1 项目概述
进入21世纪以来,信息技术从根本上推动了图书馆的飞速发展,计算机和计算机管理系统已成为图书馆进行图书管理的主要设备和系统。虽然目前很多大型的图书馆已经有一整套比较完善的管理系统,但是在一些中小型的图书馆中,大部分工作仍需手工完成,工作起来效率比较低,不便于动态、及时地调整图书结构。为了更好地适应当前图书馆的管理需求,解决手工管理中存在的弊端,越来越多的中小型图书馆正在逐步向计算机信息化管理转变。高校拥有一个小型图书馆,为全校师生提供一个阅读、学习的空间。近年来,随着生源不断扩大,图书馆的规模也随之扩大,图书数量也相应地大量增加,有关图书的各种信息成倍增加。面对如此庞大的信息量,校领导决定使用一套合理、有效、规范、实用的图书馆管理系统,对校内图书资料进行统一、 集中的管理。随着现代化的发展,开发一个图书馆管理系统,其开发宗旨是实现图书管理的系统化、规范化和自动化,达成图书资料集中、统一管理的目标。因此,本次项目的目的就是为高校开发一个图书管理系统。
图书管理系统是基于PHP框架的系统。用于在短期内快速搭建系统应用。整个系统大致可分为五个模块,分别是登录模块、图书管理、用户管理、借阅管理、个人信息模块。结合老师课堂的讲解,将对系统做进一步的完善。
本次项目课题拟解诀的主要问题就是如何通过我们所学知识设计一个切实可行的系统来实现一些为高校实现图书的管理功能。本次软件开发工具是Eclipse,服务器是Xampps,后台数据库采用mysql。本学期目的要求我们有熟练掌握的PHP架构知识以及HTML框架,还要有通过搜索资料补充完善系统的能力。
我在此次小组中承担的任务有:数据库的设计、图书信息查询展示、用户管理的部分功能代码编写等;
2 图书管理系统描述
2.1 课题简介
本系统主要应用于部分高校的图书馆,总体任务是实现对大学生图书的借阅等进行一些基本功能,如利用对图书信息的查询、修改、增加、删除等基本功能。
本系统主要实现的登录、图书信息展示、用户的管理、图书的借阅等部分。其主要功能主要有:
- 登录功能:通过输入不同的账号、密码以及验证码进入不同权限的管理界面,还可以通过管理员添加用户功能实现账号的注册。
- 个人中心功能:此项功能是针对于用户开发的个人信息查看功能,包括查看用户的信息,如姓名、班级等,并且实现个人密码修改功能。
- 图书信息展示功能:此项功能是本平台的重要功能,包括图书信息的详细信息,如图书名称、作者、图书号、价格、图书简介等,这些信息都是可以更新的。
- 用户的管理功能:此项功能主要是针对于管理员设置的,可以对用户的个人信息、账号状态等信息进行修改查询。
- 图书的借阅功能:此项功能主要是针对于管理员设置的,可以实现对用户的图书借阅及归还等功能。
2.2 模块简介
图1 图书管理系统模块图
本系统分为五大模块,分为登录模块、个人中心、图书管理、用户管理、图书借阅模块。
2.3 数据库结构设计
我所负责的模块中涉及的数据表的相关信息如下:
表1 用户登陆信息表
字段名称 |
数据类型 |
字段长度 |
字段说明 |
备注 |
id |
int |
50 |
用户ID |
主键(非空) |
name |
varchar |
50 |
用户名 |
|
pwd |
varchar |
50 |
用户密码 |
|
status |
tinyint |
3 |
用户状态 |
|
class |
varchar |
50 |
班级 |
|
admin |
tinyint |
3 |
是否为管理员 |
|
last_login_time |
datetime |
10 |
上次登录时间 |
表2 图书信息表
字段名称 |
数据类型 |
字段长度 |
字段说明 |
备注 |
id |
varchar |
50 |
书号 |
主键(非空) |
name |
varchar |
50 |
图书名 |
|
autho |
varchar |
50 |
作者 |
|
press |
varchar |
50 |
出版社 |
|
press_time |
varchar |
50 |
出版时间 |
|
price |
varchar |
50 |
价格 |
|
ISBN |
varchar |
50 |
ISBN |
|
desc |
text |
50 |
作品简介 |
表3 图书借阅表
字段名称 |
数据类型 |
字段长度 |
字段说明 |
备注 |
book_id |
int |
50 |
书号 |
主键(非空) |
user_id |
int |
50 |
用户ID |
|
borrow_date |
date |
50 |
借阅日期 |
|
back_date |
date |
50 |
归还日期 |
3 主要模块的详细设计
3.1 主要技术点说明
(1)登录
//登录验证,添加有验证码功能
//Json登陆接口
public function login(){
header("Content-Type:application/json");
$rightCode = strtolower($_SESSION['verifyCode']);//正确的验证码
$code = strtolower($_POST['verify']); //输入的验证码
$userId = htmlentities($_POST['userId']); //账号
$password = md5($_POST['password']); //密码
//先验证验证码,正确再验证账号密码,减小数据库压力
if($code != $rightCode){
$this->sendJsonMessage("验证码错误",1);
}
//验证账号密码
$userModel = new UserModel;
$where = "id='{$userId}' and pwd='{$password}'";
$result = $userModel->fetchOne($where);
if(!empty($result) && $result['status'] == 1){
$_SESSION['userId'] = $userId;
$_SESSION['admin'] = $result['admin'];
$_SESSION['last_login_time'] = $result['last_login_time'];
$message = array("message"=>"OK","code"=>0,"admin"=>"{$result['admin']}");
(2)图书管理
//展示图书详细信息以及增删改
//获取每页图书信息
$offset = ($currentPage - 1) * $eachPerPage;
$books = $bookModel->fetchAllWithJoin($where,"LIMIT {$offset},{$eachPerPage}");
//分页
$pager = new Pager($currentPage,$count,$eachPerPage,"?p=Admin&c=Book&a=index",$parms);
$this->smarty->assign("books",$books);
$this->smarty->assign("mode",$mode);
$this->smarty->assign("pageStr",$pager->page());
$this->smarty->display("Book/index.html");
}
//显示图书详情页面
public function detail(){
$this->accessPage();
$id = $_GET['id'];
$bookModel = new BookModel;
$result = $bookModel->fetchOneWithJoin("book_info.id={$id}");
$this->smarty->assign("book",$result);
$this->smarty->display("Book/detail.html");
}
//显示添加图书页面
public function add(){
$this->accessPage();
$this->smarty->display("Book/add.html");
}
//显示编辑图书页面
public function edit(){
$this->accessPage();
$id = $_GET['id'];
$bookModel = new BookModel;
$book = $bookModel->fetchOne("id={$id}");
$this->smarty->assign("book",$book);
$this->smarty->display("Book/edit.html");
}
//Json添加图书接口
public function insert(){
$this->accessJson();
$bookInfo['name'] = $_POST['name'];
$bookInfo['author'] = $_POST['author'];
$bookInfo['press'] = $_POST['press'];
$bookInfo['press_time'] = $_POST['pressTime'];
$bookInfo['price'] = $_POST['price'];
$bookInfo['ISBN'] = $_POST['ISBN'];
$bookInfo['desc'] = $_POST['desc'];
//验证信息是否填写完整
if(in_array("",$bookInfo)){
$this->sendJsonMessage("请输入完整信息",1);
}
$bookModel = new BookModel;
if($bookModel->insert($bookInfo)){
$this->sendJsonMessage("添加成功",0);
}else{
$this->sendJsonMessage("添加失败",1);
}
}
//Json接口修改图书
public function update(){
$this->accessJson();
$id = $_POST['id'];
$bookInfo['name'] = $_POST['name'];
$bookInfo['author'] = $_POST['author'];
$bookInfo['press'] = $_POST['press'];
$bookInfo['press_time'] = $_POST['press_time'];
$bookInfo['price'] = $_POST['price'];
$bookInfo['ISBN'] = $_POST['ISBN'];
$bookInfo['desc'] = $_POST['desc'];
//验证信息是否填写完整
if(in_array("",$bookInfo)){
$this->sendJsonMessage("请输入完整信息",1);
}
$bookModel = new BookModel;
if($bookModel->update($bookInfo,"id={$id}")){
$this->sendJsonMessage("修改成功",0);
}else{
$this->sendJsonMessage("修改失败",1);
}
}
//Json删除图书接口
public function delete(){
$this->accessJson();
$id = $_POST['id'];
$bookModel = new BookModel;
$borrowModel = new BorrowModel;
if($bookModel->delete("id={$id}") && $borrowModel->delete("book_id={$id}")){
$this->sendJsonMessage("删除成功",0);
}else{
$this->sendJsonMessage("删除失败",1);
}
}
}
(3)用户管理
//对用户信息进行管理
//获取每页用户信息
$offset = ($currentPage - 1) * $eachPerPage;
$users = $userModel->fetchAllUser($where,"LIMIT {$offset},{$eachPerPage}");
//分页
$pager = new Pager($currentPage,$count,$eachPerPage,"?p=Admin&c=User&a=index",$parms);
$this->smarty->assign("users",$users);
$this->smarty->assign("mode",$mode);
$this->smarty->assign("pageStr",$pager->page());
$this->smarty->display("User/index.html");
}
//显示添加用户界面
public function add(){
$this->accessPage();
$this->smarty->display("User/add.html");
}
//显示管理用户界面
public function manage(){
$this->accessPage();
$id = $_GET['id'];
$userModel = new UserModel;
//获取用户信息
$userInfo = $userModel->fetchOne("id={$id}");
//阻止url非法传参
if(empty($userInfo)){
echo "<script>alert('该用户不存在');</script>";
die();
}
$borrowModel = new BorrowModel;
//获取用户借阅信息
$borrowInfo = $borrowModel->getBorrowInfo("borrow_list.user_id={$id}");
$this->smarty->assign("userInfo",$userInfo);
$this->smarty->assign("borrowInfo",$borrowInfo);
$this->smarty->display("User/manage.html");
}
//Json添加用户接口
public function insert(){
$this->accessJson();
$user['id'] = $_POST['userId'];
$user['pwd'] = md5($_POST['password']);
$user['name'] = $_POST['name'];
$user['class'] = $_POST['class'];
$user['status'] = $_POST['status'] ? 1 : 0;
$usermodel = new UserModel;
if(in_array("",$user)){
$this->sendJsonMessage("请将信息填写完整",1);
}
if($usermodel->rowCount("id={$user['id']}")){
$this->sendJsonMessage("该用户ID已存在",1);
}
if($usermodel->insert($user)){
$this->sendJsonMessage("添加用户成功",0);
}else{
$this->sendJsonMessage("添加用户失败",1);
}
}
//Json修改用户接口
public function changeInfo(){
$this->accessJson();
$id = $_POST['userId'];
$data['name'] = $_POST['name'];
$data['class'] = $_POST['class'];
if(in_array("",$data)){
$this->sendJsonMessage("请填写完整信息",1);
}
$userModel = new UserModel;
if($userModel->update($data,"id={$id}")){
$this->sendJsonMessage("修改成功",0);
}else{
$this->sendJsonMessage("修改失败",1);
}
}
//Json挂失用户接口
public function lost(){
$this->accessJson();
$id = $_POST['userId'];
$userModel = new UserModel;
if($userModel->update(array("status"=>0),"id={$id}")){
$this->sendJsonMessage("挂失成功",0);
}else{
$this->sendJsonMessage("挂失失败",1);
}
}
//Json启用用户接口
public function open(){
$this->accessJson();
$id = $_POST['userId'];
$userModel = new UserModel;
if($userModel->update(array("status"=>1),"id={$id}")){
$this->sendJsonMessage("启用成功",0);
}else{
$this->sendJsonMessage("启用失败",1);
}
}
//Json修改用户密码接口
public function changePwd(){
$this->accessJson();
if(!$_POST['pwd']){
$this->sendJsonMessage("请输入密码",1);
}
$id = $_POST['userId'];
$pwd = md5($_POST['pwd']);
$userModel = new UserModel;
if($userModel->update(array("pwd"=>$pwd),"id={$id}")){
$this->sendJsonMessage("修改成功",0);
}else{
$this->sendJsonMessage("修改失败",1);
}
}
//Json删除用户接口
public function delete(){
$this->accessJson();
$id = $_POST['userId'];
$userModel = new UserModel;
$borrowModel = new BorrowModel;
if($userModel->delete("id={$id}") && $borrowModel->delete("user_id={$id}")){
$this->sendJsonMessage("删除成功",0);
}else{
$this->sendJsonMessage("删除失败",1);
}
}
(4)借阅管理
//完成用户的结束还书工作
//Json借书和还书接口
public function manage(){
$this->accessJson();
$bookId = $_POST['bookId'];
$userId = $_POST['userId'];
$action = $_POST['action'];
if($userId == "" || $bookId == ""){
$this->sendJsonMessage("请填写完整信息",1);
}
$borrowModel = new BorrowModel;
if($action == "borrow"){
//借书
if($borrowModel->canBorrow($bookId,$userId)){
$data = array(
"book_id" => $bookId,
"user_id" => $userId,
"borrow_date" => date("Y-m-d"),
"back_date" => date("Y-m-d",strtotime("+2 month"))
);
if($borrowModel->insert($data)){
$this->sendJsonMessage("借书成功",0);
}else{
$this->sendJsonMessage("借书失败",1);
}
}else{
$this->sendJsonMessage("信息错误或该书已借出",1);
}
}else if($action == "return"){
//还书
if($borrowModel->canReturn($bookId,$userId)){
if($borrowModel->delete("book_id={$bookId} AND user_id={$userId}")){
$this->sendJsonMessage("还书成功",0);
}else{
$this->sendJsonMessage("还书失败",1);
}
}else{
$this->sendJsonMessage("信息错误或该用户未借此书",1);
}
}else{
$this->sendJsonMessage("参数错误",1);
}
}
//Json续借接口
public function prolong(){
$this->accessJson();
//未传参中断
if(!isset($_POST['bookId']) || !isset($_POST['userId'])){
$this->sendJsonMessage("缺少参数",1);
}
$bookId = $_POST['bookId'];
$userId = $_POST['userId'];
$borrowModel = new BorrowModel;
$result = $borrowModel->fetchOne("book_id={$bookId} AND user_id={$userId}");
//没有借书就不能续借
if(empty($result)){
$this->sendJsonMessage("该用户没有借阅此书",1);
}
//超期不能续借
if(strtotime($result['back_date']) < time()){
$this->sendJsonMessage("超期的书不能续借",1);
}
//计算应还时间
$backTime = date("Y-m-d",strtotime("+1 month",strtotime($result['back_date'])));
$data = array("back_date"=>$backTime);
if($borrowModel->update($data,"book_id={$bookId} AND user_id={$userId}")){
$this->sendJsonMessage("续借成功",0);
}else{
$this->sendJsonMessage("续借失败",1);
}
}
//Json还书接口
public function returnBook(){
$this->accessJson();
$bookId = $_POST['bookId'];
$userId = $_POST['userId'];
$borrowModel = new BorrowModel;
if($borrowModel->canReturn($bookId,$userId)){
if($borrowModel->delete("book_id={$bookId} AND user_id={$userId}")){
$this->sendJsonMessage("还书成功",0);
}else{
$this->sendJsonMessage("还书失败",1);
}
}else{
$this->sendJsonMessage("信息错误或该用户未借此书",1);
}
}
3.2 结果展示
图2 登录界面图
图3 图书展示图
图4 图书详情图
图5 图书添加图
图6 用户管理图
图7 修改用户信息图
4 总结与反思
PHP图书管理平台课程报告相关推荐
- 图书管理系统C语言程序设计课程,vs c语言图书管理平台课程设计_图书管理平台c语言程序设计_c语言课程设计 图书管理系统...
#include #include #include #include //#include #define MAX 100 struct Student { int num;/*书代号*/ char ...
- 基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书
一.选题报告 1.团队名称---指南者团队 2.团队成员: 孔潭活:2015034643032 何德新:2015034643017 吴淑瑶:2015034643018 苏咏梅:201503464302 ...
- python图书管理实训报告总结_图书管理系统实验报告
图书管理系统实验报告 一.问题描述 有一个小型书库保管了大量图书,关于图书有大量信息需要处理,这些信息包 括图书的分类.书名.作者名.购买日期.价格等.现要求编写一个程序以便于对 图书的管理. 基本要 ...
- python图书管理实训报告总结_图书管理系统心得-总结报告模板
图书管理系统心得 为期两个星期的 c# 图书管理系统实习终于结束了,总算松了一口气,在这 短短的两周时间内承受了很大的压力现在终于能够得到"释放"了, 感觉到很轻 松. 回顾这两周 ...
- 学校计算机教室工作简报,实验室、图书室、微机室三个管理平台使用情况网上检查简报...
<实验室.图书室.微机室三个管理平台使用情况网上检查简报>由会员分享,可在线阅读,更多相关<实验室.图书室.微机室三个管理平台使用情况网上检查简报(8页珍藏版)>请在人人文库网 ...
- c语言子菜单退出返回主菜单,毕业论文_图书管理系统设计报告077喜欢就下吧(范文1)...
<毕业论文:图书管理系统设计报告07.doc>由会员分享,可免费在线阅读全文,更多与<毕业论文_图书管理系统设计报告07(7)(喜欢就下吧)>相关文档资源请在帮帮文库(www. ...
- c语言程序设计图书管理,C语言程序设计报告 图书馆信息管理系统
C语言程序设计报告 图书馆信息管理系统 2011 年第二阶段课程设计成果报告实训项目: 程序设计技术课程设计 学号: 0112959 姓名: 张麦华 专业: 信息管理与信息系统 实训日期:2011 年 ...
- JSP、Servlet+MySQL线上网上图书商城书城书店系统平台课程设计JQuery
wx供重浩:创享日记 对话框发送:网上书城 获取完整源码源文件+文档资料+论文报告等 传智播客网上图书商城是典型的网上购物实践中最为普遍的电子商务企业对客户(B2C)模式,主要包括会员注册.订单管理. ...
- shiro权限管理_重量级课程发布~企业权限管理平台(SpringBoot2.0+Shiro+Vue)
历经半个多月的时间,Debug亲自撸的 "企业员工角色权限管理平台"终于完成了.正如字面意思,本课程讲解的是一个真正意义上的.企业级的项目实战,主要介绍了企业级应用系统中后端应用权 ...
最新文章
- StringToInt
- java mysql 插入 乱码_java向mysql插入数据乱码问题的解决方法
- javacc案例之统计字符
- Java程序实现密钥库的维护
- WebWorker和Server-Sent Events和HTML5 WebSocket
- nginx 正则 结尾 配置_nginx配置proxy_pass中url末尾带/与不带/的区别详解
- 台式计算机显卡最高温度多少,笔记本/台式机显卡核心多少度正常?GPU温度过高该如何处理?...
- w ndows 10画图,如何在Windows 10中打开和使用画图
- Android实战——一步一步实现流动的炫彩边框
- 国内外网站空间优劣势
- 再战Trojan.PSW.Lmir.kuo、Trojan.PSW.Misc.kcc等网游盗号木马(第2版)
- 姚明 你还需要麦迪吗?
- 小C的01序列(简单递推)
- H5游戏前端支付参考处理方案
- SOA架构-微服务架构
- origin软件画流程图_Origin 画方框图的步骤
- python代码写父亲节快乐图片_听说最近有个很火的姓氏壁纸?10行Python代码搞定它!...
- office project 2013项目计划编制图解
- #图像增强#放大运动
- 零分贝超静音无线鼠标!数量有限!!先到先得!!!【元旦专享】