基于JavaEE+MySQL的心理咨询预约管理系统设计与实现

资源下载地址:https://download.csdn.net/download/sheziqiong/87941680
资源下载地址:https://download.csdn.net/download/sheziqiong/87941680

心理咨询预约管理系统

个人毕业设计用的一个玩具项目,无框架。

MVC 模式,普通 Servlet 控制器,JSP 视图,前台 Bootstrap

工具版本:mysql5.7,JDK1.8,Tomcat8.5

主要功能模块

分为三个端:管理员、来访者(需要预约的人),咨询师

管理员

  • 首页

    系统近况(咨询师和注册来访者数量,预约数量)
    显示最新的消息、留言和公告(最新十条)

  • 主要功能

    咨询师管理(添加、修改、删除,账号激活停用)

    来访者管理(账号激活停用)

    预约问卷管理(添加、修改、删除)

  • 公共和个人信息模块

    消息、公告和留言管理(发送接受消息,发布公告,控制留言显示和隐藏)

    个人信息管理(修改基本信息和密码)

咨询师端

  • 首页
    显示最新的消息、留言和公告(最新十条)

  • 主要功能

    查看预约详情,安排咨询申请(安排咨询时间或驳回)

    咨询完毕建立咨询档案

    查看所有咨询历史

  • 公共和个人信息模块

    消息、公告和留言管理(发送接受消息,查看公告,留言)

    个人信息管理(修改基本信息和密码)

来访者端

  • 首页
    显示最新的消息、留言和公告(最新十条)

  • 主要功能

    发起预约申请,等待安排

    在我的及时了解预约状态(待安排、准备咨询、被取消)

    查看所有咨询历史

  • 公共和个人信息模块

    消息、公告和留言管理(发送接受消息,查看公告,留言)

    个人信息管理(修改基本信息和密码)

预约状态变动时邮件和站内消息通知来访者

其他

来访者注册

管理员、咨询师和来访者登录

预约流程

  1. 来访者申请预约

来访者向某位咨询师申请预约,并填写预约申请表(期望时间地点和评估问卷)

  1. 咨询师安排咨询
    处理咨询申请,通过申请安排咨询,取消咨询
  2. 咨询档案
    咨询完成,咨询师上传咨询档案;每次咨询都会记录(可在我的咨询中查看)
  3. 来访者评价
    咨询完成,来访者对本次咨询进行评价

项目工程文件

src

bean 是数据库表对应实体类

model 包下分别是 dao 层和 service 层

servlet 下的是公共模块部分,admin,client,doctor 分别是三个端对应的控制器

test 是测试包,无用

utils.filter 过滤器,登录过滤,字符过滤等等

utils.jdbc 数据库工具类,配置和得到连接池的连接

utils.mail 是邮件模块

utils 下的 ConfigProperties 是读入配置文件,ResultDate 和 UploadResult 分别是请求响应结果和文件上传结果对象,Util 封装了常用的工具

config.properties 配置参数,配置邮件发送,文件上传大小类型限制等

pool.properties 是连接池配置文件

WebContext

amidn,client,doctor 分别是三个端对应的页面

plunge 是用到的插件

mutualResource 是 js,CSS 样式模版目录

mind_sub.sql 是数据库表脚本

数据库名:mind_sub

运行项目

  • 新建数据库 mind_sub,运行脚本 mind_sub.sql

  • 修改 pool.properties 中的 username 和 password

  • 修改 config.properties 中的邮件服务器为你自己的

    HostName ,AuthenticationEmail,AuthenticationPwd

    (我这里用的 QQ 的)

    修改 upload_path 路径

  • 在要部署的 Tomcat 中修改它的 server.xml,在 Host 标签下

    增加一行 <Context docBase="F:\upload" path="/mind_upload" reloadable="true"/>

    这是文件和图片上传存放的位置

    注意要与你 config.properties 中 upload_path 路径一致

