基于SSM和mysql实现的宿舍管理系统·

基于SSM和mysql实现的宿舍管理系统· 1,项目简介 宿舍管理是高校管理的重要组成部分,一套优秀的管理系统不仅可以降低宿舍管理的难度,也能在一定程度上减少学校管理费用的支出

本文包含相关资料包-----> 点击直达获取<-------

基于SSM和mysql实现的宿舍管理系统·

1.项目简介

宿舍管理是高校管理的重要组成部分,一套优秀的管理系统不仅可以降低宿舍管理的难度,也能在一定程度上减少学校管理费用的支出,更是建设现代化高校管理体系的重要标志。

本篇文章将带你从宿舍管理系统的运行环境搭建、系统设计、系统编码,再到系统的实现,对整个过程进行详细描述,特别适合作为程序员的进阶项目案列,同样也是高校学生毕业设计系统的不二之选!

1.1架构说明

本宿舍管理系统采用B/S架构模式。

B/S架构的全称为Browser/Server,即浏览器/服务器架构。Browser指的是Web浏览器,与C/S架构相比,B/S模式极少数业务逻辑在前端实现,它的主要逻辑在服务器端实现。B/S架构的系统无须特别安装客户端软件,只有Web浏览器即可。

B/S架构的分层:

与C/S架构只有两层不同的是,B/S架构有三层,分别为:

  • 第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能
  • 第二层逻辑层:主要是利用服务器完成系统的业务逻辑功能
  • 第三层数据层:主要是进行数据瞬时态和持久态两者之间的相互转化

1.2技术选型

选择合适的技术,整个项目就已经成功了一半。经过对系统需求和系统自身特点的分析,加上现代B/S模式主流架构解决方案,对本系统技术选型如下:

  • 数据表现层:Html+JavaScript+CSS+VUE
  • 业务逻辑层 Java+Spring+SpringMVC
  • 数据持久层:MySql+MyBatis
  • 开发工具:Eclipse

1.3用户分析

本系统主要应用于高校宿舍管理,使用人群如下:

  1. 系统管理员:管理整个系统的安全运行,各个功能使用和任务发布。
  2. 宿舍管理员:管理自己负责的宿舍和学生。
  3. 学生:查看浏览信息,提交任务。

1.4功能分析

系统管理员:

  • 添加、修改、删除公告信息
  • 添加、修改、删除宿舍管理员信息
  • 添加、修改、删除学生信息
  • 宿舍楼管理及宿舍管理员分配
  • 学生寝室管理
  • 发布考勤、打卡任务
  • 查看、修改个人信息

宿舍管理员:

  • 查看公告
  • 查看、删除自己管理的学生信息
  • 添加、修改、删除考勤记录
  • 查看学生打卡记录
  • 查看、修改个人信息

学生:

  • 查看公告
  • 查看考勤记录
  • 完成打卡任务,查看打卡记录
  • 查看、修改个人信息

2.数据库设计

2.1表结构

分析系统需求,数据库应有以下几张表:

t_admin: 主要用于存储系统管理员信息

字段名称 类型 主键 说明
adminId int 管理员Id,唯一
userName varchar 用户名
password varchar 密码
name varchar 真实名称
sex varchar 性别
tel varchar 电话

t_dormbuild: 存储宿舍楼信息

字段名称 类型 主键 说明
dormBuildId int 宿舍楼Id,唯一
dormBuildName varchar 宿舍楼名称
dormBuildDetail varchar 详细说明

t _ dormmanager: 主要存储宿舍管理员信息

字段名称 类型 主键 说明
dormManId varchar 宿舍管理员Id,唯一
userName varchar 用户名,用于登录系统
password varchar 密码
dormBuildId int 宿舍楼Id
dormBuildDetail varchar 宿舍楼详细说明
name varchar 真实姓名
sex varchar 性别
tel varchar 电话

t_notice: 用于存储公告信息

字段名称 类型 主键 说明
noticeId int 公告Id,唯一
noticePerson varchar 公告发布人
date date 公告发布日期
content varchar 发布内容

t_punchclock: 用于存储打卡发布记录

字段名称 类型 主键 说明
id int 打卡Id,唯一
theme varchar 打卡主题
detail varchar 打卡说明
date date 发布日期
person varchar 发布人

t_punchclockrecord: 用于存储打卡信息

