基于Java+SpringBoot+Vue+Element的OA系统的设计和实现

news2024/11/25 18:53:16

基于Java+SpringBoot+Vue+Element的OA系统的设计和实现

    • 源码传送入口
    • 前言
    • 主要技术
    • 系统设计
    • 功能截图
    • 数据库设计
    • 代码
    • 论文目录
    • 订阅经典源码专栏
      • Java项目精品实战案例《500套》
    • 源码获取

源码传送入口

前言

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括小型OA系统设计与实现的网络应用,在国外小型OA系统设计与实现已经是很普遍的方式,不过国内的小型OA系统设计与实现可能还处于起步阶段。小型OA系统设计与实现具有部门公告、通知中心等功能。小型OA系统设计与实现采用Java语言,Springboot框架,基于mysql开发,实现了部门、用户、部门公告、通知中心、代办消息、个人日程、完成代办等内容进行管理,本系统具有良好的兼容性和适应性,为用户提供更多的信息,也提供了良好的平台,从而提高系统的核心竞争力。
本文首先介绍了设计的背景与研究目的,其次介绍系统相关技术,重点叙述了系统功能分析以及详细设计,最后总结了系统的开发心得。
关键词:小型OA系统设计与实现;Springboot框架; Java语言;mysql数据库。

主要技术

2.1 Java语言简介
Java语言是一个完全的面向对象的程序设计语言。面向对象编程语言的思想是把客观存在的事物看成是具有状态和行为的一类对象,然后通过抽象的方法找出相同一类对象的共同状态和行为,从而构成模型——类。类是Java程序设计语言的核心,是Java语言的基本抽象单元。世间上的各种事物都是对象,都可以把它抽象成具有状态和行为的类。Java语言的主要特点有:
Java语言是典型的面向对象的。它提供了类,类又提供了对象的模型,通过使用继承和多态的方法,可以实现代码的重用。
Java语言是安全的。当代网络环境要解决的最大的问题就是安全问题。Java具有内部的安全措施,可以确保程序的安全与完整。
Java语言的操作无关平台。Java程序可以在任何的系统中运行,只要安装了Java的运行系统。
Java语言是多线程的。
Java语言具有内存管理。Java可以自动地对内存进行管理,很好地利用了系统的资源,减少浪费。
2.2 mysql数据库介绍
利用MYSQL的数据独立性、安全性等特点,在软件项目中对数据进行操作,可以保证数据准确无误,并降低了程序员的应用开发时间。
MYSQL的特点是支持多线程,能方便的对系统资源充分利用,有效提高速度,还提供多种方式途径来对数据库进行连接;MYSQL的功能相对弱小、规模也小,但本系统要求不高,MYSQL完全可以满足本网站使用。
利用MYSQL建立系统数据库,不仅有利于数据处理业务的早期整合,还能利于发展后两种数据扩展的操作。
2.3 MySQL环境配置
(1)本系统的数据使用的是MySQL,所以要将MySQL安装到指定目录,如果下载的是非安装的MySQL压缩包,直接解压到指定目录就可以了。然后点击C:\Program Files\MySQL\bin\winMySQLadmin.exe这个文件其中C:\Program Files\MySQL是MySQL安装目录。输入winMySQLadmin的初始用户、密码(注:这不是MySQL里的用户、密码)随便填不必在意,确定之后右下角任务的启动栏会出现一个红绿灯的图标,红灯亮代表服务停止,绿灯亮代表服务正常,左击这个图标->winnt->install the service 安装此服务,再左击这个图标->winnt->start the service 启动MySQL服务。
(2)修改MySQL数据库的root密码。用cmd进入命令行模式输入如下命令:
cd C:\Program Files\MySQL\bin
MySQLadmin -u root -p password 123
回车出现Enter password: ,这是要输入原密码. 刚安装时密码为空,所以直接回车,此时MySQL 中账号 root 的密码被改为 123 安装完毕。