然后把项目部署到 Tomcat 运行即可

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="f" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html lang="en">
	<head>
	<link rel="shortcut icon" href="${pageContext.request.contextPath }/favicon.ico" />
		<meta charset="utf-8" />
		<title>来访者端  </title>
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<link href="${pageContext.request.contextPath }/mutualResource/assets/css/bootstrap.min.css" rel="stylesheet" />
		<link rel="stylesheet" href="${pageContext.request.contextPath }/mutualResource/assets/css/font-awesome.min.css" />
		<!--[if IE 7]>
		  <link rel="stylesheet" href="${pageContext.request.contextPath }/mutualResource/assets/css/font-awesome-ie7.min.css" />
		<![endif]-->
		<link rel="stylesheet" href="${pageContext.request.contextPath }/mutualResource/assets/css/ace.min.css" />
		<link rel="stylesheet" href="${pageContext.request.contextPath }/mutualResource/assets/css/ace-rtl.min.css" />
		<link rel="stylesheet" href="${pageContext.request.contextPath }/mutualResource/assets/css/ace-skins.min.css" />
        <link rel="stylesheet" href="${pageContext.request.contextPath }/mutualResource/css/style.css"/>
		<!--[if lte IE 8]>
		  <link rel="stylesheet" href="${pageContext.request.contextPath }/mutualResource/assets/css/ace-ie.min.css" />
		<![endif]-->
		<script src="${pageContext.request.contextPath }/mutualResource/assets/js/ace-extra.min.js"></script>
		<!--[if lt IE 9]>
		<script src="${pageContext.request.contextPath }/mutualResource/assets/js/html5shiv.js"></script>
		<script src="${pageContext.request.contextPath }/mutualResource/assets/js/respond.min.js"></script>
		<![endif]-->
        <!--[if !IE]> -->
		<script src="${pageContext.request.contextPath }/mutualResource/js/jquery-1.9.1.min.js"></script>        
		<!-- <![endif]-->
		<!--[if IE]>
         <script type="text/javascript">window.jQuery || document.write("<script src='${pageContext.request.contextPath }/mutualResource/assets/js/jquery-1.10.2.min.js'>"+"<"+"script>");</script>
        <![endif]-->
		<script type="text/javascript">
			if("ontouchend" in document) document.write("<script src='${pageContext.request.contextPath }/mutualResource/assets/js/jquery.mobile.custom.min.js'>"+"<"+"script>");
		</script>
		<script src="${pageContext.request.contextPath }/mutualResource/assets/js/bootstrap.min.js"></script>
		<script src="${pageContext.request.contextPath }/mutualResource/assets/js/typeahead-bs2.min.js"></script>
		<!--[if lte IE 8]>
		  <script src="${pageContext.request.contextPath }/mutualResource/assets/js/excanvas.min.js"></script>
		<![endif]-->
		<script src="${pageContext.request.contextPath }/mutualResource/assets/js/ace-elements.min.js"></script>
		<script src="${pageContext.request.contextPath }/mutualResource/assets/js/ace.min.js"></script>
        <script src="${pageContext.request.contextPath }/mutualResource/assets/layer/layer.js" type="text/javascript"></script>
		<script src="${pageContext.request.contextPath }/mutualResource/assets/laydate/laydate.js" type="text/javascript"></script>
        
        
<script type="text/javascript">





