基于javaweb+mysql的jsp+servlet医院挂号预约管理系统(管理员、用户)(java+jsp+servlet+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
管理员:登录、管理员、医生、病人、预约挂号、科室管理
普通用户:注册、登录、预约挂号、挂号查询
普通用户(前台)
管理员(后台)
技术框架
CSS JavaScript JSP Servlet JDBC MySQL
基于javaweb+mysql的JSP+Servlet医院挂号预约管理系统(管理员、用户)(java+jsp+servlet+mysql)
}
public void frontShowList(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 前台显示
String offId = request.getParameter("offId");// 前台挂号时,通过选择科室得到下面的医生
// 挂号时,选择医生,把医生id传过来
String docId = request.getParameter("docId");
if (docId != null) {
// 跳到“挂号开始”页面
Doctor doctor = doctorService.get(Integer.valueOf(docId));
Office office = officeService.get(doctor.getOffId());
request.setAttribute("office", office);
request.setAttribute("doctor", doctor);
request.getRequestDispatcher("/guhaoStart.jsp").forward(request,
response);
} else {
// 选择科室时,显示科室下面的医生
List<Doctor> doctorList = doctorService.getByOffId(Integer
.valueOf(offId));
Office office = officeService.get(Integer.valueOf(offId));
request.setAttribute("office", office); // 医生列表中需要显示科室名称
request.setAttribute("docList", doctorList);
request.getRequestDispatcher("/showDoctor.jsp").forward(request,
response);
}
}
public void selectDocList(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 分页
PageData pageData = new PageData();
// 得到当前页
String currentPage = request.getParameter("currentPage");
if (currentPage != null) {
pageData.setCurrentPage(Integer.valueOf(currentPage));
}
// 得到每页行数
String pageRows = request.getParameter("pageRows");
if (pageRows != null) {
pageData.setPageRows(Integer.valueOf(pageRows));
}
// 得到总行数
int rowsCount = doctorService.getRowsCount(null);
pageData.setRowsCount(rowsCount);
// 计算总页数
int pageCount = 0;
if (rowsCount % pageData.getPageRows() == 0) {
pageCount = rowsCount / pageData.getPageRows();
} else {
if (method.equals("frontShowList")) {
// 显示诊室列表
frontShowList(request, response);
} else if (method.equals("showList")) {
// 显示诊室列表
showList(request, response);
} else if (method.equals("add")) {
add(request, response);
} else if (method.equals("modify")) {
modify(request, response);
} else if (method.equals("gotoModify")) {
gotoModify(request, response);
} else if (method.equals("delete")) {
delete(request, response);
}
}
public void frontShowList(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 分页
PageData pageData = new PageData();
// 得到当前页
String currentPage = request.getParameter("currentPage");
if (currentPage != null) {
pageData.setCurrentPage(Integer.valueOf(currentPage));
}
// 得到每页行数
String pageRows = request.getParameter("pageRows");
if (pageRows != null) {
pageData.setPageRows(Integer.valueOf(pageRows));
}
// 得到总行数
int rowsCount = officeService.getRowsCount(null);
pageData.setRowsCount(rowsCount);
// 计算总页数
int pageCount = 0;
String pageRows = request.getParameter("pageRows");
if (pageRows != null) {
pageData.setPageRows(Integer.valueOf(pageRows));
}
// 得到总行数
int rowsCount = officeService.getRowsCount(checkName);
pageData.setRowsCount(rowsCount);
// 计算总页数
int pageCount = 0;
if (rowsCount % pageData.getPageRows() == 0) {
pageCount = rowsCount / pageData.getPageRows();
} else {
pageCount = rowsCount / pageData.getPageRows() + 1;
}
pageData.setPageCount(pageCount);
// 先查询数据库
List<Office> offList = officeService.getList(checkName, pageData); // 得到所有的
// 查看是否有医生,有医生显示红色,
for (Office off : offList) {
boolean isDoc = isHasDoc(off.getOffId(), request, response);
if (isDoc) {
off.setColor("red");
} else {
off.setColor("black");
}
}
// 跳到页面,并将值传过去
request.setAttribute("offList", offList);
request.setAttribute("page", pageData); // 将page传过去
request.setAttribute("checkName", checkName);// 不让名字清空
// 跳到后台
request.getRequestDispatcher("/admin/officeList.jsp").forward(request,
response);
}
// 添加
public void add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String offId = request.getParameter("offId");
// 没有此用户
request.setAttribute("error", "用户名错误");
request.getRequestDispatcher("/guhaoStart.jsp").forward(request,
response);
}
}
public void showList(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 模糊查询
String checkTime = request.getParameter("checkDay"); // 得到名字,根据姓名查找时用
PageData pageData = new PageData();// 分页
// 得到当前页
String currentPage = request.getParameter("currentPage");
if (currentPage != null) {
pageData.setCurrentPage(Integer.valueOf(currentPage));
}
// 得到每页行数
String pageRows = request.getParameter("pageRows");
if (pageRows != null) {
pageData.setPageRows(Integer.valueOf(pageRows));
}
// 得到总行数
int rowsCount = registerService.getRowsCount(checkTime);
pageData.setRowsCount(rowsCount);
// 计算总页数
int pageCount = 0;
if (rowsCount % pageData.getPageRows() == 0) {
pageCount = rowsCount / pageData.getPageRows();
} else {
pageCount = rowsCount / pageData.getPageRows() + 1;
}
pageData.setPageCount(pageCount);
// 先查询数据库
List<Register> rList = registerService.getList(checkTime, pageData);
// 把页面上所需要的封装称dto,传到页面
List<RegisterDto> regList = new ArrayList<RegisterDto>();
RegisterDto dto = null;
// 根据pid查询patient,根据docId查询doctor
for (Register reg : rList) {
// 得到patient对象
Patient patient = patientService.get(reg.getpId());
// 得到doctor对象
Doctor doctor = doctorService.get(reg.getDocId());
// 得到office对象
Office office = officeService.get(doctor.getOffId());
dto = new RegisterDto();
dto.setRegId(reg.getRegId());
dto.setRegNum(reg.getRegNum());
dto.setpId(patient.getpId());
dto.setpName(patient.getName());
dto.setOffName(office.getOffName());
dto.setDocId(doctor.getDocId());
dto.setDocName(doctor.getDocName());
public class AdminServlet extends HttpServlet {
private AdminService adminService = new AdminServiceImpl();
public AdminServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String method = request.getParameter("method");
if (method.equals("add")) {
// 添加用户
add(request, response);
} else if (method.equals("adminLogin")) {
// 管理员登录
adminLogin(request, response);
} else if (method.equals("showList")) {
// 显示管理员列表
showList(request, response);
} else if (method.equals("gotoModify")) {
// 进入修改
gotoModify(request, response);
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String method = request.getParameter("method");
if (method.equals("add")) {
// 添加用户
add(request, response);
} else if (method.equals("adminLogin")) {
// 管理员登录
adminLogin(request, response);
} else if (method.equals("showList")) {
// 显示管理员列表
showList(request, response);
} else if (method.equals("gotoModify")) {
// 进入修改
gotoModify(request, response);
} else if (method.equals("modify")) {
// 修改之后
modify(request, response);
} else if (method.equals("delete")) {
// 删除用户
delete(request, response);
} else if (method.equals("loginOut")) {
// 退出登录
String pageRows = request.getParameter("pageRows");
if (pageRows != null) {
pageData.setPageRows(Integer.valueOf(pageRows));
}
// 得到总行数
int rowsCount = patientService.getRowsCount(checkName);
pageData.setRowsCount(rowsCount);
// 计算总页数
int pageCount = 0;
if (rowsCount % pageData.getPageRows() == 0) {
pageCount = rowsCount / pageData.getPageRows();
} else {
pageCount = rowsCount / pageData.getPageRows() + 1;
}
pageData.setPageCount(pageCount);
// 先查询数据库
List<Patient> pList = patientService.getList(checkName, pageData);// 查询所有的
// 查看是否有预约,有预约姓名显示红色,没有预约显示黑色,删除时就只能删除黑色的
for (Patient p : pList) {
boolean isReg = isHasReg(p.getpId(), request, response);
if (isReg) {
p.setColor("red");
} else {
p.setColor("black");
}
}
// 跳到页面,并将值传过去
request.setAttribute("pList", pList);
request.setAttribute("page", pageData); // 将page传过去
request.setAttribute("checkName", checkName);// 不让名字清空
// 预约挂号中链接病人姓名得到信息
String regPId = request.getParameter("regPId");
if (regPId != null) {
// 显示单条病人信息
Patient patient = patientService.get(Integer.valueOf(regPId));
request.setAttribute("patient", patient);
request.getRequestDispatcher("/admin/regShowPatient.jsp").forward(
request, response);
} else {
request.getRequestDispatcher("/admin/patientList.jsp").forward(
request, response);
}
}
// 添加
public void add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 得到值
List<Doctor> docList = doctorService.getList(null, pageData);// 查询所有记
// 查询医生,还要查询科室,得到科室名
List<DoctorDto> docDtoList = new ArrayList<DoctorDto>();
DoctorDto dto = null;
for (Doctor doc : docList) {
// 根据doc.getOffId()得到科室
dto = new DoctorDto(); // 必须在里面创建
Office office = officeService.get(doc.getOffId());// 得到第一条记录
dto.setDocId(doc.getDocId());
dto.setDocName(doc.getDocName());
dto.setOffName(office.getOffName());
dto.setDocImg(doc.getDocImg());
dto.setDocStatus(doc.getDocStatus());
dto.setDocTime(doc.getDocTime());
dto.setMoney(doc.getMoney());
dto.setSumCount(doc.getSumCount());
dto.setLessCount(doc.getLessCount());
docDtoList.add(dto);
}
// 跳到页面,并将值传过去
request.setAttribute("docDtoList", docDtoList);
request.setAttribute("page", pageData); // 将page传过去
request.getRequestDispatcher("/selectDoctorList.jsp").forward(request,
response);
}
// 显示医生列表
public void showList(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 模糊查询
String checkName = request.getParameter("checkName"); // 得到名字,根据姓名查找时用
// 分页
PageData pageData = new PageData();
// 得到当前页
String currentPage = request.getParameter("currentPage");
if (currentPage != null) {
pageData.setCurrentPage(Integer.valueOf(currentPage));
}
// 得到每页行数
String pageRows = request.getParameter("pageRows");
if (pageRows != null) {
pageData.setPageRows(Integer.valueOf(pageRows));
}
// 得到总行数
int rowsCount = doctorService.getRowsCount(checkName);
pageData.setRowsCount(rowsCount);
// 计算总页数
int pageCount = 0;
if (rowsCount % pageData.getPageRows() == 0) {
pageCount = rowsCount / pageData.getPageRows();
} else {
pageCount = rowsCount / pageData.getPageRows() + 1;
}
pageData.setPageCount(pageCount);
} else if (method.equals("loginOut")) {
// 退出登录
loginOut(request, response);
}
}
// 判断是否重名
public boolean isReName(String adminName, HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
boolean reName = false;
// 判断不能重名
List<Admin> list = adminService.getAdminList(null, null); // 得到列表,查询所有的
if (list != null) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getAdminName().equals(adminName)) {
reName = true;
break;
}
}
}
return reName;
}
public void add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 添加管理员
String adminName = request.getParameter("adminName");
String password = request.getParameter("password");
String rePassword = request.getParameter("rePassword");
if (adminName == null || adminName.trim().equals("")) {
request.setAttribute("error", "用户名不能为空");
request.getRequestDispatcher("/admin/admin_add.jsp").forward(
request, response);
return;
}
if (password == null || password.trim().equals("")) {
request.setAttribute("error", "密码不能为空");
String pageRows = request.getParameter("pageRows");
if (pageRows != null) {
pageData.setPageRows(Integer.valueOf(pageRows));
}
// 得到总行数
int rowsCount = patientService.getRowsCount(checkName);
pageData.setRowsCount(rowsCount);
// 计算总页数
int pageCount = 0;
if (rowsCount % pageData.getPageRows() == 0) {
pageCount = rowsCount / pageData.getPageRows();
} else {
pageCount = rowsCount / pageData.getPageRows() + 1;
}
pageData.setPageCount(pageCount);
// 先查询数据库
List<Patient> pList = patientService.getList(checkName, pageData);// 查询所有的
// 查看是否有预约,有预约姓名显示红色,没有预约显示黑色,删除时就只能删除黑色的
for (Patient p : pList) {
boolean isReg = isHasReg(p.getpId(), request, response);
if (isReg) {
p.setColor("red");
} else {
p.setColor("black");
}
}
// 跳到页面,并将值传过去
request.setAttribute("pList", pList);
request.setAttribute("page", pageData); // 将page传过去
request.setAttribute("checkName", checkName);// 不让名字清空
// 预约挂号中链接病人姓名得到信息
String regPId = request.getParameter("regPId");
if (regPId != null) {
// 显示单条病人信息
Patient patient = patientService.get(Integer.valueOf(regPId));
request.setAttribute("patient", patient);
request.getRequestDispatcher("/admin/regShowPatient.jsp").forward(
request, response);
} else {
request.getRequestDispatcher("/admin/patientList.jsp").forward(
request, response);
}
}
super.destroy(); // Just puts "destroy" string in log
// Put your code heref
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// System.out.println("uiuiuiui");
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
// 得到值
String method = request.getParameter("method");
if (method.equals("frontShowList")) {
// 前台挂号时需要
frontShowList(request, response);
} else if (method.equals("selectDocList")) {
// 前台查询医生列表
selectDocList(request, response);
} else if (method.equals("showList")) {
// 显示诊室列表
showList(request, response);
} else if (method.equals("gotoAdd")) {
// 添加时先初始化下拉列表框
gotoAdd(request, response);
} else if (method.equals("add")) {
add(request, response);
} else if (method.equals("modify")) {
modify(request, response);
} else if (method.equals("gotoModify")) {
gotoModify(request, response);
dto.setDocId(doc.getDocId());
dto.setDocName(doc.getDocName());
dto.setOffName(office.getOffName());
dto.setDocImg(doc.getDocImg());
dto.setDocStatus(doc.getDocStatus());
dto.setDocTime(doc.getDocTime());
dto.setMoney(doc.getMoney());
dto.setSumCount(doc.getSumCount());
dto.setLessCount(doc.getLessCount());
// 查看是否有预约,有预约姓名显示红色,没有预约显示黑色,删除时就只能删除黑色的
boolean isReg = isHasReg(doc.getDocId(), request, response);
if (isReg) {
dto.setColor("red");
} else {
dto.setColor("black");
}
docDtoList.add(dto);
}
// 跳到页面,并将值传过去
request.setAttribute("docDtoList", docDtoList);
request.setAttribute("page", pageData); // 将page传过去
request.setAttribute("checkName", checkName);// 不让名字清空
// 跳到后台
String regDocId = request.getParameter("regDocId");
if (regDocId != null) {
// 得到单个医生信息
Doctor doc = doctorService.get(Integer.valueOf(regDocId));
// 得到科室名
Office office = officeService.get(doc.getOffId());
request.setAttribute("doc", doc);
request.setAttribute("off", office);
request.getRequestDispatcher("/admin/regShowDoctor.jsp").forward(
request, response);
} else {
request.getRequestDispatcher("/admin/doctorList.jsp").forward(
request, response);
}
}
// 添加,初始化列表框
// 数据库修改
Office office = new Office(newOffId, offName);
boolean b = officeService.modify(office, oldOffId);
if (b) {
// 成功
showList(request, response);
} else {
// 修改失败
request.setAttribute("error", "修改失败");
request.getRequestDispatcher("/modifyOffice.jsp").forward(request,
response);
}
}
// 删除
public void delete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 单个删除
String offId = request.getParameter("offId");
// 多个删除
String strId = request.getParameter("strId");
boolean b = false;
boolean isHasDoc = false;
if (strId != null && !strId.trim().equals("")) {
String arrId[] = strId.split(","); // 将字符串分割成数组,得到所有复选框的value,即管理员id
for (int i = 0; i < arrId.length; i++) {
isHasDoc = isHasDoc(Integer.valueOf(arrId[i]), request,
response);
if (!isHasDoc) {
b = officeService.delete(Integer.valueOf(arrId[i]));
}
}
} else {
if (offId != null) {
isHasDoc = isHasDoc(Integer.valueOf(offId), request, response);
if (!isHasDoc) {
b = officeService.delete(Integer.valueOf(offId));
}
} else {
// 都为空的时候
JOptionPane.showMessageDialog(null, "您还没有选择删除的人");// 跳出去
showList(request, response);
return;
}
public void gotoModify(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 得到admin,初始化界面,
String adminId = request.getParameter("adminId");
Admin admin = adminService.getAdmin(Integer.valueOf(adminId));
request.setAttribute("admin", admin);
request.getRequestDispatcher("/admin/updateAdmin.jsp").forward(request,
response);
}
// 根据管理员id删除
public void delete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 删除单个传来的值
String adminId = request.getParameter("adminId");
// 删除多个传来的值
String str = request.getParameter("adminIdArr");// 得到id的字符串,然后分割成数组
boolean b = false;
if (str != null && !str.trim().equals("")) {
String arrId[] = str.split(","); // 将字符串分割成数组,得到所有复选框的value,即管理员id
for (int i = 0; i < arrId.length; i++) {
System.out.println(arrId[i]);
b = adminService.delete(Integer.valueOf(arrId[i]));
}
} else {
if (adminId != null) {
b = adminService.delete(Integer.valueOf(adminId));
} else {
// 都为空的时候
JOptionPane.showMessageDialog(null, "您还没有选择删除的人");// 跳出去
showList(request, response);
return;
}
}
if (!b) {
request.setAttribute("errDelete", "删除管理员失败");
}
showList(request, response);
}
public void loginOut(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 根据doc.getOffId()得到科室
dto = new DoctorDto(); // 必须在里面创建
Office office = officeService.get(doc.getOffId());// 得到第一条记录
dto.setDocId(doc.getDocId());
dto.setDocName(doc.getDocName());
dto.setOffName(office.getOffName());
dto.setDocImg(doc.getDocImg());
dto.setDocStatus(doc.getDocStatus());
dto.setDocTime(doc.getDocTime());
dto.setMoney(doc.getMoney());
dto.setSumCount(doc.getSumCount());
dto.setLessCount(doc.getLessCount());
// 查看是否有预约,有预约姓名显示红色,没有预约显示黑色,删除时就只能删除黑色的
boolean isReg = isHasReg(doc.getDocId(), request, response);
if (isReg) {
dto.setColor("red");
} else {
dto.setColor("black");
}
docDtoList.add(dto);
}
// 跳到页面,并将值传过去
request.setAttribute("docDtoList", docDtoList);
request.setAttribute("page", pageData); // 将page传过去
request.setAttribute("checkName", checkName);// 不让名字清空
// 跳到后台
String regDocId = request.getParameter("regDocId");
if (regDocId != null) {
// 得到单个医生信息
Doctor doc = doctorService.get(Integer.valueOf(regDocId));
// 得到科室名
Office office = officeService.get(doc.getOffId());
request.setAttribute("doc", doc);
request.setAttribute("off", office);
request.getRequestDispatcher("/admin/regShowDoctor.jsp").forward(
request, response);
} else {
request.getRequestDispatcher("/admin/doctorList.jsp").forward(
request, response);
}
}
// 添加,初始化列表框
public void gotoAdd(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 查询 科室,得到科室名,初始化列表框
List<Office> offList = officeService.getList(null, null); // ???
// 保存值,跳转到页面
System.out.println(offId);
System.out.println(offName);
// 判断在前台页面判断
if (offId == null || offId.trim().equals("")) {
request.setAttribute("error", "科室编号不能为空");
request.getRequestDispatcher("/admin/addOffice.jsp").forward(
request, response);
return;
}
if (offName == null || offName.trim().equals("")) {
request.setAttribute("error", "科室名称不能为空");
request.getRequestDispatcher("/admin/addOffice.jsp").forward(
request, response);
return;
}
// 插入数据库
Office office = new Office(Integer.valueOf(offId), offName);
boolean b = officeService.add(office);
if (b) {
// 成功
// 跳转到列表,要更新
showList(request, response);
} else {
// 插入失败
request.setAttribute("error", "添加失败");
request.getRequestDispatcher("admin/addOffice.jsp").forward(
request, response);
}
}
// 修改
public void gotoModify(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 得到页面的offId,查询数据库,得到对象,初始化页面
String offId = request.getParameter("offId");
// System.out.println(list.size());
Office office = officeService.get(Integer.valueOf(offId));
// 保存值,传到页面
request.setAttribute("office", office);
request.getRequestDispatcher("admin/updateOffice.jsp").forward(request,
response);
}
public void modify(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 得到页面值
request, response);
}
}
// 添加
public void add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 得到值
String name = request.getParameter("name");
String password = request.getParameter("password");
String rePassword = request.getParameter("rePassword");
String relname = request.getParameter("relname");
String sex = request.getParameter("sex");
String tel = request.getParameter("tel");
String card = request.getParameter("card");
// 判断在前台页面判断
if (name == null || name.trim().equals("")) {
request.setAttribute("error", "用户名不能为空");
request.getRequestDispatcher("/patient_regist.jsp").forward(
request, response);
return;
}
if (password == null || password.trim().equals("")) {
request.setAttribute("error", "密码不能为空");
request.getRequestDispatcher("/patient_regist.jsp").forward(
request, response);
return;
}
if (rePassword == null || rePassword.trim().equals("")) {
request.setAttribute("error", "确认密码不能为空");
request.getRequestDispatcher("/patient_regist.jsp").forward(
request, response);
return;
}
if (!rePassword.equals(password)) {
request.setAttribute("error", "两次密码不一致");
request.getRequestDispatcher("/patient_regist.jsp").forward(
request, response);
return;
}
if (relname == null || relname.trim().equals("")) {
request.setAttribute("error", "真实姓名不能为空");
request.getRequestDispatcher("/patient_regist.jsp").forward(
request, response);
return;
}
if (sex == null || sex.trim().equals("")) {
request.setAttribute("error", "性别不能为空");