Java项目:springboot私人牙医管理系统

108 篇文章 2 订阅

作者主页:源码空间站2022

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

私人牙医管理系统。该项目分为前后台,共三种角色:管理员、医生、客户;

前台主要功能包括:首页、医生介绍、新闻资讯、关于我们、联系我们等功能;
后台管理员主要功能包括:
客户管理:客户信息统计、客户列表、添加客户;
医生管理:医生列表、病例列表、新增病例、添加医生;
药品管理:药品信息统计、药品列表、药品添加;
文章管理:文章列表、添加文章;

医生登录主要功能包括:
病例管理:在诊病历、历史病例、新增病例;
客户管理:客户列表、新增客户、预约信息;

普通客户登录主要功能包括:
基本信息、修改密码、预约信息、病例查看;

共10张表;

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 

6.数据库:MySql 8.0版本;

技术栈

1. 后端:SpringBoot

2. 前端:html+jQuery+layui+echarts

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 将项目中db.properties配置文件中的数据库配置改为自己的配置

3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;

4. 运行项目,
前台网站运行地址:http://localhost:8087/user/toCusWel
普通用户登录地址:http://localhost:8087/login/toUserLogin

后台运行地址:管理员及医生登录:http://localhost:8087/login/toDocLogin

运行截图

 

后台界面

代码相关

登录拦截器

@Component
public class UserLoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                             Object handler) throws Exception {
        HttpSession session = request.getSession(true);
        Object username = session.getAttribute("userName");
        String userId = (String) session.getAttribute("userId");
        if(username != null && userId != null){
            return true;
        }else {
            response.sendRedirect(request.getContextPath()+"/login/toDocLogin");
            return false;
        }
    }
}

 客户管理控制器

@Controller
@RequestMapping("/admin")
public class AdminHandler {
    @Resource
    private CustomerService customerService;

    @RequestMapping("/toCusList")
    public String toList(){
        return "admin/customer/cus_list";
    }

    @RequestMapping("/toCaseList")
    public String toCaseList(){
        return "admin/doctor/case_list";
    }

    @RequestMapping("/toAdminRePass")
    public String toRePass(){
        return "admin/admin_mess";
    }

    @RequestMapping("/toIndex")
    public String toIndex(){
        return "admin/customer/cus_index";
    }

    @RequestMapping("/toAdminWel")
    public String toWel(HttpSession session){
        String userId = (String) session.getAttribute("userId");
        if(userId.equals("admin")){
            return "admin/admin_wel";
        }else {
            return "redirect:/login/toDocLogin";
        }
    }

    @RequestMapping("/toAddCus")
    public String toAddCus(){
        return "admin/customer/cus_add";
    }

    // 按ID搜索客户信息
    @ResponseBody
    @GetMapping("/findById")
    public LayData findById(String customerId){
        LayData layData = customerService.layFindById(customerId);
        return layData;
    }

    // 按Name搜索客户信息
    @ResponseBody
    @GetMapping("/findByName")
    public LayData findByName(String customerName){
        LayData layData = customerService.layFindByName(customerName);
        return layData;
    }

    // 按ID删除客户信息
    @ResponseBody
    @GetMapping("/deleteById")
    public Integer deleteById(String customerId){
        Integer index = customerService.deleteById(customerId);
        return index;
    }

    //    执行弹出窗的操作
    @RequestMapping("/toCusInfo")
    public ModelAndView toCusInfo(String customerId){
        ModelAndView model = new ModelAndView();
        model.setViewName("admin/customer/cus_info");
        Customer customer = customerService.findById(customerId);
        model.addObject("cus",customer);
        return model;
    }
    // 修改客户信息
    @ResponseBody
    @RequestMapping("/saveCus")
    public Integer saveCus(@RequestBody Customer customer){
        System.out.println("获取到的Customer信息:" + customer);
        int index = customerService.update(customer);
        return index;
    }
    // 新增客户信息
    @ResponseBody
    @RequestMapping("/insertCus")
    public Integer insertCus(@RequestBody Customer customer){
        System.out.println("insertCus中的Customer信息:" + customer);
        int index = customerService.save(customer);
        return index;
    }
    @ResponseBody
    @RequestMapping("/toCusIndex")
    private CustomerAreaData toCusIndex(){
        CustomerAreaData cusAreaData = customerService.findCusAreaData();
        return cusAreaData;
    }
    //获取客户年龄段接口
    @ResponseBody
    @RequestMapping("/toCusIndex1")
    private CustomerLoginData toCusIndex1(){
        CustomerLoginData cusLoginMes = customerService.findCusLoginMes();
        return cusLoginMes;
    }
    @ResponseBody
    @RequestMapping("/toCusIndex2")
    private List<CustomerSexData> toCusIndex2(){
        List<CustomerSexData> cusSexData = customerService.findCusSexData();
        return cusSexData;
    }
}

