目录
DIMS 1
任务分工 1
数据库设计 2
需求分析 2
概念结构设计 12
逻辑结构设计 13
物理结构设计 14
数据库实施 15
数据库运行和维护 15
应用系统设计 15
详细设计阶段 15
环境准备 18
创建一个新的 Dynamic Web 项目 19
集成 Spring 和 SpingMVC 20
配置 web.xml 23
集成 Spring 和 MyBatis 25
配置 log4j 28
集成基于 Bootstrap 前端框架的 ACE 管理系统页面模板 29
导入 Apache Taglibs 的 jar 包 29
测试与验收 29
界面测试 29
功能测试 30
性能测试 30
需求测试 30
遇到的问题 30
DIMS
数据库系统原理课程设计,DIMS,Drug Inventory Management System,基于 SSM 框架的医院药品库存管理系统。
任务分工
需求分析:
概念结构设计:
逻辑结构设计:
物理结构设计:
数据库实施:
数据库运行和维护:
应用系统设计:
测试与验收:
编写文档:
编写答辩 PPT:
数据库设计
在数据库设计过程中,需求分析和概念结构设计可以独立于任何数据库管理系统进行,逻辑结构设计和物理结构设计与选用的数据库管理系统密切相关。
需求分析
需求分析必须准确了解与分析用户需求 (包括数据与处理)。
设计描述:数字字典、全系统中数据项、数据结构、数据流、数据存储的描述。
任务:通过详细调查现实世界要处理的对象 (组织、部门、企业等),充分了解原系统 (手工系统或计算机系统) 的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。调查的重点是 “数据” 和 “处理”,通过调查、收集与分析,获得用户对数据库的如下要求:
信息要求:指用户需要从数据库中获得信息的内容与性质。由信息要求可以导出数据要求,即在数据库中需要存储哪些数据。
处理要求:指用户要完成的数据处理功能,对处理性能的要求。
安全性与完整性要求
业务用例图:
package com.dims.web.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.dims.domain.Admin;
import com.dims.domain.Doctor;
import com.dims.domain.Nurse;
import com.dims.domain.User;
import com.dims.service.IAdminService;
import com.dims.service.IDoctorService;
import com.dims.service.INurseService;
@Controller
@RequestMapping(value = "/")
public class UserController {
@Autowired
private IAdminService adminService;
@Autowired
private IDoctorService doctorService;
@Autowired
private INurseService nurseService;
@RequestMapping(value = "index")
public String index() {
// 重定向到 WEB-INF/views/login.jsp
return "redirect:/login";
}
@RequestMapping(value = "login")
public String login(HttpServletRequest req) {
req.getSession().removeAttribute("echo");
// 请求映射到 WEB-INF/views/login.jsp
return "/login";
}
@RequestMapping(value = "submitLogin")
public String submitLogin(HttpServletRequest req, User user) {
String echo;
switch (user.getRole()) {
case ADMIN:
Admin currentAdmin = adminService.login(user);
if (currentAdmin != null) { // 登录成功
req.getSession().setAttribute("currentAdmin", currentAdmin);
// 重定向到 WEB-INF/views/admin/index.jsp
return "redirect:/admin/index";
} else {
echo = "登陆失败!";
req.getSession().setAttribute("echo", echo);
// 请求映射到 WEB-INF/views/login.jsp,留在登录页面
return "/login"; // 不要用重定向,重定向会执行 login 方法
}
case DOCTOR:
Doctor currentDoctor = doctorService.login(user);
if (currentDoctor != null) { // 登录成功
req.getSession().setAttribute("currentDoctor", currentDoctor);
// 重定向到 WEB-INF/views/doctor/index.jsp
return "redirect:/doctor/index";
} else {
echo = "登陆失败!";
req.getSession().setAttribute("echo", echo);
// 请求映射到 WEB-INF/views/login.jsp,留在登录页面
return "/login"; // 不要用重定向,重定向会执行 login 方法
}
case NURSE:
Nurse currentNurse = nurseService.login(user);
if (currentNurse != null) { // 登录成功
req.getSession().setAttribute("currentNurse", currentNurse);
// 重定向到 WEB-INF/views/nurse/index.jsp
return "redirect:/nurse/index";
} else {
echo = "登陆失败!";
req.getSession().setAttribute("echo", echo);
// 请求映射到 WEB-INF/views/login.jsp,留在登录页面
return "/login"; // 不要用重定向,重定向会执行 login 方法
}
default:
echo = "登陆失败!";
req.getSession().setAttribute("echo", echo);
// 请求映射到 WEB-INF/views/login.jsp,留在登录页面
return "/login"; // 不要用重定向,重定向会执行 login 方法
}
}
@RequestMapping(value = "logout")
public String logout(HttpServletRequest req) {
req.getSession().invalidate();
// 重定向到 WEB-INF/views/login.jsp
return "redirect:/login";
}
@RequestMapping(value = "admin")
public String admin() {
// 重定向到 WEB-INF/views/admin/index.jsp
return "redirect:/admin/index";
}
@RequestMapping(value = "doctor")
public String doctor() {
// 重定向到 WEB-INF/views/doctor/index.jsp
return "redirect:/doctor/index";
}
@RequestMapping(value = "nurse")
public String nurse() {
// 重定向到 WEB-INF/views/nurse/index.jsp
return "redirect:/nurse/index";
}
}