资源下载地址:https://download.csdn.net/download/sheziqiong/87941680
资源下载地址:https://download.csdn.net/download/sheziqiong/87941680
心理咨询预约管理系统
个人毕业设计用的一个玩具项目,无框架。
MVC 模式,普通 Servlet 控制器,JSP 视图,前台 Bootstrap
工具版本:mysql5.7,JDK1.8,Tomcat8.5
主要功能模块
分为三个端:管理员、来访者(需要预约的人),咨询师
管理员端
-
首页
系统近况(咨询师和注册来访者数量,预约数量)
显示最新的消息、留言和公告(最新十条) -
主要功能
咨询师管理(添加、修改、删除,账号激活停用)
来访者管理(账号激活停用)
预约问卷管理(添加、修改、删除)
-
公共和个人信息模块
消息、公告和留言管理(发送接受消息,发布公告,控制留言显示和隐藏)
个人信息管理(修改基本信息和密码)
咨询师端
-
首页
显示最新的消息、留言和公告(最新十条) -
主要功能
查看预约详情,安排咨询申请(安排咨询时间或驳回)
咨询完毕建立咨询档案
查看所有咨询历史
-
公共和个人信息模块
消息、公告和留言管理(发送接受消息,查看公告,留言)
个人信息管理(修改基本信息和密码)
来访者端
-
首页
显示最新的消息、留言和公告(最新十条) -
主要功能
发起预约申请,等待安排
在我的及时了解预约状态(待安排、准备咨询、被取消)
查看所有咨询历史
-
公共和个人信息模块
消息、公告和留言管理(发送接受消息,查看公告,留言)
个人信息管理(修改基本信息和密码)
预约状态变动时邮件和站内消息通知来访者
其他
来访者注册
管理员、咨询师和来访者登录
预约流程
- 来访者申请预约
来访者向某位咨询师申请预约,并填写预约申请表(期望时间地点和评估问卷)
- 咨询师安排咨询
处理咨询申请,通过申请安排咨询,取消咨询 - 咨询档案
咨询完成,咨询师上传咨询档案;每次咨询都会记录(可在我的咨询中查看) - 来访者评价
咨询完成,来访者对本次咨询进行评价
项目工程文件
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> 选择皮肤</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