客户逻辑

@Service
public class CustomerService {
    @Resource
    private CustomerRepository customerRepository;
    @Resource
    private CaseInfoRepository caseInfoRepository;
    @Resource
    private LoginInfoRepository loginInfoRepository;
    public int getAllCount(){
        return customerRepository.getAllCount();
    }

    public LayData findAllByDoc(String docId){
        LayData layData = new LayData();
        List<Customer> cusList = new ArrayList<>();
        List<CaseInfo> byDocId = caseInfoRepository.findByDocId(docId);
        Set<String> cusId = new HashSet<>();
        // 去除重复
        for (CaseInfo c:byDocId) {
            cusId.add(c.getCustomerId());
        }
        for(String id : cusId){
            Customer byId = customerRepository.findById(id);
            cusList.add(byId);
        }
        if(cusList.size() > 0){
            layData.setCode(0);
            layData.setData(cusList);
            layData.setCount(cusList.size());
            layData.setMsg("该医生的所有客户");
        }else {
            layData.setCode(0);
        }
        return layData;
    }

    public LayData findAll(Integer page, Integer limit) {
        LayData cusList = new LayData();
        List<Customer> all = customerRepository.findAll(((page - 1) * limit), limit);
        int count = customerRepository.getAllCount();
        if (all != null) {
            cusList.setCode(0);
            cusList.setData(all);
            cusList.setCount(count);
            cusList.setMsg("所有用户信息");
        } else {
            cusList.setCode(0);
        }
        return cusList;
    }
    // 分页展示查询
    public List<Customer> findAllCus() {
        int allCount = customerRepository.getAllCount();
        return customerRepository.findAll(0, allCount);
    }

    public Customer findById(String customerId) {
        Customer customer = customerRepository.findById(customerId);
        return customer;
    }
    // 用户列表界面:按ID搜索
    public LayData<Customer> layFindById(String customerId) {
        LayData cus = new LayData();
        Customer customer = customerRepository.findById(customerId);
        if(customer != null){
            List<Customer> cust = new ArrayList<>();
            cust.add(customer);
            cus.setData(cust);
            cus.setCount(1);
            cus.setMsg("按ID查找信息");
            cus.setCode(0);
        }else {
            cus.setCode(0);
        }
        return cus;
    }
    // 用户列表界面:按Name搜索
    public LayData layFindByName(String customerName) {
        LayData cus = new LayData();
        List<Customer> byName = customerRepository.findByName(customerName);
        if(byName.size() > 0){
            cus.setData(byName);
            cus.setCount(byName.size());
            cus.setMsg("按Name查找信息");
            cus.setCode(0);
        }else {
            cus.setCode(0);
        }
        return cus;
    }

    public int save(Customer customer) {
        customer.setCustomerId(getCustomerId());
        LoginInfo loginInfo = new LoginInfo();
        loginInfo.setUserId(customer.getCustomerId());
        loginInfo.setUsername(customer.getCustomerName());
        loginInfo.setPassword("123123");
        loginInfo.setUserSort(1);
        Integer save = loginInfoRepository.save(loginInfo);
        System.out.println("客户 账号信息存储状态:" + save);
        return customerRepository.save(customer);
    }

    public int update(Customer customer) {
        return customerRepository.update(customer);
    }

    public Integer getCount(String CustomerIdPrefix) {
        return customerRepository.getCount(CustomerIdPrefix);
    }

    public Integer deleteById(String customerId) {
        Integer index = loginInfoRepository.deleteById(customerId);
        System.out.println("客户 账号信息删除结果:" + index);
        return customerRepository.deleteById(customerId);
    }

