当前位置: 首页 > news >正文

java抗疫物质管理系统设计和实现

 

一、 绪论

1.1 系统研究目的意义

随着信息技术的不断发展,我们现在已经步入了信息化的时代了,而信息时代的代表便是网络技术的日渐成熟,而现在网络已经和我们的生活紧密的联系起来了,我们不敢想象没有网络我们的生活会像怎么样,也许就像2020年一次全国性的疫情,因此很多的地方都开始封城,虽然方法各不相同,但目的都是一样的:减少出行的感染风险,等待专家的解决方案。疫情当下的情况下,救援物资分配制度不够完善。需要一个系统或者软件可以更清晰的展现出一个地区抗疫物资的收发、使用、剩余的具体状况,使抗疫物资管理人员能对物资的情况有一个很清晰的了解。避免在分配物资的时候出现问题。这时候抗疫物质信息管理系统就应运而生。

1.2研究的内容

  该抗疫物质信息管理系统主要研究内容是实现各级人员对对系统各项模块功能的管理、审核、申请以及一些通知公告信息的查看浏览以及发布等、主要研究具体模块有:用户管理模块、角色管理模块、菜单权限模块、抗疫地区管理、抗疫物质类型管理、物质详情管理模块、以及物质的申请、审核以及等待审核结果的这一过程进行研究分析流程、最后和管理员通知公告发布以及普通人员的消息接受和修改密码退出系统等具体功能研究和。

二、相关技术介绍分析

2.1 spring

  Spring 框架是Java技术平台上的一种常见开源应用框架,提具有控制反转IOC的容器。尽管长时间以来Spring框架自身对编程没有限制,但是其在Java应用中的频繁使用让它很受青睐,所有后来让它作为EJB(EnterpriseJavaBeans)模型信息补充,java Spring框架为开发提供了一系列技术解决方案,比如:利用控制反转IOC的特性,通过实现依赖注入来实现管理整个对象生命周期容器化,利用java面向切面编程技术进行声明式事务管理,整合各种持久化技术管理数据的访问,提供了很多优秀的Web框架方便开发、JAVA Spring框架具有控制反转IOC特性,IOC主要在方便项目维护和测试时期,它提供了一种通过Java反射机制对Java对象进行统一配置与各种管理的方法。JAVA Spring框架通过容器管理对象的整个生命周期,spring容器通过扫描XML配置文件来配置对象,java开发者通过依赖注入查来获得对象或查找对象。java Spring框架具有面向切面编程(AOP)框架的功能。SpringAOP框架基于经典的java设计模式--代理模式,可以同时运行时可配置;java AOP框架主要技术针对模块之间得交叉关注点进行模块化管理。Spring框架的AOP功能仅提供基本的AOP特性功能,虽然无法与AspectJ框架相比较,但是通过与AspectJ框架的集成,也可以满足基本功能需求。Spring框架下的事务管理、远程访问等功能均可以通过使用Spring-AOP技术来实现。Spring事务管理为Java平台开发者带来了一种抽象的机制,使本地事物和全局事务、嵌套事务能够与保存点在一起工作,而且可以在Java平台的任何环境中工作、Spring集成 了多种事务,系统可以通过事务、XML以及Java注解进行事务配置,而且事务框架集成了消息传递和功能和缓存的功能。Spring的数据访问解决了开发者在应用程序中使用数据库时遇见的常见困难。它不仅对Java:JDBC、iBATS、MyBATIs框架、Hibernate框架、Java数据对象(JDO)、和ApacheCayne等流行的数据访问框架中提供技术支持。并且可以与Spring事务管理一起来使用,提供数据访问抽象。java Spring框架最开始是没有打算构建一个自己的WebMVC的框架,但是开发人员在开发设计过程中认为现有的Struts框架的表现层和请求处理层之间、请求处理层和模型之间的分离还不够彻底,所有创建了经典的SpringMVC框架。

2.2 Spring MVC

  Spring MVC框架是一个经典的MVC流程框架,通过实现ModelView以及Controller处理器来很好地将数据和业务以及展现层进行完全分离。从这样的一个角度来说的话,Spring MVC、Struts以及Struts2非常的类似。SpringMVC总体设计是围绕DispatcherServlet前端控制器来展开的,DispatcherServlet负责将前端请求发送到特定的handler映射。通过配置的handler mappings---view resolution---locale以及theme resolution来处理收到的请求并且转到对应的视图处理器。Spring MVC请求业务处理的整体流程如下展示:

 