2.4 B/S架构
B/S的系统是通过能上网的电脑就可以使用,它最大的优点是不需要安装专门的软件,首先浏览器向服务器发出请求,然后服务器处理请求把信息再返回给浏览器。不需要再次对数据进行存取与计算数据,只要负责显示数据来降低要求,如果说客户端像个“瘦子”,而服务器会越来越“胖”。B/S体系结构与C/S体系结构相比,最大的不同是:B/S体系的应用软件使用网络浏览器作为与用户交互的平台,而C/S则需要开发专用的应用程序。
当前MIS系统结构目前存在两种较为流行的结构:C/S和B/S两种。
C/S结构的系统:C/S结构就是客户机服务器结构,它可以法派任务到Client端和Server端来进行,充分利用两端硬件环境的优势,来降低系统的通讯的花费。客户端主要作用是处理人机交互,执行客户端应用程序,收集数据以及向服务器发送任务请求。服务器基本作用是执行后台程序,它主要对客户机的请求申请进行反馈,除此之外,它的作用还包括:数据服务预约储系统的共享管理、通讯管理、文件管理等等。
B/S结构的系统:这种网络结构简化了客户端,并把系统功能实现的中心集中到服务器上,在这种模式中,只需要一个浏览器就可以了。这种结构将很多的工作交于WEB服务器,只通过浏览器请求WEB服务,随后根据请求返回信息。
通常在企业网内部使用,采用C/S。而使用不仅限于内网的情况下使用B/S。考虑到本管理系统的一系列需求,所以,该系统开发使用B/S结构开发。

2.5 Springboot框架
本技术是Java平台的开源应用框架,其目的是简化Sping的初始搭建和开发过程。默认配置了很多框架的使用方式,自动加载Jar包,为了让读者尽可能快的跑起来spring应用程序。
SpinrgBoot的主要优点有:
1、为所有spring开发提供了一个更快、更广泛的入门体验;
2、零配置;
3、集成了大量常用的第三方库的配置;
4、提供准备好的特性。当今,Java领域的开发者机会都在使用SpinrgBoot,在开发领域逐渐成为领导者。

系统设计

在这里插入图片描述

功能截图

5.1管理员功能模块
管理员登录系统,管理员登录页面通过输入用户名、密码,选择角色并点击登录进行系统登录操作,如图5-1所示。
在这里插入图片描述

图5-1管理员登录界面图

管理员登录系统后,可以对首页、个人中心、部门管理、用户管理、部门公告管理、通知中心管理、代办消息管理、个人日程管理、完成代办管理等功能模块进行相应操作,如图5-2所示。
在这里插入图片描述

图5-2管理员功能界面图

部门管理,在部门管理页面可以对部门、部门领导、部门电话、部门邮箱等内容进行详情、修改或删除,如图5-3所示。
在这里插入图片描述

图5-3部门管理界面图

用户管理,在用户管理页面可以对用户账号、用户姓名、手机号码、头像、性别、邮箱、部门、职位、审核回复、审核状态、审核等内容进行详情、修改或删除等操作,如图5-4所示。
在这里插入图片描述

图5-4用户管理界面图

5.2用户功能模块
用户注册,在注册页面填写用户账号、用户姓名、密码、确认密码、手机号码、邮箱等详细信息进行注册,如图5-5所示。
在这里插入图片描述

图5-5用户注册界面图

用户登录,用户在登录页面通过填写账号、密码、选择角色信息完成登录,如图5-6所示。
在这里插入图片描述

图5-6用户登录界面图

用户登录进入系统后,可以对首页、个人中心、部门公告管理、通知中心管理、代办消息管理、个人日程管理、完成代办管理等功能模块进行相应操作,如图5-7所示。
在这里插入图片描述

图5-7用户功能界面图

部门公告管理,在部门公告管理页面可以对公告名称、发布时间、部门、部门领导等内容进行详情操作,如图5-8所示。
在这里插入图片描述