    /*管理员模块*/
    // 获取客户的住址数据(重点)
    public CustomerAreaData findCusAreaData() {
        CustomerAreaData index = new CustomerAreaData();
        List<CustomerAddress> addr = new ArrayList<>();
        int allCount = customerRepository.getAllCount();
        List<Customer> all = customerRepository.findAll(0, allCount);
        List<CustomerAddress> addr2 = new ArrayList<>();
        for (Customer customer : all) {
            // 每次循环开始前,先清空addr2
            addr2.clear();
            // 拷贝数组
            for (CustomerAddress cc : addr) {
                try {
                    addr2.add(cc.clone());
                } catch (CloneNotSupportedException e) {
                    e.printStackTrace();
                }
            }
            if (customer.getAddress() == null || !customer.getAddress().contains("省")) {
                continue;
            }
            String area = getArea(customer.getAddress());
            for (CustomerAddress c1 : addr) {
                if (area.equals(c1.getName())) {
                    c1.setValue(c1.getValue() + 1);
                    break;  //结束该循环
                }
            }
            if (null != addr && null != addr2) {
                if (addr.containsAll(addr2) && addr2.containsAll(addr)) {
                    CustomerAddress aa = new CustomerAddress();
                    aa.setValue(1);
                    aa.setName(area);
                    addr.add(aa);
                } else {
                    continue;
                }
            }
        }
        index.setAddressCount(addr);
        String[] areaName = new String[addr.size()];
        for (int j = 0; j < addr.size(); j++) {
            areaName[j] = addr.get(j).getName();
        }
        index.setAreaName(areaName);
        return index;
    }

    // 获取客户的年龄段信息
    public CustomerLoginData findCusLoginMes() {
        CustomerLoginData cLogin = new CustomerLoginData();
        int allCount = customerRepository.getAllCount();
        List<Customer> all = customerRepository.findAll(0, allCount);
        List<Integer> data = new ArrayList<>();
        Integer a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0, a8 = 0, a9 = 0, a10 = 0, a11 = 0, a12 = 0, a13 = 0;
        for (Customer cc : all) {
            if (cc.getAge() < 5) {
                a1++;
            } else if (cc.getAge() >= 5 && cc.getAge() < 10) {
                a2++;
            } else if (cc.getAge() >= 10 && cc.getAge() < 15) {
                a3++;
            } else if (cc.getAge() >= 15 && cc.getAge() < 20) {
                a4++;
            } else if (cc.getAge() >= 20 && cc.getAge() < 25) {
                a5++;
            } else if (cc.getAge() >= 25 && cc.getAge() < 30) {
                a6++;
            } else if (cc.getAge() >= 30 && cc.getAge() < 35) {
                a7++;
            } else if (cc.getAge() >= 35 && cc.getAge() < 40) {
                a8++;
            } else if (cc.getAge() >= 40 && cc.getAge() < 45) {
                a9++;
            } else if (cc.getAge() >= 45 && cc.getAge() < 50) {
                a10++;
            } else if (cc.getAge() >= 50 && cc.getAge() < 55) {
                a11++;
            } else if (cc.getAge() >= 55 && cc.getAge() < 60) {
                a12++;
            } else if (cc.getAge() >= 60) {
                a13++;
            }
        }
        data.add(a1);
        data.add(a2);
        data.add(a3);
        data.add(a4);
        data.add(a5);
        data.add(a6);
        data.add(a7);
        data.add(a8);
        data.add(a9);
        data.add(a10);
        data.add(a11);
        data.add(a12);
        data.add(a13);
        cLogin.setData(data);
        return cLogin;
    }

    //获取客户性别比例信息
    public List<CustomerSexData> findCusSexData(){
        List<CustomerSexData> sexData = new ArrayList<>();
        CustomerSexData sex1 = new CustomerSexData();
        CustomerSexData sex2 = new CustomerSexData();
        sex1.setValue(0);
        sex1.setName("男性");
        sex2.setValue(0);
        sex2.setName("女性");
        int allCount = customerRepository.getAllCount();
        List<Customer> all = customerRepository.findAll(0, allCount);
        for (Customer cc : all) {
            if(cc.getSex().equals("男")){
                sex1.setValue(sex1.getValue()+1);
            }else if(cc.getSex().equals("女")){
                sex2.setValue(sex2.getValue()+1);
            }
        }
        sexData.add(sex1);
        sexData.add(sex2);
        return sexData;
    }

