1.需求

实现爱心宠物诊所系统功能,主要功能需求如下:
“爱心”宠物诊所的职员在工作中需要查阅和管理如下信息:诊所的兽医、客户以及客户的宠物。
“爱心”宠物诊所的职员需要使用系统提供的如下功能:

  1. 浏览诊所的兽医以及他们的专业特长;
  2. 浏览宠物的主人(即诊所的客户)的相关信息;
  3. 更新宠物的主人的相关信息;
  4. 向系统中增加一个新客户;
  5. 浏览宠物的相关信息;
  6. 更新宠物的相关信息;
  7. 向系统中增加一个新宠物;
  8. 浏览宠物的访问历史记录;
  9. 向宠物的访问历史记录添加一次访问;
  10. 此外,诊所的职员在使用系统提供的上述功能之前需要进行登录。当职员不需要使用系统的上述功能时,也可退出系统。

2.技术选型(IDEA开发工具)

  • Tomcat8.0
  • MySql8
  • JavaBean
  • Servlet
  • Jsp

3.大致实现

3.1登录


简单的登录,没什么好说的.要注意的就是设置过滤器,确认用户登录后,才可进行其他接口,页面的操作!

public class ManagerFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;String uri = httpServletRequest.getRequestURI();//过滤登录请求if (uri.equals(httpServletRequest.getContextPath()+"/login")||uri.equals(httpServletRequest.getContextPath()+"jsp/login.jsp")||uri.equals(httpServletRequest.getContextPath()+"/")){filterChain.doFilter(servletRequest, servletResponse);}else  {User user= (User) httpServletRequest.getSession().getAttribute("user");if (user==null){servletRequest.getRequestDispatcher("/jsp/login.jsp").forward(servletRequest, servletResponse);}else {filterChain.doFilter(servletRequest, servletResponse);}}}@Overridepublic void destroy() {}
}

3.2管理员首页


这里主要是JSP页面的代码,不放了,毕竟我们是面向后端的.这里展管理员的基础功能列表,详细的看后面.

3.3兽医名单操作



主要工作就是数据库的查询,还有删除与添加,记得提交事务.否则不进行修改操作.

3.3.1获得兽医信息代码:

前端发送Ajax请求,在对获得的数据进行处理即可.

@WebServlet(urlPatterns = "/getVets")
public class GetVetsServlet extends BaseServlet{private VetDao vetDao=new VetDaoImpl();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {List<Vet> vetList = vetDao.getVetList();JdbcUtils.commitAndClose();Gson gson = new Gson();resp.setCharacterEncoding("utf-8");resp.setContentType("application/json");resp.getWriter().write(String.valueOf(gson.toJson(vetList)));}
}

3.3.2添加删除兽医(代码大致一样就放一块了)

@WebServlet(urlPatterns = "/addVet")
public class AddVetServlet extends BaseServlet{private VetDao vetDao = new VetDaoImpl();@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");Vet vet = WebUtils.copyParamToBean(req.getParameterMap(), new Vet());int i = vetDao.addVet(vet);JdbcUtils.commitAndClose();//页面重定向resp.sendRedirect(req.getContextPath() + "/jsp/getVet.jsp");}
}@WebServlet(urlPatterns = "/deleteVet")
public class DeleteVetServlet extends BaseServlet{private VetDao vetDao=new VetDaoImpl();@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String id = req.getParameter("id");vetDao.deleteVetById( WebUtils.parseInt(id, 0));JdbcUtils.commitAndClose();}
}

3.4客户查看


展示客户信息,删除一个客户,同样也是一个Ajax发送请求的事.改变就诊状态也一样.都是Ajax请求,这里贴一下改变就诊状态的后端代码.其余那些差不多的.

@WebServlet("/revIsSeeDoctor")
public class RevIsSeeDoctorServlet extends BaseServlet{private CustomerDao customerDao=new CustomerDaoImpl();@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {int id = WebUtils.parseInt(req.getParameter("id"), 0);String isSeeDoctor = customerDao.getCustomerById(id).getIsSeeDoctor();if ("就诊中".equals(isSeeDoctor)){customerDao.updateIsSeeDoctorById(id,"就诊完");}else {customerDao.updateIsSeeDoctorById(id,"就诊中");}JdbcUtils.commitAndClose();}
}

3.5所有宠物




同样是前端发送Aajx请求,对获得的数据进行处理.不放代码啦,需要的话可以看后面联系方式,开源给大家.

3.6宠物登记


