项目名称
SSM框架个人健康服务预约系统设计和实现源码

视频效果
SSM框架个人健康服务预约系统设计和实现源码

系统说明

(1)医生功能需求

医生登录平台主要功能是个人信息的修改、首页的查看、出诊信息查看、预约挂号的查看、评价等等操作。医生用例图如图2-1所示。

​编辑

图2-1医生用例图

(2)管理员功能需求

管理员登录平台主要功能是首页内容的管理、个人信息维护、用户和医生信息管理、科室信息维护、出诊信息查看和维护、预约时间和挂号管理、就诊、留言板等等系统管理。管理员用例图如图2-2所示。

​编辑

图2-2 管理员用例图

(3)用户功能需求

用户主要是预约挂号,选择自己要挂的科室和医生,对历史挂号信息可以进行查看和取消,已经就诊过的号可以进行评价等等操作。用户用例图如图2-3所示。

​编辑

环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:否;

技术栈

后端: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 {

  1. @Autowired
  2. private IUserService iUserService;
  3. /**
  4. * 用户登录
  5. * @param username
  6. * @param password
  7. * @param session
  8. * @return
  9. */
  10. @RequestMapping(value = "login.do",method = RequestMethod.POST)
  11. @ResponseBody
  12. public ServerResponse<User> login(User user,String uvcode, HttpSession session){
  13. String code = (String)session.getAttribute("validationCode");
  14. if(StringUtils.isNotBlank(code)) {
  15. if(!code.equalsIgnoreCase(uvcode)) {
  16. return ServerResponse.createByErrorMessage("验证码不正确");
  17. }
  18. }
  19. ServerResponse<User> response = iUserService.login(user.getUsername(),user.getPassword());
  20. if(response.isSuccess()){
  21. session.setAttribute(Const.CURRENT_USER,response.getData());
  22. }
  23. return response;
  24. }

}

管理员管理控制层:

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 {

  1. @RequestMapping(value = "/index")
  2. public String frame(Model model, HttpServletRequest request)throws Exception {
  3. return "/admin/index";
  4. }
  5. @RequestMapping(value = "/main")
  6. public String main(Model model, HttpServletRequest request)throws Exception {
  7. return "/admin/main";
  8. }
  9. @RequestMapping(value = "/tj1")
  10. public String tj1(Model model, HttpServletRequest request)throws Exception {
  11. 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";
  12. List<Map> list = db.queryForList(sql);
  13. model.addAttribute("list", list);
  14. System.out.println(list);
  15. return "/admin/tj/tj1";
  16. }
  17. @RequestMapping(value = "/password")
  18. public String password(Model model, HttpServletRequest request)throws Exception {
  19. return "/admin/password";
  20. }
  21. @RequestMapping(value = "/changePassword")
  22. public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {
  23. Map admin = getAdmin(request);
  24. if(oldPassword.equals(admin.get("password").toString())){
  25. String sql="update t_admin set password=? where id=?";
  26. db.update(sql, new Object[]{newPassword,admin.get("id")});
  27. return renderData(true,"1",null);
  28. }else{
  29. return renderData(false,"1",null);
  30. }
  31. }

}

修改密码业务逻辑:

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 {

  1. @RequestMapping(value = "/index")
  2. public String frame(Model model, HttpServletRequest request)throws Exception {
  3. return "/user/index";
  4. }
  5. @RequestMapping(value = "/main")
  6. public String main(Model model, HttpServletRequest request)throws Exception {
  7. return "/user/main";
  8. }
  9. @RequestMapping(value = "/password")
  10. public String password(Model model, HttpServletRequest request)throws Exception {
  11. return "/user/password";
  12. }
  13. @RequestMapping(value = "/changePassword")
  14. public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {
  15. Map user = getUser(request);
  16. if(oldPassword.equals(user.get("password").toString())){
  17. String sql="update t_user set password=? where id=?";
  18. db.update(sql, new Object[]{newPassword,user.get("id")});
  19. return renderData(true,"1",null);
  20. }else{
  21. return renderData(false,"1",null);
  22. }
  23. }
  24. @RequestMapping(value = "/mine")
  25. 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”;

  1. }
  2. @RequestMapping(value = "/mineSave")
  3. public ResponseEntity<String> mineSave(Model model,HttpServletRequest request,Long id
  4. ,String username,String password,String name,String gh,String mobile) throws Exception{
  5. int result = 0;
  6. String sql="update t_user set name=?,gh=?,mobile=? where id=?";
  7. result = db.update(sql, new Object[]{name,gh,mobile,id});
  8. if(result==1){
  9. return renderData(true,"操作成功",null);
  10. }else{
  11. return renderData(false,"操作失败",null);
  12. }
  13. }
  14. }