图5-8部门公告管理界面图

通知中心管理,在通知中心管理页面可以对文件编号、文件标题、文件、上传时间等内容进行详情操作,如图5-9所示。
在这里插入图片描述

图5-9通知中心管理界面图

代办消息管理,在代办消息管理页面可以对用户账号、用户姓名、部门、职位、部门领导、文件、发放时间、消息备注等内容进行详情、完成代办操作,如图5-10所示。
在这里插入图片描述

图5-10代办消息管理界面图

完成代办管理,在完成代办管理页面可以对用户账号、用户姓名、职位、部门、部门领导、完成文件、消息备注、发放时间、提交时间、审核回复、审核状态、等内容进行详情操作,如图5-11所示。
在这里插入图片描述

图5-11完成代办管理界面图
5.3部门(销售部门)功能模块

部门登录,部门在登录页面通过填写账号、密码、选择角色信息完成登录,如图5-12所示。
在这里插入图片描述

图5-12部门登录界面图

部门登录进入系统后,可以对首页、个人中心、用户管理、部门公告管理、通知中心管理、代办消息管理、个人日程管理、完成代办管理等功能模块进行相应操作,如图5-13所示。
在这里插入图片描述

图5-13部门功能界面图

用户管理,在用户管理页面可以对用户账号、用户姓名、手机号码、头像、性别、邮箱、部门、职位、审核回复、审核状态、审核等内容进行详情、发送代办消息等操作,如图5-14所示。
在这里插入图片描述

图5-14用户管理界面图

部门公告管理,在部门公告管理页面可以对公告名称、发布时间、部门、部门领导等内容进行详情、修改、删除操作,如图5-15所示。
在这里插入图片描述

图5-15部门公告管理界面图

通知中心管理,在通知中心管理页面可以对用户账号、用户姓名、部门、职位、通知人、通知时间等内容进行详情操作,如图5-16所示。
在这里插入图片描述

图5-16通知中心管理界面图

代办消息管理,在代办消息管理页面可以对用户账号、用户姓名、部门、职位、部门领导、文件、发放时间、消息备注等内容进行详情操作,如图5-17所示。
在这里插入图片描述

图5-17代办消息管理界面图
个人日程管理,在个人日程管理页面可以对用户账号、部门、用户姓名、职位、编辑时间、审核回复、审核状态等内容进行详情操作,如图5-18所示。
在这里插入图片描述

图5-18个人日程管理界面图

数据库设计

部门信息实体图如图4-1所示:
在这里插入图片描述

图4-1部门信息实体图

部门公告信息实体图如图4-2所示:
在这里插入图片描述

图4-2部门公告信息实体图

通知中心信息实体图如图4-3所示:
在这里插入图片描述

图4-3通知中心信息实体图

代办消息实体图如图4-4所示:
在这里插入图片描述

图4-4代办消息实体图

