共计 11069 个字符,预计需要花费 28 分钟才能阅读完成。
博主介绍:✌退职 Java 研发工程师、专一于程序设计、源码分享、技术交换、专一于 Java 技术畛域和毕业设计✌
项目名称
基于 Java 的心理服务平台的设计与实现
下载地址
https://ym.maptoface.com/archives/58914
视频演示
基于 Java 的心理服务平台的设计与实_哔哩哔哩_bilibili
零碎介绍
摘 要
随同着网络技术的高速倒退,各行各业都须要依赖数字信息化零碎来进行业务解决,让业务办理更加不便,这其中心理咨询服务行业也不例外。通过一套心理服务平台零碎来在线理解大学生心理健康状况,不便学生用户群体在线进行心理问题征询,及时解决心理累赘是十分有必要的。目前大多数医院的在线服务零碎,很少有针对心理服务征询发展工作的,少数还是以简略的挂号为主,这对有心理咨询需要的用户来说十分的不不便。一个是对心理健康问题不器重,另外也对心理健康问题难以启齿。心理服务平台就是为了解决大学生心理健康问题所提出来的,为每一位用户起到开释压力,给心田“放一个假”的作用。
零碎采纳 Java 开发语言进行开发,应用 SSM 框架以及 MySQL 关系型数据库作为根本架构进行开发,遵循 MVC 体系架构和软件工程的思维,通过需要剖析,整体设计,具体设计,编码和测试来保障系统高质量的实现。零碎次要蕴含前台用户模块、后盾治理模块、心理测试、心理文章、专家领导、心理导师、在线交换、对于咱们、用户治理、系统管理等性能。通过零碎为宽广学生解决了心理问题征询难、心理咨询渠道少的问题,为进步学生们的心理素质以及放弃衰弱的人生观、价值观作了肯定奉献。
关键词:心理服务;管理系统;Java;SSM;MySQL
2.2 性能需要
管理员次要功能模块:管理员能够对测试题目进行增删改查、模块治理、帖子治理审核治理、频道文章治理、公布文章、频道治理、增加新闻,还能够对学生、老师、管理员进行对立治理以及对网站的根本零碎进行设置。
老师功能模块:老师能够应用前台的所有性能,还能够公布文章、对文章进行治理、在线领导以及提供账户治理等性能。
学生功能模块:学生模块前台能够进行登录注册、心理测试、心理文章的浏览、浏览专家领导倡议、预约信息导师进行交换并且还能够在线征询心理老师进行心理咨询。
2.3 用例模块剖析
零碎分为了学生、老师、管理员三种角色,学生用户次要的性能包含登录注册、首页模块、心理测试、心理文章、专家领导、心理导师、在线交换、对于咱们浏览、个人信息保护等性能。
图 2-1 学生模块用例图
老师的次要性能包含学生用户的所有性能以及文章的公布、心理领导文章的治理、在线领导以及个人账户信息的保护。
图 2 -2 老师模块用例图
管理员是基于 Java 的心理服务平台的重要角色之一。管理员能够对平台进行治理和保护,包含用户信息管理、心理咨询师资质审核、心理测评题库治理等。管理员还负责保护平台的安全性和稳定性,监控平台运行状况,及时处理零碎异样和故障。平台设计了欠缺的权限管制机制,确保管理员只能拜访其具备权限的性能,保障用户信息的安全性。
图 2 -3 管理员用例图
第 3 章 总体设计
3.1 零碎总成设计
依据需要剖析最初设计出零碎的整体性能架构,将大学生心理服务平台的次要功能模块大抵分为三个局部:学生、老师和管理员。
学生用户次要是对系统的前台性能进行应用,次要模块分为了学生注册、学生登录、浏览文章、评论文章、心理测试、我的测试、征询专家、我的征询、我的发言、论坛交换、我的珍藏、评论文章、搜寻文章、会员中心、账号保护等功能模块。
老师用户是基于 Java 的心理服务平台的一类用户。老师用户能够通过平台进行在线心理咨询和心理测评,获取业余的心理反对和帮忙。平台提供了多种心理测评工具和征询形式,老师用户能够依据本身需要抉择适合的服务。平台的心理咨询师团队由业余心理学家和咨询师组成,保障老师用户的隐衷和信息安全。
管理员用户在基于 Java 的心理服务平台中扮演着非凡角色,持有对整个零碎的管理权限和保护权。他们领有审查心理咨询师资格的势力,具备治理用户信息的能力,以及放弃零碎稳固运行的职责。除此之外,他们还负责解决各类用户的投诉以及突发的异常情况,确保平台信息的安全性。为了更无效地执行这些职责,管理员用户须要领有业余的心理学常识和技能。
平台使用了紧密的权限管制机制,以确保管理员用户只能拜访到他们被受权的性能,从而极大地提高了用户信息的安全性。这种权限管制的严格性是为了避免信息泄露,保障用户数据的私密性和安全性,同时也保护了平台的信用和用户的信任度。
图 3 -3 管理员功能模块图
编辑
编辑
编辑
编辑
编辑
编辑
技术栈
- 后端:Spring+SpringMVC+Mybatis
- 前端:JSP+CSS+JavaScript+jQuery
应用阐明
- 应用 Navicat 或者其它工具,在 mysql 中创立对应名称的数据库,并导入我的项目的 sql 文件;
- 应用 IDEA/Eclipse/MyEclipse 导入我的项目,Eclipse/MyEclipse 导入时,若为 maven 我的项目请抉择 maven;
若为 maven 我的项目,导入胜利后请执行 maven clean;maven install 命令,而后运行; - 将我的项目中 springmvc-servlet.xml 配置文件中的数据库配置改为本人的配置;
- 运行我的项目,在浏览器中输出 http://localhost:8080/ 登录
运行截图
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
编辑
用户管理控制层:
package com.houserss.controller;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.houserss.common.Const;
import com.houserss.common.Const.Role;
import com.houserss.common.ServerResponse;
import com.houserss.pojo.User;
import com.houserss.service.IUserService;
import com.houserss.service.impl.UserServiceImpl;
import com.houserss.util.MD5Util;
import com.houserss.util.TimeUtils;
import com.houserss.vo.DeleteHouseVo;
import com.houserss.vo.PageInfoVo;
/**
- Created by admin
*/
@Controller
@RequestMapping(“/user/”)
public class UserController {
@Autowired
private IUserService iUserService;
/**
* 用户登录
* @param username
* @param password
* @param session
* @return
*/
@RequestMapping(value = "login.do",method = RequestMethod.POST)
@ResponseBody
public ServerResponse<User> login(User user,String uvcode, HttpSession session){String code = (String)session.getAttribute("validationCode");
if(StringUtils.isNotBlank(code)) {if(!code.equalsIgnoreCase(uvcode)) {return ServerResponse.createByErrorMessage("验证码不正确");
}
}
ServerResponse<User> response = iUserService.login(user.getUsername(),user.getPassword());
if(response.isSuccess()){session.setAttribute(Const.CURRENT_USER,response.getData());
}
return response;
}
}
管理员管理控制层:
package com.sxl.controller.admin;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.sxl.controller.MyController;
@Controller(“adminController”)
@RequestMapping(value = “/admin”)
public class AdminController extends MyController {
@RequestMapping(value = "/index")
public String frame(Model model, HttpServletRequest request)throws Exception {return "/admin/index";}
@RequestMapping(value = "/main")
public String main(Model model, HttpServletRequest request)throws Exception {return "/admin/main";}
@RequestMapping(value = "/tj1")
public String tj1(Model model, HttpServletRequest request)throws Exception {String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";
List<Map> list = db.queryForList(sql);
model.addAttribute("list", list);
System.out.println(list);
return "/admin/tj/tj1";
}
@RequestMapping(value = "/password")
public String password(Model model, HttpServletRequest request)throws Exception {return "/admin/password";}
@RequestMapping(value = "/changePassword")
public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {Map admin = getAdmin(request);
if(oldPassword.equals(admin.get("password").toString())){
String sql="update t_admin set password=? where id=?";
db.update(sql, new Object[]{newPassword,admin.get("id")});
return renderData(true,"1",null);
}else{return renderData(false,"1",null);
}
}
}
批改明码业务逻辑:
package com.sxl.controller.admin;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.sxl.controller.MyController;
@Controller(“userController”)
@RequestMapping(value = “/user”)
public class UserController extends MyController {
@RequestMapping(value = "/index")
public String frame(Model model, HttpServletRequest request)throws Exception {return "/user/index";}
@RequestMapping(value = "/main")
public String main(Model model, HttpServletRequest request)throws Exception {return "/user/main";}
@RequestMapping(value = "/password")
public String password(Model model, HttpServletRequest request)throws Exception {return "/user/password";}
@RequestMapping(value = "/changePassword")
public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {Map user = getUser(request);
if(oldPassword.equals(user.get("password").toString())){
String sql="update t_user set password=? where id=?";
db.update(sql, new Object[]{newPassword,user.get("id")});
return renderData(true,"1",null);
}else{return renderData(false,"1",null);
}
}
@RequestMapping(value = "/mine")
public String mine(Model model, HttpServletRequest request)throws Exception {
Map user =getUser(request);Map map = db.queryForMap(“select * from t_user where id=?”,new Object[]{user.get(“id”)});model.addAttribute(“map”, map); return “/user/mine”;
}
@RequestMapping(value = "/mineSave")
public ResponseEntity<String> mineSave(Model model,HttpServletRequest request,Long id
,String username,String password,String name,String gh,String mobile) throws Exception{
int result = 0;
String sql="update t_user set name=?,gh=?,mobile=? where id=?";
result = db.update(sql, new Object[]{name,gh,mobile,id});
if(result==1){return renderData(true,"操作胜利",null);
}else{return renderData(false,"操作失败",null);
}
}
}
通用治理模块:
package com.sxl.controller;
import java.nio.charset.Charset;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import com.sxl.util.JacksonJsonUtil;
import com.sxl.util.StringUtil;
import com.sxl.util.SystemProperties;
public class BaseController {
public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1 天
@Autowired
private SystemProperties systemProperties;
/**
* 取得配置文件内容
*/
public String getConfig(String key) {return systemProperties.getProperties(key);
}
/**
* 返回服务器地址 like http://192.168.1.1:8441/UUBean/
*/
public String getHostUrl(HttpServletRequest request) {String hostName = request.getServerName();
Integer hostPort = request.getServerPort();
String path = request.getContextPath();
if (hostPort == 80) {return "http://" + hostName + path + "/";} else {return "http://" + hostName + ":" + hostPort + path + "/";}
}
/***
* 获取以后的 website 门路 String
*/
public static String getWebSite(HttpServletRequest request) {String returnUrl = request.getScheme() + "://"
+ request.getServerName();
if (request.getServerPort() != 80) {returnUrl += ":" + request.getServerPort();
}
returnUrl += request.getContextPath();
return returnUrl;
}
/**
* 初始化 HTTP 头.
*
* @return HttpHeaders
*/
public HttpHeaders initHttpHeaders() {HttpHeaders headers = new HttpHeaders();
MediaType mediaType = new MediaType("text", "html",
Charset.forName("utf-8"));
headers.setContentType(mediaType);
return headers;
}
/**
* 返回 信息数据
*
* @param status
* @param msg
* @return
*/
public ResponseEntity<String> renderMsg(Boolean status, String msg) {if (StringUtils.isEmpty(msg)) {msg = "";}
String str = "{\"status\":\"" + status + "\",\"msg\":\""+ msg +"\"}";
ResponseEntity<String> responseEntity = new ResponseEntity<String>(str,
initHttpHeaders(), HttpStatus.OK);
return responseEntity;
}
/**
* 返回 obj 数据
*
* @param status
* @param msg
* @param obj
* @return
*/
public ResponseEntity<String> renderData(Boolean status, String msg,
Object obj) {if (StringUtils.isEmpty(msg)) {msg = "";}
StringBuffer sb = new StringBuffer();
sb.append("{");
sb.append("\"status\":\"" + status + "\",\"msg\":\""+ msg +"\",");
sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");
sb.append("}");
ResponseEntity<String> responseEntity = new ResponseEntity<String>(sb.toString(), initHttpHeaders(), HttpStatus.OK);
return responseEntity;
}
/***
* 获取 IP(如果是多级代理,则失去的是一串 IP 值)*/
public static String getIpAddr(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();
}
if (ip != null && ip.length() > 0) {String[] ips = ip.split(",");
for (int i = 0; i < ips.length; i++) {if (!"unknown".equalsIgnoreCase(ips[i])) {ip = ips[i];
break;
}
}
}
return ip;
}
/**
* 国际化取得语言内容
*
* @param key
* 语言 key
* @param args
* @param argsSplit
* @param defaultMessage
* @param locale
* @return
*/
public static String getLanguage(String key, String args, String argsSplit,
String defaultMessage, String locale) {
String language = "zh";
String contry = "cn";
String returnValue = defaultMessage;
if (!StringUtil.isEmpty(locale)) {
try {String[] localeArray = locale.split("_");
language = localeArray[0];
contry = localeArray[1];
} catch (Exception e) {}}
try {
ResourceBundle resource = ResourceBundle.getBundle("lang.resource",
new Locale(language, contry));
returnValue = resource.getString(key);
if (!StringUtil.isEmpty(args)) {String[] argsArray = args.split(argsSplit);
for (int i = 0; i < argsArray.length; i++) {returnValue = returnValue.replace("{" + i + "}",
argsArray[i]);
}
}
} catch (Exception e) { }
return returnValue;
}
}