字段名称 类型 主键 说明
id int 记录Id,唯一
punchClock_id varchar 打卡Id
punchClock_date date 发布日期
punchClock_theme varchar 打卡主题
punchClock_detail varchar 打卡说明
punchClock_person varchar 打卡发布人
name varchar 学生姓名
dormName varchar 寝室号
tel varchar 学生电话
stuNum varchar 学生学号
dormBuildId int 宿舍楼Id
isRecord tinyint 是否已经打卡

t_record:用于存储考勤记录

字段名称 类型 主键 说明
recordId int 考勤Id,唯一
studentNumber varchar 学生学号
dormBuildId int 宿舍楼Id
dormName varchar 寝室号
date date 考勤日期
detail varchar 详细说明

t_student: 学生表,用于存放学生信息

字段名称 类型 主键 说明
studentId int 学生Id,唯一
stuNum varchar 学号
password varchar 密码
name varchar 姓名
dormBuildId int 宿舍楼Id
dormName varchar 寝室号
sex varchar 性别
tel varchar 电话

2.2ER图

3.项目实现

3.1项目工程结构

搭建完系统运行环境后,工程结构目录如下图所示:

com.cya.service

service包是所有业务逻辑的接口

com.cya.service.impl

service.impl包用于存放service接口的所有实现类

com.cya.mapper

mapper包用于存放对数据库操纵的接口和对应的xml实现

com.cya.entity

entity包用于存放项目中用到的所有实体类,它与数据库中的表相对应

resources文件下存放SSM框架整合的必要配置文件

dorm是存放所有model层文件的父级文件夹,其中admin,dormManager、student三个子文件夹分别存放系统管理员、宿舍管理员、学生三个角色对应的HTML文件。

3.2项目配置

```xml

<!-- 引入配置文件 -->
<bean id="propertyConfigurer"
   >  
  <property name="locations">
      <value>classpath:dbconfig.properties</value>
  </property>
</bean>

<bean id="dataSource" 
  destroy-method="close">
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
  <property name="driverClassName" value="${jdbc.driver}" />
  <property name="maxActive" value="10" />
  <property name="minIdle" value="5" />
</bean>


<!-- spring和MyBatis整合 -->
<bean id="sqlSessionFactory" >
  <property name="dataSource" ref="dataSource"/>
  <!--mybatis分页插件-->
  <property name="configLocation" value="classpath:mybatis.xml"></property>
  <!-- 自动扫描mapping.xml文件 -->
  <property name="mapperLocations" value="classpath*:com.cya.mapper/*.xml"></property>
</bean>

<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean >
  <property name="basePackage" value="com.cya.mapper"/>
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>

<!-- 事务管理 -->
<bean id="transactionManager"
   >
  <property name="dataSource" ref="dataSource"/>
</bean>

<!--支持事务注解的(@Transactional)-->
<tx:annotation-driven transaction-manager="transactionManager"/>

```

视图解析器

```xml

<!-- 自动装配 -->
<context:component-scan base-package="com.cya.controller" />
<!-- 启用spring mvc 注解 -->
<mvc:annotation-driven />

<!--视图解析器-->
<bean >
  <!--前缀-->
  <property name="prefix" value="/"/>
  <!--后缀-->
  <property name="suffix" value=".html"></property>
</bean>

<!-- 文件上传 -->
<bean id="multipartResolver"
   >
  <!-- 默认编码 -->
  <property name="defaultEncoding" value="utf-8"/>
  <!-- 文件大小最大值 -->
  <property name="maxUploadSize" value="10485760000"/>
  <!-- 内存中的最大值 -->
  <property name="maxInMemorySize" value="40960"/>
</bean>

```

3.3前端工程

