基于java+ssm+vue的宠物医院预约挂号系统
项目介绍
身处网络时代,随着网络系统体系发展的不断成熟和完善,人们的生活也随之发生了很大的变化,人们在追求较高物质生活的同时,也在想着如何使自身的精神内涵得到提升,而读书就是人们获得精神享受非常重要的途径。为了满足人们随时随地只要有网络就可以看书的要求,宠物医院预约挂号系统被开发研究了出来。
本文主要描述了该宠物医院预约挂号系统的具体开发过程,在SSM框架的基础上,采用vue技术和MYSQL数据库,使该宠物医院预约挂号系统具有很好的稳定性和安全性。本设计重点从系统概述、系统分析、系统设计、数据库设计、系统测试和总结这几个方面对该宠物医院预约挂号系统进行阐述,用户通过该宠物医院预约挂号系统可以查询自己喜欢的信息。
该宠物医院预约挂号系统不仅能够稳定的运行,快捷方便的操作,界面简洁清晰,而且功能齐全,实用性强。
管理员功能模块和用户功能模块是该宠物医院预约挂号系统的两大部分,系统结构如图4-2所示。
开发环境
编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序/vue/爬虫/c#/asp.net
系统实现
5.1用户信息管理
如图5.1显示的就是用户信息管理页面,此页面提供给管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,
还进行了对用户名称的模糊查询的条件
图5.1 用户信息管理页面
5.2 宠物医生管理
如图5.2显示的就是宠物医生管理页面,此页面提供给管理员的功能有:查看已发布的宠物医生数据,修改宠物医生,宠物医生作废,即可删除,还进行了对宠物医生名称的模糊查询 宠物医生信息的类型查询等等一些条件。
图5.2 宠物医生管理页面
5.3宠物信息管理
如图5.3显示的就是宠物信息管理页面,此页面提供给管理员的功能有:根据宠物信息进行条件查询,还可以对宠物信息进行新增、修改、查询操作等等。
图5.3 宠物信息管理页面
5.1公告信息管理
如图5.4显示的就是公告信息管理页面,此页面提供给管理员的功能有:根据公告信息进行新增、修改、查询操作等等。
图5.4 公告信息管理页面
核心代码
package com.controller; import java.io.File; import java.math.BigDecimal; import java.net.URL; import java.text.SimpleDateFormat; import com.alibaba.fastjson.JSONObject; import java.util.*; import org.springframework.beans.BeanUtils; import javax.servlet.http.HttpServletRequest; import org.springframework.web.context.ContextLoader; import javax.servlet.ServletContext; import com.service.TokenService; import com.utils.*; import java.lang.reflect.InvocationTargetException; import com.service.DictionaryService; import org.apache.commons.lang3.StringUtils; import com.annotation.IgnoreAuth; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.entity.*; import com.entity.view.*; import com.service.*; import com.utils.PageUtils; import com.utils.R; import com.alibaba.fastjson.*; /** * 宠物信息 * 后端接口 * @author * @email */ @RestController @Controller @RequestMapping("/chongwu") public class ChongwuController { private static final Logger logger = LoggerFactory.getLogger(ChongwuController.class); @Autowired private ChongwuService chongwuService; @Autowired private TokenService tokenService; @Autowired private DictionaryService dictionaryService; //级联表service @Autowired private YonghuService yonghuService; @Autowired private YishengService yishengService; /** * 后端列表 */ @RequestMapping("/page") public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){ logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params)); String role = String.valueOf(request.getSession().getAttribute("role")); if(false) return R.error(511,"永不会进入"); else if("用户".equals(role)) params.put("yonghuId",request.getSession().getAttribute("userId")); else if("宠物医生".equals(role)) params.put("yishengId",request.getSession().getAttribute("userId")); if(params.get("orderBy")==null || params.get("orderBy")==""){ params.put("orderBy","id"); } PageUtils page = chongwuService.queryPage(params); //字典表数据转换 List<ChongwuView> list =(List<ChongwuView>)page.getList(); for(ChongwuView c:list){ //修改对应字典表字段 dictionaryService.dictionaryConvert(c, request); } return R.ok().put("data", page); } /** * 后端详情 */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id); ChongwuEntity chongwu = chongwuService.selectById(id); if(chongwu !=null){ //entity转view ChongwuView view = new ChongwuView(); BeanUtils.copyProperties( chongwu , view );//把实体数据重构到view中 //级联表 YonghuEntity yonghu = yonghuService.selectById(chongwu.getYonghuId()); if(yonghu != null){ BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段 view.setYonghuId(yonghu.getId()); } //修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); }else { return R.error(511,"查不到数据"); } } /** * 后端保存 */ @RequestMapping("/save") public R save(@RequestBody ChongwuEntity chongwu, HttpServletRequest request){ logger.debug("save方法:,,Controller:{},,chongwu:{}",this.getClass().getName(),chongwu.toString()); String role = String.valueOf(request.getSession().getAttribute("role")); if(false) return R.error(511,"永远不会进入"); else if("用户".equals(role)) chongwu.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")))); Wrapper<ChongwuEntity> queryWrapper = new EntityWrapper<ChongwuEntity>() .eq("yonghu_id", chongwu.getYonghuId()) .eq("chongwu_name", chongwu.getChongwuName()) .eq("chongwu_types", chongwu.getChongwuTypes()) ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); ChongwuEntity chongwuEntity = chongwuService.selectOne(queryWrapper); if(chongwuEntity==null){ chongwu.setCreateTime(new Date()); chongwuService.insert(chongwu); return R.ok(); }else { return R.error(511,"表中有相同数据"); } } /** * 后端修改 */ @RequestMapping("/update") public R update(@RequestBody ChongwuEntity chongwu, HttpServletRequest request){ logger.debug("update方法:,,Controller:{},,chongwu:{}",this.getClass().getName(),chongwu.toString()); String role = String.valueOf(request.getSession().getAttribute("role")); // if(false) // return R.error(511,"永远不会进入"); // else if("用户".equals(role)) // chongwu.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")))); //根据字段查询是否有相同数据 Wrapper<ChongwuEntity> queryWrapper = new EntityWrapper<ChongwuEntity>() .notIn("id",chongwu.getId()) .andNew() .eq("yonghu_id", chongwu.getYonghuId()) .eq("chongwu_name", chongwu.getChongwuName()) .eq("chongwu_types", chongwu.getChongwuTypes()) ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); ChongwuEntity chongwuEntity = chongwuService.selectOne(queryWrapper); if("".equals(chongwu.getChongwuPhoto()) || "null".equals(chongwu.getChongwuPhoto())){ chongwu.setChongwuPhoto(null); } if(chongwuEntity==null){ chongwuService.updateById(chongwu);//根据id更新 return R.ok(); }else { return R.error(511,"表中有相同数据"); } } /** * 删除 */ @RequestMapping("/delete") public R delete(@RequestBody Integer[] ids){ logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString()); chongwuService.deleteBatchIds(Arrays.asList(ids)); return R.ok(); } /** * 批量上传 */ @RequestMapping("/batchInsert") public R save( String fileName, HttpServletRequest request){ logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName); Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { List<ChongwuEntity> chongwuList = new ArrayList<>();//上传的东西 Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段 Date date = new Date(); int lastIndexOf = fileName.lastIndexOf("."); if(lastIndexOf == -1){ return R.error(511,"该文件没有后缀"); }else{ String suffix = fileName.substring(lastIndexOf); if(!".xls".equals(suffix)){ return R.error(511,"只支持后缀为xls的excel文件"); }else{ URL resource = this.getClass().getClassLoader().getResource("../../upload/" + fileName);//获取文件路径 File file = new File(resource.getFile()); if(!file.exists()){ return R.error(511,"找不到上传文件,请联系管理员"); }else{ List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件 dataList.remove(0);//删除第一行,因为第一行是提示 for(List<String> data:dataList){ //循环 ChongwuEntity chongwuEntity = new ChongwuEntity(); // chongwuEntity.setYonghuId(Integer.valueOf(data.get(0))); //用户 要改的 // chongwuEntity.setChongwuName(data.get(0)); //宠物名称 要改的 // chongwuEntity.setChongwuTypes(Integer.valueOf(data.get(0))); //宠物类型 要改的 // chongwuEntity.setChongwuPhoto("");//详情和图片 // chongwuEntity.setReplyContent("");//详情和图片 // chongwuEntity.setCreateTime(date);//时间 chongwuList.add(chongwuEntity); //把要查询是否重复的字段放入map中 } //查询是否重复 chongwuService.insertBatch(chongwuList); return R.ok(); } } } }catch (Exception e){ e.printStackTrace(); return R.error(511,"批量插入数据异常,请联系管理员"); } } /** * 前端列表 */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){ logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params)); // 没有指定排序字段就默认id倒序 if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){ params.put("orderBy","id"); } PageUtils page = chongwuService.queryPage(params); //字典表数据转换 List<ChongwuView> list =(List<ChongwuView>)page.getList(); for(ChongwuView c:list) dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段 return R.ok().put("data", page); } /** * 前端详情 */ @RequestMapping("/detail/{id}") public R detail(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id); ChongwuEntity chongwu = chongwuService.selectById(id); if(chongwu !=null){ //entity转view ChongwuView view = new ChongwuView(); BeanUtils.copyProperties( chongwu , view );//把实体数据重构到view中 //级联表 YonghuEntity yonghu = yonghuService.selectById(chongwu.getYonghuId()); if(yonghu != null){ BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段 view.setYonghuId(yonghu.getId()); } //修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); }else { return R.error(511,"查不到数据"); } } /** * 前端保存 */ @RequestMapping("/add") public R add(@RequestBody ChongwuEntity chongwu, HttpServletRequest request){ logger.debug("add方法:,,Controller:{},,chongwu:{}",this.getClass().getName(),chongwu.toString()); Wrapper<ChongwuEntity> queryWrapper = new EntityWrapper<ChongwuEntity>() .eq("yonghu_id", chongwu.getYonghuId()) .eq("chongwu_name", chongwu.getChongwuName()) .eq("chongwu_types", chongwu.getChongwuTypes()) ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); ChongwuEntity chongwuEntity = chongwuService.selectOne(queryWrapper); if(chongwuEntity==null){ chongwu.setCreateTime(new Date()); chongwuService.insert(chongwu); return R.ok(); }else { return R.error(511,"表中有相同数据"); } } }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323论文参考
目 录
目 录 I
摘 要 III
ABSTRACT IV
1 绪论 1
1.1 课题背景 1
1.2 研究现状 1
1.3 研究内容 2
2 系统开发环境 3
2.1 vue技术 3
2.2 JAVA技术 3
2.3 MYSQL数据库 3
2.4 B/S结构 4
2.5 SSM框架技术 4
3 系统分析 5
3.1 可行性分析 5
3.1.1 技术可行性 5
3.1.2 操作可行性 5
3.1.3 经济可行性 5
3.1.4 法律可行性 5
3.2 系统性能分析 5
3.3 系统功能分析 6
3.3.1 角色需求 6
3.3.2 功能需求 6
3.4 系统流程分析 6
3.4.1 注册流程 6
3.4.2 登录流程 7
4 系统设计 8
4.1 系统概要设计 8
4.2 系统结构设计 8
4.3 数据库设计 9
4.3.1 数据库表设计 9
5 系统的实现 13
5.1 功能模块的实现 13
5.1用户信息管理 13
5.2 宠物医生管理 14
5.3宠物信息管理 16
5.1公告信息管理 18
6 系统测试 21
6.1 测试定义 21
6.2 测试目的 21
6.3 测试方法 21
6.4 测试分析 21
7 结论 23
致谢 24
参考文献 25
相关知识
基于nodejs+vue宠物医院预约挂号系统[程序+论文+开题]
基于node.js+vue的宠物医院在线预约管理系统的设计与实现
ssm725基于Java的宠物医院预约挂号系统的设计与实现
基于ssm+vue宠物医院预约管理系统(开题报告+程序+论文+java)
java ssm爱宠宠物医院挂号预约系统管理系统设计与实现
宠物医院预约系统小程序开发
基于django+vue宠物医院预约系统【开题报告+程序+论文】
案例12:Java宠物医院预约管理系统设计与实现开题报告
基于Node.js+vue基于SpringBoot的宠物门诊系统(开题+程序+论文) 计算机毕业设计
基于Node.js+vue基于springboot的宠物医院管理(开题+程序+论文) 计算机毕业设计
网址: 基于java+ssm+vue的宠物医院预约挂号系统 https://www.mcbbbk.com/newsview259098.html
上一篇: 基于SSM的宠物医院信息系统设计 |
下一篇: 邵阳狗狗吧 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352