# AHNU-circulation-desk
php程序设计课程大作业——基于PHP、MySQL的web端借还书系统
## TODO
* [x] 数据库设计
* [x] 用户注册页面
* [x] 用户登陆页面
* [x] 主页面
* [x] 借书
* [x] 还书
* [x] 个人信息管理
* [x] 管理员部分
* [x] 公告
* [x] reCAPTCHA验证~~验证码校验登录~~
* [x] 模糊查询
* [x] 快到期图书提醒
* [x] 个人历史纪录
* [x] 通过邮箱找回密码(使用了PHPMailer,简直是救星)
* [x] 系统说明
* [ ] ~~统计模块~~(可以用Echarts生成图表,但由于只是DEMO,意义不是特别大,主要也没啥数据,生成的图表看起来很一般)
* [ ] 代码重构与优化
项目中很多都可以用vue重构,但是因为不是很熟悉,为了不要让自己做的太慢,所以基本都是用jQuery。但是如果都用vue应该会精简很多
# 借还书系统系统说明
## 如何部署
1. `fork`或`clone`本项目;
2. 更改相关的数据库信息(`t/db.php`);
3. 配置你自己的邮件发送模块(`t/neteast_mailter.php`);
4. 做完上述两步后将php文件放到安全的位置并更改`php/bd_fns.php`中引用的链接;
5. 使用`createdb.sql`文件创建本项目的数据库:
* 在命令行下使用命令`mysql –u用户名 –p密码 <【sql脚本文件路径】` 或
* 在MySQL控制台中使用命令`source 【sql脚本文件路径】`
6. [申请](http://www.google.com/recaptcha/admin)Google reCAPTCHA的API key并填入相关代码(如不用验证功能可以跳过此步骤并且删除相关代码);
7. 保持文件夹的结构复制到你所需要的目录(不要忘了删除文件夹`t`)。
## 结构说明
本项目每一个页面均对应1-2个css、js文件以及后台的php文件,html、css和js的文件名是同名的,可以清晰地看出对应关系,其中:
* `css`文件夹中存放了所有的.css文件,`js`中存放了所有的.js文件
* `account`文件夹中存放的是用户注册、登录、历史纪录以及个人信息的页面;
* `b_and_r`文件夹中存放的是借还书的页面
* `img`文件夹中存放的是导航栏下面的背景图片的图片文件
* `lib`文件夹中存放了后台PHP共同使用的函数`db_fns.php`和两个PHPMailer的库文件
* `php`文件夹中的文件较为复杂,但都以功能命名
## 测试系统环境
* Ubuntu 16.04.1
* Apache 2.4.18
* PHP 7.0.33
* MySQL 5.7.25
## 功能描述
* 整体设计思路:
* 所有用户均可访问主页面和借书页面以查询想要的图书信息;
* 主页面主要是一个搜素框用户搜索图书,以及一个显示公告的作用;
* 借书和还书的操作必须登录后使用;
* 读者可以查看历史记录和个人信息
* 管理员可以发布公告
* 用户信息管理模块:
* 注册功能。前后端均设置了表单验证和安全防范;
* 登录功能。使用了reCAPTCHA验证系统,支持使用邮箱找回密码的功能;
* 历史纪录。用户可以查看借还书的历史记录,包括书名、作者、分类、出版社等图书基本信息以及借阅时间、归还时间、超期处罚金额等信息,其中绿色表示按时归还,红色表示超期归还;
* 个人信息管理。包括三个大部分,分别是账户、安全和借阅:
* 账户:包括显示学号、姓名、性别、年级、专业、手机和电子邮箱等信息,用户可以修改手机号和电子邮箱地址;
* 安全:包括了更改密码的功能;
* 借阅:包括显示借书次数、超期次数和信用等级。信用等级可以用作提升或减少用户可借图书本数和借阅时长,这个功能暂时没有实装;
* 借还书功能
* 借书:
* 用户可以通过书名、作者、分类三个维度搜索图书,每个维度都支持模糊搜索(关键字查询),但不同维度之间没有实现此功能;
* 搜索出的结果包含了书名、作者、分类、出版社、复本数以及剩余数等信息;
* 用户在检索到想要看的图书后直接点击“借阅”按钮即可完成借阅,若用户已经借阅了三本图书未归还或有超期未归还的图书不得借阅新的图书;
* 本项目使用的图书数据超过12万条,但由于对于豆瓣网站的图书分类方法不清楚,且没有注意数据的精处理,有许多相同的图书但分类不同的图书被认为是不同的图书,但是不影响使用(毕竟没有真书),在基础数据上,将数据复制三份,以达到每本图书都有三本复本的要求;
* 还书:
* 在还书页面,用户可以看到自己正在借阅的图书的信息,包括书名、作者、分类、出版社、借阅时间、最晚归还时间和超期处罚金额等信息;
* 淡蓝色显示的是未超期的图书,红色显示的是超期的图书,对于未超期图书直接点击归还即可归还,对于超期图书需要点击缴费并归还,此时会有一个alert窗口以代替付款的流程;
* 若用户有在24小时内超期的图书,在导航栏的“还书”按钮旁会显示即将超期的图书的数量以达到提示用户的作用;
* 管理员系统:
* 管理员使用发放的账号和密码,不可通过注册页面注册;
* 管理员登录和普通用户使用相同的登录页,并且没有多余的操作;
* 管理员登录后所看到的导航栏是不同的;
* 目前暂时只做了发布公告的功能;
* **注1**:本项目采取前后端分离的设计模式,由于经验不足,逻辑可能稍显混乱,但在设计和开发上比较容易增删模块和查找错误原因。前端和后端的交互均通过Ajax实现,用户体验较好;
* **注2**:所有页面均设置了防止误操作、直接通过地址访问等非法访问的用户友好界面提示。对于通过直接发送数据包的行为也做了一定的防范。
## 数据库设计
### 数据库概念结构设计
* 读者实体:**用户编号**、姓名、性别、年级、专业、被处罚次数、诚信度
* 图书实体:**书籍编号**、书名、作者、出版社、分类、登记日期
* 用户实体:**用户编号**、密码
### 数据库逻辑结构设计
* 读者(读者编号、姓名、性别、年级、专业、被处罚次数、诚信度)
* 图书(图书编号、书名、作者、出版社、分类、登记日期)
* 用户(用户编号、电话号码、邮箱、密码、重置密码)
* 图书借还(用户编号、图书编号、借书时间、预期归还时间、实际归还时间)
* 处罚信息(用户编号、图书编号、超期天数、处罚金额、是否缴纳处罚)
* 管理员(管理员编号、管理员姓名、管理员电话、管理员邮箱、管理员密码)
* 公告(公告编号、公告内容、发布的管理员、发布时间)
### 数据库物理结构设计
#### 1.用户信息表(User)
| 名字 | 数据类型 | 是否为空 | 键 | 说明 |
| ------------- | ------------ | -------- | --- | -------------- |
| user_ID | int | NO | PRI | 用户编号 |
| stu_number | char(12) | NO | | 学号 |
| user_phone | char(12) | NO | | 用户手机号 |
| user_email | varchar(255) | NO | | 用户邮箱 |
| user_pass | char(50) | NO | | 密码 |
| get_pass_time | datetime | | | 重置密码的时间 |
#### 2.读者信息表(Reader)
| 名字 | 数据类型 | 是否为空 | 键 | 说明 |
| ---------- | -------- | -------- | --- | ---------- |
| user_ID | int | NO | PRI | 用户编号 |
| user_name | char(20) | NO | | 用户姓名 |
| user_sex | char(4) | NO | | 性别 |
| user_grade | char(10) | NO | | 年级 |
| user_pro | char(50) | NO |
没有合适的资源?快使用搜索试试~ 我知道了~
基于PHP、MySQL实现的额web端借还书系统
共69个文件
php:25个
js:14个
css:12个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 75 浏览量
2024-04-28
07:39:18
上传
评论
收藏 760KB ZIP 举报
温馨提示
测试系统环境 Ubuntu 16.04.1 Apache 2.4.18 PHP 7.0.33 MySQL 5.7.25 整体设计思路: 所有用户均可访问主页面和借书页面以查询想要的图书信息; 主页面主要是一个搜素框用户搜索图书,以及一个显示公告的作用; 借书和还书的操作必须登录后使用; 读者可以查看历史记录和个人信息 管理员可以发布公告 用户信息管理模块: 注册功能。前后端均设置了表单验证和安全防范; 登录功能。使用了reCAPTCHA验证系统,支持使用邮箱找回密码的功能; 历史纪录。用户可以查看借还书的历史记录,包括书名、作者、分类、出版社等图书基本信息以及借阅时间、归还时间、超期处罚金额等信息,其中绿色表示按时归还,红色表示超期归还; 个人信息管理。包括三个大部分,分别是账户、安全和借阅: 账户:包括显示学号、姓名、性别、年级、专业、手机和电子邮箱等信息,用户可以修改手机号和电子邮箱地址; 安全:包括了更改密码的功能; 借阅:包括显示借书次数、超期次数和信用等级。信用等级可以用作提升或减少用户可借图书本数和借阅时长,这个功能暂时没有实装; 借还书功能 借书: 用户可以通过书名、
资源推荐
资源详情
资源评论
收起资源包目录
AHNU-circulation-desk-code.zip (69个子文件)
AHNU-circulation-desk-code
.DS_Store 8KB
t
neteast_mailer.php 2KB
db.php 322B
lib
class-phpmailer.php 143KB
db_fns.php 3KB
class-smtp.php 39KB
.vscode
settings.json 46B
js
validator.js 2KB
return.js 5KB
login.js 4KB
forget_pass.js 2KB
input.js 3KB
register.js 2KB
reset_pass.js 2KB
history.js 3KB
vheader.js 5KB
public.js 1KB
borrow.js 10KB
common_fns.js 6KB
index.js 5KB
account.js 8KB
LICENSE 1KB
admin
public.html 1KB
createdb.sql 4KB
b_and_r
borrow.html 3KB
return.html 1KB
img
bg.jpg 446KB
bgw.jpg 174KB
css
return.css 226B
normalize.css 7KB
public.css 150B
common.css 1KB
reset_pass.css 36B
forget_pass.css 81B
register.css 94B
login.css 225B
borrow.css 282B
account.css 557B
index.css 232B
history.css 136B
account
register.html 7KB
account.html 5KB
login.html 2KB
history.html 1KB
resetpass.html 1KB
forgetpass.html 2KB
index.html 3KB
.gitignore 37B
README.md 10KB
php
login.php 3KB
is_login.php 323B
return.php 2KB
register.php 3KB
logout.php 190B
search_need_return.php 2KB
search_history.php 2KB
search_email.php 2KB
change_password.php 1KB
borrow.php 3KB
prevent_admin.php 480B
reset_pass_word.php 869B
public.php 1KB
pay_return.php 2KB
get_public.php 759B
search.php 3KB
get_account_info.php 3KB
check_change.php 2KB
reset_validate.php 2KB
recaptcha.php 1KB
共 69 条
- 1
资源评论
MarcoPage
- 粉丝: 4413
- 资源: 8836
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Matlab_让我们学习如何使用变量、函数、向量和更多的内置命令.zip
- Matlab_欠驱动自主水下航行器轨迹跟踪的Lyapunov控制器设计.zip
- 练习VBA网络抓取数据的代码实例
- Matlab_牛津机器人汽车数据集的软件开发工具包.zip
- Matlab_人工势场APF方法为实际应用提供了一种简单有效的运动规划方法。目前开发的项目是在Matlab中开发的,改.zip
- Matlab_让我们重现多机器人系统的论文模拟,编队控制,分布式优化和协作操作.zip
- Matlab_人脸对齐的监督下降法SDM的Matlab实现.zip
- Matlab_三维卷积神经网络CNN体积输入支持二维和三维核的Matlab框架.zip
- Matlab_色谱和质谱数据分析的功能.zip
- 基于人眼视觉系统的实时HEVC编码优化及其高效时空同质区域检测方法
- Matlab_深度架构学习的Matlab环境.zip
- Matlab_实现了TADT跟踪器的论文TargetAware深度跟踪.zip
- Matlab_实现了图像增强算法,使用视网膜理论来增加图像的对比度.zip
- Matlab_实现了无气味卡尔曼滤波UKF用于加速度计和陀螺仪的方向跟踪传感器融合.zip
- Matlab_实验用Matlab代码给出了复杂网络高阶组织的方法和一些实例.zip
- Matlab_实现一个基于部分可观察马尔可夫决策过程的强化学习算法.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功