DROP TABLE IF EXISTS `bumengonggao`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `bumengonggao` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gonggaomingcheng` varchar(200) DEFAULT NULL COMMENT '公告名称',
  `gonggaoneirong` longtext COMMENT '公告内容',
  `fabushijian` datetime DEFAULT NULL COMMENT '发布时间',
  `bumen` varchar(200) DEFAULT NULL COMMENT '部门',
  `bumenlingdao` varchar(200) DEFAULT NULL COMMENT '部门领导',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1646011296520 DEFAULT CHARSET=utf8 COMMENT='部门公告';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `bumengonggao`
--

LOCK TABLES `bumengonggao` WRITE;
/*!40000 ALTER TABLE `bumengonggao` DISABLE KEYS */;
INSERT INTO `bumengonggao` VALUES (31,'2022-02-28 01:08:14','公告名称1','公告内容1','2022-02-28 09:08:14','部门1','部门领导1'),(32,'2022-02-28 01:08:14','公告名称2','公告内容2','2022-02-28 09:08:14','部门2','部门领导2'),(33,'2022-02-28 01:08:14','公告名称3','公告内容3','2022-02-28 09:08:14','部门3','部门领导3'),(34,'2022-02-28 01:08:14','公告名称4','公告内容4','2022-02-28 09:08:14','部门4','部门领导4'),(35,'2022-02-28 01:08:14','公告名称5','公告内容5','2022-02-28 09:08:14','部门5','部门领导5'),(36,'2022-02-28 01:08:14','公告名称6','公告内容6','2022-02-28 09:08:14','部门6','部门领导6'),(1646011296519,'2022-02-28 01:21:35','销售部门公告','<p>阿道夫噶啥发啥的法撒旦法撒旦发是的<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011295157.jpg\"></p>','2022-02-28 09:21:14','销售部门','王五');
/*!40000 ALTER TABLE `bumengonggao` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `config`
--

DROP TABLE IF EXISTS `config`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) NOT NULL COMMENT '配置参数名称',
  `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `config`
--

