作者主页:编程千纸鹤
作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师
主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享
本项目作为母校信息化建设的一部分,主要用来管理校内学生、教室、老师、课程、宿舍的相关信息,而这些信息是校园信息化建设的核心基础业务数据。项目主要基于JAVA语言来进行开发,在后台开发上技术上主要选用spring框架、springmvc框架、mybatis框架组合开发使用,在前端技术选择上主要使用Bootstrap、Jquery来进行前端用户数据的交互处理,给客户带来非常好的使用体验。在数据库存储上,主要使用关系数据库MYSQL来实现系统中相关业务数据的存储,即保证了它的高效性,又能通过数据备份实现数据的安全备份。项目在设计之初就充分考虑本系统在后期扩展和维护的需要,考虑客户在使用时的感受,并遵从相应的软件开发设计规范和设计原则,为后期项目的扩展打好基础。
随着网络技术的深入应用,人类的思维方式和生活工作方式都发生了很大的变化。创造性思维,创新学习和工作理念已经深入人心。在新的环境下,教育工作的创新发展已经成为人们的共同期待。互联网与校园建设工作实现深度融合,促使教育领域改革的不断深入,促进了教育模式的改革变化,校园信息化建设已经进入了一个新的历史时期。在这种背景下,国内外智慧校园建设工作受到普遍重视,并得以蓬勃发展。
智慧校园指的是信息化为基础构建起来的校园信息化教育管理的一种新的模式,智慧校园能够实现校园工作,学习和生活的一体化发展,在各种信息系统应用的基础上,能实现教学,科研管理和校园生活的有效融合。智慧校园建设所包括的内容很丰富,通过云计算,互联网技术将校园运行中的所有数据有效的联系在一起,通过相关软件系统的有效应用,实现学校智能监控和智能识别的综合信息服务平台的有效构建。智慧校园有三个基本特征,第一,智慧校园能够提供个性化的服务,通过智能化服务平台及智能感知功能,实现教育管理工作的个性化服务。第二,智慧校园是建立在互联网基础上的, 通过互联网实现信息服务与校园各种应用领域的结合。第三,智慧校园在个性化定制服务的基础上,能够为学校与外部世界的联系提供有效的平台和接口,促进学校资源与外部资源的有效融合。智慧校园是校园信息化的一种高级形式,通过智慧校园可以把学校的物理空间和数字空间结合起来,为师生学习生活,提供智能化的学习生活环境,为师生提供个性化的智能服务。
由于学院的不断壮大,学校管理工作的工作量越来越大,如果还是按原来的工作方式使用人工来进行处理,工作不仅越来越浪费人力、物力、财力,而且越来越难管理,迫切需要一个进行校园管理的软件系统。鉴于这种情况,计算机与通信学院在信息化建设中把教务管理系统也纳入其中,利用网络进行教务管理工作不仅省部分人力、物力、财力,更重要的是利用网络可以提高工作效率,便于整个学院相关管理工作的管理。
校园管理系统是一个实际应用的软件系统,做这样一个软件系统,不仅可以使我们可以更加了解软件开发的过程,而且把学到的理论知识应用到实际的软件开发过程中,进一步了解、掌握理论知识,为以后的工作学习积累经验。
智慧校园系统的使用者主要包含三种用户角色,其一是管理员角色,其二是老师角色,其三是学生角色。这三个角色的具体功能如下:
管理员角色:管理员登录智慧校园系统后可以进行相应的管理操作,主要包含:学生用户管理、老师信息管理、教室信息管理、宿舍信息管理、课程信息管理、个人信息管理、账户密码重置等操作。
老师用户角色:老师用户登录智慧校园系统后可以进行参与相关学生、课程、选课的相关操作以及个人信息管理等操作。
学生用户角色:学生进入系统后,主要查看自己的选修课程,在线选课,查看选修课程的得分等。
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
前端开发技术:layui+jquery+ajax+bootstrap
后台开发技术:SSM框架
课程管理主要对学校所开设相关专业课程进行信息管理,管理员登录后台进入作品课程管理操作界面,在此模块可以实现对课程信息添加、修改、删除,并可以根据名称进行查询等管理操作。界面展示如下图6-1所示:
图3-1 课程信息管理操作实现界面
学生信息管理主要对学校注册登陆的学生进行信息管理,管理员登录后台进入学生信息管理操作界面,在此模块可以实现对学生信息添加、修改、删除,并可以根据名称进行查询等管理操作。界面展示如下图6-2所示:
图3-2 学生管理操作界面
教师信息管理主要对学校注册登陆的教师进行信息管理,管理员登录后台进入教师信息管理操作界面,在此模块可以实现对教师信息添加、修改、删除,并可以根据名称进行查询等管理操作。界面展示如下图6-3所示:
图6-3教师管理操作界面
院系信息管理主要对学校开设的院系进行信息管理,管理员登录后台进入院系信息管理操作界面,在此模块可以实现对院系信息添加、修改、删除,并可以根据名称进行查询等管理操作。界面展示如下图6-4所示:
图6-4院系管理操作界面
宿舍信息管理模块主要包含对宿舍信息进行管理。系统管理员登录系统后,可以进入宿舍信息管理界面进行相关管理操作,主要包含对宿舍的添加、修改、删除和查询的相关管理操作。添加学生时可以指定学生所属的宿舍,分派指定宿舍入住。后台宿舍管理模块的相关管理操作界面如下图6-5所示:
图6-5宿舍管理操作界面
用户信息重置管理模块主要是对相关用户的密码等信息进行重置,以防止用户忘记密码操作。系统管理员登录系统后,可以进入密码重置信息管理界面进行相关管理操作,主要包含对老师、学生、工程等的密码重置操作。后台密码重置管理模块的相关管理操作界面如下图6-7所示:
图6-6密码重置操作界面
用户如果想要进行选课操作,首先要登录系统,才可展开相关的选课操作。用户登陆界面如下图6-8所示:
图6-7用户登录操作界面
教师登陆系统后可以在我的课程功能模块中查看当前选课的列表,并可对为参与选课的学生进行评分操作。操作界面如下图6-8、6-9所示:
图6-8我的课程功能界面
图6-9打分功能界面
学生用户进入系统后可以通过此模块修改自己的密码信息。密码修改操作界面如下图6-10所示:
图6-10修改密码功能界面图
用户/管理员想要退出系统,点击退出系统,便可退出当前系统,并返回登录界面。用户/管理员退出系统操作界面如下图6-11所示:
图6-12用户/管理员退出系统功能界面图
用户如果想要进行选课操作,首先要登录系统,才可展开相关的选课操作。用户登陆界面如下图6-13所示:
图6-13用户登录操作界面
学生登陆系统后可以在所有课程功能模块中查看当前选课的列表,并可以选修自己喜欢的课程,一个课程只能选修一次,不可重复选修。操作界面如下图6-14所示:
图6-14选修课程功能界面
学生用户进入系统后可以通过此模块查看自己己选修课程的信息,如果此课程还未结课,则可以实现退选操作。具体操作界面如下图6-15所示:
图6-15查看己选课程功能界面图
学生用户进入系统后可以通过此模块查看自己己选修课程结课的信息,如果此课程己结课,可以在此查看课程所修分数。具体操作界面如下图6-16所示:
图6-16查看己结课系统功能界面图
- package com.system.controller;
-
- import com.system.exception.CustomException;
- import com.system.po.*;
- import com.system.service.*;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- import javax.annotation.Resource;
- import java.util.List;
-
-
- @Controller
- @RequestMapping("/admin")
- public class AdminController {
-
- @Resource(name = "studentServiceImpl")
- private StudentService studentService;
-
- @Resource(name = "teacherServiceImpl")
- private TeacherService teacherService;
-
- @Resource(name = "courseServiceImpl")
- private CourseService courseService;
-
- @Resource(name = "collegeServiceImpl")
- private CollegeService collegeService;
-
- @Resource(name = "userloginServiceImpl")
- private UserloginService userloginService;
-
- @Autowired
- private DormitoryService dormitoryService;
- /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<学生操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
-
- // 学生信息显示
- @RequestMapping("/showStudent")
- public String showStudent(Model model, Integer page) throws Exception {
-
- List
list = null; - //页码对象
- PagingVO pagingVO = new PagingVO();
- //设置总页数
- pagingVO.setTotalCount(studentService.getCountStudent());
- if (page == null || page == 0) {
- pagingVO.setToPageNo(1);
- list = studentService.findByPaging(1);
- } else {
- pagingVO.setToPageNo(page);
- list = studentService.findByPaging(page);
- }
-
- model.addAttribute("studentList", list);
- model.addAttribute("pagingVO", pagingVO);
-
- return "admin/showStudent";
-
- }
-
- // 添加学生信息页面显示
- @RequestMapping(value = "/addStudent", method = {RequestMethod.GET})
- public String addStudentUI(Model model) throws Exception {
-
- List
list = collegeService.finAll(); -
- model.addAttribute("collegeList", list);
-
- //查询宿舍楼
- List
buildingList = dormitoryService.findBuildings(); - model.addAttribute("buildingList", buildingList);
- return "admin/addStudent";
- }
-
- // 添加学生信息操作
- @RequestMapping(value = "/addStudent", method = {RequestMethod.POST})
- public String addStudent(StudentCustom studentCustom, Model model) throws Exception {
-
- Boolean result = studentService.save(studentCustom);
-
- if (!result) {
- model.addAttribute("message", "学号重复");
- return "error";
- }
- //添加成功后,也添加到登录表
- Userlogin userlogin = new Userlogin();
- userlogin.setUsername(studentCustom.getUserid().toString());
- userlogin.setPassword("123");
- userlogin.setRole(2);
- userloginService.save(userlogin);
-
- //重定向
- return "redirect:/admin/showStudent";
- }
-
- // 修改学生信息页面显示
- @RequestMapping(value = "/editStudent", method = {RequestMethod.GET})
- public String editStudentUI(Integer id, Model model) throws Exception {
- if (id == null) {
- //加入没有带学生id就进来的话就返回学生显示页面
- return "redirect:/admin/showStudent";
- }
- StudentCustom studentCustom = studentService.findById(id);
- if (studentCustom == null) {
- throw new CustomException("未找到该名学生");
- }
- List
list = collegeService.finAll(); -
- model.addAttribute("collegeList", list);
- model.addAttribute("student", studentCustom);
- //查询宿舍楼
- List
buildingList = dormitoryService.findBuildings(); - model.addAttribute("buildingList", buildingList);
-
- return "admin/editStudent";
- }
-
- // 修改学生信息处理
- @RequestMapping(value = "/editStudent", method = {RequestMethod.POST})
- public String editStudent(StudentCustom studentCustom) throws Exception {
-
- studentService.updataById(studentCustom.getUserid(), studentCustom);
-
- //重定向
- return "redirect:/admin/showStudent";
- }
-
- // 删除学生
- @RequestMapping(value = "/removeStudent", method = {RequestMethod.GET} )
- private String removeStudent(Integer id) throws Exception {
- if (id == null) {
- //加入没有带学生id就进来的话就返回学生显示页面
- return "admin/showStudent";
- }
- studentService.removeById(id);
- userloginService.removeByName(id.toString());
-
- return "redirect:/admin/showStudent";
- }
-
- // 搜索学生
- @RequestMapping(value = "selectStudent", method = {RequestMethod.POST})
- private String selectStudent(String findByName, Model model) throws Exception {
-
- List
list = studentService.findByName(findByName); -
- model.addAttribute("studentList", list);
- return "admin/showStudent";
- }
-
- /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<教师操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
-
- // 教师页面显示
- @RequestMapping("/showTeacher")
- public String showTeacher(Model model, Integer page) throws Exception {
-
- List
list = null; - //页码对象
- PagingVO pagingVO = new PagingVO();
- //设置总页数
- pagingVO.setTotalCount(teacherService.getCountTeacher());
- if (page == null || page == 0) {
- pagingVO.setToPageNo(1);
- list = teacherService.findByPaging(1);
- } else {
- pagingVO.setToPageNo(page);
- list = teacherService.findByPaging(page);
- }
-
- model.addAttribute("teacherList", list);
- model.addAttribute("pagingVO", pagingVO);
-
- return "admin/showTeacher";
-
- }
-
- // 添加教师信息
- @RequestMapping(value = "/addTeacher", method = {RequestMethod.GET})
- public String addTeacherUI(Model model) throws Exception {
-
- List
list = collegeService.finAll(); -
- model.addAttribute("collegeList", list);
-
- return "admin/addTeacher";
- }
-
- // 添加教师信息处理
- @RequestMapping(value = "/addTeacher", method = {RequestMethod.POST})
- public String addTeacher(TeacherCustom teacherCustom, Model model) throws Exception {
-
- Boolean result = teacherService.save(teacherCustom);
-
- if (!result) {
- model.addAttribute("message", "工号重复");
- return "error";
- }
- //添加成功后,也添加到登录表
- Userlogin userlogin = new Userlogin();
- userlogin.setUsername(teacherCustom.getUserid().toString());
- userlogin.setPassword("123");
- userlogin.setRole(1);
- userloginService.save(userlogin);
-
- //重定向
- return "redirect:/admin/showTeacher";
- }
-
- // 修改教师信息页面显示
- @RequestMapping(value = "/editTeacher", method = {RequestMethod.GET})
- public String editTeacherUI(Integer id, Model model) throws Exception {
- if (id == null) {
- return "redirect:/admin/showTeacher";
- }
- TeacherCustom teacherCustom = teacherService.findById(id);
- if (teacherCustom == null) {
- throw new CustomException("未找到该名学生");
- }
- List
list = collegeService.finAll(); -
- model.addAttribute("collegeList", list);
- model.addAttribute("teacher", teacherCustom);
-
-
- return "admin/editTeacher";
- }
-
- // 修改教师信息页面处理
- @RequestMapping(value = "/editTeacher", method = {RequestMethod.POST})
- public String editTeacher(TeacherCustom teacherCustom) throws Exception {
-
- teacherService.updateById(teacherCustom.getUserid(), teacherCustom);
-
- //重定向
- return "redirect:/admin/showTeacher";
- }
-
- //删除教师
- @RequestMapping("/removeTeacher")
- public String removeTeacher(Integer id) throws Exception {
- if (id == null) {
- //加入没有带教师id就进来的话就返回教师显示页面
- return "admin/showTeacher";
- }
- teacherService.removeById(id);
- userloginService.removeByName(id.toString());
-
- return "redirect:/admin/showTeacher";
- }
-
- //搜索教师
- @RequestMapping(value = "selectTeacher", method = {RequestMethod.POST})
- private String selectTeacher(String findByName, Model model) throws Exception {
-
- List
list = teacherService.findByName(findByName); -
- model.addAttribute("teacherList", list);
- return "admin/showTeacher";
- }
-
- /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<课程操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
-
- // 课程信息显示
- @RequestMapping("/showCourse")
- public String showCourse(Model model, Integer page) throws Exception {
-
- List
list = null; - //页码对象
- PagingVO pagingVO = new PagingVO();
- //设置总页数
- pagingVO.setTotalCount(courseService.getCountCouse());
- if (page == null || page == 0) {
- pagingVO.setToPageNo(1);
- list = courseService.findByPaging(1);
- } else {
- pagingVO.setToPageNo(page);
- list = courseService.findByPaging(page);
- }
-
- model.addAttribute("courseList", list);
- model.addAttribute("pagingVO", pagingVO);
-
- return "admin/showCourse";
-
- }
-
- //添加课程
- @RequestMapping(value = "/addCourse", method = {RequestMethod.GET})
- public String addCourseUI(Model model) throws Exception {
-
- List
list = teacherService.findAll(); - List
collegeList = collegeService.finAll(); -
- model.addAttribute("collegeList", collegeList);
- model.addAttribute("teacherList", list);
-
- return "admin/addCourse";
- }
-
- // 添加课程信息处理
- @RequestMapping(value = "/addCourse", method = {RequestMethod.POST})
- public String addCourse(CourseCustom courseCustom, Model model) throws Exception {
-
- Boolean result = courseService.save(courseCustom);
-
- if (!result) {
- model.addAttribute("message", "课程号重复");
- return "error";
- }
-
-
- //重定向
- return "redirect:/admin/showCourse";
- }
-
- // 修改教师信息页面显示
- @RequestMapping(value = "/editCourse", method = {RequestMethod.GET})
- public String editCourseUI(Integer id, Model model) throws Exception {
- if (id == null) {
- return "redirect:/admin/showCourse";
- }
- CourseCustom courseCustom = courseService.findById(id);
- if (courseCustom == null) {
- throw new CustomException("未找到该课程");
- }
- List
list = teacherService.findAll(); - List
collegeList = collegeService.finAll(); -
- model.addAttribute("teacherList", list);
- model.addAttribute("collegeList", collegeList);
- model.addAttribute("course", courseCustom);
-
-
- return "admin/editCourse";
- }
-
- // 修改教师信息页面处理
- @RequestMapping(value = "/editCourse", method = {RequestMethod.POST})
- public String editCourse(CourseCustom courseCustom) throws Exception {
-
- courseService.upadteById(courseCustom.getCourseid(), courseCustom);
-
- //重定向
- return "redirect:/admin/showCourse";
- }
-
- // 删除课程信息
- @RequestMapping("/removeCourse")
- public String removeCourse(Integer id) throws Exception {
- if (id == null) {
- //加入没有带教师id就进来的话就返回教师显示页面
- return "admin/showCourse";
- }
- courseService.removeById(id);
-
- return "redirect:/admin/showCourse";
- }
-
- //搜索课程
- @RequestMapping(value = "selectCourse", method = {RequestMethod.POST})
- private String selectCourse(String findByName, Model model) throws Exception {
-
- List
list = courseService.findByName(findByName); -
- model.addAttribute("courseList", list);
- return "admin/showCourse";
- }
-
- /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<其他操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
-
- // 普通用户账号密码重置
- @RequestMapping("/userPasswordRest")
- public String userPasswordRestUI() throws Exception {
- return "admin/userPasswordRest";
- }
-
- // 普通用户账号密码重置处理
- @RequestMapping(value = "/userPasswordRest", method = {RequestMethod.POST})
- public String userPasswordRest(Userlogin userlogin) throws Exception {
-
- Userlogin u = userloginService.findByName(userlogin.getUsername());
-
- if (u != null) {
- if (u.getRole() == 0) {
- throw new CustomException("该账户为管理员账户,没法修改");
- }
- u.setPassword(userlogin.getPassword());
- userloginService.updateByName(userlogin.getUsername(), u);
- } else {
- throw new CustomException("没找到该用户");
- }
-
- return "admin/userPasswordRest";
- }
-
- // 本账户密码重置
- @RequestMapping("/passwordRest")
- public String passwordRestUI() throws Exception {
- return "admin/passwordRest";
- }
-
- // 显示院系列表
- @RequestMapping(value = "/showColleges")
- public String showColleges(Model model) throws Exception {
-
- List
colleges = collegeService.finAll(); - model.addAttribute("colleges", colleges);
-
- return "admin/showCollegeList";
- }
-
- // 跳转到添加院系页面
- @RequestMapping(value = "/toaddCollege")
- public String toaddCollege(Model model) throws Exception {
-
- return "admin/addCollege";
- }
- // 添加院系
- @RequestMapping(value = "/saveCollege")
- public String addCollege(Model model,College college) throws Exception {
-
- collegeService.addCollege(college);
-
- return "redirect:/admin/showColleges";
- }
-
- // 跳转到修改院系页面
- @RequestMapping(value = "/toeditCollege")
- public String toeditCollege(Model model,Integer id) throws Exception {
-
- College college = collegeService.findCollegeById(id);
- model.addAttribute("college", college);
-
- return "admin/editCollege";
- }
-
- // 更新院系
- @RequestMapping(value = "/updateCollege")
- public String updateCollege(Model model,College college) throws Exception {
-
- collegeService.updateCollege(college);
-
- return "redirect:/admin/showColleges";
- }
-
- /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<宿舍操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
- // 显示宿舍列表
- @RequestMapping(value = "/showDormitory")
- public String showDormitory(Model model) throws Exception {
-
- List
dormitories = dormitoryService.findAll(); - model.addAttribute("dormitories", dormitories);
-
- return "admin/showDormitoryList";
- }
-
- // 跳转到添加宿舍页面
- @RequestMapping(value = "/toaddDormitory")
- public String toaddDormitory(Model model) throws Exception {
-
- return "admin/addDormitory";
- }
- // 添加宿舍
- @RequestMapping(value = "/saveDormitory")
- public String addDormitory(Model model,Dormitory dormitory) throws Exception {
-
- dormitoryService.addDormitory(dormitory);
-
- return "redirect:/admin/showDormitory";
- }
-
- // 跳转到修改宿舍页面
- @RequestMapping(value = "/toeditDormitory")
- public String toeditDormitory(Model model,Integer id) throws Exception {
-
- Dormitory dormitory = dormitoryService.findDormitoryById(id);
- model.addAttribute("dormitory", dormitory);
-
- return "admin/editDormitory";
- }
-
- // 更新宿舍
- @RequestMapping(value = "/updateDormitory")
- public String updateDormitory(Model model,Dormitory dormitory) throws Exception {
-
- dormitoryService.updateDormitory(dormitory);
-
- return "redirect:/admin/showDormitory";
- }
-
- // 查询房间列表
- @RequestMapping(value = "/findRooms")
- @ResponseBody
- public List
findRooms(String building) throws Exception { -
- List
roomList = dormitoryService.findRooms(building); -
- return roomList;
- }
- }
在信息技术高速发展的今天,新知识、新技术层出不穷,计算机技术早已广泛的应用于各行各业之中,利用计算机的强大数据处理能力和辅助决策能力叫,实现行业管理的规范化、标准化、效率化。
管理信息系统(Management Information System,简称MIS〉是一个以人为主导,利用计算机软硬件技术以及网络通信技术,实现对信息的收集、传输、储存、更新。
目前,管理信息系统广泛采用WEB技术作为开发的主要技术。在经过多年的技术积累与更新,WEB技术已经从一种简单的信息浏览和信息交互平台发展为复杂的企业级应用。
目前宠物宠物医院一直以来都是使用传统的人工方式管理各种文件档案,对宠物诊疗等重要信息进行人工手写记录,工作效率低,且时间一长,将产生大量文件,这对于文件的查找、信息查询造成很多困难,存在着许多缺点。随着社区越来越多的家庭开始饲养宠物,宠物宠物医院管理方法落后的问题越来越明显,管理上面临的问题越来越突出。
为了能够方便宠物医院的管理,一套完善的管理机制是必不可少的,也是宠物医院提供良好服务质量的一个前提,而应用信息技术的现代化宠物宠物医院管理系统已成为宠物宠物医院运营必不可少的基础设施与技术支撑。
宠物宠物医院管理系统的应用,不仅可以实现将宠物宠物医院工作中的挂号业务、诊疗业务、收费业务、宠物住院业务、宠物美容业务等有机的结合起来;还可以通过建立宠物档案,帮助医生更好更及时的了解宠物病情,制定宠物治疗计划,满足宠物主人的治疗需求,同时宠物档案的建立也有利于宠物的防疫工作。除此之外,管理系统对用户权限划分,帮助宠物医院规范化工作流程,提高工作效率,全面提高宠物宠物医院的管理水平。
因此如何利用计算机技术实现宠物宠物医院信息化管理是一个值得研究的问题。基于这个背景,本组决定开发一套适合宠物宠物医院的信息管理系统。