PHP宿舍管理系统项目实战

您所在的位置:网站首页 宿舍管理系统界面设计 PHP宿舍管理系统项目实战

PHP宿舍管理系统项目实战

#PHP宿舍管理系统项目实战| 来源: 网络整理| 查看: 265

PHP宿舍管理系统项目实战 写在前面 PHP项目开发标准流程 知识点 项目实现及详细设计 详细设计 前端使用的技术 后端使用的技术 数据库设计 源码解析 系统首页public 管理页面Admin dorm_detail和dorm exchange和exchange_detail home和leave maintain和maintain_detail student和student_detail violation和violation_detail 学生页面Student exchange_add和exchange leave_add和leave maintain和maintain_add violation 教师页面Teacher exchange home leave violation 关键技术 分页功能实现 排序功能 其他功能 编写可维护代码 数据库连接方式PDO 参考资料 心得体会 写在最后

写在前面

这是我的一个答辩项目,我通过对一些开源项目的学习,进一步规范自己的编程开发思想,使其更加系统化,流程化,模块化。本系统若有不足之处,还请指正。

PHP项目开发标准流程

这是我经过大致梳理出来的流程,详细内容还需往后融会贯通。

需求分析 系统分析 系统目标 系统功能结构 业务逻辑结构* 确定开发环境 文件夹结构设计 数据库设计 数据库分析 根据系统分析和系统功能结构,规划出本系统的数据库实体关系E-R图 创建数据库和数据表 编写数据库连接文件 模块化编程 开发总结 知识点

以下仅列出本系统较为重要的知识点:

PHP表单实现数据的收集 PHP-Cookie和Session的使用 PHP - AJAX数据库 PHP与MySQL的连接及SQL语句的预处理 项目实现及详细设计

宿舍管理系统功能思维导图:在这里插入图片描述

详细设计 前端使用的技术 Jquery AOS Animate On Scroll Library 滚动动画库 Bulma CSS框架 Font awersome 字体和图标的库 JavaScript 后端使用的技术 PHP 数据库设计

在这里插入图片描述

源码解析

1.在前端方面我主要用了上面所提到的主要技术,具体使用方法可以去CSDN网站找,页面设计参考的网站是来自gitee上的不同前端系统。 2.在后端方面我则是运用PHP语言对信息的交互处理进行设计,这是我的项目目录。

系统首页public

系统首页主要包含用户登录,修改密码,退出账号等页面。 登录页面主要提供学生、老师、宿管等不同用户的登录。 主要功能实现为用户输入用户名,密码,验证码,并选择自己的用户身份进行登录系统。 主要代码如下:login.php