通用管理模块:
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 {

  1. public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天
  2. @Autowired
  3. private SystemProperties systemProperties;
  4. /**
  5. * 获得配置文件内容
  6. */
  7. public String getConfig(String key) {
  8. return systemProperties.getProperties(key);
  9. }
  10. /**
  11. * 返回服务器地址 like http://192.168.1.1:8441/UUBean/
  12. */
  13. public String getHostUrl(HttpServletRequest request) {
  14. String hostName = request.getServerName();
  15. Integer hostPort = request.getServerPort();
  16. String path = request.getContextPath();
  17. if (hostPort == 80) {
  18. return "http://" + hostName + path + "/";
  19. } else {
  20. return "http://" + hostName + ":" + hostPort + path + "/";
  21. }
  22. }
  23. /***
  24. * 获取当前的website路径 String
  25. */
  26. public static String getWebSite(HttpServletRequest request) {
  27. String returnUrl = request.getScheme() + "://"
  28. + request.getServerName();
  29. if (request.getServerPort() != 80) {
  30. returnUrl += ":" + request.getServerPort();
  31. }
  32. returnUrl += request.getContextPath();
  33. return returnUrl;
  34. }
  35. /**
  36. * 初始化HTTP头.
  37. *
  38. * @return HttpHeaders
  39. */
  40. public HttpHeaders initHttpHeaders() {
  41. HttpHeaders headers = new HttpHeaders();
  42. MediaType mediaType = new MediaType("text", "html",
  43. Charset.forName("utf-8"));
  44. headers.setContentType(mediaType);
  45. return headers;
  46. }
  47. /**
  48. * 返回 信息数据
  49. *
  50. * @param status
  51. * @param msg
  52. * @return
  53. */
  54. public ResponseEntity<String> renderMsg(Boolean status, String msg) {
  55. if (StringUtils.isEmpty(msg)) {
  56. msg = "";
  57. }
  58. String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";
  59. ResponseEntity<String> responseEntity = new ResponseEntity<String>(str,
  60. initHttpHeaders(), HttpStatus.OK);
  61. return responseEntity;
  62. }
  63. /**
  64. * 返回obj数据
  65. *
  66. * @param status
  67. * @param msg
  68. * @param obj
  69. * @return
  70. */
  71. public ResponseEntity<String> renderData(Boolean status, String msg,
  72. Object obj) {
  73. if (StringUtils.isEmpty(msg)) {
  74. msg = "";
  75. }
  76. StringBuffer sb = new StringBuffer();
  77. sb.append("{");
  78. sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");
  79. sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");
  80. sb.append("}");
  81. ResponseEntity<String> responseEntity = new ResponseEntity<String>(
  82. sb.toString(), initHttpHeaders(), HttpStatus.OK);
  83. return responseEntity;
  84. }
  85. /***
  86. * 获取IP(如果是多级代理,则得到的是一串IP值)
  87. */
  88. public static String getIpAddr(HttpServletRequest request) {
  89. String ip = request.getHeader("x-forwarded-for");
  90. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  91. ip = request.getHeader("Proxy-Client-IP");
  92. }
  93. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  94. ip = request.getHeader("WL-Proxy-Client-IP");
  95. }
  96. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  97. ip = request.getRemoteAddr();
  98. }
  99. if (ip != null && ip.length() > 0) {
  100. String[] ips = ip.split(",");
  101. for (int i = 0; i < ips.length; i++) {
  102. if (!"unknown".equalsIgnoreCase(ips[i])) {
  103. ip = ips[i];
  104. break;
  105. }
  106. }
  107. }
  108. return ip;
  109. }
  110. /**
  111. * 国际化获得语言内容
  112. *
  113. * @param key
  114. * 语言key
  115. * @param args
  116. * @param argsSplit
  117. * @param defaultMessage
  118. * @param locale
  119. * @return
  120. */
  121. public static String getLanguage(String key, String args, String argsSplit,
  122. String defaultMessage, String locale) {
  123. String language = "zh";
  124. String contry = "cn";
  125. String returnValue = defaultMessage;
  126. if (!StringUtil.isEmpty(locale)) {
  127. try {
  128. String[] localeArray = locale.split("_");
  129. language = localeArray[0];
  130. contry = localeArray[1];
  131. } catch (Exception e) {
  132. }
  133. }
  134. try {
  135. ResourceBundle resource = ResourceBundle.getBundle("lang.resource",
  136. new Locale(language, contry));
  137. returnValue = resource.getString(key);
  138. if (!StringUtil.isEmpty(args)) {
  139. String[] argsArray = args.split(argsSplit);
  140. for (int i = 0; i < argsArray.length; i++) {
  141. returnValue = returnValue.replace("{" + i + "}",
  142. argsArray[i]);
  143. }
  144. }
  145. } catch (Exception e) {
  146. }
  147. return returnValue;
  148. }

更多相关文章

  1. Android官方教程翻译(1)——创建第一个Android应用
  2. android 导入第三方库出现java.lang.NoClassDefFoundError
  3. Android(安卓)Jenkins中配置gradle项目遇到的问题
  4. Unable to start activity ComponentInfo 解决方法
  5. 火爆新东西,仿QQ版本的ResideMenuItem框架(最新QQ版本的)
  6. Android(安卓)Studio 新手常见问题汇总
  7. Android小项目之欢迎滑动页面(页面布局&底部点点)
  8. 一些 android 项目
  9. 启动 flutter项目时报Could not find com.android.tools.build:g

随机推荐

  1. Android7.0中文API---ImageButton
  2. 如何检索Android设备的唯一ID
  3. Android 学习资源链接
  4. Android设置全屏
  5. Android NDK开发(一)HelloWorld
  6. 王家林的81门一站式云计算分布式大数据&
  7. Android增大button响应区域
  8. Android Package的使用情况统计
  9. Android(安卓)屏幕旋转重新调用onCreate
  10. Android 监控程序安装和删除的实现