</script>
<script type="text/javascript">	
 $(function(){
    
     
 var cid = $('#nav_list> li>.submenu');
	  cid.each(function(i){
    
     
       $(this).attr('id',"Sort_link_"+i);
   
    })  
 })
 jQuery(document).ready(function(){
    
     	
    $.each($(".submenu"),function(){
    
    
	var $aobjs=$(this).children("li");
	var rowCount=$aobjs.size();
	var divHeigth=$(this).height();
    $aobjs.height(divHeigth/rowCount);	  	
  }); 
    //初始化宽度、高度    
    $("#main-container").height($(window).height()-76); 
	$("#iframe").height($(window).height()-140); 
	 
	$(".sidebar").height($(window).height()-99); 
    var thisHeight = $("#nav_list").height($(window).outerHeight()-173); 
	$(".submenu").height();
	$("#nav_list").children(".submenu").css("height",thisHeight);
	
    //当文档窗口发生改变时 触发  
    $(window).resize(function(){
    
    
	$("#main-container").height($(window).height()-76); 
	$("#iframe").height($(window).height()-140);
	$(".sidebar").height($(window).height()-99); 
	
	var thisHeight = $("#nav_list").height($(window).outerHeight()-173); 
	$(".submenu").height();
	$("#nav_list").children(".submenu").css("height",thisHeight);
  });
    $(".iframeurl").click(function(){
    
    
                var cid = $(this).attr("name");
				var cname = $(this).attr("title");
                $("#iframe").attr("src",cid).ready();
				$("#Bcrumbs").attr("href",cid).ready();
				$(".Current_page a").attr('href',cid).ready();	
                $(".Current_page").attr('name',cid);
				$(".Current_page").html(cname).css({
    
    "color":"#333333","cursor":"default"}).ready();	
				$("#parentIframe").html('<span class="parentIframe iframeurl"> </span>').css("display","none").ready();	
				$("#parentIfour").html(''). css("display","none").ready();		
      });
    
		
});
 

/*********************点击事件*********************/
$( document).ready(function(){
    
    
  $('#nav_list').find('li.home').click(function(){
    
    
	$('#nav_list').find('li.home').removeClass('active');
	$(this).addClass('active');
  });	
												

//时间设置
  function currentTime(){
    
     
    var d=new Date(),str=''; 
    str+=d.getFullYear()+'年'; 
    str+=d.getMonth() + 1+'月'; 
    str+=d.getDate()+'日'; 
    str+=d.getHours()+'时'; 
    str+=d.getMinutes()+'分'; 
    str+= d.getSeconds()+'秒'; 
    return str; 
} 
setInterval(function(){
    
    $('#time').html(currentTime)},1000); 

//设置消息
setInterval(function(){
    
    
	
	 $.ajax({
    
      
         url: '${
    
    pageContext.request.contextPath }/message/MessageServlet?m=newMessage&user=client' ,  
         type: 'GET',  
         dataType:'json', 
         success: function (data) {
    
     
       	  
       	  if(data.isSuccess){
    
    
       		  
       		  if(data.dataList[0]==0){
    
    
       			  
       			$('#newMessage').attr("style","color:green");
       			
       		  }else{
    
    
       			  
       			$('#newMessage').attr("style","color:red");
       			
       		  }
       		$('#newMessage').html("<i class=\"icon-bell-alt\"></i>[" + data.dataList[0] + "]");
       		
       		  
       	  }else{
    
    
       		 console.log(data.msg);
       	  }
         } 
    }); 
	
	},3000);


  $('#Exit_system').on('click', function(){
    
    
      layer.confirm('是否确定退出系统?', 
	function(){
    
    
	  location.href="${pageContext.request.contextPath}/client/ClientLoginServlet?m=logOutClient";
        
    });
});
})
</script>	
	</head>
	<body>
		<div class="navbar navbar-default" id="navbar" style="background-image: url(${pageContext.request.contextPath }/mutualResource/myImg/background.png);background-size:cover;background-color: #eff5f8;">
        <script type="text/javascript">
				try{
    
    ace.settings.check('navbar' , 'fixed')}catch(e){
    
    }
			</script>
			<div class="navbar-container" id="navbar-container">
			
			<c:if test="${not empty LOGIN_CLIENT}">
			<div class="navbar-header pull-left">
					
						<small>					
						<img src="${pageContext.request.contextPath }/mutualResource/myImg/clientTop.png" height="65px">
						</small>
					
				</div><!-- /.navbar-header -->
			   <div class="navbar-header pull-right" role="navigation">
               <ul class="nav ace-nav">	
                <li class="light-blue">
							<a data-toggle="dropdown" href="#" class="dropdown-toggle">
								<span  class="time"><em id="time"></em></span><span class="user-info"><small>欢迎光临,</small>${
    
    LOGIN_CLIENT.name }	</span>
							</a>
								<li><a href="javascript:void(0)" id="Exit_system" class="write" ><b>退出</b></a></li>
							</ul>
                </div>
			
			</c:if>
			<c:if test="${empty LOGIN_CLIENT }">
			<div class="navbar-header pull-right" role="navigation">
               <ul class="nav ace-nav">	
                <li class="light-blue">
					<a  href="${pageContext.request.contextPath }/client/ClientLoginServlet">
						请登录
					</a>	
				</li>	
			   </ul>

            </div>
			
			</c:if>
			
				
			</div>
		</div>
		<div class="main-container" id="main-container">
        <script type="text/javascript">
				try{
    
    ace.settings.check('main-container' , 'fixed')}catch(e){
    
    }
			</script>
			<div class="main-container-inner">
				<a class="menu-toggler" id="menu-toggler" href="#">
					<span class="menu-text"></span>
				</a>
				<div class="sidebar" id="sidebar">
