精华内容
下载资源
问答
  • 员工宿舍管理方案doc7.doc
  • 某医院职工宿舍区物业管理方案.docx
  • 相信你一直在找一篇关于某船厂员工宿舍楼物业管理方案的文档,在这里,不仅能下载使用某船厂员工宿舍...该文档为某船厂员工宿舍楼物业管理方案,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 宿舍管理

    2020-11-19 09:04:14
    人事系统 后勤管理 后勤部就是以后勤保障为主要...宿舍管理系统能够更好的适应人们的需求,使宿舍管理人员更加容易的对员工宿舍的资料和信息进行管理,更加方便了解员工宿舍的动态信息,方便管理入住员工;使后勤管理人

    人事系统

    后勤管理

    后勤部就是以后勤保障为主要工作的部门。该部门直接作用于团体内部其它部门,对其它部门的正常运作具有至关重要的作用,对实现团体目标任务起间接作用;简言之,后勤部是为其它各部门职能能够顺利实现提供物质服务的一个部门。

    对宿舍房间,水电费管理,借物管理,厂证厂服,体检管理,医疗费用管理,根据管理,车辆信息管理,图书管理,证书管理。

    宿舍管理

    宿舍管理系统能够更好的适应人们的需求,使宿舍管理人员更加容易的对员工宿舍的资料和信息进行管理,更加方便了解员工宿舍的动态信息,方便管理入住员工;使后勤管理人员更加方便查询宿舍信息。
    图片一
    在人事系统中打开后勤管理点击[宿舍管理]即可进入积分记录的页面中,可以通过上方按钮进行积分记录操作。如下图操作方法:

    添加宿舍
    图片二

    接下来将宿舍的基本信息,床位信息,水电以及燃气暖气费信息填写完整
    图片三
    床位信息,通过右击空白处进行入住人员。右击员工设为宿舍长。
    图片四
    水电费信息:

    填写 水电及燃气暖气费信息
    水表初始度数、水费包月费用、水费交费日期、水费是否按度算;
    电表初始度数、电费包月费用、电费交费日期、电费是否按度算。
    图片五
    燃气暖气费信息:

    填写 燃气暖气费信息
    燃气初始度数、燃气费包月费用、燃气费交费日期、日期是否按度算;
    暖气初始度数、暖气费包月费用、暖气费交费日期、暖气费是否按度算。
    图片六

    展开全文
  • 测试分析报告说明书 学生宿舍管理系统 目录 TOC \o "1-3" \h \z \u 一引言 4 1.1 测试目的 4 1.2项目背景 4 1.3定义 5 1.4术语定义 5 1.5参考资料 5 二任务概述 6 2.1目标 6 2.2运行环境 6 三计划 7 3.1测试方案 7 ...
  • 高校宿舍管理系统

    千次阅读 2021-03-14 12:43:32
    ​ 提到宿舍,现在无论是学校,还是工厂,都是在熟悉不过的了,学生宿舍楼,职工教员工职工宿舍楼等等,每一栋楼房都有很多的房间,每个宿舍分配了多少个床位,住着什么人,那些床位是空的,那些房间是空的,这些...

    高校宿舍管理系统

    1.项目概况

    ​ 提到宿舍,现在无论是学校,还是工厂,都是在熟悉不过的了,学生宿舍楼,职工教员工,职工宿舍楼等等,每一栋楼房都有很多的房间,每个宿舍分配了多少个床位,住着什么人,那些床位是空的,那些房间是空的,这些都需要人员去维护,曾经的我们,通过纸张登记,查看房间信息,房间床位信息,房间少的情况下还好,我们可以一个个进行比对,看登记信息去查看房间信息,床位信息,但是房间多,登记信息多的情况下,或者有人员进行变动,退房,换房的情况下,可就麻烦了我们的宿舍管理员了,我们的宿舍管理员,需要慢慢的进行查找,浪费了时间成本不说,还容易出错,新来的学生或员工需要等待很长时间才能进去入住,在加上现在楼层在逐渐的向高层发展,人员手动管理已经不能满足社会的需要,因而,社会需要更好的工具去管理这些枯燥的的宿舍管理工作,从而宿舍管理系统应用而生。

    ​ 宿舍管理系统,解决了当前人力成本,时间成本问题,可以快速的定位到房间号,宿舍床位号,通过宿舍管理系统,我们只要根据系统的要求去操作,就可以分分钟的时间解决某个宿舍是否满员,可以方便的把人员和宿舍,床位进行绑定,就像我们的身份号似的,都是唯一的,查询起来很方便,相比较起传统的宿舍纸张登记来说,现代化的宿舍管理系统更快捷,更高效,更适应人们快捷化的生活。

    ​ 现在高校的发展和体制不断的进行了完善,所以学校的服务也逐渐有了变化,对于学校宿舍的管理有了新形势的管理模式。学校根据自身的实际情况,对于学生宿舍生活管理的服务进行改善。有些学校因为管理工作的错误,影响了学校里学生的现况,甚至给整个学校造成了负面的影响,而且现在学校管理问题普遍存在。所以现在学校也在建设信息化管理系统,这种管理系统,可以为学校的管理工作和宿舍管理工作带来很好的效果。

    2.项目目标

    2.1新生分配与入住

    在高校新生入住和分配上面,宿舍管理系统优势尽显,通常宿舍管理系统可通过新生预分配和新生入住两个模块实现对新生宿舍入住和宿舍分配的管理,这不但可保证分配入住的科学性,还能提升学生的入住效率,既减轻了人工分配的负担,也简化了学生的入住手续,更好地促进了学校和新生之间的和谐。

    2.2宿舍的全面管理

    通过对宿舍管理系统进行优化,高校宿舍的管理工作可细化成若干个系统的小模块,宿舍管理工作的细化在利于学生便捷高校入住的同时还让高校宿舍管理的智能化和信息化得到了进一步的彰显,通过对宿舍管理系统的全面优化,从整栋宿舍楼的整体管理到每一个床位的每一个角落都会实现整齐划一的管理。

    楼->单元->层->宿舍->床位

    2.3数据科学统计和分析

    宿舍管理系统中记载着整栋宿舍楼的和全部入住学生的相关信息,通过其完善智能的信息统计功能,高校或者宿舍管理者可对每个楼层的入住情况、每个房间的入住信息数据实现一键查看,不用再通过一步步、一级级地层层询问来获取相关信息,这在很大程度上促进了宿舍信息的共享。

    2.4精细化管理

    宿舍考勤,管理员,多角色管理,一目了然。寄宿生管理,班级,楼层、宿舍号精确考勤。床位分配管理,楼、栋管理员都有相对应的权限。就寝时间段可设置,班主班可随时关注住宿学生情况及时报表发送至班主任手机。

    2.5接口拓展功能

    系统预留的接口可与宿舍其他的智能设施实现对接,如宿舍管理系统可连接宿舍的考勤门禁系统和迎新收费系统,可真正通过计算机管理系统的运用实现智能化校园的建设。

    3.项目功能

    3.1 项目角色(参与者)

    • 超级管理员(拥有系统最高的权限)

    • 宿管员(宿舍管理员:对宿舍进行管理,按楼宇进行管理)

    • 学生(在线预选宿舍)

      详见思维导图(xmind文件 )

    3.1 项目功能

    • 基础资料
      • 用户管理(管理员、宿管员管理)
      • 年级管理
      • 学院、系、专业、班级(统称为组织机构)
      • 学生管理
      • 公告管理
    • 宿舍管理
      • 楼宇管理
      • 楼层管理
      • 宿舍管理(批量初始化、CURD)
      • 床位管理(入住、调换、退宿)
    • 预选宿舍
      • 预选设置
      • 预选操作
    • 缺勤、请假管理
      • 缺勤登记(影响床位状态)
      • 请假登记(影响床位状态)
    • 来访人员管理
      • 登记来访信息
      • 查询来访信息
    • 报修管理
      • 报修申请
      • 状态审批
      • 报修查询
    • 报表/图表管理
      • excel报表
      • echarts图表显示

    4.数据库设计

    数据库设计软件PowerDesigner

    安装:百度一下PowerDesigner的安装教程

    PowerDesigner与Navicate的区别

    • PowerDesigner重在可视化的设计
    • Navicate就是一个数据库的可视化客户端工具

    详见pdm图

    5.项目技术路线

    后端采用SpringBoot

    前端采用LayUI(在开发前端期间不涉及任何前后端页面跳转,只通过json数据传输,前后数据校验采用JWT)

    数据库采用MySQL(5.5至8.0)

    开发IDE:Idea、webstorme

    请求校验:JWT

    该项目支持三个版本

    • 前后端分离(SpringBoot+LayUI)(前后端来回切换台费劲,容易混淆)
    • SpringBoot版本前后端不分离(快速开发调试)
    • SSM版前后端不分离(需要将SpringBoot的配置重新按照xml的 格式配置一遍)

    6.项目搭建

    <mirror> 
        <id>alimaven</id> 
        <name>aliyun maven</name> 
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
        <mirrorOf>central</mirrorOf> 
    </mirror>
    
    • public:静态html文件

    • static:静态css、js等文件

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/dormitory?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
        username: root
        password: 123456
    server:
      port: 8888
      servlet:
        context-path: /dormitory
    

    7.整合Mybatis

    在pom.xml中引入starter

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
    
    配置Mapper目录
    mybatis:
      mapper-locations: com/yanzhen/mapper/*.xml
    打印SQL输出到控制台
    logging:
      level:
        com:
          yanzhen:
            mapper: debug
    

    8.Mybatis分页

    引入相关的jar

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.3.0</version>
    </dependency>
    

    配置yml文件

    pagehelper:
      helper-dialect: mysql
    
    public class Entity {
    
        private Integer page;//页码数
        private Integer limit = 10;//页面大小,默认的10
    
        public Integer getPage() {
            return page;
        }
    
        public void setPage(Integer page) {
            this.page = page;
        }
    
        public Integer getLimit() {
            return limit;
        }
    
        public void setLimit(Integer limit) {
            this.limit = limit;
        }
    
    }
    

    9.代码生成器

    entity

    package ${data.packageName}modules.${data.moduleName}.entity;
    
    import javax.validation.constraints.NotNull;
    import org.hibernate.validator.constraints.Length;
    import com.yanzhen.utils.Entity;
    import java.util.Date;
    
    
    /**
     * ${data.classAnnotation}
     * @author ${data.author}
     * @time ${data.createTime}
     */
    public class ${data.entityName} extends Entity{
    
    <#list data.datas as item>
    	/**
    	 * ${item.annotation}
    	 */
    	<#if item.type == "String" && item.field !="id">
    	@Length(max = ${item.typeLength?c})
    	</#if>
    	private ${item.type} ${item.field};
    </#list>
    
    <#list data.datas as item>
    	public ${item.type} get${item.fieldUpper}() {
    		return ${item.field};
    	}
    	public void set${item.fieldUpper}(${item.type} ${item.field}) {
    		this.${item.field} = ${item.field};
    	}
    </#list>
    }
    

    mapper

    package ${data.packageName}.mapper;
    
    import java.util.List;
    import java.util.Map;
    
    import ${data.packageName}.entity.${data.entityName};
    
    public interface ${data.entityName}Mapper {
    
    	public int create(${data.entityName} ${data.objectName});
    
    	public int delete(Integer id);
    
    	public int update(${data.entityName} ${data.objectName});
    
    	public int updateSelective(${data.entityName} ${data.objectName});
    
    	public List<${data.entityName}> query(${data.entityName} ${data.objectName});
    
    	public ${data.entityName} detail(Integer id);
    
    	public int count(${data.entityName} ${data.objectName});
    
    }
    

    mapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="${data.packageName}.mapper.${data.entityName}Mapper">
    
    	<resultMap type="${data.packageName}.entity.${data.entityName}" id="${data.entityName}">
    		<id column="id" property="id"/>
    		<#list data.datas as item>
    		<#if item.column == "id"><#continue></#if>
    		<result column="${item.column}"  property="${item.field}"/>
    		</#list>
    	</resultMap>
    
    	<insert id="create" keyProperty="id" useGeneratedKeys="true" parameterType="${data.packageName}.entity.${data.entityName}">
    		insert into ${data.tableName}(
    		<#list data.datas as item>
    			<#if item.column == "id"><#continue></#if>
    			${item.column}<#if item_index!=(data.datas?size-1)>,</#if>
    		</#list>
    		)values(
    		<#list data.datas as item>
    			<#if item.column == "id"><#continue></#if>
    			<#noparse>#{</#noparse>${item.field}<#noparse>}</#noparse><#if item_index!=(data.datas?size-1)>,</#if>
    		</#list>
    		)
    	</insert>
    
    	<select id="query" resultMap="${data.entityName}">
    		select * from ${data.tableName}
    		<include refid="${data.entityName}FindCriteria"/>
    	</select>
    
    	<select id="count" resultType="int">
    		select count(1) from ${data.tableName}
    		<include refid="${data.entityName}FindCriteria"/>
    	</select>
    
    	<select id="detail" resultMap="${data.entityName}">
    		select * from ${data.tableName} where id = <#noparse>#{id}</#noparse>
    	</select>
    
    	<delete id="delete">
    		delete from ${data.tableName} where id = <#noparse>#{id}</#noparse>
    	</delete>
    	<update id="update">
    		update ${data.tableName} set
    		<#list data.datas as item>
    			<#if item.column == "id"><#continue></#if>
    			${item.column}=<#noparse>#{</#noparse>${item.field}<#noparse>}</#noparse><#if item_index!=(data.datas?size-1)>,</#if>
    		</#list>
    		where id = <#noparse>#{id}</#noparse>
    	</update>
    
    	<update id="updateSelective">
    		update ${data.tableName} set
    		<#list data.datas as item>
    		<#if item.column == "id"><#continue></#if>
    		<#if item.type == "String" || item.type == "Date">
    			<if test="${item.field} != null and ${item.field} != ''"> ${item.column} = <#noparse>#{</#noparse>${item.field}<#noparse>}</#noparse></if><#if item_index!=(data.datas?size-1)>,</#if>
    		<#else>
    			<if test="${item.field} != null">${item.column} = <#noparse>#{</#noparse>${item.field}<#noparse>}</#noparse></if><#if item_index!=(data.datas?size-1)>,</#if>
    		</#if>
    		</#list>
    		where id = <#noparse>#{id}</#noparse>
    	</update>
    
    	<sql id="${data.entityName}FindCriteria">
    		<where>
    		<#list data.datas as item><#if item.type == "Date"><#continue></#if>
    		<#if item.type == "String">
    			<if test="${item.field} != null and ${item.field} != ''">and ${item.column} = <#noparse>#{</#noparse>${item.field}<#noparse>}</#noparse></if>
    		<#else>
    			<if test="${item.field} != null">and ${item.column} = <#noparse>#{</#noparse>${item.field}<#noparse>}</#noparse></if>
    		</#if>
    		</#list>
    		</where>
    	</sql>
    
    </mapper>
    

    service

    package ${data.packageName}.service;
    
    import com.yanzhen.mapper.${data.entityName}Mapper;
    import com.yanzhen.entity.${data.entityName};
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class ${data.entityName}Service {
    
        @Autowired
        private ${data.entityName}Mapper ${data.objectName}Mapper;
    
        public int create(${data.entityName} ${data.objectName}) {
            return ${data.objectName}Mapper.create(${data.objectName});
        }
    
        public int delete(Integer id) {
            return ${data.objectName}Mapper.delete(id);
        }
    
        public int update(${data.entityName} ${data.objectName}) {
            return ${data.objectName}Mapper.update(${data.objectName});
        }
    
        public int updateSelective(${data.entityName} ${data.objectName}) {
            return ${data.objectName}Mapper.updateSelective(${data.objectName});
        }
    
        public PageInfo<${data.entityName}> query(${data.entityName} ${data.objectName}) {
            if(${data.objectName} != null && ${data.objectName}.getPage() != null){
                PageHelper.startPage(${data.objectName}.getPage(),${data.objectName}.getLimit());
            }
            return new PageInfo<${data.entityName}>(${data.objectName}Mapper.query(${data.objectName}));
        }
    
        public ${data.entityName} detail(Integer id) {
            return ${data.objectName}Mapper.detail(id);
        }
    
        public int count(${data.entityName} ${data.objectName}) {
            return ${data.objectName}Mapper.count(${data.objectName});
        }
    }
    
    

    10.前端

    Layui+Layuimini 单页版V2

    Layuimini:基于Layui编写的一套最简洁、易用的后台框架模板(基本上与LayuiAdminPro功能上类似)

    整合部分详见视频+代码

    11.前后端分离项目

    • ajax(前端实现类似拦截器这样的效果比较差,改动代码太多)
    • axios(易用、简洁且高效的http库)

    http://www.axios-js.com/zh-cn/docs/

    Promise(不太了解的同学看一下即可)

    特性

    • 从浏览器中创建 XMLHttpRequests
    • 从 node.js 创建 http 请求
    • 支持 Promise API
    • 拦截请求和响应
    • 转换请求数据和响应数据
    • 取消请求
    • 自动转换 JSON 数据
    • 客户端支持防御 XSRF

    12.Layui集成Axios

    //前后端分离的项目 数据传输的验证采用token
    
    axios.interceptors.request.use(function(config){
        config.headers.token="zzzzzzzzzzzzzzzz";//与后端交互的时候还需要处理
        return config;
    },function(error){
        return Promise.reject(error);
    });
    
    
    axios.interceptors.response.use(function(response){
        console.log(response.headers['content-type']);与后端交互的时候还需要处理
        if(response.status==200){
            const res = response.data;
            if(res.code==0){ //后端返回的数据为0的时候为正常数据
                return res;
            }else{
                return Promise.reject(res.msg);
            }
        }else{
            return Promise.reject(response.statusText);
        }
    },function(error){
        return Promise.reject(error);
    });
    
    

    13.登录页面与主页

    • 前端项目的分包结构
    • 掌握调整js、css、images文件路径

    14.登录功能

    form.on('submit(login)', function (data) {
        data = data.field;
        console.log(data);
        axios({
            method: 'post',
            url: 'http://localhost:8888/dormitory/login',
            data: data
        }).then(function(data){
            console.log(data);
        }).catch(function(error){
            console.log(data);
        });
        return false;
    });
    

    15.跨域处理

    @Configuration
    public class MyWebMvcConfigurer implements WebMvcConfigurer {
    
        //使用CorsFilter解决跨域的问题
        @Bean
        public CorsFilter corsFilter(){
            CorsConfiguration corsConfiguration = new CorsConfiguration();
            //允许跨域请求的域名
            corsConfiguration.addAllowedOrigin("*");
            corsConfiguration.addAllowedMethod("*");
            //允许任何头部
            corsConfiguration.addAllowedHeader("*");
            UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
            urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration);
            CorsFilter corsFilter = new CorsFilter(urlBasedCorsConfigurationSource);
            return corsFilter;
        }
    }
    
    

    16.基于Token的身份验证

    ​ 参考网页

    ​ https://www.cnblogs.com/Jason-Xiang/p/9808596.html

    ​ http://tool.chinaz.com/Tools/Base64.aspx

    • HTTP Basic Auth

      HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,在开发对外开放的RESTful API时,尽量避免采用HTTP Basic Auth。

    • Cookie Auth

      Cookie认证机制就是为一次请求认证在服务端创建一个Session对象,同时在客户端的浏览器端创建了一个Cookie对象(jsessionId);通过客户端带上的Cookie对象来与服务器端的session对象匹配来实现状态管理的。默认的,当我们关闭浏览器的时候,cookie会被删除。但可以通过修改cookie 的expire time使cookie在一定时间内有效。

    • 基于 Token 的身份验证方法

      使用基于 Token 的身份验证方法,大概的流程是这样的:

      1. 客户端使用用户名跟密码请求登录
      2. 服务端收到请求,去验证用户名与密码
      3. 验证成功后,服务端会签发一个 Token然后保存(缓存或者数据库),再把这个 Token 发送给客户端
      4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
      5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
      6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

      Token机制相对于Cookie机制又有什么好处呢?

      • 支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输.
      • 无状态(也称:服务端可扩展行):Token机制在服务端不需要存储session信息,因为Token 自身包含了所有登录用户的信息,只需要在客户端的cookie或本地介质存储状态信息.
      • 更适用CDN: 可以通过内容分发网络请求你服务端的所有资料(如:javascript,HTML,图片等),而你的服务端只要提供API即可.
      • 去耦: 不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在你的API被调用的时候,你可以进行Token生成调用即可.
      • 更适用于移动应用: 当你的客户端是一个原生平台(iOS, Android,Windows 8等)时,Cookie是不被支持的(你需要通过Cookie容器进行处理),这时采用Token认证机制就会简单得多。
      • CSRF:因为不再依赖于Cookie,所以你就不需要考虑对CSRF(跨站请求伪造)的防范。
      • 性能: 一次网络往返时间(通过数据库查询session信息)总比做一次HMACSHA256计算 的Token验证和解析要费时得多.
      • 基于标准化:你的API可以采用标准化的 JSON Web Token (JWT). 这个标准已经存在多个后端库(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如:Firebase,Google, Microsoft).

      基于JWT(JSON WebToken)的Token认证机制实现

      实现Token 验证的方法挺多的,还有一些标准规范,其中JSON Web Token(JWT)是一个非常轻巧的规范 。JWT 标准的 Token 有三个部分:

      • header(头部)
      • payload(数据)
      • signature(签名)

      中间用点分隔开,并且都会使用 Base64 编码,所以真正的 Token 看起来像这样:

      eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc
      

      Header

      每个 JWT token 里面都有一个 header,也就是头部数据。里面包含了使用的算法,这个 JWT 是不是带签名的或者加密的。主要就是说明一下怎么处理这个 JWT token 。

      头部里包含的东西可能会根据 JWT 的类型有所变化,比如一个加密的 JWT 里面要包含使用的加密的算法。唯一在头部里面要包含的是 alg 这个属性,如果是加密的 JWT,这个属性的值就是使用的签名或者解密用的算法。如果是未加密的 JWT,这个属性的值要设置成 none

      示例:

      {
        "alg": "HS256"
      }
      

      意思是这个 JWT 用的算法是 HS256。上面的内容得用 base64url 的形式编码一下,所以就变成这样:

      eyJhbGciOiJIUzI1NiJ9
      

      Payload

      Payload 里面是 Token 的具体内容,这些内容里面有一些是标准字段,你也可以添加其它需要的内容。下面是标准字段:

      • iss:Issuer,发行者
      • sub:Subject,主题
      • aud:Audience,观众
      • exp:Expiration time,过期时间
      • nbf:Not before
      • iat:Issued at,发行时间
      • jti:JWT ID

      比如下面这个 Payload ,用到了 iss 发行人,还有 exp 过期时间这两个标准字段。另外还有两个自定义的字段,一个是 name ,还有一个是 admin

      {
       "iss": "nihao.net",
       "exp": "1438955445",
       "name": "wanghao",
       "admin": true
      }
      

      使用 base64url 编码以后就变成了这个样子:

      eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ
      

      Signature

      JWT 的最后一部分是 Signature ,这部分内容有三个部分,先是用 Base64 编码的 header.payload ,再用加密算法加密一下,加密的时候要放进去一个 Secret ,这个相当于是一个密码,这个密码秘密地存储在服务端。

      • header
      • payload
      • secret
      const encodedString = base64UrlEncode(header) + "." + base64UrlEncode(payload); 
      HMACSHA256(encodedString, 'secret');
      

      处理完成以后看起来像这样:

      SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc
      

      最后这个在服务端生成并且要发送给客户端的 Token 看起来像这样:

      eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc
      

      客户端收到这个 Token 以后把它存储下来,下回向服务端发送请求的时候就带着这个 Token 。服务端收到这个 Token ,然后进行验证,通过以后就会返回给客户端想要的资源。

      JWT的JAVA实现

      Java中对JWT的支持可以考虑使用JJWT开源库;JJWT实现了JWT, JWS, JWE 和 JWA RFC规范

      <dependency>
          <groupId>io.jsonwebtoken</groupId>
          <artifactId>jjwt</artifactId>
          <version>0.9.1</version>
      </dependency>
      

      jwtutils通用类的封装

      package com.yanzhen.framework.jwt;
      
      import com.yanzhen.entity.User;
      import com.yanzhen.framework.exception.MyException;
      import io.jsonwebtoken.*;
      import org.springframework.util.StringUtils;
      
      import java.util.Date;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.UUID;
      
      /**
       * jwt的工具类
       */
      public class JWTUtil {
      
          public static String token = "token";
          //秘钥
          public static String jwt_secret="yanzhen@cms@cc596183363.";
          //过期时长
          public static long jwt_expr = 3600*24*1000;
      
          //1、生成token
          public static String sign(User user){
      
              //1、指定签名的时候使用的签名算法
              SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
              //2、生成签发时间
              long nowMillis = System.currentTimeMillis();
              Date date = new Date(nowMillis);
      
              //3、创建playLoad的私有声明
              Map<String,Object> claims = new HashMap<>();
              claims.put("id",user.getId());
              claims.put("userName",user.getUserName());
              //4、生成签发人
              String subject = user.getUserName();
      
              JwtBuilder builder = Jwts.builder()
                      .setClaims(claims)
                      .setId(UUID.randomUUID().toString())
                      .setIssuedAt(date)
                      .setSubject(subject)
                      .signWith(signatureAlgorithm,jwt_secret);
              //设置过期时间
              Date exprDate = new Date(nowMillis + jwt_expr);
              builder.setExpiration(exprDate);
              return builder.compact();
          }
      
          //2、验证token
          public static boolean verify(String token){
              try {
                  if(StringUtils.isEmpty(token)){
                      return false;
                  }
                  Jwts.parser().setSigningKey(jwt_secret).parseClaimsJws(token).getBody();
                  return true;
              } catch (Exception e) {
                  e.printStackTrace();
                  return false;
              }
          }
          //3、获取用户信息
      
          public static User getUser(String token){
              try {
                  if(StringUtils.isEmpty(token)){
                      throw new MyException("token不能为空");
                  }
                  if(verify(token)){
                      Claims claims = Jwts.parser().setSigningKey(jwt_secret).parseClaimsJws(token).getBody();
                      User user = new User();
                      user.setId(Integer.parseInt(claims.get("id")+""));
                      user.setUserName(claims.get("userName")+"");
                      return user;
                  }else{
                      throw new MyException("超时或不合法token");
                  }
              } catch (Exception e) {
                  throw new MyException("超时或不合法token");
              }
          }
      
      
          public static void main(String[] args) {
              User user = new User();
              user.setId(1);
              user.setUserName("admin");
              System.out.println(sign(user));
          }
      
      }
      

    17.token应用

    @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            String token = request.getHeader(JWTUtil.token);
            //根据token获取user对象
            User user = JWTUtil.getUser(token);
            if(user == null){
                throw  new MyException("超时或不合法的token");
            }
            String newToken = JWTUtil.sign(user);
            response.setHeader(JWTUtil.token,newToken);
            //很重要
            response.setHeader("Access-Control-Expose-Headers", JWTUtil.token);
            request.setAttribute("user",user);
            return true;
        }
    
    axios.interceptors.response.use(function(response){
        if(response.headers.token){
            store.setToken(response.headers.token);
        }
        if(response.status==200){
            const res = response.data;
            if(res.code==200){ //后端返回的数据为200的时候为正常数据
                return res;
            }else{
                return Promise.reject(res.msg);
            }
        }else{
            return Promise.reject(response.statusText);
        }
    },function(error){
        return Promise.reject(error);
    });
    

    18.用户管理

    19.年级管理

    20.组织机构

    • ztree
    • layui集成ztree
    • 实现对ztree节点的curd
    • 数据库设计方面满足tree型结构(parentId)
    • 所有的叶子节点都是班级
    layui集成ztree
    layui.define(['jquery'],function(exports){
    let jQuery = layui.jquery;
    ...
    
    
    layui.link(layui.cache.base+'ztree/zTreeStyle.css')
     exports("ztree",jQuery.fn.zTree)
    });
    
    
    layui.config({
        base: rootPath + "lay-module/",
        version: true
    }).extend({
        miniAdmin: "layuimini/miniAdmin", // layuimini后台扩展
        miniMenu: "layuimini/miniMenu", // layuimini菜单扩展
        miniPage: "layuimini/miniPage", // layuimini 单页扩展
        miniTheme: "layuimini/miniTheme", // layuimini 主题扩展
        miniTongji: "layuimini/miniTongji", // layuimini 统计扩展
        step: 'step-lay/step', // 分步表单扩展
        treetable: 'treetable-lay/treetable', //table树形扩展
        tableSelect: 'tableSelect/tableSelect', // table选择扩展
        iconPickerFa: 'iconPicker/iconPickerFa', // fa图标选择扩展
        echarts: 'echarts/echarts', // echarts图表扩展
        echartsTheme: 'echarts/echartsTheme', // echarts图表主题扩展
        wangEditor: 'wangEditor/wangEditor', // wangEditor富文本扩展
        layarea: 'layarea/layarea', //  省市县区三级联动下拉选择器
        axios: 'axios/axios', //  axios
        store: 'store/store', //  store
        ztree: 'ztree/ztree', //  axios
    });
    
    ztree操作
    • 实现树形的CURD
    • 树形采用异步还非异步

    21.功能菜单权限设置

    • 管理员设置
      • 所有功能菜单、数据权限
    • 宿管员设置
      • 为每个宿管员单独设置功能菜单权限
      • 拥有自己的数据权限
        • 楼宇管理
          • 楼层
          • 宿舍
          • 学生

    22.学生管理

    • 基础信息(管理员)

    23.楼宇管理

    24.宿舍管理

    25.宿舍编号设置

    26.宿舍初始化

    展开全文
  • 员工宿舍管理主要公司内部提供服务,系统分为管理员员工两部分。 本研究课题重点主要包括了下面几大模块:用户登录,宿舍信息管理,员工信息管理,床位信息管理,员工入住信息管理,宿舍调整,水电费信息管理,...

    本员工宿舍管理主要公司内部提供服务,系统分为管理员员工两部分。

    本研究课题重点主要包括了下面几大模块:用户登录,宿舍信息管理,员工信息管理,床位信息管理,员工入住信息管理,宿舍调整,水电费信息管理,报修信息管理,基本设施管理,修改密码等功能。这几个模块相互独立又存在着一定的联系,缺一不可。

    用户登录界面

    用户登录界面

    管理员可以管理对应的员工信息,在员工信息管理中输入对应的用户名,密码,姓名,性别,年龄,电话,地址等基本信息后点击确定按钮,在系统检测输入的数据合法后添加医生信息到数据库中,在本页面设计的时候首先加入一个几行2列的表格,分别用来存放对应的用户名,密码,姓名,性别,年龄,电话,地址等信息,然后在加入几个对应的textbox用来存放对用户名,密码,姓名,性别,年龄,电话,地址等信息然后加入2个按钮,分别用来提交信息和重填上次输入的信息,当输入了对应的信息后点击确定系统自动提交对应的信息到数据库中

    员工信息管理列表

    员工信息管理列表

    管理员可以管理对应的宿舍信息,在宿舍信息管理中输入对应的宿舍,电话,床位数,状态等基本信息后点击确定按钮,在系统检测输入的数据合法后添加宿舍信息到数据库中,在本页面设计的时候首先加入一个几行2列的表格,分别用来存放对应的宿舍,电话,床位数,状态等信息,然后在加入几个对应的textbox用来存放对应宿舍,电话,床位数,状态等信息然后加入2个按钮,分别用来提交信息和重填上次输入的信息,当输入了对应的信息后点击确定系统自动提交对应的信息到数据库中

    宿舍信息管理列表

    宿舍信息管理列表

    水电费信息管理列表

    水电费信息管理列表

    系统功能结构图

    系统功能结构图

    摘 要1
    第1章 系统概述5
    1.1 研究背景5
    1.2 研究的意义5
    1.3 主要研究内容6
    第2章 系统开发环境6
    2.1 ASP.NET概述6
    2.2 动态网站技术介绍7
    2.3 数据库技术7
    第3章 需求分析9
    3.1 需求分析9
    3.1.1 功能需求9
    3.2 可行性分析9
    3.2.1 可行性分析9
    3.2.2 技术可行性9
    3.2.3 运行可行性10
    3.2.4 时间可行性10
    3.3 系统流程和逻辑10
    第4章 系统概要设计14
    4.1 概述14
    4.2 系统结构14
    4.3. 数据库设计15
    第5章 系统详细设计18
    5.1登陆模块的实现18
    5.2 管理员管理18
    5.3 员工信息管理19
    5.4 宿舍信息管理20
    5.5入住信息管理21
    5.6水电费信息管理22
    5.7修改密码23
    第6章 系统测试24
    6.1 员工宿舍管理的测试目的24
    6.2 员工宿舍管理的测试方法24
    6.3 员工宿舍管理的测试特列24
    6.4 员工宿舍管理的系统测试结果25
    第7章 总结29
    致谢语30
    参考文献31

    展开全文
  • 精品教育教学资料
  • (本系统实现学生与宿舍管理人员的基本信息查询,同时还有晚归管理,出入管理,维修管理,系统管理等功能,除此,每一个功能都可以进行添加,删除,修改等,而且界面非常友好,内置有使用方法说明)--(职工信息,...
  • 《数据库大作业——学生宿舍管理系统》由会员分享,可在线阅读,更多相关《数据库大作业——学生宿舍管理系统(9页珍藏版)》请在人人文库网上搜索。1、学生宿舍管理系统信管2班 李维1、 需求分析阶段我们宿舍在管理上...

    《数据库大作业——学生宿舍管理系统》由会员分享,可在线阅读,更多相关《数据库大作业——学生宿舍管理系统(9页珍藏版)》请在人人文库网上搜索。

    1、学生宿舍管理系统信管2班 李维1、 需求分析阶段我们宿舍在管理上都是采用纸上登记,文本记录的,针对此现状,我提出了学生宿舍管理系统的设计。(1)调查分析现在要开发学生宿舍管理系统,首先要调查用户的需求。本次调查采取的主要步骤有:(1) 开调查会。通过与老师,学生座谈了解他们对该管理系统的期望与要求。(2) 请专人介绍。找专业老师了解宿舍的具体安排情况以及学生的入住信息。(3) 设计调查表请学生填写。调查学生的个人信息,宿舍的基本信息,工作人员的基本信息。首先调查基本信息:学生住在宿舍楼中,每站宿舍区都会有若干名阿姨负责本宿舍区的日常管理。(1)学生的基本信息:入校时,每位同学都有唯一的学号,并。

    2、被分配到指定的宿舍楼和指定的宿舍,也会有一个宿舍号,其入校时间就是他的入住时间。(2)宿舍的基本信息:每间宿舍都有唯一的楼号和宿舍号,每站宿舍区都有自己的电话号码。(3)工作人员基本信息:每站宿舍区都有驻楼阿姨和保洁阿姨的编号。(4)报修的基本信息:宿舍楼中经常出现财产的损坏,比如灯泡坏了,厕所的马桶出故障了等,这时,同学们需要将财产损坏情况报告给宿舍楼管理员,以便学校派人进行维修。这时,需要记录报修的宿舍号和损坏的财产编号,同时记录报修的时间和损坏的原因。当损坏的财产维修完毕后,应记录解决时间,表示该报修成功解决。(5)来访者基本信息每站宿舍对于每一次的人员来访都要做好相应的登记。包括来访者。

    3、和被访者的信息。(2)用户对系统的要求1、信息要求:宿舍楼管理员能查询上面提到的宿舍楼的所有相关信息,包括某一学号的学生在宿舍楼中住宿的详细信息,报修的所有信息和来访者的信息,以利于对整个宿舍楼的全面管理。2、处理要求:当学生基本信息发生变化时,宿舍楼管理员能对其进行修改。比如,某些同学搬到其他的宿舍中去,他们在本宿舍楼中相应的记录就应该删去;当宿舍财产报修及时解决后,管理员应登记解决时间,表明该报修问题已成功解决。3、安全性与完整性要求:A、安全性要求:(1)系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;(2)系统应对不同的数据设置不同的访问级。

    4、别,限制访问用户可查询和处理数据的类别和内容;(3)系统应对不同用户设置不同的权限,区分不同的用户,如区分普通用户(学生),管理员。B、完整性要求:(1)各种信息记录的完整性,信息记录内容不能为空;(2)各种数据间相互的联系的正确性;(3)相同的数据在不同记录中的一致性。数据库功能:基本信息管理、住宿管理、服务管理、来访者管理。基本信息管理包括学生信息、宿舍信息、工作人员信息;住宿信息包括入住、分配床位、毕业退宿;服务管理包括电费、维修;来访者管理包括来访者信息登记、来访者查询。(3) 数据字典设计(数据项,数据结构,数据量,数据存储,处理过程)1、 数据项数据项名含义说明别名数据类型长度取值。

    5、范围学号住宿学生学生编号char8姓名住宿学生学生姓名Varchar10性别住宿学生char2专业住宿学生Varchar20联系方式住宿学生char11员工号宿舍阿姨员工编号char4员工姓名宿舍阿姨Varchar10年龄宿舍阿姨smallint2职位宿舍阿姨员工从事工作Varchar20联系方式宿舍阿姨手机号码char11区名宿舍所属园区澄,泽,沁,润Varchar2站名园区几站一站,二站char2楼号宿舍是几栋char2宿舍号宿舍几零几char3宿舍电话宿舍每站号码char12可住人数宿舍smallint2已住人数宿舍smallint2物品号物品报修varchar8报修原因物品报修char。

    6、50提交日期物品报修datetime 8解决日期物品报修datetime8报修费用物品报修decimal5来访人姓名来访者Varchar10被访人姓名来访者Varchar10所属关系来访者Varchar20证件名称来访者Varchar20来访日期来访者Datetime8来访时间来访者Datetime8归访时间来访者Datetime8备注来访者Varchar502、 数据结构数据结构名含义说明组成学生住宿信息学生登记入住信息学号,姓名,性别,专业,联系方式,入住时间员工信息员工就职信息员工号,姓名,年龄,性别,职位,家庭地址,联系方式宿舍信息学校宿舍园区分布情况以及入住情况区名,站名,楼号,宿舍。

    7、号,宿舍电话,可住人数,已住人数报修信息设备保修楼号,宿舍号,物品号,报修原因,提交日期,解决日期,报修费用来访者信息每站来访人员登记来访人姓名,被访人姓名,所属关系,证件名称,来访日期,来访时间,归访时间,备注3、 数据流以来访人员为例:数据流:来访人员说明:对每日的来访人员进行登记查询数据流来源:来访者数据流去向:来访者信息表组成:来访信息平均流量:20人/天高峰期流量:50人/天4、 数据存储数据存储名说明输入的数据流输出的数据流组成存取频度存取方式报修信息表设备保修信息存储表报修信息已修信息报修信息报修信息已修信息5件/h随机来访者信息表来访者信息存储表来访信息来访结束信息来访信息来访。

    8、信息来访结束信息10/天随机5、 处理过程处理过程名输入数据流输出数据流登记报修报修信息报修信息查询报修报修信息报修信息登记已修信息已修信息已修信息登记来访者信息来访者信息来访者信息查询来访者信息来访者信息来访者信息登记归访信息归访信息归访信息2、 概念结构设计(1) 分E-R图学生联系方式专业学号姓名已住人数宿舍区名可住人数楼号站名宿舍电话员工年龄员工号职位联系方式员工姓名来访者性别证件关系姓名(2)总E-R图学号区名入住时间站名楼号姓名1n宿舍电话宿舍入住学生专业可住人数离宿时间11联系方式已住人数来访时间管理来访归访时间nn年龄员工来访者员工号职位性别证件联系方式员工姓名关系姓名3、 逻。

    9、辑结构设计(1)转换原则: 一个实体型转换为一个关系模式。 关系的属性:实体型的属性 关系的码:实体型的码 2. 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系 模式合并。 1) 转换为一个独立的关系模式 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的码:n端实体的码 2)与n端对应的关系模式合并合并后关系的属性:在n端关系中加入1端关系的码和联系本身的属性 合并后关系的码:不变 可以减少系统中的关系个数,一般情况下更倾向于采用这种方法。 3一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。 1) 转换为一个独立的关系模式 关系。

    10、的属性:与该联系相连的各实体的码以及联系本身的属性 关系的候选码:每个实体的码均是该关系的候选码 2) 与某一端对应的关系模式合并 合并后关系的属性:加入对应关系的码和联系本身的属性 合并后关系的码:不变 4一个m:n联系转换为一个关系模式。 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的码:各实体码的组合。 5三个或三个以上实体间的一个多元联系转换为一个关系模式。 关系的属性:与该多元联系相连的各实体的码以及联系本身的属性 关系的码:各实体码的组合 6. 具有相同码的关系模式可合并。 目的:减少系统中的关系个数。 合并方法:将其中一个关系模式的全部属性加入到另一个关系模式中,。

    11、然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序(2) 关系模式(1)学生住宿表(student accommodation(SA):(学号xh,姓名xm,性别xb,专业zy,入住时间rzsj,联系方式lxfs,楼号lh,宿舍号ssh)(2)宿舍表(Dormitory):(区名qm,站名zm,楼号lh,宿舍号ssh,电话号码dhhm,可住人数kzrs,已住人数yzrs)(3)设备报修表(equipment maintenance(EM):(区名qm,站名zm,楼号lh,宿舍号ssh,物品号wph,报修原因bxyy,提交日期tjrq,解决日期jjrq, 报修费用bxfy)(4。

    12、)来访者表Victor:(来访人姓名lfrxm,被访人姓名bfrxm,所属关系gx,证件名称zj,来访日期lfrq,来访时间lfsj,归访时间gfsj,学号xh)(5)员工信息表Staff:(员工号ygh,员工姓名ygxm,年龄nl,楼号lh,性别xb,职位zw,联系方式lxfs)4、 物理结构设计数据库在物理设备上的存储结构与存储方法称为数据库的物理结构,为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程就是数据库的物理设计分两步走:(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;(2)对物理结构进行评价,评价的重点是时间和空间效率。对于不同的表要建立不同的索。

    13、引,如学生住宿表建立唯一索引,宿舍表建立组合索引5、 实施和维护Create table SA(xh char(8) primary key,xm varchar(50) ,xb char(2),zy varchar(50), lxfs char(11),rzsj datetime ,lh char(2) ,ssh char(3), );Create table Dormitory(qm varchar(50),Zm int,Lh varchar(50),Ssh int,Dhhm int,Kzrs int,Yzrs int,);Create table EM(lh char(6) ,ssh c。

    14、har(6) ,wph char(8) ,bxyy char(50) ,tjrq datetime ,jjrq datetime ,bxfy decimal(5,2) ,);Create table Victor(lfzxm varchar(10) ,bfzxm varchar(10) ,gx Varchar(20) ,zj Varchar(20) ,lfrq Datetime ,lfsj Datetime ,gfsj Datetime ,bz Varchar(50),xh char(8) );Create table staff(ygh char(4) primary key,ygxm va。

    15、rchar(10) not null,nl smallint ),lh char(2),xm char(2) ,zw varchar(20) ,lxfs char(11),);导入数据Insert into SA(xh,xm,xb,zy,rzsj,lxfs,lh,ssh)Values()Insert into Dormitory(qm,zm,lh,ssh,dhhm,kzrs,yzrs)Values()Insert into EM(qm,zm,lh,ssh,wph,bxyy,tjrq,jjrq, bxfy)Values()Insert into Victor(lfrxm,bfrxm,gx,zj,lfrq,lfsj,gfsj,xh)Values()更新删除Update SA set xm=m+yghDelete from Staff where nl=50 简单查询Select * from SA;Select xh,xm,zy from SA where lh=5 and ssh=601;Select ygh from staff;Select ssh from Dormitory where qm=澄园。

    展开全文
  • C# 学生宿舍管理系统

    2015-11-12 21:27:14
    本系统实现学生与宿舍管理人员的基本信息查询,同时还有晚归管理,出入管理,维修管理,系统管理等功能,除此,每一个功能都可以进行添加,删除,修改等,而且界面非常友好,内置有使用方法说明.
  • 工业园区剧集的人员比较多,虽然生活比较方便,但是离市区一般也比较远,娱乐相对来说要少一些,而视频是很多人员休闲时间的主要方式,而给员工提供一些自办的园区或者集团直播节目,不仅仅可以丰富员工的生活还能...
  • 宿舍管理系统源代码

    2018-05-05 17:45:28
    根据功能说明,设计其存储结构,数据存储在文件中,界面要求有合理的提示,...在编译、连接与运行程序的过程中,应充分利用调试方法与工具,同时不断总结编写和调试较大型程序的经验与体会,按设计的要求写出设计报告。
  • 2.4.2宿舍管理顶层数据流程图 10 2.4.3宿舍管理一层数据流程图 11 2.4.4住宿管理业务流程图 11 2.4.5出入管理数据流程图 12 2.4.6入住办理数据流程图 12 2.4.7退宿管理数据流程图 12 2.4.8学生信息修改数据流程图 13...
  • 宿舍怎样推行5s管理制度?

    千次阅读 2019-03-14 10:21:41
    华天谋5s管理专家概述:无论是学生宿舍还是职工宿舍都是一个集体群居的地方,各自家庭不同、生长环境不同、个人素质也不一样。如何做好宿舍管理?这是一个管理难题。随着5s管理的广泛应用推行,经实践证明5s管理同样...
  • 学生宿舍信息管理系统

    千次阅读 多人点赞 2020-12-31 15:20:16
    适合学校的宿舍管理人员使用。本系统实现以下基本功能:管理员可以对公寓进行全程管理,不仅可以管理学生,还可以管理寝室人员及外来人员及出入物品,也能方便的进行统计和更改。把软件工程中规范化的软件开发方法...
  • 新生宿舍管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用springboot框架构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。...
  • 数据库课程设计——学生宿舍信息管理系统

    万次阅读 多人点赞 2018-09-17 23:33:00
    数据库课程设计——学生宿舍信息管理系统 目录  1.设计目的... 2 2、任务与要求... 2 3、学生宿舍管理系统课程设计... 2 3.1 引言... 2 3.2需求分析... 2 3.2.1....
  • 随着社会的发展,教育事业的不断完善,全国范围内受教育的人数在逐渐递增,西安科技大学有两万多的在校生,宿舍管理成为重中之重。宿舍是学生生活和学习的重要场所,但因宿舍的使用率的居高不下,导致宿舍物品的损坏...
  • 宿舍管理系统e–r图 在过去的四个月中,我撰写了许多有关软件开发管理的博客。 我会写更多,但我现在想在这个迷你系列文章的下面划一条线-我想写博客。 软件开发中的管理和软件开发是一个重要的主题,简单地取消...
  • 基于SSM校园宿舍管理系统

    千次阅读 2020-07-15 23:45:12
    } //添加员工 public String insertAdmin() throws Exception{ String result =""; boolean b=adminDao.insertAdmin(admin); if(b==true){ result="success"; }else { result="error"; } ...
  • 从经济,技术,社会三个方面分析宿舍管理系统所写的分析报告,希望能帮到大家~!
  • 学生宿舍管理系统之逻辑结构设计

    千次阅读 2018-11-28 22:33:42
    逻辑结构设计 1.E-R 图向关系模型的转换 学生表:学号、姓名、性别、专业...宿舍表:楼号、宿舍号、宿舍电话、可住人数、已住人数 主码:楼号、宿舍号 报修表:物品名称、报修原因、报修日期、报修人、报修费用 ...
  • 任务02 员工宿舍网络规划任务说明任务要求知识点操作平台任务探索计算机网络计算机网络分类通信协议IP地址什么是IP地址IPV4和IPV6是什么IPV4数据结构公有IP和私有IP路由控制IP数据包的分片与重组子网为什么要划分...
  • C#宿舍管理系统(C#课程设计含源码)

    万次阅读 多人点赞 2020-12-02 23:24:45
     经过对学生宿舍管理信息进行调查,发现了随着近几年的高校招生人数的不断扩大,学生宿舍管理工作也越来越繁重和琐碎,如住宿安排、收费、统计、打印(包括水费、电费、热水费)、查询等种种问题,手工管理已不能...
  • 宿舍员工组网

    千次阅读 2021-04-07 00:01:09
    寝室宿舍组网 面临的问题 住在⼀起的室友之间经常会联⽹打⼀些局域⽹的游戏,⽐如王者、吃鸡之类的。现在寝室合伙一起买了⼀台TP-LINK⽆线路由器,但是不知道怎么样才能让⼤家都在⼀个局域⽹中打游戏,你知道怎么...
  • 本次暑假实践结束了,和同学们一起做了一个学生宿舍管理系统的数据库.基于该数据库开发学生宿舍管理系统软件.发现数据库这东西一下子创建一个大概的结构其实是很简单的,但是你要将这个数据库完整,并准确地运用到软件...
  • 3、NAT协议 该协议能自动测定NAT网关的外部IPv4地址,并为应用程序提供与对等端交流通信的方法。 五、任务 规划⼀个C类IP地址,例如使⽤⼦⽹掩码将IP地址192.168.99.0~192.168.99.255划分成四个⼦⽹(可以从8位...
  • 我们公司前往中天建设承建雅居乐地产为其工地员工宿舍进行无线WIFI覆盖测试以及规划,整个测试依据甲方要求,并结合现场环境我们给出了有效合理的方案,无线WiFi覆盖环绕工地员工之家(宿舍)进行测试和规划。...
  • 员工请假管理系统(MFC+ACCESS数据库+ODBC数据源)

    千次阅读 多人点赞 2014-01-10 00:21:37
    用MFC和ACCESS数据库设计一个请假管理系统可以进行对员工请假的管理和对公司假期及国定假期的设定。 2.功能需求  2.1.系统管理  更换登录用户 退出  2.2.请假管理窗体  员工请假登记 删除请假记录 撤销...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,534
精华内容 1,813
关键字:

员工宿舍管理方案