软件课程设计——基于PHP、MySQL的web端借还书系统

基于PHP、MySQL的web端借还书系统

php程序设计课程大作业——基于PHP、MySQL的web端借还书系统

TODO

  • 数据库设计
  • 用户注册页面
  • 用户登陆页面
  • 主页面
  • 借书
  • 还书
  • 个人信息管理
  • 管理员部分
  • 公告
  • reCAPTCHA验证验证码校验登录
  • 模糊查询
  • 快到期图书提醒
  • 个人历史纪录
  • 通过邮箱找回密码(使用了PHPMailer,简直是救星)
  • 系统说明
  • 统计模块(可以用Echarts生成图表,但由于只是DEMO,意义不是特别大,主要也没啥数据,生成的图表看起来很一般)
  • 代码重构与优化

项目中很多都可以用vue重构,但是因为不是很熟悉,为了不要让自己做的太慢,所以基本都是用jQuery。但是如果都用vue应该会精简很多

借还书系统系统说明

如何部署

  1. 拿到代码;
  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. 申请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_IDintNOPRI用户编号
stu_numberchar(12)NO学号
user_phonechar(12)NO用户手机号
user_emailvarchar(255)NO用户邮箱
user_passchar(50)NO密码
get_pass_timedatetime重置密码的时间
2.读者信息表(Reader)
名字数据类型是否为空说明
user_IDintNOPRI用户编号
user_namechar(20)NO用户姓名
user_sexchar(4)NO性别
user_gradechar(10)NO年级
user_prochar(50)NO专业
pun_timeintNO被处罚次数
interintNO诚信度
3.图书信息表(Book)
名字数据类型是否为空说明
book_IDintNOPRI图书编号
book_namevarchar(255)NO书名
book_authorvarchar(50)NO作者
book_pubvarchar(50)NO出版社
book_catevarchar(30)NO分类
book_datedatetimeNO入库时间
book_borrowtinyint(1)NO是否借出
book_timesintNO借出次数
4.图书借还信息表(Borrow)
名字数据类型是否为空说明
user_IDintNOPRI用户编号
book_IDintNOPRI图书编号
br_datedatetimeNOPRI借书时间
exp_datedatetimeNO预期归还时间
act_datedatetime实际归还时间
over_dateintNO超期天数
penaltyfloatNO处罚金额
cleartinyint(1)NO是否缴纳处罚
5.管理员表(Manager)
名字数据类型是否为空说明
mng_IDintNOPRI管理员编号
mng_namechar(20)NO管理员姓名
mng_emailvarchar(255)NO管理员邮箱
mng_phonechar(12)NO管理员电话
mng_passchar(50)NO管理员密码
6.公告表(Public)
名字数据类型是否为空说明
pub_IDintNOPRI公告编号
pub_contenttextNO公告内容
pub_mngintNO发布管理员
pub_timedatetimeNO发布时间
  • 11
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的代码家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值