课程设计任务书宠物医院管理系统摘要:随着计算机性能不断提高,价格不断下降,计算机已经在宠物医院医疗、教学、科研、管理等方面得到越来越广泛的应用。
计算机化的宠物医院信息系统已经成为现代化宠物医院运营过程中必不可少的基础设施与技术支撑环境。
就好像一个现代化宠物医院的成功运行离不开功能完整、美观舒适的建筑物,技术娴熟的医护人员,功能齐全、高精尖的医疗设备一样, 它也离不开计算机化的宠物医院信息系统。
现在国内外也有很多宠物医院信息管理管理的软件,采用的技术也是多种多样,如基于JSP、FTP模式,但大多数宠物医院信息管理系统主要用于大型宠物医院的关键部门。
至于小型宠物医院,利用宠物医院信息管理系统组织管理教学活动的并不多。
本系统是采取B/S结构,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器;采用Java作开发工具,Java是一种跨平台,适合于分布式环境的面向对象编程语言。
它具有简单性、分布式、平台无关、可移植、高性能、多线程、动态性等特性;数据库采用MySQL,世界范围内得到主流应用的关系数据库系统。
关键词:Java JSP MySQL Servlet 宠物医院管理目录:宠物医院管理系统 (2)第1章绪论 (1)1.1设计背景 (1)1.2开发意义 (1)1.3开发工具及其技术介绍 (2)第2 章需求分析 (3)2.1系统功能描述 (3)2.2流程分析 (4)第3章系统设计与实现 (5)3.1 数据库的设计 (5)3.2 数据库的ER图 (5)3.3 数据库物理结构 (7)第4章结果与结论 (8)4.1 各个页面的实现 (8)4.2 部分代码 (10)4.3系统测试 (13)第5章收获与致谢 (14)5.1收获 (14)5.2致谢 (14)第6章参考文献 (14)第1章绪论1.1设计背景目前,国内外宠物医院信息管理管理一般采用两种方式:一种纯手工管理;另一种则是利用一些较老的或是以别的系统为底板改版而成的系统来进行管理。
但这两种方法都有各自的弊端:前一种方法由于参与管理者的文化水平不一,字迹不一,互相之间会导致信息传达不便,而且纸质信息传载媒体有着一个很大的弱点就是容易损坏,造成信息丢失;后一种方法虽然解决了信息传达、信息保存的问题。
但存在一个更致命的缺点:系统安全问题得不到保证。
在当前的信息化时代中,任何宠物医院,都需要一个实用的宠物医院信息管理系统来规范宠物医院信息管理管理,这将会大大提高宠物医院的管理水平,优化资源,实现效益的最大化。
针对国内外对宠物医院信息管理软件的巨大需要和基本需要,一个好的宠物医院信息管理软件,必须功能齐全,操作简便,向用户展示友善的操作界面。
在完善功能的同时又必须兼顾系统的灵活性,安全性,健壮性。
一个好的教学管理系统,不管是计算机专业人员还是其他用户都能很快上手,操作简单,便于安装,容易普及。
1.2开发意义由于宠物医院的特殊定位,这其中的信息管理流程,需要以一个规范的MIS来管理。
宠物医院信息管理系统的优势主要表现在三个方面:1、宠物医院信息管理无纸化,环保又方便。
传统的宠物医院信息管理方式,都是经由工作从员手工记录存档。
这种传统的纸质宠物医院信息管理管理,一是会有很大的体力消耗,二是在精力上也是不小的付出,而且这种辛苦在很多时候往往没能得到满意的回复。
而无纸化宠物医院信息管理,只需在电脑前点点鼠标,在体力上几乎没有多大的消耗,而且在环保、效率、针对性教学指导方面做得要比传统的宠物医院信息管理管理科学得多。
2、科学管理,安全可靠。
传统的宠物医院信息管理管理方式,都是一份份独立的宠物医院信息管理,一个部门对应一份,而这么一撂的设计,经常会由于各种原因,丢失或是污损,给宠物医院信息管理管理和教学进程带来很大的麻烦和不便。
而宠物医院信息管理系统的动作,只需做好系统数据库的保护,以上问题可以迎刃而解了。
3、简化工作,促进其他方面的综合发展。
由于宠物医院信息管理系统的介入运行,可以使医生腾出更多的时间,做更多针对性的个性化医疗服务,从而使每个小动物都有机会享受更多的服务。
1.3开发工具及其技术介绍(1)Eclipse概述Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
(2)Tomcat概述Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。
实际上Tomcat是Apache服务器的扩展,但运行时它是独立运行的,所以当你运行Tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
(3)MySQL概述MySQL是一个关系型数据库管理系统,目前属于Oracle公司[3]。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型系统的开发都选择MySQL作为数据库。
(4)开发技术本系统使用JSP + Servlet技术,采用Eclipse作为开发工具,使用MySQL数据库,同时结合JavaScript和CSS执行动态、交互的Web服务器应用程序。
实现了宠物医院管理系统的开发与设计。
第2 章需求分析2.1系统功能描述经过前期的深入调查和研究,总结出该系统需要完成的一些具体功能,分析如下:管理员管理:能够完成管理员对用户、宠物和医生的信息管理(用户信息查询、增加、删除;医生信息查询、修改、删除;宠物信息查询、修改),以及医生账号的授权和管理员账号密码的更改。
用户管理:能够完成注册登录以及添加宠物相关基本信息和症状信息的功能。
医生管理:能够完成个人信息和用户以及宠物信息的查询、根据宠物症状进行初步诊断、密码修改的功能。
如图2-1为该系统的功能结构图。
图2-1功能模块图2.2流程分析如下图2-2所示:图2-2流程图第3章系统设计与实现3.1 数据库的设计本系统包括用户、医生、管理员、宠物4个主要实体。
用户实体型属性有账号、姓名、登录密码。
医生实体型属性有医生编号、账号、密码。
管理员实体性属性有账号、密码、名字、电话。
宠物实体性属性有名字、年龄、体重、症状。
3.2 数据库的ER图各个实体具体的描述属性图如下:管理员医生用户宠物3.3 数据库物理结构数据库逻辑设计主要是把数据库概念设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
它包括数据项、记录及记录间的联系、安全性和一致性约束等等。
导出的逻辑结构是否与概念模式一致,从功能和性能_上是否满足用户的要求,要进行模式评价。
本系统数据库名称为project1,数据库中包括:1.系统管理员表(d_admin) 2.用户表(d_student )3.医生表( d_doctor ) 4.宠物表(d_pet)5.诊断表(d_treatment) 各表数据结构如下:1.系统管理员表(d_admin)2.用户表(d_student )3.医生表( d_doctor )4.宠物表(d_pet)5.诊断表(d_treatment)第4章结果与结论4.1 各个页面的实现(1)用户登录界面,登录之后可以添加宠物信息和症状信息,如下图所示:(2)医生界面,登录之后可以查看用户和宠物的信息,更改自己的信息,效果如下图所示:(3)管理员界面,登录之后可以查看用户、医生、宠物的信息以及删减,可以生成医生的账号和初始密码,4.2 部分代码package com.itheima.controller.admin;import com.itheima.po.*;import com.itheima.service.AdminService;import erService;import com.itheima.util.*;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;/*** 用户控制器类*/@Controllerpublic class AdminController {// 依赖注入@Autowiredprivate AdminService adminService;@AutowiredUserService studentService;@RequestMapping(value = "/login")public String login( Admin admin, Model model, HttpSession session, HttpServletRequest request) { // 通过账号和密码查询用户// admin.setA_password(MD5Util.MD5EncodeUtf8(admin.getA_password()));Admin ad = adminService.findAdmin(admin);if(ad!=null){session.setAttribute("ad", ad);return "homepage";}model.addAttribute("msg", "用户名或密码错误,请重新登录!");return "login";}/*** 退出登录*/@RequestMapping(value = "/loginOut")public String loginOut(Admin admin, Model model, HttpSession session) { session.invalidate();return "login";}/*** 分页查询*/@RequestMapping(value = "/findAdmin")public String findAdmin(String a_username, String a_describe,Integer pageIndex,Integer a_id ,Integer pageSize, Model model) {PageInfo<Admin> ai = adminService.findPageInfo(a_username,a_describe,a_id,pageIndex,pageSize);model.addAttribute("ai",ai);return "admin_list";}/*** 添加管理员信息*/@RequestMapping(value = "/addAdmin" ,method = RequestMethod.POST)@ResponseBodypublic String addAdmin( @RequestBody Admin admin) {// admin.setA_password(MD5Util.MD5EncodeUtf8(admin.getA_password()));int a = adminService.addAdmin(admin);return "admin_list";}/*** 删除管理员信息;将请求体a_id写入参数a_id*/@RequestMapping( "/deleteAdmin")@ResponseBodypublic String deleteAdmin(Integer a_id) {int a = adminService.deleteAdmin(a_id);return "admin_list";}@RequestMapping( value = "/updateAdmin", method = RequestMethod.POST) public String updateAdmin(Admin admin) {// admin.setA_password(MD5Util.MD5EncodeUtf8(admin.getA_password()));int a = adminService.updateAdmin(admin);return "redirect:/findAdmin";}/*** 根据管理员Id搜索;将请求数据a_id写入参数a_id*/@RequestMapping( "/findAdminById")public String findAdminById(Integer a_id,HttpSession session) {Admin a= adminService.findAdminById(a_id);session.setAttribute("a",a);return "admin_edit";}@RequestMapping(value = "/finduser")public String finduser(String t_name, Integer t_tid, Integer pageIndex, Integer pageSize, Model model) {PageInfo<User> pi = studentService.findPageInfo(t_name,t_tid,null,null,pageIndex,pageSize);model.addAttribute("pi",pi);return "user_list";}@RequestMapping(value = "/finddoc")public String finddoc(String t_name, Integer t_tid, Integer pageIndex, Integer pageSize, Model model) {PageInfo<Doctor> pi = studentService.findDocPageInfo(pageIndex,pageSize);model.addAttribute("pi",pi);model.addAttribute("t_name",t_name);model.addAttribute("t_tid",t_tid);return "doctor_list";}@RequestMapping(value = "/findpet")public String findpet (Integer pageIndex, Integer pageSize, Model model) {PageInfo<Pet> pi = studentService.findPetPageInfo(pageIndex,pageSize);model.addAttribute("pi",pi);return "pet_list";}@RequestMapping("/deletedoctor")public String deletedoctor(@RequestParam String s_id){adminService.deletedoctorByid(s_id);return "redirect:/finddoc";}@RequestMapping("/deleteuser")public String deleteuser(String id){adminService.deleteUserByid(id);return "redirect:/finduser";}@RequestMapping("/deletepet")public String deletepet(String id){adminService.deletepetByid(id);return "redirect:/findpet";}@RequestMapping("/addDoctoer")public String addDoctoer(@RequestBody Doctor doctor){adminService.addDoctor(doctor);return "redirect:/finddoc";}}4.3系统测试根据系统测试目的并结合面向对象方法,我们给出了如下系统测试方案:(1)尽早的、不断的进行系统测试。