LOCK TABLES `config` WRITE;
/*!40000 ALTER TABLE `config` DISABLE KEYS */;
INSERT INTO `config` VALUES (1,'picture1','upload/picture1.jpg'),(2,'picture2','upload/picture2.jpg'),(3,'picture3','upload/picture3.jpg');
/*!40000 ALTER TABLE `config` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `daibanxiaoxi`
--

DROP TABLE IF EXISTS `daibanxiaoxi`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `daibanxiaoxi` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `yonghuzhanghao` varchar(200) DEFAULT NULL COMMENT '用户账号',
  `yonghuxingming` varchar(200) DEFAULT NULL COMMENT '用户姓名',
  `zhiwei` varchar(200) DEFAULT NULL COMMENT '职位',
  `bumen` varchar(200) DEFAULT NULL COMMENT '部门',
  `bumenlingdao` varchar(200) DEFAULT NULL COMMENT '部门领导',
  `wenjian` varchar(200) DEFAULT NULL COMMENT '文件',
  `fafangshijian` datetime DEFAULT NULL COMMENT '发放时间',
  `xiaoxibeizhu` varchar(200) DEFAULT NULL COMMENT '消息备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1646011271144 DEFAULT CHARSET=utf8 COMMENT='代办消息';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `daibanxiaoxi`
--

LOCK TABLES `daibanxiaoxi` WRITE;
/*!40000 ALTER TABLE `daibanxiaoxi` DISABLE KEYS */;
INSERT INTO `daibanxiaoxi` VALUES (51,'2022-02-28 01:08:14','用户账号1','用户姓名1','职位1','部门1','部门领导1','','2022-02-28 09:08:14','消息备注1'),(52,'2022-02-28 01:08:14','用户账号2','用户姓名2','职位2','部门2','部门领导2','','2022-02-28 09:08:14','消息备注2'),(53,'2022-02-28 01:08:14','用户账号3','用户姓名3','职位3','部门3','部门领导3','','2022-02-28 09:08:14','消息备注3'),(54,'2022-02-28 01:08:14','用户账号4','用户姓名4','职位4','部门4','部门领导4','','2022-02-28 09:08:14','消息备注4'),(55,'2022-02-28 01:08:14','用户账号5','用户姓名5','职位5','部门5','部门领导5','','2022-02-28 09:08:14','消息备注5'),(56,'2022-02-28 01:08:14','用户账号6','用户姓名6','职位6','部门6','部门领导6','','2022-02-28 09:08:14','消息备注6'),(1646011271143,'2022-02-28 01:21:10','001','张三','普通员工','销售部门','王五','upload/1646011267811.doc','2022-02-28 09:20:47','分公司发给水电费干啥地方噶水电费嘎是');
/*!40000 ALTER TABLE `daibanxiaoxi` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `gerenricheng`
--

DROP TABLE IF EXISTS `gerenricheng`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `gerenricheng` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `yonghuzhanghao` varchar(200) DEFAULT NULL COMMENT '用户账号',
  `bumen` varchar(200) DEFAULT NULL COMMENT '部门',
  `yonghuxingming` varchar(200) DEFAULT NULL COMMENT '用户姓名',
  `zhiwei` varchar(200) DEFAULT NULL COMMENT '职位',
  `richengneirong` longtext COMMENT '日程内容',
  `bianjishijian` datetime DEFAULT NULL COMMENT '编辑时间',
  `sfsh` varchar(200) DEFAULT '否' COMMENT '是否审核',
  `shhf` longtext COMMENT '审核回复',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1646011224706 DEFAULT CHARSET=utf8 COMMENT='个人日程';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `gerenricheng`
--

LOCK TABLES `gerenricheng` WRITE;
/*!40000 ALTER TABLE `gerenricheng` DISABLE KEYS */;
INSERT INTO `gerenricheng` VALUES (61,'2022-02-28 01:08:14','用户账号1','部门1','用户姓名1','职位1','日程内容1','2022-02-28 09:08:14','是',''),(62,'2022-02-28 01:08:14','用户账号2','部门2','用户姓名2','职位2','日程内容2','2022-02-28 09:08:14','是',''),(63,'2022-02-28 01:08:14','用户账号3','部门3','用户姓名3','职位3','日程内容3','2022-02-28 09:08:14','是',''),(64,'2022-02-28 01:08:14','用户账号4','部门4','用户姓名4','职位4','日程内容4','2022-02-28 09:08:14','是',''),(65,'2022-02-28 01:08:14','用户账号5','部门5','用户姓名5','职位5','日程内容5','2022-02-28 09:08:14','是',''),(66,'2022-02-28 01:08:14','用户账号6','部门6','用户姓名6','职位6','日程内容6','2022-02-28 09:08:14','是',''),(1646011224705,'2022-02-28 01:20:23','001','销售部门','张三','普通员工','<p>是地方高等师范公司的公司地方高等师范个第三方感受到分公司的分公司答复<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011223221.jpg\"></p>','2022-02-28 09:20:14','是','工作不错');
/*!40000 ALTER TABLE `gerenricheng` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `token`
--

DROP TABLE IF EXISTS `token`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `token` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `username` varchar(100) NOT NULL COMMENT '用户名',
  `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
  `role` varchar(100) DEFAULT NULL COMMENT '角色',
  `token` varchar(200) NOT NULL COMMENT '密码',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='token表';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `token`
--

LOCK TABLES `token` WRITE;
/*!40000 ALTER TABLE `token` DISABLE KEYS */;
INSERT INTO `token` VALUES (1,1,'abo','users','管理员','3z9l9yidcrzjprbg5fnhi09atsyz7b3x','2022-02-28 01:16:32','2022-02-28 02:22:41'),(2,1646011055525,'销售部门','bumen','部门','osxmvl37fu9vtx644y2mn1xfyrz679wh','2022-02-28 01:19:25','2022-02-28 02:25:11'),(3,1646011110727,'001','yonghu','用户','1lohudgzsr0ghxewfva9129876a44yq3','2022-02-28 01:19:41','2022-02-28 02:25:57'),(4,22,'用户账号2','yonghu','用户','msf4hwhhw9j44sg6wvotcwe6mi303scl','2022-02-28 01:22:58','2022-02-28 02:22:58');
/*!40000 ALTER TABLE `token` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `tongzhizhongxin`
--

DROP TABLE IF EXISTS `tongzhizhongxin`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tongzhizhongxin` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `yonghuzhanghao` varchar(200) DEFAULT NULL COMMENT '用户账号',
  `yonghuxingming` varchar(200) DEFAULT NULL COMMENT '用户姓名',
  `bumen` varchar(200) DEFAULT NULL COMMENT '部门',
  `zhiwei` varchar(200) DEFAULT NULL COMMENT '职位',
  `tongzhineirong` longtext COMMENT '通知内容',
  `tongzhiren` varchar(200) DEFAULT NULL COMMENT '通知人',
  `tongzhishijian` datetime DEFAULT NULL COMMENT '通知时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1646011415831 DEFAULT CHARSET=utf8 COMMENT='通知中心';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tongzhizhongxin`
--

LOCK TABLES `tongzhizhongxin` WRITE;
/*!40000 ALTER TABLE `tongzhizhongxin` DISABLE KEYS */;
INSERT INTO `tongzhizhongxin` VALUES (41,'2022-02-28 01:08:14','用户账号1','用户姓名1','部门1','职位1','通知内容1','通知人1','2022-02-28 09:08:14'),(42,'2022-02-28 01:08:14','用户账号2','用户姓名2','部门2','职位2','通知内容2','通知人2','2022-02-28 09:08:14'),(43,'2022-02-28 01:08:14','用户账号3','用户姓名3','部门3','职位3','通知内容3','通知人3','2022-02-28 09:08:14'),(44,'2022-02-28 01:08:14','用户账号4','用户姓名4','部门4','职位4','通知内容4','通知人4','2022-02-28 09:08:14'),(45,'2022-02-28 01:08:14','用户账号5','用户姓名5','部门5','职位5','通知内容5','通知人5','2022-02-28 09:08:14'),(46,'2022-02-28 01:08:14','用户账号6','用户姓名6','部门6','职位6','通知内容6','通知人6','2022-02-28 09:08:14'),(1646011208932,'2022-02-28 01:20:08','用户账号2','用户姓名2','部门2','职位2','<p>宿管宿管的分公司答复干撒地方感受得分g<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011207853.jpg\"></p>','张三','2022-02-28 09:19:52'),(1646011326259,'2022-02-28 01:22:06','001','张三','销售部门','普通员工','<p>法撒旦法撒旦发啥的法撒旦法撒旦发<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011325057.jpg\"></p>','王五  部门经理asd','2022-02-28 09:21:44'),(1646011415830,'2022-02-28 01:23:35','001','张三','销售部门','普通员工','<p>色任务而台湾儿童为儿童为儿童沃尔<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011412811.jpg\"></p>','用户姓名2','2022-02-28 09:23:07');
/*!40000 ALTER TABLE `tongzhizhongxin` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `users`
--

DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `users` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(100) NOT NULL COMMENT '用户名',
  `password` varchar(100) NOT NULL COMMENT '密码',
  `role` varchar(100) DEFAULT '管理员' COMMENT '角色',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表';
/*!40101 SET character_set_client = @saved_cs_client */;

