赞
踩
1.该宿舍管理系统共有三大参与者:学生、宿管人员、管理员。
2.系统亮点:
(1)可以使用PHPExecl批量读取execl表格进行添加学生信息等。
(2)引入Echarts图形来展示住宿学生等信息。
1.学生部分
2.宿管人员部分
3.管理员部分
1.实体与属性
(1)学生,属性有学生学号和学生密码。
(2)学生信息,属性有学生学号、学生姓名、性别、专业班级、手机号码、辅导员、宿舍区域(宿舍楼)、宿舍号、入住时间、家庭住址、奖罚分、晚归时间和签到日期。
(3)寝室,属性有寝室id、宿舍号、宿舍楼、宿舍费用、实住人数和应住人数。
(4)违纪,属性有违纪id、违纪宿舍楼、违纪宿舍号、违纪内容、违纪时间和惩罚。
(5)维修,属性有报修id、维修费、损坏照片、维修内容、联系电话、宿舍长、宿舍号和宿舍楼。
(6).宿管,属性有宿管id、宿管姓名、联系电话、管理楼和登录密码。
(7)来访人员,属性有来访id、来访人员姓名、来访人员身份证号、来访目的、来访时间和离开时间。
(8)管理员,属性有管理员号、姓名和登录密码。
2.实体间的关系
(1)一个学生只能拥有一条自己的相关信息,而一条信息也只能对应一个学生。
(2)一个学生只能居住在一个寝室中,而一个寝室可以住多个学生。
(3)一个寝室可以违纪多次,而一种违纪也可以多个寝室都违反。
(4)一个寝室可以有多个来访人员,而一个来访人员也可以到多个寝室探访。
(5)一个寝室只能同时申请一次维修,而维修信息可以接受多寝室的。
(6)一个宿管可以处理多个维修信息,而一个维修信息也可以由多个宿管处理。
(7)一个来访人员信息可以由多个宿管处理,而一个宿管人员也可以处理多个来访人员信息。
(8)一个管理员可以管理多个学生与宿管,同时一个学生或宿管也可以被多个学生和宿管管理。
3.E-R图
1.登录界面
使用简单的vue实现切换不同的登录窗口,实现代码如下:
- <div class="login_header">
- <span @click="cur=0" :class="{active:cur==0}" style="margin-left: 20px;">学生登录</span>
- <span @click="cur=1" :class="{active:cur==1}">宿管登录</span>
- <span @click="cur=2" :class="{active:cur==2}">管理员登录</span>
- </div>
2.学生界面
(1)简介
(2)规章制度(略)
(3)个人信息
a.填写学生信息,若学生是新注册用户,则可填写个人信息。也可是填写完后再次更改提交,实现效果图如下。
部分实现代码:
- <div class="aoligei">
- <div class="pc-kk-form">
- <form action="../process/stu_info_pro.php" method="post">
- <div class="pc-kk-form-list">
- <input type="text" value="<?php echo $username; ?>" name="stu_no" readonly>
- </div>
- <div class="pc-kk-form-list">
- <input type="text" placeholder="姓名" name="stu_name" value="<?php echo $row['stu_name']; ?>">
- </div>
- <div class="pc-kk-form-list pc-kk-form-list-clear">
- <div class="nice-select" name="nice-select">
- <input type="text" placeholder="宿舍区域" name="stu_homearea" value="<?php echo $row['stu_homearea']; ?>" readonly>
- <ul>
- <li data-value="北区一号">北区一号</li>
- <li data-value="北区二号">北区二号</li>
- <li data-value="北区三号">北区三号</li>
- <li data-value="北区四号">北区四号</li>
- <li data-value="北区五号">北区五号</li>
- <li data-value="北区六号">北区六号</li>
- <li data-value="西区一号">西区一号</li>
- <li data-value="西区二号">西区二号</li>
- <li data-value="西区三号">西区三号</li>
- <li data-value="西区四号">西区四号</li>
- <li data-value="东区一号">东区一号</li>
- <li data-value="动漫大厦">动漫大厦</li>
- </ul>
- </div>
-
- <div class="pc-kk-form-list" name="nice-select" style="float:left;width: 50%;margin-left: 33px">
- <input type="text" name="stu_homeid" placeholder="宿舍号(北区分AB)" value="<?php echo $row['stu_homeid']; ?>" required>
- </div>
- </div>
- <div class="pc-kk-form-list">
- <input type="text" placeholder="专业班级(计算机工程学院-软件工程-19-3)" name="stu_class" value="<?php echo $row['stu_class']; ?>" >
- </div>
- <div class="pc-kk-form-list">
- <input type="tel" placeholder="电话号码(11位)" name="stu_phone" value="<?php echo $row['stu_phone']; ?>" >
- </div>
- <div class="pc-kk-form-list">
- <input type="text" placeholder="辅导员" name="stu_teacher" value="<?php echo $row['stu_teacher']; ?>" >
- </div>
- <div class="pc-kk-form-list pc-kk-form-list-clear">
- <div class="nice-select" name="nice-select">
- <input type="text" id="date" placeholder="入住时间" name="stu_rtime" class="show_placeholder" value="<?php
- $dates = explode(" ",$row['stu_rtime'])[0];
- echo $dates;
- ?>" >
- </div>
- <div class="nice-select" name="nice-select" style="float:right">
- <input type="text" placeholder="性别" name="stu_sex" value="<?php echo $row['stu_sex']; ?>" readonly>
- <ul>
- <li data-value="男">男</li>
- <li data-value="女">女</li>
- </ul>
-
- </div>
- </div>
- <div class="pc-kk-form-list pc-kk-form-list-clear">
- <div class="pc-kk-form-list" name="nice-select" style="width:100%">
- <input type="text" placeholder="家庭住址" name="stu_home" value="<?php echo $row['stu_home']; ?>">
- </div>
- </div>
- <div class="pc-kk-form-list pc-kk-form-list-clear">
- <div class="pc-kk-form-list" name="nice-select" style="width:100%">
- <input type="text" placeholder="奖罚分" value="<?php echo $row['stu_score']; ?>" readonly>
- </div>
- </div>
- <div class="pc-kk-form-btn" style="margin-left: -80px">
- <input type="submit" value="保存信息">
- </div>
- </form>
- </div>
-
- </div>
b.下载提交表格,学生需按时下载表格并定期提交需上交的表格,通过正则表达式控制学生提交表格的名称格式等是否正确。实现效果如下。
上传,下载表格文件实现代码如下:
- <?php
-
- if(!isset($_FILES['fileload'])){
- echo "<script>";
- echo "alert('非法访问!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- $error = $_FILES['fileload']['error'];
- if($error == 4){
- echo "<script>";
- echo "alert('请传入文件!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- $named = array('xls','xlsx');
- $name = $_FILES['fileload']['name'];
- $names = explode(".",$_FILES['fileload']['name'])[1];
- if(!in_array($names,$named)){
- echo "<script>";
- echo "alert('请提交正确的文件后缀格式!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- $nameArray = explode("-",$name);
- if(!preg_match("/[0-9]{2}[A|B]/",$nameArray[1]) || explode(".",$nameArray[2])[0] != "通风消毒表"){
- echo "<script>";
- echo "alert('请提交正确的文件格式!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
-
- $path = "../upkillvirus/";
- $tmp_name = $_FILES['fileload']['tmp_name'];
- if(move_uploaded_file($tmp_name,$path.$name)){
- echo "<script>";
- echo "alert('上传成功!');";
- echo "window.location.href='../pageStudent/studentinfo.php';";
- echo "</script>";
- exit();
- }else{
- echo "<script>";
- echo "alert('上传失败!');";
- echo "window.location.href='../pageStudent/studentinfo.php';";
- echo "</script>";
- exit();
- }
c.学生打卡签到,学生可在每天9:00至22点30进行打卡签到,使用到php时间戳以及存储学生打卡日期从而达到显示每个学生打卡天数。实现效果如下。
php代码以及js代码如下。
- <script>
- var divs = document.querySelectorAll(".days");
- console.log(divs);
- var arrs = [];
- <?php for ($i = 1;$i < count($arrays); $i++){ ?>
- var len = arrs.push(<?php echo $arrays[$i]; ?>)
- <?php } ?>
- for(var i = 0;i < arrs.length; i++){
- divs[arrs[i]-1].style.backgroundColor = '#00bfff';
- }
- </script>
- $stu_no = $_SESSION['username'];
- $selectQianDay = "select * from stuinfo where stu_no='{$stu_no}'";
- $row = selectOne($link,$selectQianDay);
- $timeday = $row['timeday'];
- $arrays = explode("*",$timeday);
(4)申报维修
a.申报维修,学生通过提交宿舍损坏信息从而提交进行申请。实现效果图如下
点击马上申请后,可填写提交损坏信息,判断填写的信息的正确与否都由正则表达式判断。效果图如下。
填写成功后,可在下面的表格中看到相关的提交信息。效果图如下。
php实现代码如下
- $stu_homearea = $_POST["stu_homearea"];
- $stu_homeid = $_POST["stu_homeid"];
- $repair_host = $_POST["repair_host"];
- $repair_phone = $_POST["repair_phone"];
- $repair_content = $_POST["repair_content"];
- if ($repair_host == "" || $repair_phone == "" || $repair_content == ""){
- echo "<script>";
- echo "alert('值不能为空!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- $pattern = "/[0-9]{11}/";
- if (!preg_match($pattern, $repair_phone)) {
- echo "<script>";
- echo "alert('电话号码格式不匹配!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- $named = array('jpg','png');
- $name = $_FILES['file']['name'];
- $names = explode(".",$_FILES['file']['name'])[1];
- if(!in_array($names,$named)){
- echo "<script>";
- echo "alert('请提交正确的文件后缀格式!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- $picHomeArea = explode("-",$name)[0];
- $picHomeId = explode(".",explode("-",$name)[1])[0];
- if($picHomeArea != $stu_homearea || !preg_match("/[0-9]{3}[A|B]/",$picHomeId)){
- echo "<script>";
- echo "alert('请提交正确的文件命名格式!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- $size = $_FILES['file']['size'];
- $mb = $size / 1024 / 1024;
- if($mb > 5){
- echo "<script>";
- echo "alert('请提交正确的文件命名格式!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- $tmp_name = $_FILES['file']['tmp_name'];
- $path = "../repairimg/" . $name;
- $selectRepairSql = "select * from repairinfo where stu_homeid = '{$stu_homeid}'";
- $results = mysqli_query($link,$selectRepairSql);
- $num = mysqli_num_rows($results);
- if($num >= 1){
- echo "<script>";
- echo "alert('等待提交申请解决后再进行提交!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- if(move_uploaded_file($tmp_name,$path)){
- $insertRepairSql = "insert into repairinfo values ('','{$stu_homearea}','{$stu_homeid}','{$repair_host}','{$repair_phone}','{$repair_content}','{$path}','')";
- $result = mysqli_query($link,$insertRepairSql);
- if(!$result){
- echo mysqli_error($link);
- echo mysqli_errno($link);
- exit();
- }
- echo "<script>";
- echo "alert('提交成功!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
b.提交费用,待报修处理完毕后,学生可在线进行支付维修费用。实现效果图如下。
点击立即支付后,可输入支付密码,效果图如下。
jquery实现代码如下
- <script>
- $(function () {
- var step = $("#myStep").step({
- animate: true,
- initStep: 1,
- speed: 1000
- });
- $("#preBtn").click(function (event) {
- var yes = step.preStep();
- });
- $("#applyBtn").click(function (event) {
- var yes = step.nextStep();
- });
- $("#submitBtn").click(function (event) {
- var yes = step.nextStep();
- });
- $("#goBtn").click(function (event) {
- var yes = step.goStep(3);
- });
- });
- //支付
- $(function(){
- //出现浮动层
- $(".ljzf_but").click(function(){
- $(".ftc_wzsf").show();
- });
- //关闭浮动
- $(".close").click(function(){
- $(".ftc_wzsf").hide();
- $(".mm_box li").removeClass("mmdd");
- $(".mm_box li").attr("data","");
- i = 0;
- });
- //数字显示隐藏
- $(".xiaq_tb").click(function(){
- $(".numb_box").slideUp(500);
- });
- $(".mm_box").click(function(){
- $(".numb_box").slideDown(500);
- });
- //----
- var i = 0;
- $(".nub_ggg li .zf_num").click(function(){
-
- if(i<6){
- $(".mm_box li").eq(i).addClass("mmdd");
- $(".mm_box li").eq(i).attr("data",$(this).text());
- i++
- if (i==6) {
- setTimeout(function(){
- var data = "";
- $(".mm_box li").each(function(){
- data += $(this).attr("data");
- });
- if($("#ineed").attr('value') != 0 && $(".zhifu_price").text() != "¥0¥0"){
- $(".ftc_wzsf").hide();
- $("#ineed").attr('value',0);
- $(".zhifu_price").text("¥0");
- alert("支付成功!");
-
- window.location.href = '../process/stu_repair_price_recall.php';
- }else{
- alert("支付失败!");
- }
- },100);
- };
- }
- });
-
- $(".nub_ggg li .zf_del").click(function(){
- if(i>0){
- i--
- $(".mm_box li").eq(i).removeClass("mmdd");
- $(".mm_box li").eq(i).attr("data","");
- }
- });
-
- $(".nub_ggg li .zf_empty").click(function(){
- $(".mm_box li").removeClass("mmdd");
- $(".mm_box li").attr("data","");
- i = 0;
- });
- });
- </script>
宿管界面可进行学生管理、房间管理、来访登记和维修处理。由于四大板块实现代码基本相似,下面仅进行效果展示。
(1)学生管理
a.学生管理
b.学生违规信息
c.学生晚归信息
(2)来访登记
a.来访登记信息
b.来访人员表
(3)房间管理(略)
(4)维修处理
a.维修信息表
b.处理维修费
对宿管信息、学生信息的增删改查.
(1)宿管管理
(2)学生管理
a.学生信息管理
除对学生单个的正删改查外,使用了PHPExecl对学生信息进行批量添加导出等,实现效果图如下。
PHPExcel在1.8.0版本后就放弃更新,且需要的php环境在7.0及以下。其中配置文件中获取数组元素使用的数组下标在大括号内,在php7.0后就弃用了该获取方式,统一使用中括号。即若使用PHPExecl读取Execl表格时,首先需从官网下载低版本php环境,其次修改PHPExcel配置文件,将所有大括号改为中括号。
引用PHPExecl后使用php读取Execl实现代码如下。
- $path = "../bossInsert/";
- $tmp_name = $_FILES['file']['tmp_name'];
- if(move_uploaded_file($tmp_name,$path.$name)){
- $fileName = "../bossInsert/学生住宿信息表.xlsx";
- if (!file_exists($fileName)){
- exit("文件".$fileName."不存在");
- }
- require_once "../PHPExecl/Classes/PHPExcel/IOFactory.php";
- $objPHPExcel = PHPExcel_IOFactory::load($fileName);
- $sheetCount = $objPHPExcel->getSheetCount();
- $sheetSelected = 0;$objPHPExcel->setActiveSheetIndex($sheetSelected);
- $rowCount = $objPHPExcel->getActiveSheet()->getHighestRow();
- $columnCount = $objPHPExcel->getActiveSheet()->getHighestColumn();
- $dataArr = array();
- echo "<br />";
- $is = [];
- for ($row = 2; $row <= $rowCount; $row++){
- for ($column = 'A'; $column <= $columnCount; $column++) {
- $dataArr[] = $objPHPExcel->getActiveSheet()->getCell($column.$row)->getValue();
- }
- $is[$row-2] = $dataArr;
- $dataArr = NULL;
- }
- echo "<pre>";
- print_r($is);
- echo "</pre>";
- require_once "connect.php";
- require_once "functions.php";
- for($i = 0;$i<count($is);$i++){
- $everyStu = $is[$i][0];
- $homearea = $is[$i][5];
- $homeid = $is[$i][6];
- $selectIsHave = "select *from stuinfo where stu_no='{$everyStu}'";
- $row = selectOne($link,$selectIsHave);
- $selectSql = "select * from roominfo where stu_homearea='{$homearea}' and stu_homeid='{$homeid}'";
- $result = mysqli_query($link,$selectSql);
- $numCol = mysqli_num_rows($result);
- echo $numCol;
- if(isset($row['stu_no']) || $numCol==0){
- continue;
- }else{
- echo "p";
- $insertStuLoginInfoSql ="insert into stulogininfo(stu_no,stu_psw) values ('{$everyStu}','123456')";
- $result1 = mysqli_query($link,$insertStuLoginInfoSql);
- if(!$result1){
- if(mysqli_errno($link) == 1062){
- continue;
- }else{
- echo "<script>";
- echo "alert('有误!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
- }
- $time = date("Y-m-d H:i:s",PHPExcel_Shared_Date::ExcelToPHP($is[$i][7]));
- $insertInfoSql = "insert into stuinfo(stu_no,stu_name,stu_sex,stu_class,stu_phone,stu_homearea,stu_homeid,stu_rtime,stu_home,stu_teacher) values ('{$is[$i][0]}','{$is[$i][1]}','{$is[$i][2]}','{$is[$i][3]}','{$is[$i][4]}','{$is[$i][5]}','{$is[$i][6]}','{$time}','{$is[$i][8]}','{$is[$i][9]}')";
- $result2 = mysqli_query($link,$insertInfoSql);
- if(!$result2){
- echo mysqli_error($link);
- }
- }
- }
- echo "<script>";
- echo "alert('上传成功!');";
- echo "window.location.href='../pageBoss/students.php';";
- echo "</script>";
- exit();
- }else{
- echo "<script>";
- echo "alert('上传失败!');";
- echo "window.history.go(-1);";
- echo "</script>";
- exit();
- }
b.学生住宿信息展示
使用Echarts中的图形API对学生信息进行实时统计,实现效果图如下。
js实现代码如下
- <script>
- var chartDom = document.getElementById('main');
- var myChart = echarts.init(chartDom);
- var option;
- const colors = ['#5470C6', '#91CC75', '#EE6666'];
- option = {
- color: colors,
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'cross'
- }
- },
- grid: {
- right: '20%'
- },
- toolbox: {
- feature: {
- dataView: { show: true, readOnly: false },
- restore: { show: true },
- saveAsImage: { show: true }
- }
- },
- legend: {
- data: ['男生人数', '女生人数', '总人数']
- },
- xAxis: [
- {
- type: 'category',
- axisTick: {
- alignWithLabel: true
- },
- // prettier-ignore
- data: ['北区宿舍', '西区宿舍', '东区宿舍', '动漫大厦']
- }
- ],
- yAxis: [
- {
- type: 'value',
- name: '男生人数',
- min: 0,
- max: 50,
- position: 'right',
- axisLine: {
- show: true,
- lineStyle: {
- color: colors[0]
- }
- },
- axisLabel: {
- formatter: '{value}人'
- }
- },
- {
- type: 'value',
- name: '女生人数',
- min: 0,
- max: 50,
- position: 'right',
- offset: 80,
- axisLine: {
- show: true,
- lineStyle: {
- color: colors[1]
- }
- },
- axisLabel: {
- formatter: '{value}人'
- }
- },
- {
- type: 'value',
- name: '总人数',
- min: 0,
- max: 50,
- position: 'left',
- axisLine: {
- show: true,
- lineStyle: {
- color: colors[2]
- }
- },
- axisLabel: {
- formatter: '{value}人'
- }
- }
- ],
- series: [
- {
- name: '男生人数',
- type: 'bar',
- data: [
- <?php echo $AllNan; ?>
- ]
- },
- {
- name: '女生人数',
- type: 'bar',
- yAxisIndex: 1,
- data: [
- <?php echo $AllNu; ?>
- ]
- },
- {
- name: '总人数',
- type: 'line',
- yAxisIndex: 2,
- data: [<?php echo $AllAreaStu; ?>]
- }
- ]
- };
- option && myChart.setOption(option);
- </script>
至此,该宿舍管理系统的设计与实现大致流程与效果已讲解完毕,如对您有所帮助,请收藏保留并留下宝贵一赞!谢谢!
源码:q: one three five one zero nine seven four three one
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。