开发者社区> 编程指南针> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

毕业设计:基于Web实现多用户宿舍管理系统

简介:   开发工具:IDEA /Eclipse 本系统基于jsp实现了一个宿舍管理系统,功能完整,界面美观大方,交互简洁方便,比较适合做毕业设计使用。主要分为三个角色用户:管理员,宿舍管理员,学生 系统管理员:用户管理、宿舍楼管理、楼管管理、缺勤管理。 宿舍管理员主要包括:    缺勤管理、学生管理 学生主要包括:缺勤查看
+关注继续查看

 项目编号:BS-GX-033

开发技术:

   后台:jsp+servlet+jdbc

   前台:jsp+bootstrap

运行环境:

   数据库:mysql5.7

   JDK: 1.8

   Maven: 3.9

  开发工具:IDEA /Eclipse

本系统基于jsp实现了一个宿舍管理系统,功能完整,界面美观大方,交互简洁方便,比较适合做毕业设计使用。主要分为三个角色用户:管理员,宿舍管理员,学生

系统管理员:用户管理、宿舍楼管理、楼管管理、缺勤管理。

宿舍管理员主要包括:

   缺勤管理、学生管理

学生主要包括:缺勤查看

系统 主要实现功能界面展示如下:

imageimage.gif编辑

管理员登陆

imageimage.gif编辑

学生管理

imageimage.gif编辑

宿舍楼管理

imageimage.gif编辑

缺勤管理

imageimage.gif编辑

宿舍管理员登陆

imageimage.gif编辑

缺勤管理

imageimage.gif编辑

学生登陆系统

imageimage.gif编辑

核心实现代码如下:

package com.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(name = "BlankServlet")
public class BlankServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession();
        Object currentUserType = session.getAttribute("currentUserType");
        if("admin".equals((String)currentUserType)) {
            request.setAttribute("mainPage", "admin/blank.jsp");
            request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);
        } else if("dormManager".equals((String)currentUserType)) {
            request.setAttribute("mainPage", "dormManager/blank.jsp");
            request.getRequestDispatcher("mainManager.jsp").forward(request, response);
        } else if("student".equals((String)currentUserType)) {
            request.setAttribute("mainPage", "student/blank.jsp");
            request.getRequestDispatcher("mainStudent.jsp").forward(request, response);
        }
    }
}

image.gif