代码


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

论文目录

1 绪 论 1
1.1 课题背景 2
1.2 课题研究的意义 3
1.3 系统实现的功能 4
1.4 课题研究现状 5
2系统相关技术 6
2.1 Java语言简介 7
2.2 mysql数据库介绍 8
2.3 MySQL环境配置 9
2.4 B/S架构 10
2.5 Springboot框架 11
3系统需求分析 12
3.1系统功能 13
3.2可行性研究 14
3.2.1 经济可行性 15
3.2.2 技术可行性 16
3.2.3 运行可行性 17
3.2.4 时间可行性 18
3.3系统业务过程分析 19
3.4系统用例图 20
4系统设计 21
4.1数据库设计 22
4.2系统整体设计 23
4.2.1 系统设计思想 24
4.2.2系统流程图 25
5系统详细设计 26
5.1管理员功能模块 27
5.2用户功能模块 29
5.3部门(销售部门)功能模块 29
6系统测试 30
7总结与心得体会 31
7.1 总结 32
7.2 心得体会 33
参考文献 34
致谢 35

订阅经典源码专栏

Java项目精品实战案例《500套》

源码获取

欢迎大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1040437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python3 如何实现 websocket 服务?

Python 实现 websocket 服务很简单&#xff0c;有很多的三方包可以用&#xff0c;我从网上大概找到三种常用的包&#xff1a;websocket、websockets、Flask-Sockets。 但这些包很多都“年久失修”&#xff0c; 比如 websocket 在 2010 年就不维护了。 而 Flask-Sockets 也在 2…