    // 工具方法
    private String getArea(String address) {
        String s1;
        int index = address.indexOf("省");
        s1 = address.substring(0, index + 1);
        return s1;
    }

    // 自动生成下一客户ID
    private String getCustomerId() {
        String NextCustomerId = "";
        // 获取当前日期并转化为字符串
        SimpleDateFormat s = new SimpleDateFormat("yyyyMMdd");
        String s1 = s.format(new Date());
        // 获取该日期下已注册的客户数量
        Integer count = customerRepository.getCount(s1);
        // 改数量加1,获取下一个客户的ID尾号
        count++;
        // 若下一编号ID长度不足4位,则前面补0
        int length = count.toString().length();
        if (length < 4) {
            int i = 4 - length;
            for (int j = 0; j < i; j++) {
                NextCustomerId = NextCustomerId + "0";
            }
            NextCustomerId = s1 + NextCustomerId + count;
        }
        while (true){
            Customer byId = customerRepository.findById(NextCustomerId);
            if(byId == null){
                break;
            }else {
                String pro = NextCustomerId.substring(0, NextCustomerId.length() - length);
                String end = NextCustomerId.substring(NextCustomerId.length() - length);
                Integer num = Integer.parseInt(end);
                num++;
                NextCustomerId = pro + num;
            }
        }

        return NextCustomerId;
    }
}

如果也想学习本系统,下面领取。回复:043springboot

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
一、项目简介 本项目是一套基于SpringBoot的教务管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后台框架:SpringBoot ​数据库:MySQL 开发环境:JDK、IDEA、Tomcat 三、系统功能 本教务管理系统共包含三种角色:学生、教师和管理员,系统分为前台界面和后台管理。 该系统共分为七个功能模块:系统管理,考试管理,学生信息管理,教师信息管理,基本信息管理,后台管理和学生成绩管理。 1.系统管理模块 实现用户信息的管理,包括用户密码更改和注销功能,以便用户更改其个人帐户。 2.考试管理模块 添加,修改和删除每个年级每个专业班提供的针对特定科目的考试。此外,可以统一管理每个学期每个阶段的考试,包括考试的具体时间和地点。 3.学生管理模块 学生管理是该系统的核心模块,可以添加,删除,修改和查询诸如年级,专业班级,姓名,年龄和入学课程之类的信息。学生管理部统一管理学生注册信息,对其进行快速调查,以提高工作效率。 4.教师管理模块 管理学校在职和退休教师的信息,添加,修改和删除教师学校,姓名,年龄和学科等信息,并加快学校和教职员工的统一管理。人员信息,您可以查找一下。 5.基本信息管理模块 添加,修改和删除学校中每个年级建立的现有年级,班级和课程信息。可以对每个年级每个专业班级中开设的课程进行集中管理,学校可以集中管理基本信息并进行快速调查。 6.后台管理模块 修改教师和学生的通知。可以通知每个老师和学生。 7.学生成绩管理模块 查询和管理参加每项考试的所有学生的成绩。学校评估循序渐进的教育质量,为学生评估工作提供参考。它为学校后续工作的发展提供了基础。达到开发教育书籍的主要目的。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
一、项目简介 本项目是一套基于SpringBoot的图书管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后台框架:SpringBoot ​数据库:MySQL 开发环境:JDK、IDEA、Tomcat 三、系统功能 本图书管理系统主要包含两种角色:读者和管理员。读者只能对个人信息的查阅、修改,图书的查询,而管理员则可以进行图书信息及借阅信息的管理。 具体实现功能如下: (1)系统登录。分为普通读者登录和管理员登录。 (2)系统管理。系统管理包括管理员设置,以及图书类别设置。管理员设置包括管理员信息的设置以及密码的设置。图书类别的设置只有管理员才可以对他进行新增,修改和删除。 (3)图书管理。包括图书信息管理,图书信息查询。只有管理员才可以对图书进行管理,图书查询是帮助读者方便查找图书信息。 (4)读者管理。读者管理包括读者信息管理,以及读者信息的查询。读者信息查询可以根据读者的姓名和编号进行查询。读者信息管理只对管理员有用,只有管理员可以添加读者,修改和删除读者的信息。 (5)图书借阅管理。图书借阅包括图书的借阅,归还以及续借。图书的借阅以及归还只对管理员起作用,只有通过管理员才可以进行图书的借阅以及归还。读者只能对图书进行续借的操作。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值