2.3 mybatis

MyBatis框架是底层JDBC访问数据库的封装,它使得底层访问数据库的操作是透明的。MyBatis的操作是基于一个SQL SessionFactory实例。MyBatis框架通过各种配置文件与特定对象实体类的映射Mapper文件相关联,并且Mapper文件配置了每个对象到数据库的SQL映射。当与数据库交互时,通过SQLSessionFactory实例获取SQLSession对象并执行SQL命令。访问数据库。

2.4 JSP技术

JSP(全称JavaServer-Pages)是由Sun领导并创建的一种动态Web页面JAVA技术。JSP部署在Web服务器上,动态生成HTML、XML和其他JAVA Web页面,以响应客户端发送的特定请求。并将数据返回给请求者根据发送的内容request.JSP技术是基于JAVA语言的脚本语言,为用户的HTTP、HTTPS请求提供服务,并能处理复杂的业务数据和请求与其他JAVA相关程序在服务器上。

JSP是将JAVA相关代码和特定内容更改嵌入到静态页面中,以静态页面为模板,动态生成部分内容。JSP引入XML标记,用于JSP动作调用函数。您还可以创建JSP动态标记库,并像使用标准HTML或XML标记那样使用它们。动态标记库可以增强功能和服务器性能,而不受跨平台问题的限制。Java JSP文件在运行时被编译器转换为更多原始的Servlet底层代码。JSP编译器可以将JSP文件编译为用Java代码编写的Servlet低级代码。然后编译成计算机二进制代码,可以由Java编译器统一快速执行,或直接编译成二进制代码数据。

2.5 jQuery

JQuery框架是一个快速、经典和简单的JavaScript前端框架计划。它是继Prototype之后的又一个优秀的JavaScript代码基础框架。jQuery设计的目的是写的少,做的多,也就是说写的代码少。它做的事情越多,就封装了常见的JavaScript功能和代码,并提供了一个简单的JavaScript设计相关的模式,用于优化HTML文档操作、事件处理、CSS样式化、动画设计和Ajax请求交互。

jQuery的核心特性包括:独特的链接语法、简短清晰的多功能对接接口、高效灵活的CSS选择器以及对各种CSS选择器的扩展和扩展能力、方便的插件扩展机制和丰富的插件管理功能。JQuery兼容IE 8.0+、Firefox、谷歌等主流浏览器。

2.6 Mysql

MySQL数据库是与PHP、Java、c++ / c#等主流编程语言技术紧密结合的安全、跨平台、高效的轻量级数据库系统。MySQL数据库系统是由瑞典公司MySQL AB开发、发布和支持的。它于1995年由MySQL的最初开发者David Axmark和Michael Monty Wdenius创建。

目前,MySQL数据库在互联网网站上被广泛使用。由于MySQL数据库体积小、速度快、整体拥有成本很低,尤其是在开源的特点上,很多互联网公司都采用了MySQL数据库来降低开发系统的成本。

MySQL数据库是世界上最快的SQL数据库之一。因为它有许多其他数据库没有的特性,MySQL数据库也是免费和开源的。用户可以通过网络直接从网站上下载MySQL数据库并使用,无需支付任何费用。

MySQL的特点

下面是对MySQL特性的概述。

1)强大的

MySQL提供了多种数据库存储引擎,每个引擎都有自己的优势,适合不同的应用,用户可以选择最合适的引擎来获得最高的性能,可以处理每天访问数亿次以上的高强度搜索网站。MySQL5支持事务、视图、存储过程、触发器等。

2)跨平台支持

MySQL支持至少20个开发平台,包括Linux、Windows、FreeBSD、IBMAx、AIX、FreeBSD等。这允许在任何平台上编写的程序无需对程序进行任何更改就可以进行移植。

3)运行速度快

速度是MySQL的一个显著特征。在MySQL中,使用了极快的b树磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多个连接,可以极快地实现连接;SQL函数使用高度优化的类库实现,运行速度极快。

4)支持面向对象

PHP支持混合编程。编程方法可分为三种:纯面向对象、纯面向过程、面向面对象和面向过程混合。