Linux文件出现“M-oM-;M-?” ^M 等情况

1、当在编辑linux系统的文件时&#xff0c;会出现如下情况&#xff1a; 解决方法&#xff1a;单个文件可以使用vim 进行修改&#xff0c;shift :&#xff0c; 然后 set nobomb 2、当文件出现每一行末尾^M的情况&#xff1a; 解决方法&#xff1a;使用vi的替换功能。启动vi&am…

LabVIEW风力涡轮机的雷电流测量系统中集成高速摄像机

LabVIEW风力涡轮机的雷电流测量系统中集成高速摄像机 随着全球风电装机容量的快速增长&#xff0c;雷电活动对风力发电机组造成的损害受到更多关注&#xff0c;特别是在雷电活动强烈的地区。在冬季闪电期间&#xff0c;风力涡轮机等高层结构会受到向上的雷击。众所周知&#x…

215 数组中的第K个最大元素

满足时间复杂度o(n)的方法&#xff1a; 快排的思想 class Solution{ public:int findKthLargest(vector<int>& nums,int k){return quickSelect(nums,k);} private:int quickSelect(vector<int>& nums,int k){//随机选择基数int privotnums[rand()%nums…

#循循渐进学51单片机#IIC总线与EEPROM#not.13

1、彻底理解I2C的通信时序&#xff0c;不仅仅是记住。 前几章我们学了一种通信协议叫做 UART 异步串行通信&#xff0c;这节课我们要来学习第二种常用的通信协议 I 2 C 。 I 2 C 总线是由 PHILIPS 公司开发的两线式串行总线&#xff0c;多用于连接微处理器及其外围芯片。…

Java-day17(反射)

Reflection(反射) 动态语言的关键 允许程序在执行期借助于Reflection API取得任何类的内部信息&#xff0c;并能直接操作任意对象的内部属性及方法提供的功能: 在运行时判断任意一个对象所属类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在…

Vue3 动态组件 component:is= 失效

错误代码 用Vue3&#xff0c;组件无需注册&#xff0c;所以就会提示“注册了不不使用”的报错&#xff0c; 于是用了异步注册&#xff0c;甚至直接为了不报错就在下面使用3个组件&#xff0c;有异步加载&#xff0c;但还是实现不了预期效果 <script setup> import { re…

#define定义标识符详解

0.预定义符号 在讲解#define之前先给大家介绍几个预定义符号 __FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSI C&#xff08;标准C&#xff09;&#xff…

服务器感染了Locked勒索病毒后的正确处理步骤,勒索病毒解密

在服务器中感染了Locked勒索病毒后&#xff0c;应该采取以下一系列步骤来应对和清除病毒&#xff1a; 立即断开网络连接&#xff1a;防止病毒进一步传播感染。备份重要数据&#xff1a;在执行任何操作之前&#xff0c;一定要先备份服务器上的重要数据。这样可以防止在处理病毒过…

经典网络解析(四) ResNet | 残差模块,网络结构代码实现全解析

文章目录 1 设计初衷2.网络结构2.1 残差块2.2 中间的卷积网络特征提取块1 两层33卷积层2 先11卷积层&#xff0c;再33卷积层&#xff0c;再33卷积层 2.3 结构总览表格 3 为什么残差模块有效&#xff1f;3.1 前向传播3.2 反向传播3.3 恒等映射3.4 集成模型 4.代码实现 1 设计初衷…

如何学习嵌入式Linux?