获取前端的表单内容,对内容处理即可.
后端代码:

@WebServlet(urlPatterns = "/addCustomer")
public class AddCustomer extends BaseServlet{private CustomerService customerService=new CustomerSericeImpl();@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");Customer customer = WebUtils.copyParamToBean(req.getParameterMap(), new Customer());customerService.saveCustomer(customer);JdbcUtils.commitAndClose();resp.sendRedirect(req.getContextPath() + "/jsp/getCustomer.jsp");}
}

3.7 宠物访问历史记录



实现和前面的大致一样.其实很多代码工作都是差不多的,主要就是前端的排版问题.还有Ajax访问

4.其他

4.1前端Ajax编写

我怕一个Ajax都没贴出来,表达不明确,这里就是给大家看一个前端的Ajax请求.
例子:是宠物信息jsp页面的Ajax请求.

 function LoadCustomerData() {$.ajax({url: $("#PageContext").val()+"/getCustomer",type: "get",dataType: "json",success: function (data) {//清除旧的数据$("#information").html("");//添加新的数据$.each(data, function (i, n) {$("#information").append("<tr>").append("<td>" + n.id + "</td>").append("<td>" + n.petName + "</td>").append("<td>" + n.petGender + "</td>").append("<td>" + n.createTime + "</td>").append("<td>" + n.illness + "</td>").append("<td>" + n.isSeeDoctor + "<button οnclick='javascript:return RevIsSeeDoctor("+n.id+")' class='layui-btn layui-btn-sm layui-btn-primary'><i class='layui-icon layui-icon-senior' style='font-size: 15px; color: #1E9FFF;'></i></button></td>").append("<td><button οnclick='javascript:return Access("+n.id+")' class='layui-btn layui-btn-sm layui-btn-primary'><i class='layui-icon layui-icon-survey' style='font-size: 15px; color: #715555;'></i></button></td>").append("<td>"+"<button οnclick='javascript:return GetCustomer("+n.id+")' class='layui-btn layui-btn-sm layui-btn-primary'><i class='layui-icon layui-icon-user' style='font-size: 15px;'></i></button></td>").append("<td><button οnclick='javascript:return Del("+n.id+")' class='layui-btn layui-btn-sm layui-btn-primary'><i class='layui-icon layui-icon-delete' style='font-size: 15px; color: red;'></i></button></td>").append("</tr>")});},})}//ajax 删除请求function Del(id){var msg = "确认删除?";if (confirm(msg)==true){// alert(id+"--"+pageNum)id=parseInt(id)// alert(id)$.ajax({url: $("#PageContext").val()+"/deleteCustomer",type: "post",data : {id:id},success: function () {//情况旧数据LoadCustomerData();layer.msg('删除成功');}})}else{return false;}}function RevIsSeeDoctor(id){var msg = "确认修改就诊状态?";if (confirm(msg)==true){// alert(id+"--"+pageNum)id=parseInt(id)// alert(id)$.ajax({url: $("#PageContext").val()+"/revIsSeeDoctor",type: "post",data : {id:id},success: function () {//情况旧数据LoadCustomerData();layer.msg('修改成功');}})}else{return false;}}function GetCustomer(id){id=parseInt(id)$.ajax({url: $("#PageContext").val()+"/getCustomer",type: "get",data : {id:id},success: function (data) {console.log(data)layer.open({title: '主人信息',// area: ['500px', '300px'],content: "姓名:"+data.name+"</br>"+"性别:"+data.customerGender+"</br>"+"电话:"+data.phone+"</br>"+"居住地址:"+data.address+"</br>"});}})}// 添加访问弹出框, 显示弹框,传递对应的Idfunction Access(id){//赋值id,方便传递到后台$("#id").val(id);$("#createFileTitle").text("添加访问");$('#addVisitModal').modal('show');}

4.2目录结构

目录 说明
dao 数据库操作层
filter 相关过滤器
pojo 与数据库对应的实体类
service 服务层,就是调用dao层的方法,对服务进行汇总,简化web/controller层的代码
untils 工具库,例如Jdbc工具,Web工具等
web 页面接口控制,相当与ssm框架的controller把
webapp 放一些web.xml配置文件,以及前端静态资源和jsp页面

5项目获取

项目开源:
https://gitee.com/langshixiansheng/pet-clinic

开源课设-宠物诊所管理系统相关推荐

  1. Java+Servlet+JSP实现Web宠物诊所管理系统

    宠物诊所管理系统 一.系统介绍 二.系统展示 1.登录 2.注册 3.宠物查询主页面 4.宠物查询结果 5.宠物信息修改 6.宠物信息新增 7.医生查询主界面 8.医生查询结果 9.医生信息修改 10 ...

  2. 宠物诊所java项目_JavaWeb项目-宠物诊所管理系统

    [实例简介] 用eclipse开发的JavaWeb项目--宠物诊所管理系统:可以对宠物信息和宠物主人信息进行管理,添.删.改.查,数据库用的是Mysql.服务器用的是tomcat. [实例截图] [核 ...

  3. C语言课设物资管理系统,C语言课设之物资管理系统.doc

    C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...

  4. 日程信息管理系统设计与实现C 语言论文,C课设个人日程管理系统.docx

    C课设个人日程管理系统 可视化程序设计 大作业 班 级: 学 号: 姓 名: 指导教师: 计算机与通信工程学院 2018.01 1. 任务描述 课题:日程管理系统 由于题目没有提及要实现的具体的功能, ...

  5. 课设影院信息管理系统

        课设影院信息管理系统 一.影院具体信息介绍: 1.人员分类: 负责人,管理者,售票者,顾客 2.人员涉及的功能: 负责人:注册管理者和售票者账号信息 管理者:管理影片信息,增删修改 售票者:查 ...

  6. 学生信息管理系统c语言课设,学生信息管理系统C语言课设.doc

    学生信息管理系统C语言课设 目录 一.需求分析2 二.概要设计2 三.详细设计4 四.调试分析9 五.用户手册9 六.测试数据9 七.附录10 一.需求分析学生学籍管理系统用数据文件存放学生的学籍,可 ...

  7. C++课设-学生信息管理系统

    前言:上学期的一个简单的C++课设项目(代码在后面,附github项目链接) 一.问题描述: 建立学生信息数据,包括学号.姓名.性别.三科成绩.出生时间.年龄(必须计算得到). 使用继承的方法构造至少 ...

  8. 社区宠物诊所管理系统

    目录 第一章概述 PAGEREF _Toc4474 \h 2 1.1引言 PAGEREF _Toc29664 \h 3 1.2开发背景 PAGEREF _Toc3873 \h 3 第二章系统总体结构及 ...

  9. 数据库原理与实践课设(宾馆管理系统),java+jdbc+sqlserver2017

    第一次用java写这么多东西,发现开发方面确实比C++高很多,哈哈哈当然要记录下来 ~ ps:课设中涉及的所有数据都是存在数据库中的~~~ 1.首先当然是连接数据库啦,我这了采用的编程语言是java, ...

最新文章

  1. HLR、VLR及AUC三网元概述
  2. confirm弹窗确定按钮换文字_第二章(第9节):弹窗处理
  3. python list 和矩阵的切片
  4. 利用SqlBulkCopy插入数据
  5. 田野中科院计算机网络信息中心,中国科学院计算机网络信息中心硕士生导师田野...
  6. 分布式红锁的leaseTime的设计原理
  7. unity3d C#UnityEngine API 提示中文汉化
  8. 二次无约束二值优化模型(The Quadratic Unconstrained Binary Optimization(QUBO) model)
  9. c语言差分qpsk编码信道估计 pudn,基于DSP的电力线载波OFDM调制解调器设计.doc
  10. 5G路测下行速率优化指导书
  11. java常见问题incompatible types
  12. error: C99 designator ‘personName’ outside aggregate initializer
  13. EXCEL文件打开缓慢的问题解决
  14. Proteus 8 Professional跑Keil uVision4的文件
  15. 通过nginx日志统计一段时间内ip的访问次数进行排序访问量统计
  16. leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排
  17. 各大财经网站股票数据接口
  18. GB/T 7714-2005参考文献规范[转]
  19. 轻听-最好的解压助眠医疗轻音乐集
  20. Typecho CommentToMail邮件插件模板美化

热门文章

  1. Filter基础知识
  2. 索尼随身听体积小吗?
  3. 解决json数据 key为数字,自动排序问题
  4. require(‘inquirer‘)报错
  5. BP神经网络隐含层节点数的确定
  6. Google 地图切片URL地址解析
  7. matlab中plot矢量长度,关于plot函数矢量长度弹错的问题
  8. 网页引用优酷视频并添加封面自动播放
  9. 完美立方生理周期假币熄灯阶乘汉诺塔N皇后
  10. 概率统计·多维随机变量及其分布【相互独立随机变量、两个随机变量函数的分布 】