```js //获取BuildMange function getBuildManage(){ console.log("num",this.vue.pagination.pageNum) var that=this; axios.get('../../getBuildManage?pageNum='+that.vue.pagination.pageNum+'&pageSize='+that.vue.pagination.pageSize+'&filter='+this.vue.search.filter+"&key="+this.vue.search.key).then(function (res) { that.vue.buildManageList=res.data.rows; that.vue.pagination.pageTotal=Math.ceil(res.data.total/that.vue.pagination.pageSize); that.vue.search.filter="dormBuildName"; that.vue.search.key="" console.log(res) }).catch(function (error) { alert(error); }); }

//根据获取BuildManId BuildManage function getBuildMangerById(dormBuildId){ var that=this; axios.get('../../getBuildMangerById',{ params:{ dormBuildId:dormBuildId } }).then(function (res) { that.getBuildMangerById_vue.buildManage=res.data; }).catch(function (error) { alert(error); }); }

function addBuildManageMsg(){ var buildManage=this.addBuildManage_vue.buildManage; axios.post('../../addBuildManage', buildManage, {headers: {'Content-Type': 'application/json;charset=UTF-8'}}) .then(function (response) { if(response.data.result==true){ this.addBuildManage_vue.buildManage={}; window.location.reload(); } }).catch(function (error) { console.log(error); }); }

//根据Id更新 function updataBuildManageMsg(){ var buildManage=this.getBuildMangerById_vue.buildManage; axios.post('../../updataBuildManageById', buildManage, {headers: {'Content-Type': 'application/json;charset=UTF-8'}}) .then(function (response) { if(response.data.result==true){ this.getBuildMangerById_vue.buildManage={}; window.location.reload(); } }).catch(function (error) { console.log(error); }); }

//根据Id删除 function buildManagerDeleteById(dormBuildId){ var that=this; axios.get('../../buildManagerDeleteById?dormBuildId='+dormBuildId).then(function (res) { console.log(res) if(res.data.result==true){ window.location.reload(); } }).catch(function (error) { alert(error); }); }

//根据宿舍楼id获取宿管信息 function getDormMangerByBuildId(dormBuildId){ var that=this; DORMBuildId=dormBuildId; axios.get('../../getDormMangerByBuildId?dormBuildId='+dormBuildId).then(function (res) { console.log(res) that.getDormManageByBuildId_vue.dormManage=res.data; }).catch(function (error) { alert(error); });

var that=this; axios.get('../../getDormManage2').then(function (res) { that.getDormManageByBuildId_vue.optionsDormManage=res.data; console.log(res) }).catch(function (error) { alert(error); }); } ```

3.4后端实现

```java / -------------------------宿管--------------------------- /

@RequestMapping("/getDormManage") public PageResult getDormManage(HttpServletRequest request){ Integer pageNum=1; Integer pageSize=20; String filter=request.getParameter("filter"); String key=request.getParameter("key"); if(request.getParameter("pageNum")!=null && request.getParameter("pageNum")!="") { pageNum=Integer.parseInt(request.getParameter("pageNum")); } if(request.getParameter("pageSize")!=null && request.getParameter("pageSize")!="") { pageSize=Integer.parseInt(request.getParameter("pageSize")); } System.out.println("pageNum="+pageNum); System.out.println("pageSize="+pageSize); return adminServiceImpl.getDormManage(pageNum,pageSize,filter,key); }

@RequestMapping("addDormManage") public Result addDormManage(@RequestBody DormManage dormManage) { try { adminServiceImpl.addDormManage(dormManage); return new Result(true, "添加成功"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return new Result(false, "添加失败"); } }

@RequestMapping("getDormMangerById") public DormManage getDormMangerById(Integer dormManId) { return adminServiceImpl.getDormMangerById(dormManId); }

@RequestMapping("updataDormManageById") public Result updataDormManageById(@RequestBody DormManage dormManage) { try { adminServiceImpl.updataDormManageById(dormManage); return new Result(true, "更新成功"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return new Result(false, "更新失败"); } }

@RequestMapping("dormManagerDeleteById") public Result dormManagerDeleteById(HttpServletRequest request) { Integer dormManId=0; if(request.getParameter("dormManId")!=null && request.getParameter("dormManId")!="") { dormManId=Integer.parseInt(request.getParameter("dormManId")); } try { adminServiceImpl.deleteDormManageById(dormManId); return new Result(true, "删除成功"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return new Result(false, "删除失败"); } }

/ -------------------------宿管--------------------------- /

/ -------------------------学生--------------------------- / @RequestMapping("/getStudentManage") public PageResult getStudentManage(HttpServletRequest request){ Integer pageNum=1; Integer pageSize=20; String filter=request.getParameter("filter"); String key=request.getParameter("key"); if(request.getParameter("pageNum")!=null && request.getParameter("pageNum")!="") { pageNum=Integer.parseInt(request.getParameter("pageNum")); } if(request.getParameter("pageSize")!=null && request.getParameter("pageSize")!="") { pageSize=Integer.parseInt(request.getParameter("pageSize")); } System.out.println("pageNum="+pageNum); System.out.println("pageSize="+pageSize); return adminServiceImpl.getStudentManage(pageNum, pageSize, filter, key); } ```