5)高安全

灵活和安全的权限与密码系统,允许基本的主机身份验证。连接服务器时,所有的密码传输都是加密的,以保证密码的安全性。

6)成本低

MySQL数据库是一个完全免费的产品,用户可以直接通过网络下载。

支持多种开发语言

MySQL支持多种流行的编程语言,包括PHP, ASP。NET, Java, Eiffel, Python, Ruby, Tcl, C, c++, Perl,等等。

8)数据库存储容量大

MySQL数据库的最大有效表大小通常是由操作系统对文件大小的限制决定的,而不是由MySQL的内部限制。InnoDB存储引擎将InnoDB表保存在一个可以从多个文件创建的表空间中。表空间的最大大小是64TB,它可以轻松处理拥有数千万条记录的大型数据库。

9)支持强大的内置功能

PHP提供了大量内置函数,这些函数几乎涵盖了Web应用程序开发的每个方面。它具有内置的数据库连接操作、文件上传和下载功能,MySQL数据库支持大量的扩展库和插件,MySQLI等,可以为JavaWeb应用程序的快速开发提供很好的便利。

MySQL数据库的应用

MySQL数据库是专门用于管理系统数据资源的计算机系统。数据可以以多种形式呈现,如符号、图形、图像、文字、数字和声音等。数据是所有计算机系统的对象。我们熟悉的方式处理是使一个文件,这个过程被编译成一个程序文件,将参与程序的数据根据需求数据文件,然后使用程序调用、数据文件和程序文件保持一定的关系。

随着计算机应用的迅速发展,这种档案管理方法也暴露出其不足之处。例如,它使数据大众化,不易迁移,在不同的网络文件中存储大量重复信息,浪费存储空间,更新不便等。

而数据库系统可以解决上述基本问题。MySQL数据库系统并不是从具体应用出发,是基于数据本身进行管理,它将数据保存在数据库中,组织科学的管理,并借助数据库管理系统进行管理。以它为桥梁,与各种应用程序和应用系统接口,方便快捷地使用数据库中的数据。

其实总体说来简单,数据库其实就是一组计算机语言指令整理后的数据,存储在一个或多个文件域内,而管理数据库的软件就叫做数据库管理系统软件。一个数据库系统

它可以分为数据库、数据库管理系统和数据库管理系统。主流数据库软件包括Oracle、Informix、Sybase、SQL Server、PostgreSQL、MySQL、Foxpro、Teradata等。

数据库在Web开发中的重要地位

归根结底,动态网站是数据的操作,我们平时浏览网页的时候,会发现网页的内容会经常变化,而页面的主体结构却没有变化,新闻是典型的。这是因为我们将新闻存储在数据库中。当用户浏览时,程序会根据用户请求的新闻号从数据库中读取相应的新闻,然后以特定的格式响应用户。

Web系统的开发基本上离不开数据库,因为一切都必须存储在数据库中。所谓动态网站就是基于数据库开发的系统,最重要的是数据管理,或者是我们在数据库的开发过程中围绕编写的程序。因此,作为一名Web程序员,只有掌握了数据库,才能开发软件。

三、需求分析和可行性分析

3.1 系统运行环境

开发系统:Windows7。

JDK版本:Java JDK1.8

开发工具:springboot

数据库版本: mysql5

数据库可视化工具: navicat for mysql

服务器:apache tomcat 7

其他工具:谷歌浏览器控制台调整网页布局

      Postman接口工具进行接口测试

3.2 总体技术设计

此系统需要java面向对象编程基础,数据库知识和功能分析。根据目前阶段所掌握的相关专业知识,以及这学期和之前学习掌握的java编程知识和数据库应用知识以及前端知识做出一个这样的基于、springmvc轻量级框架网页版的抗疫物质信息管理系统平台。

3.3 社会可行性分析

在互联网技术高速发展的今天,通过互联网的传播会让企业更容易的创造更多的经济效益以及对抗疫物质需求的更好掌控以便及时求援,通过网页版抗疫物质信息管理平台的实现 ,有了更大的市场和信息,在这样一个大环境下把资源统筹规化起来,就会获得高效的信息和效益。

3.4 安全性可行性分析

