精华内容
下载资源
问答
  • PHP宿舍管理系统项目实战
    2021-06-22 08:40:29

    写在前面

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

    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 "<script>alert('新密码设置成功。');</script>";
    				}
    			}
    		}
    		
    	}else{
    		//如果用户未登录,跳转到登录界面
    		header("Location: ./logout.php");
    	}
    

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

    	<?php
    	session_start();
    	$_SESSION['user_id']=null;
    	$_SESSION['user_account']=null;
    	$_SESSION['user_type']=null;
    	$_SESSION['user_name']=null;
    	$_SESSION['user_sex']=null;
    	
    	$_SESSION['dorm_id']=null;
    	$_SESSION['dorm_building']=null;
    	$_SESSION['dorm_number']=null;
    	
    	header('Location: ./login.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开发过程中也非常重要的,决定了系统的效率。这里显示的主要是经过辅导员批准的外出申请。
    在前端页面的话,从数据库获取到了信息,关键在于如何处理?并很好的展示在用户面前,这是一个很重要的问题!
    思路:使用foreach遍历数组取出不同信息放到不同区域内,需要注意的是需要注意显示的数据格式,以及对于假条时间是否过期的处理。
    具体代码如下:

    	<?php
    							foreach($leave_list as $row):
    					?>
    								<tr>
    									<td>
    										<?=$row['account']?>
    									</td>
    									<td>
    										<a href="./student_detail.php?id=<?=$row['student_id']?>">
    											<?=$row['name']?>
    										</a>
    									</td>
    									<td>
    										<a href="./dorm_detail?id=<?=$row['dorm_id']?>">
    											<?=$row['building']?>号楼&nbsp;<?=$row['number']?></a>
    									</td>
    									<td>
    										<?=date('Y-m-d H:i',strtotime($row['date_start']))?>
    									</td>
    									<td>
    										<?=date('Y-m-d H:i',strtotime($row['date_end']))?>
    									</td>
    								</tr>
    								<tr>
    									<td colspan="4">
    										请假原因:&nbsp;<?=$row['request']?>
    										<br>
    										&nbsp;										
    									</td>
    									<td>
    										<?php
    											if(strtotime($row['date_end'])>time()):
    										?>
    												<span class="tag is-success">有效</span>
    										<?php
    											else:
    										?>
    												<span class="tag is-warning is-light">过期</span>
    										<?php
    											endif;
    										?>
    										<br>
    										&nbsp;
    									</td>
    								</tr>
    					<?php 
    							endforeach;
    					?>
    
    • 在对时间的格式处理中,使用strtotime()函数将任何英文文本的日期时间描述解析为 Unix 时间戳,再使用date()函数格式化时间格式。关于Unix时间戳和date()函数可以去看这两篇文章-

    https://www.jb51.net/article/148360.htm —date函数

    https://blog.csdn.net/harryhare/article/details/88585653?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162462724816780271568479%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162462724816780271568479&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-88585653.pc_search_result_cache&utm_term=+Unix+%E6%97%B6%E9%97%B4%E6%88%B3&spm=1018.2226.3001.4187 —Unix时间戳

    maintain和maintain_detail

    这两个页面主要实现宿管对学生报修信息的查看、回复处理。
    具体代码如下:

    			$sql="select a.id,a.dorm_id,date,request,admin_response,building,number
    				from t_dorm_maintain as a join t_dorm as b on  a.dorm_id=b.id 
    				order by a.id desc limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$maintain_list=$result->fetchAll();
    

    显示的信息有日期、宿舍楼号及房号、报修内容,是否回复。

    //处理表单提交
    			if($_POST){
    				$maintain_id=$_POST['id'];
    				$response=$_POST['response'];
    
    				$sql="update t_dorm_maintain set admin_response=? where id=?";  //更新宿管对学生的回复
    				$stmt=$pdo->prepare($sql);   //sql预处理语句
    				$stmt->bindParam(1,$response);   //绑定
    				$stmt->bindParam(2,$maintain_id);
    				if(!$stmt->execute())
    				{
    					exit("提交失败,请重试。".$stmt->errorInfo());
    				}
    				header('Location: ./maintain.php');
    			}
    			
    			$maintain_id=$_GET['id'];   //定义浏览器传入的maintain_id
    			if(empty($maintain_id)){
    				//如果没有$maintain_id参数就返回maintain列表
    				header('Location: ./maintain.php');
    			}
    			
    			$sql="select a.id,date,request,admin_response,building,number
    				from t_dorm_maintain as a join t_dorm as b on a.dorm_id=b.id 
    				where a.id=$maintain_id";
    			$result=$pdo->query($sql);
    			$maintain_detail=$result->fetch();
    

    前端方面涉及表单提交和数据处理,跟请假页面相似,就不再赘述。

    student和student_detail

    这两个页面主要是使用sql语句的like子句对学生进行查找以及信息的显示。
    具体代码如下:

    //student.php
    			$keyword=$_GET['keyword'];
    			$sql="select student_id,dorm_id,building,number,c.sex,account,c.name as student_name,d.name as class_name
    					from t_student_dorm as a right join t_dorm as b on a.dorm_id=b.id right join t_student as c on c.id=a.student_id left join t_class as d on d.id=c.class_id
    					where c.name like '%$keyword%' or account like '%$keyword%'
    					limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$student_list=$result->fetchAll();
    
    //student_detail.php
    			$student_id=$_GET['id'];
    			$sql="select student_id,dorm_id,building,number,supervisor,c.sex,c.account,c.name as student_name,d.name as class_name,department,e.name as teacher_name
    					from t_student_dorm as a right join t_dorm as b on a.dorm_id=b.id right join t_student as c on c.id=a.student_id right  join t_class as d on d.id=c.class_id right join t_teacher as e on d.teacher_id=e.id
    					where c.id=$student_id";
    			$result=$pdo->query($sql);
    			$student_detail=$result->fetch();
    

    写到这里才发现我的sql语句经常会出问题,所以我手绘了一张ER图,然后再去回忆表的连接。

    • left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
    • right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
    • inner join(等值连接) 只返回两个表中联结字段相等的行

    violation和violation_detail

    这里主要是实现学生违规的登记和删除。
    具体代码如下:

    //登记的思路主要是先选择学生(学生搜索),再对该学生进行违规登记
    //处理表单提交violation_detail.php
    			if($_POST){
    				$student_id=$_POST['id'];
    				$date=$_POST['date'];
    				$detail=$_POST['detail'];
    				
    				if(strtotime($date)>time()){
    					echo "<script>alert('您选择的违规时间有误,请重试')</script>";
    				}else{
    					$sql="insert t_student_violation set student_id=? ,date=? ,detail=?";
    					$stmt=$pdo->prepare($sql);
    					$stmt->bindParam(1,$student_id);
    					$stmt->bindParam(2,$date);
    					$stmt->bindParam(3,$detail);
    					if(!$stmt->execute())
    					{
    						exit("提交失败,请重试。".$stmt->errorInfo());
    					}
    					header('Location: ./violation.php');
    				}
    			}
    			
    			if(isset($_GET['id'])){ 
    				$student_id=$_GET['id'];
    				
    				//获取学生详细信息
    				$sql="select student_id,dorm_id,building,number,c.sex,account,name,supervisor
    					from t_student_dorm as a join t_dorm as b on a.dorm_id=b.id join t_student as c on c.id=a.student_id
    					where c.id=$student_id";
    				$result=$pdo->query($sql);
    				$student_detail=$result->fetch();
    			}else{
    				//如果没有传入学生id,跳转到搜索学生页面
    				header("Location: ./student.php?func=违规登记");
    			}
    
    //处理表单提交
    			if($_POST){
    				$voilation_id=$_POST['id'];
    
    				$sql="delete from t_student_violation where id=?";
    				$stmt=$pdo->prepare($sql);
    				$stmt->bindParam(1,$voilation_id);
    				if(!$stmt->execute())
    				{
    					exit("删除失败,请重试。".$stmt->errorInfo());
    				}
    			}
    			$sql="select a.id,student_id,date,detail,teacher_response,name,account
    				from t_student_violation as a join t_student as b on a.student_id=b.id
    				order by date desc limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$violation_list=$result->fetchAll();
    

    在前端方面还是老样子,具体见源码,有所创新的是我实现了一个使用鼠标点击输入日期的功能,用Javascript实现。输入框id为date,代码如下:

    $(function(){
    		var options={lang:'ch',format:'Y-m-d'};
    		$('#date').datetimepicker(options);
    	})
    

    学生页面Student

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

    • exchange_add
    • exchange
    • home
    • leave_add
    • leave
    • maintain
    • maintain
    • violation

    exchange_add和exchange

    此处主要实现学生的申请换宿舍的功能。具体代码如下:

    //exchange.php
    //获取学生信息
    			$user_account=$_SESSION['user_account'];
    			$user_name=$_SESSION['user_name'];
    			$user_id=$_SESSION['user_id'];
    			$user_sex=$_SESSION['user_sex'];
    			
    			if(isset($_SESSION['dorm_id'])&&isset($_SESSION['dorm_building'])){
    				//获取原宿舍信息
    				$dorm_id=$_SESSION['dorm_id'];
    				$dorm_building=$_SESSION['dorm_building'];
    				$dorm_number=$_SESSION['dorm_number'];
    			}
    			
    			$sql="select * from t_student_dorm_exchange left join t_dorm on to_dorm_id=t_dorm.id
    				where student_id=$user_id order by date desc limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$exchange_list=$result->fetchAll();
    
    //获取学生信息
    			$user_account=$_SESSION['user_account'];
    			$user_name=$_SESSION['user_name'];
    			$user_id=$_SESSION['user_id'];
    			$user_sex=$_SESSION['user_sex'];
    			
    			//获取当前宿舍信息
    			$dorm_building=isset($_SESSION['dorm_building'])?$_SESSION['dorm_building']:null;
    			$dorm_number=isset($_SESSION['dorm_number'])?$_SESSION['dorm_number']:null;
    			
    			if($_POST){
    				//目标宿舍的信息
    				$to_dorm_building=$_POST['building'];
    				$to_dorm_number=$_POST['number'];
    				//换宿舍的原因
    				$request=$_POST['request'];
    				if($to_dorm_building==$dorm_building&&$to_dorm_number==$dorm_number){
    					echo "<script>alert('您当前已在此宿舍')</script>";
    				}else{
    					require '../public/_share/_pdo.php';
    					
    					$sql="select id,sex from t_dorm where building='$to_dorm_building' and number='$to_dorm_number'";
    					$result=$pdo->query($sql);
    					$row=$result->fetch();
    					$to_dorm_id=$row['id'];
    					if(empty($to_dorm_id)){
    						echo "<script>alert('目标宿舍不存在,请核对。')</script>";
    					}else{
    						$to_dorm_sex=$row['sex'];
    						if($user_sex!=$to_dorm_sex){
    							echo "<script>alert('该宿舍是".$to_dorm_sex."生宿舍,您无法申请更换。')</script>";
    						}else{
    							$sql="insert into t_student_dorm_exchange(`student_id`,`to_dorm_id`,`request`) values($user_id,?,?)";
    							$stmt=$pdo->prepare($sql);
    							$stmt->bindParam(1,$to_dorm_id);
    							$stmt->bindParam(2,$request);
    							if(!$stmt->execute())
    							{
    								exit("申请失败,请重试。".$stmt->errorInfo());
    							}
    							header('Location: ./exchange.php');
    						}
    					}
    				}
    			}
    

    其实上面的代码很好理解,先获取目标宿舍的信息,然后与原宿舍进行比较,若不同,则将学生的信息添加到目标宿舍。

    leave_add和leave

    这里主要实现学生的请假申请和请假外出信息。
    具体代码如下:

    //leave.php
    			$user_account=$_SESSION['user_account'];
    			$user_name=$_SESSION['user_name'];
    			$user_id=$_SESSION['user_id'];
    			
    			$sql="select * from t_student_leave where student_id=$user_id order by date_start desc limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$leave_list=$result->fetchAll();
    			require './view/leave_html.php';
    
    //leave_add.php
    			$user_account=$_SESSION['user_account'];
    			$user_name=$_SESSION['user_name'];
    			$user_id=$_SESSION['user_id'];
    			
    			if($_POST){
    				$date_start=$_POST['date_start'];
    				$date_end=$_POST['date_end'];
    				$request=$_POST['request'];
    				if(strtotime($date_start)<time()){
    					echo "<script>alert('起始时间应大于当前时间')</script>";
    				}else if(strtotime($date_end)<=strtotime($date_start)){
    					echo "<script>alert('返校时间应大于起始时间')</script>";
    				}else{
    					require '../public/_share/_pdo.php';
    					$sql="insert into t_student_leave(`student_id`,`date_start`,`date_end`,`request`) values($user_id,?,?,?)";
    					$stmt=$pdo->prepare($sql);
    					$stmt->bindParam(1,$date_start);
    					$stmt->bindParam(2,$date_end);
    					$stmt->bindParam(3,$request);
    					if(!$stmt->execute())
    					{
    						exit("申请失败,请重试。".$stmt->errorInfo());
    					}
    					header('Location: ./leave.php');
    				}
    			}
    

    maintain和maintain_add

    物业报修功能,需要被安排到宿舍才能进行报修申请,否则无法提交申请。
    具体代码如下:

    //maintain.php
    //获取学生信息
    			$user_account=$_SESSION['user_account'];
    			$user_name=$_SESSION['user_name'];
    			$user_id=$_SESSION['user_id'];
    			
    			if(isset($_SESSION['dorm_id'])&&isset($_SESSION['dorm_building'])){
    				//获取宿舍信息
    				$dorm_id=$_SESSION['dorm_id'];
    				$dorm_building=$_SESSION['dorm_building'];
    				$dorm_number=$_SESSION['dorm_number'];
    				
    			$sql="select * from t_dorm_maintain where dorm_id=$dorm_id order by date desc limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$maintain_list=$result->fetchAll();
    
    //maintain_add.php
    				//获取学生信息
    			$user_account=$_SESSION['user_account'];
    			$user_name=$_SESSION['user_name'];
    			$user_id=$_SESSION['user_id'];
    			
    			if(isset($_SESSION['dorm_id'])&&isset($_SESSION['dorm_building'])){
    				//获取宿舍信息
    				$dorm_id=$_SESSION['dorm_id'];
    				$dorm_building=$_SESSION['dorm_building'];
    				$dorm_number=$_SESSION['dorm_number'];
    				
    				if($_POST){
    					require '../public/_share/_pdo.php';
    					$sql="insert into t_dorm_maintain(`dorm_id`,`request`) values($dorm_id,?)";
    					$stmt=$pdo->prepare($sql);
    					$stmt->bindParam(1,$_POST['request']);
    					if(!$stmt->execute())
    					{
    						exit("申请失败,请重试。".$stmt->errorInfo());
    					}
    					header('Location: ./maintain.php');
    				}
    				
    				require './view/maintain_add_html.php';
    			}else{
    				//如果获取宿舍信息失败
    				header('Location: ./view/maintain.php');
    			}
    		}
    

    violation

    显示学生违规记录。
    具体代码如下:

    //获取学生信息
    			$user_account=$_SESSION['user_account'];
    			$user_name=$_SESSION['user_name'];
    			$user_id=$_SESSION['user_id'];
    
    			$sql="select * from t_student_violation where student_id=$user_id order by date desc limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$maintain_list=$result->fetchAll();
    

    教师页面Teacher

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

    • exchange
    • home
    • leave
    • violation

    exchange

    教师端实现对学生换宿的审批功能,这里需要展现学生换宿的具体信息和原因,同时看到目标宿舍的居住情况,以及宿管意见。
    具体代码如下:

    //处理表单提交
    			if($_POST){
    				$leave_id=$_POST['id'];
    				$response=$_POST['response'];
    				if(!empty($leave_id)&&!empty($response)){
    					$sql="update t_student_dorm_exchange set teacher_response=? where id=?";
    					$stmt=$pdo->prepare($sql);
    					$stmt->bindParam(1,$response);
    					$stmt->bindParam(2,$leave_id);
    					if(!$stmt->execute())
    					{
    						exit("提交失败,请重试。".$stmt->errorInfo());
    					}
    					header('Location: ./exchange.php');
    				}
    			}
    			$sql="select a.id,a.date,a.request,a.admin_response,a.teacher_response,b.account,b.name as student_name,c.name as class_name,d.building,d.number,d.bed,g.count
    				from t_student_dorm_exchange as a join t_student as b on a.student_id=b.id
    					join t_class as c on b.class_id=c.id
    					join t_dorm as d on a.to_dorm_id=d.id
    					join (select count(e.id) as count,f.id from t_student_dorm as e right join t_dorm as f on e.dorm_id=f.id group by f.id) as g on g.id=d.id
    				where c.teacher_id=$user_id
    				order by a.id desc limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$exchange_list=$result->fetchAll();
    

    home

    教师信息显示。具体代码如下:

    //获取教师信息
    			$user_account=$_SESSION['user_account'];
    			$user_name=$_SESSION['user_name'];
    			$user_id=$_SESSION['user_id'];
    			
    			//获取班级信息
    			require '../public/_share/_pdo.php';
    			$sql="select * from t_class where teacher_id=$user_id";
    			$result=$pdo->query($sql);
    			$class_list=$result->fetchAll();
    			require './view/home_html.php';
    

    leave

    教师对学生外出请假的审批,具体代码如下:

    //处理表单提交
    			if($_POST){
    				$leave_id=$_POST['id'];
    				$response=$_POST['response'];
    				if(!empty($leave_id)&&!empty($response)){
    					$sql="update t_student_leave set teacher_response=? where id=?";
    					$stmt=$pdo->prepare($sql);
    					$stmt->bindParam(1,$response);
    					$stmt->bindParam(2,$leave_id);
    					if(!$stmt->execute())
    					{
    						exit("提交失败,请重试。".$stmt->errorInfo());
    					}
    					header('Location: ./leave.php');
    				}
    			}
    			
    			$sql="select a.id,a.date_start,a.date_end,a.request,a.teacher_response,b.account,b.name as student_name,c.name as class_name
    				from t_student_leave as a join t_student as b on a.student_id=b.id join t_class as c on b.class_id=c.id
    				where c.teacher_id=$user_id
    				order by date_start desc limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$leave_list=$result->fetchAll();
    

    与此同时,还需在前端页面控制是否批准学生的请假,具体代码如下:

    <tr>
    				<?php
    					$teacher_response=$row['teacher_response'];
    					if(empty($teacher_response)):
    				?>
    					<td colspan="3">
    						&nbsp;<br>&nbsp;
    					</td>
    					<td colspan="1">
    						待回复:
    					</td>
    					<td colspan="2">
    						<div class="buttons">
    							<a class="button is-small is-outlined is-success" onclick="checkYes(<?=$row['id']?>,'<?=$row['student_name']?>')">批准</a>
    							<a class="button is-small is-outlined is-dark" onclick="checkNo(<?=$row['id']?>,'<?=$row['student_name']?>')">否决</a>
    						</div>
    					</td>
    				<?php
    					else:
    				?>
    					<td colspan="3">
    						&nbsp;<br>&nbsp;
    					</td>
    					<td colspan="1">
    						已回复:
    					</td>
    					<td colspan="2">
    						<?=$teacher_response?>
    					</td>
    				<?php
    					endif;
    				?>
    </tr>
    

    violation

    教师对学生违规情况的详情了解,具体代码如下:

    //处理表单提交
    			if($_POST){
    				$violation_id=$_POST['id'];
    				$response="已读";
    				if(!empty($violation_id)){
    					$sql="update t_student_violation set teacher_response=? where id=?";
    					$stmt=$pdo->prepare($sql);
    					$stmt->bindParam(1,$response);
    					$stmt->bindParam(2,$violation_id);
    					if(!$stmt->execute())
    					{
    						exit("提交失败,请重试。".$stmt->errorInfo());
    					}
    					header('Location: ./violation.php');
    				}
    			}
    			
    			$sql="select a.id,detail,date,account,teacher_response,b.name as student_name,c.name as class_name
    				from t_student_violation as a join t_student as b on a.student_id=b.id join t_class as c on b.class_id=c.id
    				where c.teacher_id=$user_id
    				order by date desc limit $lim,$page_size";
    			$result=$pdo->query($sql);
    			$violation_list=$result->fetchAll();
    

    关键技术

    每一部分采用的技术,可以使用部分源代码说明,尽量将课程中学过的技术都用上。必须对每一部分的技术和知识点加以说明。自己认为比较关键的、得意的地方,文字说明,可辅助代码。每个作品必须选取二十行以上的关键代码逐句进行解释.
    

    分页功能实现

    在许多页面都有分页功能,这主要是为了使页面更加简洁,便于用户查看信息。同时实现翻页功能,虽然这两者是一体的…
    实现思路:比如宿舍详细信息页面,首先我们要设置每页显示的行数,然后查询数据库里的宿舍总数,求出最大页面数,同时还需考虑页面的几种情况:是否为空,再确定页数的最大值和最小值,防止出现错误。
    具体代码如下:

    //处理分页
    			$page_size=5; //每页显示的行数
    			$result=$pdo->query("select count(*) from t_dorm"); //  获取数据库中的宿舍数量
    			$count=$result->fetch()[0];  
    			$max_page=ceil($count/$page_size);  //最大页面数  celi函数向上舍入为最接近的整数
    			$page=isset($_GET['page']) ? intval($_GET['page']) : 1;  //定义变量由浏览器传入
    			$page=$page>$max_page ? $max_page : $page;//最大值
    			$page=$page < 1 ? 1 : $page;//最小值处理
    			$lim=($page -1)*$page_size;//限制条件处理
    

    还需要注意的是,在数据库中查找信息的过程中不要忘记加入limit条件,具体可以去看一下MySql数据库的菜鸟教程。到这里我们后端已经写完,接下来就是如何在前端显示这个效果。具体代码如下:

    <?php
    		if($max_page>1):    //分页功能
    		?>
    			<br>
    			<nav class="pagination is-centered" role="navigation" aria-label="pagination">
    			  <a class="pagination-previous has-background-white" href="./dorm.php?page=1">首页</a>
    			  <a class="pagination-previous has-background-white" href="./dorm.php?page=<?=$page-1; ?>"><</a>
    			  <ul class="pagination-list">   
    					<?php             //新建变量循环并判断,若是当前页面则点亮页面标签,不是则为空白。
    						for($p=1;$p<=$max_page;$p++):  
    							if($p==$page):
    					?>
    								<li><a class="pagination-link is-current" href="./dorm.php?page=<?=$p?>"><?=$p?></a></li>							
    					<?php
    							else:
    					?>
    								<li><a class="pagination-link has-background-white" href="./dorm.php?page=<?=$p?>"><?=$p?></a></li>
    					<?php
    							endif;
    						endfor;
    					?>
    			  </ul>
    			  <a class="pagination-next has-background-white" href="./dorm.php?page=<?=$page+1; ?>">></a>
    			  <a class="pagination-next has-background-white" href="./dorm.php?page=<?=$max_page; ?>">尾页</a>
    			</nav>
    

    代码写到这里,分页功能也算是写完了。其他页面的分页功能都是一样,所以要融会贯通,便可解决大部分问题。

    排序功能

    排序功能的实现思路在于先获取需要排序的信息,再在sql语句中进行排序(ASC\DESC)
    举例(dorm.php)
    代码如下:

    //处理排序
    			//默认order by building
    			$sql_order="building";
    			if(isset($_GET['order'])){
    				$order=$_GET['order'];  //浏览器传入需要排序的信息,针对不同信息类目进行升降排序
    				switch($order){
    					case "building_desc":   //降序
    						$sql_order="building desc";
    						break;
    					case "number":
    						$sql_order="number";  //默认升序
    						break;
    					case "number_desc":
    						$sql_order="number desc";
    						break;
    					case "bed":
    						$sql_order="bed";
    						break;
    					case "bed_desc":
    						$sql_order="bed desc";
    						break;
    					case "count":
    						$sql_order="count";
    						break;
    					case "count_desc":
    						$sql_order="count desc";
    						break;
    				}
    			}
    //得到之后则把$sql_order代入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();
    

    其他功能

    • 使用date()函数
    • 使用UNIX时间戳
    • PHP会话控制(在管理页面中有详细解释)
      在login.php中,就使用了会话控制,步骤是开始会话->注册会话变量$_SESSION来存储信息->使用会话变量->注销变量并销毁会话(logout.php)

    编写可维护代码

    在以往的编写代码的过程中,习惯于将PHP代码和前端写到一起,在看到许多优秀的博主写的代码后,我也将所编写的代码视图层和逻辑层分开来。

    数据库连接方式PDO

    之前用的都是mysqli,但我推荐大家用pdo,因为pdo的强大之处是显而易见的,支持多种数据库,还有参数绑定是特色。

    参考资料

    • 各大高校宿舍管理系统
    • PHP和MySQL Web开发(Fourth Edition) by luke Welling

    心得体会

    在完成这次期末答辩项目的过程中,我最大的收获就是,自己编写一个完整软件开发的项目更加清晰了,同时我的收获不仅仅只停留在写代码的思路上,关键更在于编写可维护的代码,目的在于使代码更加的标准化。即以下几点:

    • 定义命名惯例
    • 使代码易读
    • 使标识符易记
    • 代码注释
    • 项目文档化

    除此之外,在设计的过程中,数据库的创建决定了整个系统功能交互的效率,若是表没有设计好需要的字段,就会使整个系统显得复杂低效。
    最后就是我经过学习了解到我的这个项目还存在许多需要改善的地方,而在不断的迭代升级中,会发现如果没有一个很好的版本控制方法,项目的进程将会面临许多问题,我上网搜索了一下,找到了两个版本控制产品,分别使CVS和Bitkeeper,在这里就不详细介绍,总而言之,在web项目这条道路上我还有很长很长的路要走,技术日新月异,但我追求知识的脚步从未停止。

    写在最后

    如果需要源码请留言~

    更多相关内容
  • Python综合应用——宿舍管理系统,供大家参考,具体内容如下/p> 通过对 python 的函数,变量的应用,编写简单的关系系统 实现功能: 1.新增学生 2.显示全部学生信息 3.搜索学生 可按照学生姓名,班级,学号,宿舍号...
  • 企业宿舍管理系统宿舍管理系统毕业论文.doc
  • 宿舍管理系统源码

    2018-11-01 19:05:06
    本源码是一个宿舍管理系统,分为用户和管理员种种登陆方式,分别拥有不同的权限 1、开发环境为Visual Studio 2010,数据库为SQLServer2005,使用.net 3.5开发。 2、管理员登陆名密码均为:admin 3、附加数据库连接...
  • 宿舍管理系统

    2019-04-06 17:35:50
    系统基于Struts2框架, B/S软件架构体系,以windows 7为操作系统,适用于大部分电脑,以Eclipse为开发平台,TomCat为服务器,以J2EE为开发架构,MySql为后台数据库,开发出本系统。 2.1 B/S软件架构 B/S结构...
  • 坚石宿舍管理系统,本款软件是为中小企业,学校,公司等及提供住宿的单位设计的,本着资源共享的观点,为有需要的用户提供方便。这样可以方便对房间的维护,再就是对入住人员
  • 主要介绍了python实现员工管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Python宿舍管理系统【GUI】前言一、运行图二、下载 前言 初学Python的处女作,基本的增删改查操作 一、运行图 依次是登录、打印(word)、饼状图、首页、数据导出(excel),可以下载程序自己查看 二、下载 免费...

    Python宿舍管理系统【GUI】


    前言

    初学Python 图形化界面的处女作,涵盖基本的增删改查操作和导出操作

    一、运行图

    依次是登录、打印(word)、饼状图、首页、数据导出(excel),可以下载程序自己查看
    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述

    二、下载

    可执行程序下载
    源码下载

    展开全文
  • 管理员主页 管理员g'n

    有需要的朋友请看简介

    管理员主页

    管理员功能

     

    展开全文
  • 里面有宿舍管理系统sql和access两个版本,,绝对完整代码,,并且使用第三方控件库DotNetBar,51CTO有下载。
  • 摘要 - 3 - Abstract - 4 - 1 绪论 - 5 - ...2系统的开发环境 - 7 - 2.1 Microsoft Visual Studio 2010 - 7 - 2.2 C# - 7 - 2.3 SQL Serve - 8 - 2.4 B/S结构 - 8 - 3 系统分析 - 9 - 3.1可行性分析 -

    摘要 - 3 -
    Abstract - 4 -
    1 绪论 - 5 -
    1.1 课题背景 - 5 -
    1.2 目的和意义 - 5 -
    1.3 国内外研究现状 - 6 -
    1.3.1 国外研究现状及分析 - 6 -
    1.3.2 国内研究现状及分析 - 6 -
    2系统的开发环境 - 7 -
    2.1 Microsoft Visual Studio 2010 - 7 -
    2.2 C# - 7 -
    2.3 SQL Serve - 8 -
    2.4 B/S结构 - 8 -
    3 系统分析 - 9 -
    3.1可行性分析 - 9 -
    3.1.1 技术可行性 - 9 -
    3.1.2操作可行性 - 9 -
    3.1.3 经济可行性 - 9 -
    3.2需求分析 - 10 -
    3.3 系统非功能性需求 - 10 -
    3.4 系统数据处理流程设计 - 11 -
    4 系统总体设计 - 13 -
    4.1 系统的架构设计 - 13 -
    4.2系统功能模块设计 - 13 -
    4.3数据库总体设计 - 14 -
    4.3.1 概念结构设计 - 14 -
    4.3.2 数据库逻辑结构 - 18 -
    5 系统细节设计 - 22 -
    5.1用户登录界面设计 - 22 -
    5.2院系管理界面设计 - 22 -
    5.3用户信息管理界面设计 - 23 -
    5.4宿舍信息界面设计 - 25 -
    5.5 楼房信息管理界面设计 - 26 -
    5.6 住宿费信息管理界面设计 - 27 -
    5.7 宿舍评分信息管理界面设计 - 28 -
    5.8 水电费信息管理界面设计 - 28 -
    5.9 规章制度信息管理界面设计 - 29 -
    5.10 报修信息管理界面设计 - 29 -
    5.11 宿舍信息查询界面设计 - 30 -
    结语 - 31 -
    致谢 - 32 -
    参考文献: - 33 -

    随着计算机信息技术的不断发展与进步,计算机信息技术已被应用到越来越多的学校与个人管理服务中,这给学校的协调管理带来了极大的便利。当前,大多数学校的寄宿房管理效率较低,对于宿舍的信息无法得到有效的管理。关于学生宿舍信息链也存在着许多缺陷,这促使宿舍管理系统应运而生。这个系统有助于学校科学管理,和处理宿舍有关的信息,并且用于改善学生宿舍生活的目的。以科学、便捷的方式进行宿舍管理。
    本文介绍如何开发宿舍管理系统,包括用户帐户管理,学生信息管理,教师信息管理,建筑物管理,添加宿舍住房信息,修改宿舍住房信息,删除宿舍住房信息,宿舍设施管理。维修申请信息管理,规章制度管理,登记信息管理,住宿费管理,宿舍管理等重要功能。本文首先介绍了宿舍管理系统开发的背景和意义,以及国内外研究的现状,然后逐步发展。本文的宿舍管理的系统设计,包括系统分析,系统整体设计以及系统详细设计等,最后,对系统进行了全面的测试。
    宿舍管理系统使用微软Microsoft Visual Studio 2010开发环境进行开发,并且使用微软SQL2008数据库进行存储数据,采用B/S架构的开发模式。

    关键词:宿舍管理,ASP.NET,SQL,B/S结构

    Abstract
    With the continuous development and progress of computer information technology, computer information technology has been applied to more and more schools and personal management services, which has brought great convenience to the coordinated management of schools. At present, the management efficiency of boarding rooms in most schools is low, and the information in the dormitories cannot be effectively managed. There are also many shortcomings in the student dormitory information chain, which promotes the emergence of a dormitory management system. This system contributes to the scientific management of the school, and the processing of dormitory-related information, and is used for the purpose of improving student dormitory life. Manage the dormitory in a scientific and convenient way.
    This article describes how to develop a dormitory management system, including user account management, student information management, teacher information management, building management, adding dormitory housing information, modifying dormitory housing information, deleting dormitory housing information, and dormitory facility management. Maintenance application information management, rules and regulations management, registration information management, accommodation fee management, dormitory management and other important functions. This article first introduces the background and significance of the development of the dormitory management system, as well as the status quo of domestic and foreign research, and then gradually develops. The system design of the dormitory management in this paper includes system analysis, overall system design and detailed system design. Finally, a comprehensive test of the system is carried out.
    The dormitory management system uses the Microsoft Visual Studio 2010 development environment for development, and uses the Microsoft SQL2008 database to store data, using the B/S architecture development model.

    Keywords: dormitory management, ASP.NET, SQL, B/S structure

    1 绪论
    1.1 课题背景
    随着社会经济的迅速发展、科学技术的全面进步、以及计算机产业的迅猛发展。基于计算机和通信技术的信息系统正处于高速发展时期,当今社会正快速向数字化,信息化、网络化方向迈进,管理信息系统的作用也越来越大。高等院校作为培养高新技术人才的场所,自然而然成为高新技术发展的先行者,学生宿全信息管理系统也就应运而生了。
    在计算机蓬勃发展的今天,将计算机信息处理应用在学校的日常管理方面已是大势所趋,这将为学校管理方式带来不一样的变化,以及意想不到的效益,同时也为学校建设发展提供无限潜力。采用计算机管理的方式已成为学校管理科学化和现代化的重要标志。
    学生宿舍基是大学生学习、生活、休息的重要场所。采用宿舍管理系统来对大学生宿舍生活进行管理,无疑提高了学校宿舍管理工作的效率以及学生信息的准确性。目前,各学校的大部分管理工作已基本上实现企电脑操作。但是学生宿合的管理仍使用人工操作。传统人工操作的宿舍管理方式,需要强大的人功进行支持。管理各项信息的准确性也较差。在现今的知识时代,现代社会人们有着强烈的时间观念,如果仍使用手工操作,即浪费了人力,又浪费了物力,效率无法提高。
    1.2 目的和意义
    利用计算机管理宿舍已成为一种趋势,与传统的手工管理模式相比,采用计算机管理宿舍信息具有着执行速度快、易查找、可行性高、存储容量大、保密性强、使用寿命长、成本低特点。通过宿舍管理系统,对宿舍信息进行科学化、系统化的管理,从而达到有效管理宿舍的目的。因此,在如今网络社会中,这种的发展是必要的。
    高校日常管理的过程中,宿舍管理对于日常管理来说,是一个重要的组成,对于学校而言,学生宿舍管理是必不可少的组成部分。作为学校日常管理的一个重要方面的学生宿舍管理,长期以来,以人力手动工作作为主要方式,在日常宿舍管理的过程中,管理人员面对的管理工作数据量庞大,手续繁琐,其工作的复杂度和效率可想而知。因此本课题拟实现宿舍管理系统,实现学生管理、宿舍日常管理、系统管理几大部分。通过该系统可以提高管理人员的工作效率,减少出错率,对于数据存储及查找有了更方便的操作。
    随着信息科技的蓬勃发展,社会各行业广泛采用信息技术。在这种趋势下,科学化、人性化的宿舍管理系统应运而生。宿舍管理系统的开发和运行,有助于帮助管理员减轻每日的工作量,从而进一步提高宿舍管理的效率。在与传统手工管理模式相比,节约了很大的人力物力,同时也提高了宿舍管理员的事务管理的能力。
    1.3 国内外研究现状
    1.3.1 国外研究现状及分析
    在北美欧洲等发达地区,高校信息化建设开设历史久远,和其他后发展的宿舍管理系统更进步的是通过紫外线感应人脸识别系统,通过头像扫描记录个人信息并且存入系统,这一个方便快捷的优势可以长期存在。学生寝室的钥匙必须放置于规定的储物柜内,学生需要进行两秒的指纹认证方能取出钥匙,并且宿舍的周围都装有多功能的监控设备实时掌控宿舍周围的环境。为了保障更安全的宿舍环境以及财产保护制度监控中心会根据实时情况进行分析和处理,一旦有异常现象出现,宿舍的严惩制度十分严格。美国的高校宿舍服务深受同学支持因为可以随时提供自动洗衣房以及娱乐场所。
    1.3.2 国内研究现状及分析
    与国外高校不同,我国由于高校在校住宿学生较多,主要采用集体宿舍的住宿方式,根据高校管理方式不同,学生宿舍的人数通常在 2-8 人不等,宿舍硬件设施各不相同。这种集中住宿模式一方面适应了我国高校在校学生数量多的特点,有利于学生间的沟通交流,但这种住宿方式却给高校学生宿舍管理工作带来了相当大的挑战,如何实现高效率的学生宿舍管理将会成为影响高校进一步发展的关键。
    我国一些高校从国外引进信息技术在校园局域网的基础上开设了属于该校的宿舍管理系统,通过大型的网站平台为进行信息的共享,以及更近人性化的设计提高了学生对其不同标准的接纳程度。但是仍有很大一部分高校的宿舍管理由于资金的缺乏还采用传统的方式进行,特别是在一些水电费支付上仍使用现金支付,排队支付,这样的人工交付的形式在地方受限的情况下是一种人为地资源浪费,排队时间长,发生错误率高。

    2系统的开发环境
    宿舍管理系统采用微软Microsoft Visual Studio 2010作为开发平台和环境,利用C#编程语言结合MSSQL数据库系统来实现B/S架构的管理系统,采用面向对象的分层模块化设计方法进行系统开发。
    2.1 Microsoft Visual Studio 2010
    Microsoft Visual Studio(简称VS)是美国微软公司的开发工具套件系列产品,是Visual Studio.NET家族的成员。它是一套完整的开发工具,可以用于生成桌面应用程序、ASP Web程序、XML Web Services服务以及移动应用程序等。在Visual Studio.NET环境下,不同开发语言全都使用相同的集成开发环境,即Visual Studio.NET IDE。Visual Studio 2010环境允许所有的利用了.NET Framework所有功能的语言共享工具,有助于创建混合语言解决方案。Visual Studio 2010是基于Visual Studio 2010拓展开发的,它们应用的是同一个内核,相对于Visual Studio 2010,Visual Studio 2010具有以下几点新特性:
    .NET Framework是.NET平台的基础框架,是用于生成、部署和运行XML Web Service以及其他应用程序的环境。包含一个庞大、有效。高度封装的代码库,这使得.NET Framework可以在用户使用某种语言时通过面向对象编程技术(OOP)来复用这些代码。依据用户的实际需要,.NET Framework的代码库被分为了诸多不同的模块。这些模块实现了不同的开发功能需求,方便了用户在开发时可以选择性地使用代码库的相应部分。这样不仅可以提高.NET Framework环境的服务效率,而且便于其升级开发。
    2.2 C#
    C#是从C和C++开发出的一种简单、现代、面向对象的计算机编程语言。C#是延续了C和C++强大的功能,同时去除了宏等功能,并且借鉴了Java等面向对象的编程语言特点的一种新型的计算机语言。在.NET Framework环境下,C#不仅拥有Visual Basic快速开发能力,同时还具有C++强大灵活能力。
    在Visual Studio 2010.NET中,C#是一个专为.NET平台设计的新型的计算机语言。因此,在.NET Framework中,对Visual C#的支持包括各种文件以及项目模板、设计器、属性页、工具栏、类、对象视图、代码向导以及开发环境的其他功能。
    C#是一种简单的、现代的、类型安全的、面向对象的计算机编程语言,C#促使开发者能够快捷、高效的在Microsoft.NET平台上开发方案。Microsoft公司设计C#是为了帮组用户建立运行于.NET平台上的、范围广泛的企业级应用程序。Visual C#代码被编译为托管代码受益于公共语言运行库的服务。
    2.3 SQL Serve
    SQL Serve数据库管理系统广受开发者的欢迎,SQL Serve最初是由微软、Sybase和Ashtion三家公司联合推出的。后面由于开发上分道扬镳,微软专注开发Windows版本。
    SQL Serve是一个快速的、多线程和高性能的SQL数据库服务器。SQL Serve服务器不仅支持关键任务,而且支持重负载生产系统,同时可以把它镶嵌到一个高配置的软件。SQL Serve是一种关联数据库管理系统,SQL数据库是将数据储存在不同类别的表中,而不是将所有数据储存在一个库中,这样大大提高了存储的灵活性。
    2.4 B/S结构
    B/S结构指的是Browser/Server结构,意思是只需要安装维护一个服务器,而客户端采用浏览器的方式来运行软件。它是随着Internet技术而兴起的,是对C/S结构的一种变化和改进。主要利用了WWW浏览器技术,结合多种Script语言和新技术,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。是一种全新的软件系统构造技术。它只需要安装一个浏览器和数据库,就可以让浏览器通过Web Server同数据库进行数据交互。
    目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。B/S架构的软件只需要管理服务器就行,所有的客户端只有浏览器,根本不需要做任何维护。无论用户的规模有多大,有多少分支机构任何维护升级工作只需要针对服务器进行即可;如果是异地,只需要把服务器接入专网,即可实现远程维护、升级和共享。这就大大地降低了组建服务器的成本。
    B/ S架构的优点:①这个架构不需要安装客户端,可以直接运行在Web浏览器中。
    ② 架构可以直接放在Internet网络上,从而达到通过某些特权来控制多客户端访问的目的以及交互方式。
    ③架构由于不需要安装客户端,因此不存在更新多个客户端以及升级服务器等问题。

    3 系统分析
    系统分析是网络信息系统研究的初始阶段,主要包括可行性分析和需求分析,系统分析目的是确定用户的需求,以及系统运行的解决方法。系统分析是系统设计与实现的基础。
    3.1可行性分析
    3.1.1 技术可行性
    宿舍管理系统的逻辑结构较简单,涉及的信息量也比较少。所以开发者只需要一台配置稍好的PC,Windows7、8或10的操作系统,微软SQL Server 2008数据库管理工具软件,微软Visual Studio 2012开发软件,结合课后自学的C#语言,以及导师的指导和专业课学到的知识,就可以完成目标系统的开发,技术上很容易实现。
    技术可行性分析是开发系统的第一步。采用什么技术开发网站系统非常重要,这需要从开发技术的成本、便利性、技术的性能、以及普及率等几个方面来考虑。通过分析宿舍管理系统的设计与实现,并且选用当前通用开发网站技术,我们准备采用ASP.NET技术框架来进行开发,然后搭配使用微软SQL Server数据库,来对相关的数据信息存储。
    3.1.2操作可行性
    首先,宿舍管理系统很简单,不需要太多复杂的技术,只需要基本的物资管理就可以实现。另外,流行的开发软件是大学课程中不可缺少的的课程,一般的设计师都熟悉这些开发软件,可以通过软件设计一个更加完善的宿舍管理系统,开发者只需掌握基本的开发语言和开发软件的使用方法。其次,这个系统的管理工作主要是信息的录入、修改、统计等,用户无需专业知识就能掌握宿舍管理系统的使用。
    综上所述,在如今科学技术的条件下,完全能实现宿舍管理系统的设计与开发。从而达到我们想要的效果。
    3.1.3 经济可行性
    宿舍管理系统的经济可行性是指学校花费的资金是否合理,同时还要看这个管理系统能否给管理人员带来便利,是否达到预期的效果。宿舍管理系统可以由学校自行设计开发,因此,不需要投入太多的经费,所以经济方面可行。
    3.2需求分析
    1.系统管理员模块负责管理系统的基本信息,包括学生信息、宿舍管理员信息、宿舍信息、账号信息等。
    2.宿舍管理员模块实现查询学生信息、管理规章制度信息、修改个人信息、宿舍查询归纳等功能。
    3.学生功能模块实现查询自己的信息、修改登录密码、查看规章制度信息、申请维修信息等功能。
    3.3 系统非功能性需求
    ①用户界面的需求:用户界面要具备简单、方便、操作易懂、美观大方等特点。
    ②系统流程的需求:在操作过程中要求让客户可以轻松实现在线的信息管理,方便查询学生宿舍相关信息,而且学生宿舍的信息呈现要准确。
    ③软件质量需求:适应性、易操作性、安全性高。
    ④安全性需求:设计在登录时采用登录拦截器的方式,来验证是否是用户的方式来进行开发,这样的设计方式能够很好的阻止黑客的攻击。
    ⑤可行性需求:这个宿舍管理系统采用了B/S结构开发模式,只需要在一台PC上进行部署,这样用户电脑只要能够上网就可以使用本系统功能。
    在调查了基本需求后,我们可以取得宿舍管理系统在性能方面如下需求。
    一、响应时间
    系统登录响应时间:<1秒;
    信息录入时间:<1秒 ;
    查询响应时间:<1秒 ;
    关联的数据库数据查询反应时间:<10秒 。
    二、处理能力
    处理能力是在硬件环境基础前提下实现的,管理系统应该具备处理大量数据的能力。
    三、稳定性
    稳定性是指系统能够实现24小时不间断运行,同时能够保证系统在资源上的合理分配。
    四、安全性
    安全是当今信息系统首要的目标。系统正常运行的同时要保证学生信息的安全,宿舍管理系统提供完善的密码加密机制,重要的信息在传输的过程中需要用户安全验证。
    3.4 系统数据处理流程设计
    1、验证登入流程
    在系统中有些功能必须是管理员才可以操作,所以需要验证登录信息,才能登入。如图3-1所示。
    在这里插入图片描述
    2、数据修改流程
    数据修改流程,如图3-2所示。

    在这里插入图片描述
    3、信息删除流程
    信息删除流程,如图3-3所示。
    在这里插入图片描述
    图3-3 信息删除流程图

    4 系统总体设计
    在系统软件开发过程中,系统设计是处于系统需求分析阶段和系统编码阶段过度期,是将需求转化为最终软件的途径,是在需求到软件过程中起到了衔接的作用。
    4.1 系统的架构设计
    宿舍管理系统是管理员经常使用的系统。管理员可以对宿舍信息进行查询与修改,用户不一定会集中办理,所以就要求管理系统必须要基于B/S结构,只有使用B/S结构才不会受地域和人员等因素的限制。
    系统采用B/S架构,就不会受时间与地域的限制,用户在使用宿舍管理系统时会非常方便。网络系统结构如图4-1所示。

    在这里插入图片描述
    图4-1 宿舍管理系统网络架构设计图
    4.2系统功能模块设计
    系统功能模块图如图4-2所示:
    在这里插入图片描述




    论文下载地址:点击下载》》》

    展开全文
  • 涵盖功能如:学生信息、信息发布、报修信息、入住信息、公告管理、楼宇管理、投诉信息、投诉...可复用为小区物业管理系统-企业员工寝室管理平台-大学宿舍管理系统 采用Jsp+Servlet+MySQL,配合三层架构的分层思想研发
  • 本科毕业设计,基于springboot框架的宿舍管理系统设计及实现。项目功能完备,文档资料等齐全。
  • 学生宿舍管理系统(Python版) 角色: 宿舍管理员、学生、系统管理员 版本信息: python3、django、jinja2、log、sqllite3或者mysql、xadmin 说明: 本人自己的毕业设计,有源码和论文以及其他所需的文档,有需要的...
  • 坚石宿舍管理系统

    2016-03-06 22:44:05
    本软件是为中小企业,学校的宿舍管理提供的一款免费软件,它可以管理房间信息,入住员工的信息,提供各种查询功能
  • 员工宿舍管理系统

    2011-12-01 20:21:57
    员工宿舍管理系统
  • 很好很强大宿舍管理系统,可以连接数据库,实现多台机器共享,达到网络办公的目的
  • 学生宿舍管理软件,是以高校的管理方式为实例而设计的一种实用型管理系统。本系统最大的特点是通用性、简单操作性,适用于同行业以及一些同类型的企业管理。随着学校寄宿人员的增多,宿舍管理人员的负担越来越重,...
  • 1.1研究背景与现状21世纪以来计算机信息服务已经很广泛的应用在人们的生活之中,出门什么都不带,只需要一部手机就可以干很多的事情,在生活上可以通过微信、支付宝等,在教育上学校也都有自己专用的系统来查询每个...
  • 毕业设计(论文)任务书经济管理学院院(系) 信息管理与信息系统专业2004-01班 学生毕业设计(论文)题目:学生宿舍管理系统毕业设计(论文)内容:本系统主要包括:学生选择课程、教师选择学生、教师评分、管理员对学生,...
  • 由于在校的大学生越来越多,传统的公寓管理存在着诸如效率低、保密性差、难于查找、更新和维护以及出错率高、不能很好的统一数据等缺陷,设计一个良好的大学生公寓管理系统将会对大学还是能宿舍管理工作带来事半功倍...
  • 系统主要是针对疫情的大环境下的学生宿舍信息管理,本系统功能模块主要分为:信息浏览浏览功能、宿舍打卡浏览功能、学生提交信息功能、宿舍搜索功能、在线留言功能、信息管理功能、个人信息管理功能、人员管理功能...
  • 美客企业文件管理系统是一款小巧实用的多用户文件管理系统,此系统比较适合用作单位内部文件的管理与传递。 美客企业文件管理系统特性: 1、支持大文件上传,单个文件最大2G,文件上传直观、带进度条。 2、自定义...
  • 利用企业规划法,通过系统规划、系统分析、系统设计等环节对宿舍事务和功能加以分析,达到宿舍事务管理信息化、方便化的目的。文档包含详细得过程步骤、完整的数据流程图、业务流程图等,还有部分数据库的设计。
  • 功能简介,在整体设计中,我们将宿舍管理系统分为七个大的模块:用户帐号模块、宿舍管理模块、学生信息查询模块、访客服务模块、水电费管理模块、评分管理管理模块。每个模块具体的子模块功能我就不具体说了,自己看...
  • 学生宿舍管理系统答辩学生信息管理系统 姓 名:xxxxx 班 级:xxxxx 指导教师:xxxxx 选题的意义 随着当今信息技术的发展,传统的方式在处理庞大的信息量时已经显得极不适应,人们对于运用计算机来辅助协调和管理自身...
  • JAVAJSP校园宿舍报修系统JSP宿舍管理系统JSP宿舍报修管理系统JSP学生公寓管理系统

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,406
精华内容 2,962
关键字:

企业宿舍管理系统