今日话题&#xff0c;如何学习嵌入式Linux&#xff1f;嵌入式底层开发是一种重要的技术&#xff0c;它被广泛应用于各种嵌入式系统中。随着科技的不断发展&#xff0c;嵌入式系统已经成为了我们日常生活中不可或缺的一部分。这就使得嵌入式开发的重要性也凸显出来。刚好我这有一…

opencv for unity package在unity中打开相机不需要dll

下载OpenCV for Unity 导入后&#xff0c;里面有很多案例 直接打开就可以运行 打开相机

Linux: errno: EADDRNOTAVAIL; ipv6-bind;Cannot assign requested address

文章目录 解释一种情况tentative 的解释 解释一种情况 #define EADDRNOTAVAIL 99 /* Cannot assign requested address */ 有一种情况是&#xff1a;当IP6的地址处于tentative的时候&#xff0c;就会返回这个错误。下面的是bind的调用的时候会check地址的flag。如果是tentati…

Java学习星球,十月集训,五大赛道(文末送书)

目录 什么是知识星球&#xff1f;我的知识星球能为你提供什么&#xff1f;专属专栏《Java基础教程系列》内容概览&#xff1a;《Java高并发编程实战》、《MySQL 基础教程系列》内容概览&#xff1a;《微服务》、《Redis中间件》、《Dubbo高手之路》、《华为OD机试》内容概览&am…

一款Python认证和授权的利器

迷途小书童 读完需要 7分钟 速读仅需 3 分钟 1 简介 authlib 是一个开源的 Python 库&#xff0c;旨在提供简单而强大的认证和授权解决方案。它支持多种认证和授权协议&#xff0c;如 OAuth、OpenID Connect 和 JWT。authlib 具有灵活的架构和丰富的功能&#xff0c;使开发人员…

lS1028 + 六网口TSN 硬交换+QNX/Linux实时系统解决方案在轨道交通系统的应用

lS1028 六网口TSN 硬交换QNX/Linux实时系统解决方案在轨道交通系统的应用 以下是在轨道交通应用的实物&#xff1a; CPUNXP LS1028A架构双核Cortex-A72主频1.5GHzRAM2GB DDR4ROM8GB eMMCOSUbuntu20.04供电DC 12V工作温度-40℃~ 80℃ 功能数量参数Display Port≤1路支持DP1.3…

UniAccess Agent卸载

异常场景&#xff1a; UniAccess Agent导致系统中的好多设置打不开 例如:ipv4的协议,注册表,host等等 需要进行删除,亲测有效,及多家答案平凑的 借鉴了这位大神及他里面引用的大神的内容 https://blog.csdn.net/weixin_44476410/article/details/121605455 问题描述 这个进…

Android开发MVP架构记录

Android开发MVP架构记录 安卓的MVP&#xff08;Model-View-Presenter&#xff09;架构是一种常见的软件设计模式&#xff0c;用于帮助开发者组织和分离应用程序的不同组成部分。MVP架构的目标是将应用程序的业务逻辑&#xff08;Presenter&#xff09;、用户界面&#xff08;V…

由于找不到msvcr110.dll的5种解决方法

在使用电脑的过程中&#xff0c;我们可能会遇到一些问题&#xff0c;比如打开软件时提示找不到 msvcr110.dll 文件丢失。这通常意味着该文件已被删除或损坏&#xff0c;导致程序无法正常运行。本文将介绍几种解决方案&#xff0c;帮助您解决这个问题。 首先&#xff0c;我们需…

Linxu下c语言实现socket+openssl数据传输加密

文章目录 1. Socket连接建立流程2、SocketSSL的初始化流程3、初始化SSL环境&#xff0c;证书和密钥4、SocketSSL 的c语言实现4.1 编写SSL连接函数4.2 编写加密服务端server.c4.3 编写加密客户端client.c 5、使用tcpdump检验源码获取 在进行网络编程的时候&#xff0c;我们通常使…