人们在使用网络的时候越来越重视信息的安全性,这也促进了加密技术的发展,同时应用加密技术能够有效提升网络信息的安全性。本抗疫物质信息管理平台平台系统采用了加密保护、页面发送请求获取数据采用关键部分采用post请求对数据传输的保护机制、避免请求数据暴露在浏览器上面、以及不同用户具有不同权限操作通过这些安全性操作,保证系统的稳定性以及可靠性。

3.5 经济可行性分析

服务器端的安装简洁明了,客户机无需再装任何软件,通过浏览器就可以直接访问,可以直接接入 Internet ,无论您身在何处只要您可以访问 Internet 都可以使用本系统。本系统对计算机配置的要求不高,企业机房更换下来的低配置电脑都可以完全满足需要、所以在经济上具有完全的可行性。

3.6 法律可行性分析

本系统是自行研究开发的网络版抗疫物质信息管理平台,它是很有实际意义操作的系统,java开发环境软件和使用的mysql数据库都是开源代码, 开发这个抗疫物质信息管理平台不同于开发普通的系统软件,不存在侵权等问题,所有在法律上是允许可行的。

四、系统设计分析

4.1 系统模式架构

本系统经典的采用B/S架构(浏览器、服务器),是采用浏览器和服务器架构模式设计的架构,随着Internet技术的兴起,对C/S架构模式的一种改变升级或改进。目前,在该架构的应用下,用户通过WWW.xxx.com浏览器实现数据访问和操作。一小部分事务逻辑在前端页面实现,主要业务事务逻辑在服务器端实现,形成三层结构MVC。B/S架构是Web兴起后主流的网络架构设计模式。Web浏览器是目前最重要的客户端应用软件之一。该模式形成了一个统一的客户端,将系统功能的所有核心部分集中在服务器上实现。简化系统开发和维护。只要客户端安装了浏览器就可以操作,服务器端安装了Oracle、MySQL、Sybase等数据库。浏览器通过Web Server和数据库获取数据。简化客户端计算机的负载,降低系统维护和升级的成本和工作量,降低用户的成本。

4.2系统层次架构

根据上述逻辑结构,系统大致可分为三层。

根据处理过程的层次,将系统依次分为

(1)显示层:处理用户界面、数据传输、信息采集等数据显示。

(2)应用层:系统功能的逻辑处理层。它主要处理表示层发送的请求,在后台进行处理,并将处理结果返回给表示层。

(3)核心层:是系统运行核心层和应用层的基础,提供应用层权限控制、拦截器和数据读取等功能。

4.3用户需求分析

用户主要分为管理员和普通用户

  1. 管理员: 管理员可以对后台数据进行管理、拥有最高权限、具体权限有登录后进行用户管理、角色管理、菜单管理、抗疫物质区域管理、抗疫物质类型类型分类和详情管理、审核普通人员提交的物质申请以及通知公告的发布和修改密码退出系统等操作。

普通用户普通用户只能联系系统管理员添加账户信息、可以添加物质申请、查看我的物质申请审核情况以及查看通知公告信息

4.3系统功能详情设计

本系统主要设计采用Java语言开发教务系统、采用springmvc、spring为后台框架、数据库框架采用mybatis框架、前端采用jsp、jquery、js、css等技术

主要模块设计如下:

用户登录管理模块

用户输入账号和密码或手机号登录按钮进行登录、根据输入的账号和密码以及角色来判断是否登录成功以及给出对应提示信息

角色管理模块

管理员可以对角色进行添加、修改、删除和浏览、配置用户角色和权限菜单显示。

部门管理模块

  管理员登录后可以对部门进行管理、添加、输入对应的部门名称等数据点击完成添加、修改以及删除操作。

区域管理模块

  管理员登录后可以对区域进行管理、添加、输入对应的区域名称、区域编码以及备注等完成添加、修改以及删除区域信息等操作。

抗疫物质类型管理模块

  管理员登录后可以对抗疫物质类型进行管理、添加、输入对应的物质类型名称和备注说明完成添加、修改以及删除抗疫物质类型等操作。

抗疫物质管理模块

  管理员登录后可以对抗疫物质进行管理、添加、输入对应的物质类型、名称、用途、数量、生产厂家、时间和备注说明完成添加、修改以及删除抗疫物质等操作。