if($_POST){ require './_share/_pdo.php'; $account=$_POST['account']; $pwd=$_POST['pwd']; $captch=$_POST['captch']; $type=$_POST['type']; //用户类型 if(strtolower($captch)==strtolower($_SESSION['captcha'])){ //strtolower函数将string中所有的字母字符转换为小写并返回 $type=$_POST['type']; if(!empty($account)&&!empty($pwd)&&!empty($type)){ //登录后获取用户信息 $sql="select * from t_$type where account='$account' and pwd='$pwd'"; $result=$pdo->query($sql); $row=$result->fetch(); $id=$row['id']; $name=$row['name']; $sex=$row['sex']; if(!empty($id)){ $_SESSION['user_id']=$id; $_SESSION['user_account']=$account; $_SESSION['user_type']=$type; $_SESSION['user_name']=$name; $_SESSION['user_sex']=$sex; header("Location: ../$type/home.php"); // }else{ $pwd=null; $msg="您输入的账号或密码有误,请重试"; } } }else{ $msg="您输入的验证码有误,请重试"; } }

对于所有用户都提供修改密码功能。我的思路是通过获取旧密码判断用户输入的旧密码是否正确,是否与新密码相同,而后再通过sql语句更新数据库中的密码,这里要注意不同用户类型。 具体代码如下:changepwd.php

if(isset($_SESSION['user_id'])&&isset($_SESSION['user_type'])){ $user_name=$_SESSION['user_name']; $user_id=$_SESSION['user_id']; $user_type=$_SESSION['user_type']; if($_POST){ $old_pwd=$_POST['old_pwd']; $new_pwd=$_POST['new_pwd']; $check_pwd=$_POST['check_pwd']; if($new_pwd!=$check_pwd){ $msg="两次输入的新密码不一致,请核对"; }else{ require './_share/_pdo.php'; //判断用户输入的旧密码是否正确 $sql="select pwd from t_$user_type where id=$user_id"; $result=$pdo->query($sql); $pwd=$result->fetch()['pwd']; if($old_pwd!=$pwd){ $msg="您输入的旧密码有误,请核对"; }else if($new_pwd==$pwd){ $msg="旧密码不能与新密码相同"; }else{ $sql="update t_$user_type set pwd='$new_pwd'"; if(!$pdo->query($sql)){ exit("密码修改失败,请重试。".$stmt->errorInfo()); } echo "alert('新密码设置成功。');"; } } } }else{ //如果用户未登录,跳转到登录界面 header("Location: ./logout.php"); }

退出账号则是将PHP session变量都设置为null,并重定向到登录页面。具体代码如下:logout.php

设计完我的系统首页后,就准备对每个用户的功能进行代码实现,在过程中应该要注意不同用户之间不同功能的交互。

管理页面Admin

在admin目录下,共有12个页面,由于篇幅所限这里主要讲部分重要PHP代码及其原理思路以及如何与前端页面进行交互。

dorm_detail dorm exchange_detail exchange home leave maintain_detail maintain student_detail student violation_add violation dorm_detail和dorm

这两个页面主要实现对宿舍信息的查看和如何向宿舍添加删除学生和设置宿舍长的功能。思路:使用sql语句获取宿舍详细信息,并实现上述功能。 具体代码如下:

$sql="select a.id,building,number,bed,sex,count from t_dorm as a join (select count(b.id) as count,c.id from t_student_dorm as b right join t_dorm as c on b.dorm_id=c.id group by c.id) as d on a.id=d.id order by ".$sql_order." limit $lim,$page_size"; $result=$pdo->query($sql); $dorm_list=$result->fetchAll();

sql语句中的$ sql_order和$ lim,$ page_size,是实现排序和分页的功能。分页代码在整个系统中多处出现,我会在关键技术中对其进行讲解。这里先对排序功能进行讲解。思路:要对宿舍展现的信息实现排序 代码如下:

exchange和exchange_detail

这里主要实现学生如何申请换宿舍,具体代码如下:

$sql="select a.id,a.date,admin_response,a.student_id,a.to_dorm_id,d.dorm_id as from_dorm_id,name,account,c.building as to_dorm_building,c.number as to_dorm_number,e.building as from_dorm_building,e.number as from_dorm_number,e.id as from_dorm_id from t_student_dorm_exchange as a left join t_student as b on a.student_id=b.id left join t_dorm as c on a.to_dorm_id=c.id left join t_student_dorm as d on d.student_id=b.id left join t_dorm as e on e.id=d.dorm_id order by a.id desc limit $lim,$page_size"; $result=$pdo->query($sql); $exchange_list=$result->fetchAll();

在写sql语句时会经常发生错误,我的方法就是将其分步骤来写,不断的检查,防止出错。

home和leave

home页面主要实现对用户信息的显示,leave页面主要是查看学生的请假外出。 具体代码如下:

$sql="select a.student_id,request,date_start,date_end,account,b.name,building,number,c.dorm_id from t_student_leave as a join t_student as b on a.student_id=b.id join t_student_dorm as c on b.id=c.student_id join t_dorm as d on c.dorm_id=d.id where teacher_response='批准' order by date_end desc limit $lim,$page_size"; $result=$pdo->query($sql); $leave_list=$result->fetchAll();

后端页面主要是从不同的表中查找出需要的信息,所以sql语句的编写在web开发过程中也非常重要的,决定了系统的效率。这里显示的主要是经过辅导员批准的外出申请。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3