3.5主要业务功能

```java / -------------------------考勤--------------------------- /

@RequestMapping("/getRecordMMsgByStuNum") public PageResult getRecordMMsgByStuNum(HttpServletRequest request){ Integer pageNum=1; Integer pageSize=20; Integer dormBuildId=0; String filter=request.getParameter("filter"); String key=request.getParameter("key"); String studentNumber=request.getParameter("studentNumber"); if(request.getParameter("pageNum")!=null && request.getParameter("pageNum")!="") { pageNum=Integer.parseInt(request.getParameter("pageNum")); } if(request.getParameter("pageSize")!=null && request.getParameter("pageSize")!="") { pageSize=Integer.parseInt(request.getParameter("pageSize")); } System.out.println("filter"+filter); System.out.println("key"+key);

  return studentSeriveImpl.getRecordMMsgByStuNum(pageNum, pageSize, filter, key, studentNumber);

}

/ -------------------------考勤--------------------------- /

/ -------------------------我的--------------------------- /

@RequestMapping("student_getMyMsgById") public Student student_getMyMsgById(@RequestBody Student student) { return studentSeriveImpl.student_getMyMsgById(student.getStudentId()); }

@RequestMapping("student_updateMyMsgById") public Result student_updateMyMsgById(HttpServletRequest request ,@RequestBody Student student) { try { HttpSession session=request.getSession(); if(session.getAttribute("student") !=null) { session.removeAttribute("student"); } List list=new ArrayList(); list.add(student); session.setAttribute("student", list); studentSeriveImpl.student_updateMyMsgById(student); return new Result(true, "更新成功"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return new Result(false, "更新失败"); } }

@RequestMapping("student_updatePsd") public Result student_updatePsd(@RequestBody Student student) { try { studentSeriveImpl.student_updatePsd(student); System.out.println(student); return new Result(true, "更新成功"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return new Result(false, "更新失败"); } }

/ -------------------------我的--------------------------- /

/ -------------------------打开--------------------------- /

/ -------------------------打开--------------------------- /

@RequestMapping("/getPunchClockRecordMsgByStuNum") public PageResult getPunchClockRecordMsgByStuNum(HttpServletRequest request){ Integer pageNum=1; Integer pageSize=20; Integer dormBuildId=0; String filter=request.getParameter("filter"); String key=request.getParameter("key"); String studentNumber=request.getParameter("studentNumber"); if(request.getParameter("pageNum")!=null && request.getParameter("pageNum")!="") { pageNum=Integer.parseInt(request.getParameter("pageNum")); } if(request.getParameter("pageSize")!=null && request.getParameter("pageSize")!="") { pageSize=Integer.parseInt(request.getParameter("pageSize")); } System.out.println("filter"+filter); System.out.println("key"+key);

  return studentSeriveImpl.getPunchClockRecordMsgByStuNum(pageNum, pageSize, filter, key, studentNumber);

}

@RequestMapping("getPunckColcokRecordById") public PunchClockRecord getPunckColcokRecordById(HttpServletRequest request) { Integer id=0; if(request.getParameter("id")!=null && request.getParameter("id")!="") { id=Integer.parseInt(request.getParameter("id")); } return studentSeriveImpl.getPunckColcokRecordById(id); }

@RequestMapping("updataPunchClockRecordMsg") public Result updataPunchClockRecordMsg(@RequestBody PunchClockRecord punchClockRecord) { try { studentSeriveImpl.updataPunchClockRecordMsg(punchClockRecord); System.out.println(punchClockRecord); return new Result(true, "更新成功"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return new Result(false, "更新失败"); } } ```

4.项目展示

4.1 登录功能实现

项目启动成功后,在浏览器地址栏输入:http://localhost:8080/dormManage/ 进入用户登录界面如下图所示:

在此界面用户可以选择不同的角色登录,输入每个角色对应的登录信息后,首先会判断输入信息的有效性,做出相应的响应或提示。登录功能具体的实现代码如下,此处仅展示controller层代码。