抗疫物质申请模块

  管理员和普通用户登录后可以对抗疫物质申请进行查看、修改、添加、输入、申请区域、申请类型。申请物质名称以及数量等具体数据点击添加完成申请、以及修改和删除抗疫物质申请数据等操作。

抗疫物质审核模块

  管理员登录后可以对抗疫物质申请进行审核、可以同意和拒绝抗疫物质申请。

通知公告模块

  管理员和登录后可以对抗通知公告进行查看、修改、添加、输入、公告标题以及内容等具体数据点击添加完成申请、以及修改和删除通知公告数据等操作、普通用户可以查看通知公告。

修改密码和退出管理模块

  管理员登录后可以对自己的账号密码进行修改、输入原密码验证成功后连续2次数据相同新密码就可以修改成功。管理员点击注销退出跳转到登录页面重新登陆。

4.4数据整体流程分析

 

4.5源码架构

五、程序设计和实现

5.1 程序主要类

4.1.1用户管理员类

/** * 用户ID*/

@TableId

private Long userId;

/** * 用户名*/

@NotBlank(message="用户名不能为空", groups = {AddGroup.class, UpdateGroup.class})

private String username;

/*** 密码*/

@NotBlank(message="密码不能为空", groups = AddGroup.class)

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)

private String password;

/*** 盐*/

private String salt;

/*** 邮箱*/

@NotBlank(message="邮箱不能为空", groups = {AddGroup.class, UpdateGroup.class})

@Email(message="邮箱格式不正确", groups = {AddGroup.class, UpdateGroup.class})

private String email;

/*** 手机号*/

private String mobile;

/*** 状态  0:禁用   1:正常*/

private Integer status;

/*** 角色ID列表*/

@TableField(exist=false)

private List<Long> roleIdList;

/** * 创建时间*/

private Date createTime;

/*** 部门ID*/

@NotNull(message="部门不能为空", groups = {AddGroup.class, UpdateGroup.class})

private Long deptId;;

4.1.2菜单路径类

/*** 菜单ID*/

@TableId

private Long menuId;

/*** 父菜单ID,一级菜单为0*/

private Long parentId;

/*** 父菜单名称*/

@TableField(exist=false)

private String parentName;

/*** 菜单名称*/

private String name;

/*** 菜单URL*/

private String url;

/*** 授权(多个用逗号分隔,如:user:list,user:create)*/

private String perms;

/*** 类型     0:目录   1:菜单   2:按钮*/

private Integer type;

/*** 菜单图标*/

private String icon;

/*** 排序*/

private Integer orderNum;

/*** ztree属性*/

@TableField(exist=false)

private Boolean open;

@TableField(exist=false)

private List<?> list;;     

4.1.3菜单角色

/** * 角色ID*/

@TableId

private Long roleId;

/*** 角色名称*/

@NotBlank(message="角色名称不能为空")

private String roleName;

/*** 备注*/

private String remark;

/**  * 部门ID*/

@NotNull(message="部门不能为空")

private Long deptId;

/*** 部门名称*/

@TableField(exist=false)

private String deptName;

@TableField(exist=false)

private List<Long> menuIdList;

@TableField(exist=false)

private List<Long> deptIdList;

/*** 创建时间 */

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

private Date createTime;;

4.1.4抗疫物质区域

@TableId

    private Integer id;

    private String title;

    private String num;

    private String bz;

    private Date createTime;

    private String createBy;

4.1.5抗疫物质申请

@TableId

    private Integer id;

    private String applyArea;

    private String applyType;

    private String matterName;

    private String matterNum;

    private String applyUser;

    private Date applyTime;

    private String applyStu;

    private long applyUserId;;

4.1.6抗疫物质详情

 @TableId

    private Integer id;

    private String matterType;

    private String name;

    private String ytu;

    private String num;

    private String zyss;

    private String scTime;

    private String sccj;;

4.1.7抗疫物质类型

@TableId

    private Integer id;

    private String name;

    private String bz;;

5.2主要功能设计实现

5.2.登录模块和系统首页

用户输入网址http://localhost:8080/renren-admin/login.html跳转到登录页面、输入登录账号和密码以及验证码