package com.servlet;
import java.io.IOException;
import java.sql.Connection;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.dao.DormBuildDao;
import com.model.DormBuild;
import com.model.DormManager;
import com.model.PageBean;
import com.util.DbUtil;
import com.util.StringUtil;
@WebServlet(name = "DormBuildServlet")
public class DormBuildServlet extends HttpServlet {
    DbUtil dbUtil = new DbUtil();
    DormBuildDao dormBuildDao = new DormBuildDao();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        HttpSession session = request.getSession();
        String s_dormBuildName = request.getParameter("s_dormBuildName");
        String page = request.getParameter("page");
        String action = request.getParameter("action");
        DormBuild dormBuild = new DormBuild();
        if("preSave".equals(action)) {
            dormBuildPreSave(request, response);
            return;
        } else if("save".equals(action)){
            dormBuildSave(request, response);
            return;
        } else if("delete".equals(action)){
            dormBuildDelete(request, response);
            return;
        } else if("manager".equals(action)){
            dormBuildManager(request, response);
            return;
        } else if("addManager".equals(action)){
            dormBuildAddManager(request, response);
        } else if("move".equals(action)){
            managerMove(request, response);
        } else if("list".equals(action)) {
            if(StringUtil.isNotEmpty(s_dormBuildName)) {
                dormBuild.setDormBuildName(s_dormBuildName);
            }
            session.removeAttribute("s_dormBuildName");
            request.setAttribute("s_dormBuildName", s_dormBuildName);
        } else if("search".equals(action)){
            if(StringUtil.isNotEmpty(s_dormBuildName)) {
                dormBuild.setDormBuildName(s_dormBuildName);
                session.setAttribute("s_dormBuildName", s_dormBuildName);
            }else {
                session.removeAttribute("s_dormBuildName");
            }
        } else {
            if(StringUtil.isNotEmpty(s_dormBuildName)) {
                dormBuild.setDormBuildName(s_dormBuildName);
                session.setAttribute("s_dormBuildName", s_dormBuildName);
            }
            if(StringUtil.isEmpty(s_dormBuildName)) {
                Object o = session.getAttribute("s_dormBuildName");
                if(o!=null) {
                    dormBuild.setDormBuildName((String)o);
                }
            }
        }
        if(StringUtil.isEmpty(page)) {
            page="1";
        }
        Connection con = null;
        PageBean pageBean = new PageBean(Integer.parseInt(page), 5);
        request.setAttribute("pageSize", pageBean.getPageSize());
        request.setAttribute("page", pageBean.getPage());
        try {
            con=dbUtil.getCon();
            List<DormBuild> dormBuildList = dormBuildDao.dormBuildList(con, pageBean, dormBuild);
            int total=dormBuildDao.dormBuildCount(con, dormBuild);
            String pageCode = this.genPagation(total, Integer.parseInt(page), 5);
            request.setAttribute("pageCode", pageCode);
            request.setAttribute("dormBuildList", dormBuildList);
            request.setAttribute("mainPage", "admin/dormBuild.jsp");
            request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    private void managerMove(HttpServletRequest request,
                             HttpServletResponse response) {
        String dormBuildId = request.getParameter("dormBuildId");
        String dormManagerId = request.getParameter("dormManagerId");
        Connection con = null;
        try {
            con = dbUtil.getCon();
            dormBuildDao.managerUpdateWithId(con, dormManagerId, "0");
            request.getRequestDispatcher("dormBuild?action=manager&dormBuildId="+dormBuildId).forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void dormBuildAddManager(HttpServletRequest request,
                                     HttpServletResponse response) {
        String dormBuildId = request.getParameter("dormBuildId");
        String dormManagerId = request.getParameter("dormManagerId");
        Connection con = null;
        try {
            con = dbUtil.getCon();
            dormBuildDao.managerUpdateWithId(con, dormManagerId, dormBuildId);
            request.getRequestDispatcher("dormBuild?action=manager&dormBuildId="+dormBuildId).forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void dormBuildManager(HttpServletRequest request,
                                  HttpServletResponse response) {
        String dormBuildId = request.getParameter("dormBuildId");
        Connection con = null;
        try {
            con = dbUtil.getCon();
            List<DormManager> managerListWithId = dormBuildDao.dormManWithBuildId(con, dormBuildId);
            List<DormManager> managerListToSelect = dormBuildDao.dormManWithoutBuild(con);
            request.setAttribute("dormBuildId", dormBuildId);
            request.setAttribute("managerListWithId", managerListWithId);
            request.setAttribute("managerListToSelect", managerListToSelect);
            request.setAttribute("mainPage", "admin/selectManager.jsp");
            request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void dormBuildDelete(HttpServletRequest request,
                                 HttpServletResponse response) {
        String dormBuildId = request.getParameter("dormBuildId");
        Connection con = null;
        try {
            con = dbUtil.getCon();
            if(dormBuildDao.existManOrDormWithId(con, dormBuildId)) {
                request.setAttribute("error", "宿舍楼下有宿舍或宿管,不能删除该宿舍楼");
            } else {
                dormBuildDao.dormBuildDelete(con, dormBuildId);
            }
            request.getRequestDispatcher("dormBuild?action=list").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    private void dormBuildSave(HttpServletRequest request,
                               HttpServletResponse response)throws ServletException, IOException {
        String dormBuildId = request.getParameter("dormBuildId");
        String dormBuildName = request.getParameter("dormBuildName");
        String detail = request.getParameter("detail");
        DormBuild dormBuild = new DormBuild(dormBuildName, detail);
        if(StringUtil.isNotEmpty(dormBuildId)) {
            dormBuild.setDormBuildId(Integer.parseInt(dormBuildId));
        }
        Connection con = null;
        try {
            con = dbUtil.getCon();
            int saveNum = 0;
            if(StringUtil.isNotEmpty(dormBuildId)) {
                saveNum = dormBuildDao.dormBuildUpdate(con, dormBuild);
            } else {
                saveNum = dormBuildDao.dormBuildAdd(con, dormBuild);
            }
            if(saveNum > 0) {
                request.getRequestDispatcher("dormBuild?action=list").forward(request, response);
            } else {
                request.setAttribute("dormBuild", dormBuild);
                request.setAttribute("error", "保存失败");
                request.setAttribute("mainPage", "dormBuild/dormBuildSave.jsp");
                request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    private void dormBuildPreSave(HttpServletRequest request,
                                  HttpServletResponse response)throws ServletException, IOException {
        String dormBuildId = request.getParameter("dormBuildId");
        if(StringUtil.isNotEmpty(dormBuildId)) {
            Connection con = null;
            try {
                con = dbUtil.getCon();
                DormBuild dormBuild = dormBuildDao.dormBuildShow(con, dormBuildId);
                request.setAttribute("dormBuild", dormBuild);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    dbUtil.closeCon(con);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        request.setAttribute("mainPage", "admin/dormBuildSave.jsp");
        request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);
    }
    private String genPagation(int totalNum, int currentPage, int pageSize){
        int totalPage = totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;
        StringBuffer pageCode = new StringBuffer();
        pageCode.append("<li><a href='dormBuild?page=1'>首页</a></li>");
        if(currentPage==1) {
            pageCode.append("<li class='disabled'><a href='#'>上一页</a></li>");
        }else {
            pageCode.append("<li><a href='dormBuild?page="+(currentPage-1)+"'>上一页</a></li>");
        }
        for(int i=currentPage-2;i<=currentPage+2;i++) {
            if(i<1||i>totalPage) {
                continue;
            }
            if(i==currentPage) {
                pageCode.append("<li class='active'><a href='#'>"+i+"</a></li>");
            } else {
                pageCode.append("<li><a href='dormBuild?page="+i+"'>"+i+"</a></li>");
            }
        }
        if(currentPage==totalPage) {
            pageCode.append("<li class='disabled'><a href='#'>下一页</a></li>");
        } else {
            pageCode.append("<li><a href='dormBuild?page="+(currentPage+1)+"'>下一页</a></li>");
        }
        pageCode.append("<li><a href='dormBuild?page="+totalPage+"'>尾页</a></li>");
        return pageCode.toString();
    }
}

image.gif

package com.servlet;
import java.io.IOException;
import java.sql.Connection;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.dao.DormManagerDao;
import com.model.DormManager;
import com.model.PageBean;
import com.util.DbUtil;
import com.util.StringUtil;
@WebServlet(name = "DormManagerServlet")
public class DormManagerServlet extends HttpServlet {
    DbUtil dbUtil = new DbUtil();
    DormManagerDao dormManagerDao = new DormManagerDao();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        HttpSession session = request.getSession();
        String s_dormManagerText = request.getParameter("s_dormManagerText");
        String searchType = request.getParameter("searchType");
        String page = request.getParameter("page");
        String action = request.getParameter("action");
        DormManager dormManager = new DormManager();
        if("preSave".equals(action)) {
            dormManagerPreSave(request, response);
            return;
        } else if("save".equals(action)){
            dormManagerSave(request, response);
            return;
        } else if("delete".equals(action)){
            dormManagerDelete(request, response);
            return;
        } else
        if("list".equals(action)) {
            if(StringUtil.isNotEmpty(s_dormManagerText)) {
                if("name".equals(searchType)) {
                    dormManager.setName(s_dormManagerText);
                } else if("userName".equals(searchType)) {
                    dormManager.setUserName(s_dormManagerText);
                }
            }
            session.removeAttribute("s_dormManagerText");
            session.removeAttribute("searchType");
            request.setAttribute("s_dormManagerText", s_dormManagerText);
            request.setAttribute("searchType", searchType);
        } else if("search".equals(action)){
            if (StringUtil.isNotEmpty(s_dormManagerText)) {
                if ("name".equals(searchType)) {
                    dormManager.setName(s_dormManagerText);
                } else if ("userName".equals(searchType)) {
                    dormManager.setUserName(s_dormManagerText);
                }
                session.setAttribute("searchType", searchType);
                session.setAttribute("s_dormManagerText", s_dormManagerText);
            } else {
                session.removeAttribute("s_dormManagerText");
                session.removeAttribute("searchType");
            }
        } else {
            if(StringUtil.isNotEmpty(s_dormManagerText)) {
                if("name".equals(searchType)) {
                    dormManager.setName(s_dormManagerText);
                } else if("userName".equals(searchType)) {
                    dormManager.setUserName(s_dormManagerText);
                }
                session.setAttribute("searchType", searchType);
                session.setAttribute("s_dormManagerText", s_dormManagerText);
            }
            if(StringUtil.isEmpty(s_dormManagerText)) {
                Object o1 = session.getAttribute("s_dormManagerText");
                Object o2 = session.getAttribute("searchType");
                if(o1!=null) {
                    if("name".equals((String)o2)) {
                        dormManager.setName((String)o1);
                    } else if("userName".equals((String)o2)) {
                        dormManager.setUserName((String)o1);
                    }
                }
            }
        }
        if(StringUtil.isEmpty(page)) {
            page="1";
        }
        Connection con = null;
        PageBean pageBean = new PageBean(Integer.parseInt(page), 5);
        request.setAttribute("pageSize", pageBean.getPageSize());
        request.setAttribute("page", pageBean.getPage());
        try {
            con=dbUtil.getCon();
            List<DormManager> dormManagerList = dormManagerDao.dormManagerList(con, pageBean, dormManager);
            int total=dormManagerDao.dormManagerCount(con, dormManager);
            String pageCode = this.genPagation(total, Integer.parseInt(page),5);
            request.setAttribute("pageCode", pageCode);
            request.setAttribute("dormManagerList", dormManagerList);
            request.setAttribute("mainPage", "admin/dormManager.jsp");
            request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    private void dormManagerDelete(HttpServletRequest request,
                                   HttpServletResponse response) {
        String dormManagerId = request.getParameter("dormManagerId");
        Connection con = null;
        try {
            con = dbUtil.getCon();
            dormManagerDao.dormManagerDelete(con, dormManagerId);
            request.getRequestDispatcher("dormManager?action=list").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    private void dormManagerSave(HttpServletRequest request,
                                 HttpServletResponse response)throws ServletException, IOException {
        String dormManagerId = request.getParameter("dormManagerId");
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        String name = request.getParameter("name");
        String sex = request.getParameter("sex");
        String tel = request.getParameter("tel");
        DormManager dormManager = new DormManager(userName, password, name, sex, tel);
        if(StringUtil.isNotEmpty(dormManagerId)) {
            dormManager.setDormManagerId(Integer.parseInt(dormManagerId));
        }
        Connection con = null;
        try {
            con = dbUtil.getCon();
            int saveNum = 0;
            if(StringUtil.isNotEmpty(dormManagerId)) {
                saveNum = dormManagerDao.dormManagerUpdate(con, dormManager);
            } else if(dormManagerDao.haveManagerByUser(con, dormManager.getUserName())){
                request.setAttribute("dormManager", dormManager);
                request.setAttribute("error", "该用户名已存在");
                request.setAttribute("mainPage", "admin/dormManagerSave.jsp");
                request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);
                try {
                    dbUtil.closeCon(con);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return;
            } else {
                saveNum = dormManagerDao.dormManagerAdd(con, dormManager);
            }
            if(saveNum > 0) {
                request.getRequestDispatcher("dormManager?action=list").forward(request, response);
            } else {
                request.setAttribute("dormManager", dormManager);
                request.setAttribute("error", "保存失败");
                request.setAttribute("mainPage", "admin/dormManagerSave.jsp");
                request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    private void dormManagerPreSave(HttpServletRequest request,
                                    HttpServletResponse response)throws ServletException, IOException {
        String dormManagerId = request.getParameter("dormManagerId");
        if(StringUtil.isNotEmpty(dormManagerId)) {
            Connection con = null;
            try {
                con = dbUtil.getCon();
                DormManager dormManager = dormManagerDao.dormManagerShow(con, dormManagerId);
                request.setAttribute("dormManager", dormManager);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    dbUtil.closeCon(con);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        request.setAttribute("mainPage", "admin/dormManagerSave.jsp");
        request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);
    }
    private String genPagation(int totalNum, int currentPage, int pageSize){
        int totalPage = totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;
        StringBuffer pageCode = new StringBuffer();
        pageCode.append("<li><a href='dormManager?page=1'>首页</a></li>");
        if(currentPage==1) {
            pageCode.append("<li class='disabled'><a href='#'>上一页</a></li>");
        }else {
            pageCode.append("<li><a href='dormManager?page="+(currentPage-1)+"'>上一页</a></li>");
        }
        for(int i=currentPage-2;i<=currentPage+2;i++) {
            if(i<1||i>totalPage) {
                continue;
            }
            if(i==currentPage) {
                pageCode.append("<li class='active'><a href='#'>"+i+"</a></li>");
            } else {
                pageCode.append("<li><a href='dormManager?page="+i+"'>"+i+"</a></li>");
            }
        }
        if(currentPage==totalPage) {
            pageCode.append("<li class='disabled'><a href='#'>下一页</a></li>");
        } else {
            pageCode.append("<li><a href='dormManager?page="+(currentPage+1)+"'>下一页</a></li>");
        }
        pageCode.append("<li><a href='dormManager?page="+totalPage+"'>尾页</a></li>");
        return pageCode.toString();
    }
}

image.gif


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux网络管理,NAT网络配置,修改主机名称,主机映射,防火墙,系统启动级别,用户和用户组,为用户配置sudoer权限,文件权限管理,打包和压缩(二)
Linux网络管理,NAT网络配置,修改主机名称,主机映射,防火墙,系统启动级别,用户和用户组,为用户配置sudoer权限,文件权限管理,打包和压缩(二)
18 0
IDEA+Java+Jsp+Mysql实现Web毕业设计选题系统(上)
IDEA+Java+Jsp+Mysql实现Web毕业设计选题系统
54 0
BUUCTF Web [极客大挑战 2019]Havefun
大挑战 2019]Havefun 一、题目简介
83 0
毕业设计So Easy:基于Java Web学生选课系统
毕业设计So Easy:基于Java Web学生选课系统
181 0
一周AI最火论文 | 和机器人一起“云”健身,VR健身房助力人机交互
一周AI最火论文 | 和机器人一起“云”健身,VR健身房助力人机交互
63 0
每年 150 亿美元花哪了?Netflix 的大规模 Kafka 实践
Netflix 在 2019 年花费了大约 150 亿美元来制作世界一流的原创内容。在如此高的投入之下,我们必须获得许多关键的业务见解,从而为所有 Netflix 内容的策划、预算和效益分析工作提供帮助
684 0
14、web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
打码接口文件 # -*- coding: cp936 -*- import sys import os from ctypes import * # 下载接口放目录 http://www.
1082 0
vue网页端web聊天IM实例|仿微信客户端vue版
很早之前就有使用html5技术开发过一个web版仿微博、微信聊天系统,后来想着用vue技术开发一版,后面由于各种事情,一直没能落定。最近有些空闲就使用vue开发了一个vueWechat聊天室项目。使用了Vue2.5.6+Vuex+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术开发,实现了发送消息、表情(动图),图片、视频预览,仿微信右键菜单、网页截图可直接粘贴至编辑框发送。
6113 0
九大Web设计开发的iPad应用程序
导读:时尚的外观,丰富的应用,轻巧便携,iPad令许多人为之着迷。如何充分利用iPad为您的工作助力? 这里就有9款实用的Web设计和开发iPad应用程序介绍给您!当然在iPad上做设计未必能与在您的电脑上一样强大,但胜在方便灵活,适合经常出外办公和需要时刻记录设计灵感的人士。
1055 0
+关注
编程指南针
作者简介:阿里云特邀作者、Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、CSDN名师课堂讲师、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助
108
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载