```java @RequestMapping("login") public List login(HttpServletRequest request, @RequestBody Login login) { List list=loginServiceImpl.login(login); if(list.size()==1) { HttpSession session=request.getSession(); session.setAttribute(login.getRole(), list); System.out.println("session="+session.getAttribute(login.getRole())); } return list; }

@RequestMapping("getSession")
public List getSession(HttpServletRequest request,@RequestBody Login login){
    System.out.println(login);
    System.out.println(request.getSession().getAttribute(login.getRole()));
    List list=new ArrayList<>();
    list.add(request.getSession().getAttribute(login.getRole()));
    return list;
}

@RequestMapping("exitSys")
public Result exitSys(HttpServletRequest request) {
    String exit="";
    try {
        if(request.getParameter("exit")!=null) {
            exit=request.getParameter("exit");
        }
        request.getSession().removeAttribute(exit);
        return new Result(true, "注销成功");
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
        return new Result(false, "注销失败");
    }
}

```

4.2 发布公告功能实现

在系统管理员端,有发布公告的权限,系统管理员点击添加公告按钮,输入相关信息后进行有效性校验,校验成功即代表公告发布成功。

成功发布公告后,会出现在宿舍管理员端和学生端界面,效果图如下:

公告模块主要代码以mapper层实现为例:

```xml

insert into t_notice(noticePerson,date,content) values(#{noticePerson},current_date,#{content})

update t_notice set noticePerson=#{noticePerson},content=#{content} where noticeId=#{noticeId}

delete from t_notice where noticeId=#{noticeId}

```

4.3 考勤记录功能实现

宿舍管理员根据自己所管理的宿舍楼,对住在管理范围内的学生进行考勤,并添加考勤记录,学生端也会显示考勤信息。

主要实现代码如下:

```java @RequestMapping("/getRecordMsg") public PageResult getRecordMsg(HttpServletRequest request){ Integer pageNum=1; Integer pageSize=20; Integer dormBuildId=0; String filter=request.getParameter("filter"); String key=request.getParameter("key"); if(request.getParameter("pageNum")!=null && request.getParameter("pageNum")!="") { pageNum=Integer.parseInt(request.getParameter("pageNum")); } if(request.getParameter("pageSize")!=null && request.getParameter("pageSize")!="") { pageSize=Integer.parseInt(request.getParameter("pageSize")); } if(request.getParameter("dormBuildId")!=null && request.getParameter("dormBuildId")!="") { dormBuildId=Integer.parseInt(request.getParameter("dormBuildId")); } System.out.println("pageNum="+pageNum); System.out.println("pageSize="+pageSize); return dormManageServiceImpl.getRecordMsg(pageNum, pageSize, filter, key, dormBuildId); }

@RequestMapping("getRecordById") public Record getRecordById(Integer recordId) { return dormManageServiceImpl.getRecordById(recordId); }

@RequestMapping("updataRecordMsg") public Result updataRecordMsg(@RequestBody Record record) { try { dormManageServiceImpl.updataRecordMsg(record); return new Result(true, "更新成功"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return new Result(false, "更新失败"); } }

@RequestMapping("addRecordMsg") public Result addRecordMsg(@RequestBody Record record) { try { System.out.println(record); dormManageServiceImpl.addRecordMsg(record); return new Result(true, "添加成功"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return new Result(false, "添加失败"); } } ```

参考文献

  • 高校宿舍管理系统的设计与实现(西安电子科技大学·齐慧敏)
  • 基于JSP技术的学生宿舍管理系统的设计与实现(沈阳工业大学·杨俊宝)
  • 学生综合信息管理平台的设计与实现(吉林大学·刘铁刚)
  • 基于移动应用的宿舍管理系统的设计与实现(山东大学·刘慧情)
  • 高校宿舍管理系统的设计与实现(西安电子科技大学·齐慧敏)
  • 高校宿舍管理系统的设计与实现(西安电子科技大学·齐慧敏)
  • 基于移动应用的宿舍管理系统的设计与实现(山东大学·刘慧情)
  • 学生宿舍管理系统的设计与实现(江西财经大学·张丽伟)
  • 宿舍管理系统(湖北工业大学·陈倩倩)
  • 高校学生公寓管理系统的设计与实现(南昌大学·万金强)
  • 基于B/S结构的学校管理信息系统的研究与开发(四川大学·徐永红)
  • 南通理工学院公寓管理信息系统的设计与实现(大连理工大学·杨希)
  • 校园WEB宿舍管理系统的设计与实现(电子科技大学·李训耀)
  • 基于J2EE的学生宿舍管理系统的设计与实现(电子科技大学·卜建东)
  • 基于J2EE的学生信息管理系统(电子科技大学·钟海琴)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码货栈 ,原文地址:https://m.bishedaima.com/yuanma/35517.html

相关推荐

发表回复

登录后才能评论