前端js登录布局输入框和代码编写。发送login ajax请求跳转到后台

      <p class="login-box-msg">用户登录</p>

      <div v-if="error" class="alert alert-danger alert-dismissible">

        <h4 style="margin-bottom: 0px;"><i class="fa fa-exclamation-triangle"></i> {{errorMsg}}</h4>

      </div> <div class="form-group has-feedback"> <input type="text" class="form-control" v-model="username" placeholder="账号"><span class="glyphicon glyphicon-user form-control-feedback"></span></div>

      <div class="form-group has-feedback">

        <input type="password" class="form-control" v-model="password" placeholder="密码">

        <span class="glyphicon glyphicon-lock form-control-feedback"></span>

      <div class="form-group has-feedback">

        <input type="text" class="form-control" v-model="captcha" @keyup.enter="login" placeholder="验证码">

        <span class="glyphicon glyphicon-warning-sign form-control-feedback"></span>

      <div class="form-group has-feedback">

        <img alt="如果看不清楚,请单击图片刷新!" class="pointer" :src="src" @click="refreshCode">       

后台主要代码实现:

/**

 * 登录

 */

@ResponseBody

@RequestMapping(value = "/sys/login", method = RequestMethod.POST)

public R login(String username, String password, String captcha) {

String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);

if(!captcha.equalsIgnoreCase(kaptcha)){

return R.error("验证码不正确");

}

try{

Subject subject = ShiroUtils.getSubject();

UsernamePasswordToken token = new UsernamePasswordToken(username, password);//md5+Jiayan

subject.login(token);

}catch (UnknownAccountException e) {

return R.error(e.getMessage());

}catch (IncorrectCredentialsException e) {

return R.error("账号或密码不正确");

}catch (LockedAccountException e) {

return R.error("账号已被锁定,请联系管理员");

}catch (AuthenticationException e) {

return R.error("账户验证失败");

}

    

return R.ok();

登录完成之后跳转到系统首页

5.3用户添加:

点击系统管理》》用户添加。点击添加按钮执行添加。录入选择添加的相关信息

前端页面主要样式代码设计:

后台代码设计:

/**

 * 保存用户

 */

@SysLog("保存用户")

@RequestMapping("/save")

@RequiresPermissions("sys:user:save")

public R save(@RequestBody SysUserEntity user){

ValidatorUtils.validateEntity(user, AddGroup.class);

sysUserService.saveUser(user);

return R.ok();

}    

5.4抗疫区域列表展示:

前段主要设计代码:

$(function () {

    $("#jqGrid").jqGrid({

        url: baseURL + 'sys/area/list',

        datatype: "json",

        colModel: [

            { label: 'id', name: 'id', index: 'id', width: 30 },

            { label: '区域名称', name: 'title', index: 'title', width: 80 },

            { label: '区域编号', name: 'num', index: 'num', width: 60 },

            { label: '备注信息', name: 'bz', index: 'bz'},

后台代码设计:

 @Autowired

    AreaServiceImpl areaServiceImpe;

    @RequestMapping("/list")

    public R list(@RequestParam Map<String, Object> params){

        PageUtils page = areaService.queryPage(params);

        return R.ok().put("page", page);

    }

 @Override

    public PageUtils queryPage(Map<String, Object> params) {

        String title = (String)params.get("title");

        IPage<Area> page = this.page(

            new Query<Area>().getPage(params),

            new QueryWrapper<Area>()

                .like(StringUtils.isNotBlank(title),"title", title)

        );

        return new PageUtils(page);

    }

5.5添加物质详情:

后台主要代码设计:

      @RequestMapping("/save")

    public R save(@RequestBody Matter matter){

        MatterService.save(matter);

        return R.ok();

    }

5.6抗疫物质列表展示:

前段代码分析:

$("#jqGrid").jqGrid({

        url: baseURL + 'sys/matter/list',

        datatype: "json",

        colModel: [

            { label: 'id', name: 'id', index: 'id', width: 30 },

            { label: '物质类型', name: 'matterType', index: 'matterType', width: 80 },

            { label: '物质名称', name: 'name', index: 'name', width: 80 },

            { label: '用途', name: 'ytu', index: 'ytu',width: 240},

            { label: '数量', name: 'num', index: 'num',width: 60 },

            { label: '注意事项', name: 'zyss', index: 'zyss',width: 240},

            { label: '生产时间', name: 'scTime', index: 'scTime'},

            { label: '生产厂家', name: 'sccj', index: 'sccj'},

        ], }

5.7抗疫物质申请:

前端主要样式:

 <div class="form-group">

                <div class="col-sm-2 control-label">id</div>

                <div class="col-sm-10">

                    <input type="text" class="form-control" v-model="matterApply.id" placeholder="id"/>

                </div>

            </div>

            <div class="form-group">

                <div class="col-sm-2 control-label">请选择申请区域</div>

                <div class="col-sm-10">

                    <select class="form-control"  name ="applyArea"  id="applyArea">

                        <option>请选择</option>

                    </select>

                </div>

            </div>

            <div class="form-group">

                <div class="col-sm-2 control-label">请选择物质类型</div>

                <div class="col-sm-10">

                    <select class="form-control"  name ="name"  id="name">

                        <option>请选择</option>

                    </select>

                </div>

            </div>

            <div class="form-group">

                <div class="col-sm-2 control-label">物质名称</div>

                <div class="col-sm-10">

                    <input type="text" class="form-control" v-model="matterApply.matterName" placeholder="物质名称"/>

                </div>

            </div>

            <div class="form-group">

                <div class="col-sm-2 control-label">申请数量</div>

                <div class="col-sm-10">

                    <input type="text" class=

5.8抗疫物质审核

@RequestMapping("/AuditList")

    public R AuditList(@RequestParam Map<String, Object> params){

        params.put("applyStu","未审核");

        PageUtils page = MatterApplyService.queryPage(params);

        return R.ok().put("page", page);

    }  

5.9数据库连接配置

spring:

  datasource:

    type: com.alibaba.druid.pool.DruidDataSource

    druid:

      driver-class-name: com.mysql.jdbc.Driver

      url: jdbc:mysql://localhost:3306/renren_kywz?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai

      username: root

      password: 123456

      initial-size: 10

      max-active: 100

      min-idle: 10

      max-wait: 60000

      pool-prepared-statements: true

      max-pool-prepared-statement-per-connection-size: 20

      time-between-eviction-runs-millis: 60000

      min-evictable-idle-time-millis: 300000

      #Oracle需要打开注释

      #validation-query: SELECT 1 FROM DUAL

      test-while-idle: true

      test-on-borrow: false

      test-on-return: false

      stat-view-servlet:

        enabled: true

        url-pattern: /druid/*

        #login-username: admin

        #login-password: admin

      filter:

        stat:

          log-slow-sql: true

          slow-sql-millis: 1000

          merge-sql: false

        wall:

          config:

            multi-statement-allow: true

六、数据库设计

6.1数据三范式:

一、第一范式

1NF是对属性的原子性,要求属性具有原子性,不可再分解;

二、第二范式

2NF是对记录的唯一性,要求记录有唯一标识,即实体的唯一性,

三、第三范式

3NF是对字段的冗余性,要求任何字段不能由其他字段派生出来,

数据库采用mysql5版本、满足数据库设计三范式。

编码采用utf8 -- UTF-8 Unicode

排序规则采用utf8_general_ci

6.2ER

6.3用户表设计

名称

字段名

数据类型

长度

可否为空

是否主键

用户id

user_id

int

8

用户名称

username

varchar

50

密码

password

varchar

500

密码加盐

salt

varchar

500

手机号

mobile

blob

500

部门id

dept_id

int

500

6.4菜单表设计

名称

字段名

数据类型

长度

可否为空

是否主键

菜单id

menu_id

int

11

父级id

parent_id

int

50

菜单名称

name

varchar

255

菜单路径

url

varchar

255

权限

perms

blob

255

类型

type

int

11

排序

order

int

11

6.5角色表设计

名称

字段名

数据类型

长度

可否为空

是否主键

角色id

role_id

int

11

角色名称

role_name

varchar

50

备注信息

remark

varchar

255

部门id

dept_id

int

11

创建时间

create_time

date

0

6.6抗疫区域表设计

名称

字段名

数据类型

长度

可否为空

是否主键

区域id

id

int

11

区域名称

title

varchar

255

区域编号

num

varchar

255

备注信息

bz

varchar

255

发布者

create_by

varchar

255

6.7物质表设计

名称

字段名

数据类型

长度

可否为空

是否主键

物质id

id

int

11

物质类型

matter_type

varchar

255

物质名称

name

varchar

255

物质用途

ytu

varchar

255

物质数量

num

varchar

255

注意事项

zyss

varchar

255

生产时间

sc_time

varchar

255

生产常见

sccj

varchar

255

6.8物质类型表设计

名称

字段名

数据类型

长度

可否为空

是否主键

类型id

id

int

11

类型名称

name

255

备注信息

bz

varchar

255

6.9物质申请表设计

名称

字段名

数据类型

长度

可否为空

是否主键

id

id

int

11

申请区域

apply_area

int

255

物质类型

apply_type

varchar

255

物质名称

matter_name

varchar

255

物质编号

matter_num

varchar

255

申请人

apply_user

varchar

255

申请时间

apply_time

varchar

255

申请状态

apply_stu

varchar

255

申请人id

apply_user_id

int

255

6.10角色表设计

名称

字段名

数据类型

长度

可否为空

是否主键

角色id

role_id

int

11

角色id

role_name

int

255

备注信息

remark

varchar

255

部门id

dept_id

varchar

11

创建时间

create_time

blob

七、开发心得体会

经过近期对 java 面向对象程序设计、前端知识以及JAVA 框架的掌握和学习,以及这段时间对抗疫物质信息管理系统的开发,让我更加了解到 java 学习的重要性。在开发这个系统是哪个,我完成了多个实验以及教育系统的功能测试,在这个阶段的系统开发学习当中,我从认识到熟悉java,而后到能够自主运用相关技术。通过对 java 相关技术的了解和学习,我发现了它确实有很多方便之处,比如java集抽象性和封装性以及继承性和多态性于一体,实现了对代码重用和代码扩充功能,提高了整体软件开发的速度和效率。对于我们计算机这个专业来说学好 java 语言是很重要的一部分,所以在开发这个教学管理系统项目的过程中我都尽力理解 java 编程思想、掌握基本技巧,常见的方法和对错误的解决能力、尽量学到最多的知识。 我学习程序设计的主要目的就是提高自己实际问题的程序解决方案的关键技能和技术, java 面向对象程序设计是一科实践性相对来说非常比较强的语言了、springMVC框架的MVC三层架构模式、和框架中遇到的设计模式将数据访问和逻辑操作都集中到组件里面去了 , 增强了系统的复用性和扩展性。使系统的扩展性大大增强。以及前端jQuery、js、jsp、css样式的掌握让我对网页的布局、样式调整、字体等让网页效果实现的更加精准。

http://www.lryc.cn/news/594158.html

相关文章:

  • 多人在线场景下Three.js同步机制设计:延迟补偿、状态插值的工程实践
  • 07_图像容器Mat_详解
  • 元学习算法的数学本质:从MAML到Reptile的理论统一与深度分析
  • maven构建Could not transfer artifact失败原因
  • 红宝书单词学习笔记 list 51-75
  • Word for mac使用宏
  • Function Callingの进化路:源起篇
  • Node.js Express keep-alive 超时时间设置
  • 基于Pytorch的人脸识别程序
  • 【JS逆向基础】数据库之redis
  • 华为开源自研AI框架昇思MindSpore应用案例:基于ERNIE模型实现对话情绪识别
  • 对于stm32RCT6的外部中断
  • `tidyverse` 中涉及的函数及其用法
  • tabBar设置底部菜单选项、iconfont图标(图片)库、模拟京东app的底部导航栏
  • GPT-4o mini TTS:领先的文本转语音技术
  • 私有云新势力:Puter+CPolar如何低成本替代商业网盘?
  • Softhub软件下载站实战开发(十九):软件信息展示
  • 42.sentinel实现线程隔离
  • 学习日志15 python
  • JAVA面试宝典 -《容灾设计:异地多活架构实践》
  • nvm、npm、pnpm、cnpm、yarn
  • Python适配器模式详解:让不兼容的接口协同工作
  • 【C语言】内存函数介绍(上)
  • 【单片机外部中断实验修改动态数码管0-99】2022-5-22
  • 从零开始的云计算生活——番外5,使用ELK实现对应用日志的监控
  • 多源异构数据融合的理论与方法
  • Modbus Slave 使用教程:快速搭建模拟从站进行测试与开发
  • JavaScript 语言基础详解
  • 论文笔记:Seed: Bridging Sequence and Diffusion Models for RoadTrajectory Generation
  • TD3与SAC强化学习算法深度对比