<script type="text/javascript">
						try{
    
    ace.settings.check('sidebar' , 'fixed')}catch(e){
    
    }
					</script>
					<div class="sidebar-shortcuts" id="sidebar-shortcuts">
                     <div class="sidebar-shortcuts-large" id="sidebar-shortcuts-large">
						来访者  
						</div>
						<div class="sidebar-shortcuts-mini" id="sidebar-shortcuts-mini">
							<span class="btn btn-success"></span>
							<span class="btn btn-info"></span>
							<span class="btn btn-warning"></span>
							<span class="btn btn-danger"></span>
						</div>
					</div>
					
					<!-- #sidebar-shortcuts -->
				<ul class="nav nav-list" id="nav_list">
					<li class="home"><a href="javascript:void(0)" name="${pageContext.request.contextPath }/client/base?m=clientIndex"
						class="iframeurl" title=""><i class="icon-dashboard"></i><span
							class="menu-text"> 首页 </span></a></li>
					
					

				<li>
					<a href="" class="dropdown-toggle"><i
							class="icon-edit"></i><span class="menu-text"> 预约 </span><b
							class="arrow icon-angle-down"></b></a>
						<ul class="submenu">
							<li class="home"><a href="javascript:void(0)"
								name="${pageContext.request.contextPath }/client/ClientSubServlet?m=subDoctorList" title="可预约咨询师" class="iframeurl"><i
									class="icon-double-angle-right"></i>可预约咨询师</a></li>
							<li class="home"><a href="javascript:void(0)"
								name="${pageContext.request.contextPath }/client/ClientSubServlet?m=subClientList" title="我的预约" class="iframeurl"><i
									class="icon-double-angle-right"></i>我的预约</a></li>
						</ul>
					</li>
					
					<li class="home"><a href="javascript:void(0)" name="${pageContext.request.contextPath }/client/ClientSubServlet?m=clientConsult"
						class="iframeurl" title=""><i class="icon-dashboard"></i><span
							class="menu-text"> 我的咨询 </span></a></li>

					<li>
					<a href="#" class="dropdown-toggle"><i
							class="icon-edit"></i><span class="menu-text" id="newMessge"> 消息 </span>
							<span id="newMessage" style="color:red"></span>
							<b
							class="arrow icon-angle-down"></b></a>
						<ul class="submenu">
							<li class="home"><a href="javascript:void(0)"
								name="${pageContext.request.contextPath }/message/MessageServlet?m=listReceivMessage&reqeustUser" title="消息查看" class="iframeurl"><i
									class="icon-double-angle-right"></i>收信箱</a></li>
							<li class="home"><a href="javascript:void(0)"
								name="${pageContext.request.contextPath }/message/MessageServlet?m=listSendMessage&reqeustUser" title="发送消息" class="iframeurl"><i
									class="icon-double-angle-right"></i>发信箱</a></li>
						</ul>
					</li>
					
						
						
						<li><a href="javascript:void(0)" name="${pageContext.request.contextPath }/board/MessageBoardServlet?m=listMessageBoard"  title="留言" 
						class="iframeurl"><i class="icon-edit"></i><span
							class="menu-text"> 留言 </span></a></li>
						
						<li><a href="javascript:void(0)" name="${pageContext.request.contextPath }/announcment/AnnouncmentServlet?m=listAnnouncment"  title="公告" 
						class="iframeurl"><i class="icon-edit"></i><span
							class="menu-text"> 公告 </span></a></li>
						
						

					<li><a href="javascript:void(0)"
						name="${pageContext.request.contextPath }/client/base?m=clientInfo" title="个人信息"
						class="iframeurl"><i class="icon-group"></i><span
							class="menu-text"> 个人信息 </span></a></li>
				</ul>
				
				
				<div class="sidebar-collapse" id="sidebar-collapse">
						<i class="icon-double-angle-left" data-icon1="icon-double-angle-left" data-icon2="icon-double-angle-right"></i>
					</div>
                    <script type="text/javascript">
						try{
    
    ace.settings.check('sidebar' , 'collapsed')}catch(e){
    
    }
					</script>
				</div>
				<div class="main-content">
                <script type="text/javascript">
							try{
    
    ace.settings.check('breadcrumbs' , 'fixed')}catch(e){
    
    }
						</script>
					<div class="breadcrumbs" id="breadcrumbs">
						<ul class="breadcrumb">
							<li>
								<i class="icon-home home-icon"></i>
								<a href="${pageContext.request.contextPath }/client/base?m=clientIndex">首页</a>
							</li>
							<li class="active"><span class="Current_page iframeurl"></span></li>
                            <li class="active" id="parentIframe"><span class="parentIframe iframeurl"></span></li>
							<li class="active" id="parentIfour"><span class="parentIfour iframeurl"></span></li>
						</ul>
					</div>
                    
                 <iframe id="iframe" style="border:0; width:100%; background-color:#FFF;"name="iframe" frameborder="0" src="${pageContext.request.contextPath }/client/base?m=clientIndex">  </iframe>
				 

<!-- /.page-content -->
				</div><!-- /.main-content -->	
                
                  <div class="ace-settings-container" id="ace-settings-container">
                      <div class="btn btn-app btn-xs btn-warning ace-settings-btn" id="ace-settings-btn">
                          <i class="icon-cog bigger-150"></i>
                      </div>
  
                      <div class="ace-settings-box" id="ace-settings-box">
                          <div>
                              <div class="pull-left">
                                  <select id="skin-colorpicker" class="hide">
                                      <option data-skin="default" value="#438EB9">#438EB9</option>
                                      <option data-skin="skin-1" value="#222A2D">#222A2D</option>
                                      <option data-skin="skin-2" value="#C6487E">#C6487E</option>
                                      <option data-skin="skin-3" value="#D0D0D0">#D0D0D0</option>
                                  </select>
                              </div>
                              <span>&nbsp; 选择皮肤</span>
                          </div>
  
                          <div>
                              <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-sidebar" />
                              <label class="lbl" for="ace-settings-sidebar"> 固定滑动条</label>
                          </div>
  
                          <div>
                              <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-rtl" />
                              <label class="lbl" for="ace-settings-rtl">切换到左边</label>
                          </div>
  
                          <div>
                              <input type="checkbox" class="ace ace-checkbox-2" id="ace-settings-add-container" />
                              <label class="lbl" for="ace-settings-add-container">
                                  切换窄屏
                                  <b></b>
                              </label>
                          </div>
                      </div>
                  </div><!-- /#ace-settings-container -->		
	</div><!-- /.main-container-inner -->
			
		</div>
         <!--底部样式-->
       
         <div class="footer_style" id="footerstyle">  
          <p class="l_f">联系管理员:renshen052@126.com</p>
         </div>
		
</body>
</html>


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
资源下载地址:https://download.csdn.net/download/sheziqiong/87941680
资源下载地址:https://download.csdn.net/download/sheziqiong/87941680

猜你喜欢

转载自blog.csdn.net/newlw/article/details/131350774