计算机毕业设计 基于Web的课程设计选题管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟


计算机毕业设计《1000套》

目录

1、项目介绍及开发技术

[1.1 项目介绍](#1.1 项目介绍)

[1.2 开发技术](#1.2 开发技术)

2、系统功能设计结构图

3、功能截图

4、数据库表结构设计

5、关键代码

[5.1 课题分类Controller模块](#5.1 课题分类Controller模块)

[5.2 课题分类Service模块](#5.2 课题分类Service模块)

[5.3 课题分类ServiceImpl模块](#5.3 课题分类ServiceImpl模块)

[5.4 课题分类Dao模块](#5.4 课题分类Dao模块)

6、论文目录结构

7、源码获取


1、项目介绍及开发技术

1.1 项目介绍

随着网络科技的不断发展以及人们经济水平的逐步提高,计算机如今已成为人们生活中不可缺少的一部分,为课程设计选题管理系统轻松便捷的管理信息,基于Web的课程设计选题系统实现了一款简洁、轻便的管理系统。本系统解决了课程设计选题管理系统管理事务中的主要问题,包括首页、个人中心、学生管理、教师管理、课题信息管理、课题分类管理、选题信息管理、系统管理等功能。

本系统采用了java语言的springboot框架,数据采用MySQL数据库进行存储。结合B/S模式进行开发设计,功能强大,界面化操作便于上手。本系统具有良好的易用性和安全性,系统功能齐全,可以满足课程设计选题管理系统管理的相关工作。

1.2 开发技术

Java开发语言、SpringBoot、MyBatisPlus、MySQL数据库、Maven、IDEA开发工具、JDK1.8+、Vue、HTML、CSS、JS。

2、系统功能设计结构图

3、功能截图

系统用户登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作。

管理员进入主页面,主要功能包括对首页、个人中心、学生管理、教师管理、课题信息管理、课题分类管理、选题信息管理、系统管理等进行操作。

管理员点击学生管理。在学生页面输入学号、班级和选择是否通过进行查询、新增或删除学生列表,并根据需要对学生详情信息进行详情、修改或删除操作。

管理员点击教师管理。在教师页面输入教师姓名、班级和选择是否通过进行查询、新增或删除教师列表,并根据需要对教师详情信息进行详情、修改或删除操作。

管理员点击课题信息管理。在课题信息页面输入课题名称、课题分类、选择难易程度和班级进行查询、删除、难易统计、课题人数或分类统计课题信息列表,并根据需要对课题详情信息进行详情、选题信息、修改、查看评论或删除操作。

管理员点击课题分类管理。在课题分类页面输入课题分类进行查询、新增或删除课题分类列表,并根据需要对课题分类详情信息进行修改或删除操作。

管理员点击选题信息管理。在选题信息页面输入课题编号、课题名称、课题分类和班级进行查询、新增、删除或打印选题信息列表,并根据需要对选题详情信息进行详情、修改或删除操作。

管理员点击系统管理。在校园资讯页面输入标题进行查询、新增或删除校园资讯列表,并根据需要对校园资讯详情信息进行详情、修改或删除操作。

4、数据库表结构设计

sql 复制代码
-- MySQL dump 10.13  Distrib 5.7.31, for Linux (x86_64)
--
-- Host: localhost    Database: springbootw9opl
-- ------------------------------------------------------
-- Server version	5.7.31

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `springbootw9opl`
--

/*!40000 DROP DATABASE IF EXISTS `springbootw9opl`*/;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `springbootw9opl` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;

USE `springbootw9opl`;

--
-- 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 `discussketixinxi`
--

DROP TABLE IF EXISTS `discussketixinxi`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `discussketixinxi` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `refid` bigint(20) NOT NULL COMMENT '关联表id',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `nickname` varchar(200) DEFAULT NULL COMMENT '用户名',
  `content` longtext NOT NULL COMMENT '评论内容',
  `reply` longtext COMMENT '回复内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='课题信息评论表';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `discussketixinxi`
--

LOCK TABLES `discussketixinxi` WRITE;
/*!40000 ALTER TABLE `discussketixinxi` DISABLE KEYS */;
/*!40000 ALTER TABLE `discussketixinxi` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `jiaoshi`
--

DROP TABLE IF EXISTS `jiaoshi`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `jiaoshi` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `jiaoshigonghao` varchar(200) DEFAULT NULL COMMENT '教师工号',
  `mima` varchar(200) DEFAULT NULL COMMENT '密码',
  `jiaoshixingming` varchar(200) DEFAULT NULL COMMENT '教师姓名',
  `zhaopian` longtext COMMENT '照片',
  `nianling` varchar(200) DEFAULT NULL COMMENT '年龄',
  `zili` varchar(200) DEFAULT NULL COMMENT '资历',
  `lianxifangshi` varchar(200) DEFAULT NULL COMMENT '联系方式',
  `xueyuan` varchar(200) DEFAULT NULL COMMENT '学院',
  `banji` varchar(200) DEFAULT NULL COMMENT '班级',
  `sfsh` varchar(200) DEFAULT '待审核' COMMENT '是否审核',
  `shhf` longtext COMMENT '审核回复',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COMMENT='教师';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `jiaoshi`
--

LOCK TABLES `jiaoshi` WRITE;
/*!40000 ALTER TABLE `jiaoshi` DISABLE KEYS */;
INSERT INTO `jiaoshi` VALUES (21,'2023-02-08 12:16:01','教师工号1','123456','教师姓名1','upload/jiaoshi_zhaopian1.jpg','年龄1','资历1','13823888881','学院1','班级1','是',''),(22,'2023-02-08 12:16:01','教师工号2','123456','教师姓名2','upload/jiaoshi_zhaopian2.jpg','年龄2','资历2','13823888882','学院2','班级2','是',''),(23,'2023-02-08 12:16:01','教师工号3','123456','教师姓名3','upload/jiaoshi_zhaopian3.jpg','年龄3','资历3','13823888883','学院3','班级3','是',''),(24,'2023-02-08 12:16:01','教师工号4','123456','教师姓名4','upload/jiaoshi_zhaopian4.jpg','年龄4','资历4','13823888884','学院4','班级4','是',''),(25,'2023-02-08 12:16:01','教师工号5','123456','教师姓名5','upload/jiaoshi_zhaopian5.jpg','年龄5','资历5','13823888885','学院5','班级5','是',''),(26,'2023-02-08 12:16:01','教师工号6','123456','教师姓名6','upload/jiaoshi_zhaopian6.jpg','年龄6','资历6','13823888886','学院6','班级6','是',''),(27,'2023-02-08 12:16:01','教师工号7','123456','教师姓名7','upload/jiaoshi_zhaopian7.jpg','年龄7','资历7','13823888887','学院7','班级7','是',''),(28,'2023-02-08 12:16:01','教师工号8','123456','教师姓名8','upload/jiaoshi_zhaopian8.jpg','年龄8','资历8','13823888888','学院8','班级8','是','');
/*!40000 ALTER TABLE `jiaoshi` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `ketifenlei`
--

DROP TABLE IF EXISTS `ketifenlei`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ketifenlei` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `ketifenlei` varchar(200) DEFAULT NULL COMMENT '课题分类',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8 COMMENT='课题分类';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `ketifenlei`
--

LOCK TABLES `ketifenlei` WRITE;
/*!40000 ALTER TABLE `ketifenlei` DISABLE KEYS */;
INSERT INTO `ketifenlei` VALUES (41,'2023-02-08 12:16:01','课题分类1'),(42,'2023-02-08 12:16:01','课题分类2'),(43,'2023-02-08 12:16:01','课题分类3'),(44,'2023-02-08 12:16:01','课题分类4'),(45,'2023-02-08 12:16:01','课题分类5'),(46,'2023-02-08 12:16:01','课题分类6'),(47,'2023-02-08 12:16:01','课题分类7'),(48,'2023-02-08 12:16:01','课题分类8');
/*!40000 ALTER TABLE `ketifenlei` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `ketixinxi`
--

DROP TABLE IF EXISTS `ketixinxi`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ketixinxi` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `ketibianhao` varchar(200) DEFAULT NULL COMMENT '课题编号',
  `ketimingcheng` varchar(200) DEFAULT NULL COMMENT '课题名称',
  `ketifenlei` varchar(200) DEFAULT NULL COMMENT '课题分类',
  `nanyichengdu` varchar(200) DEFAULT NULL COMMENT '难易程度',
  `renshu` int(11) DEFAULT NULL COMMENT '人数',
  `faburiqi` date DEFAULT NULL COMMENT '发布日期',
  `jiaoshigonghao` varchar(200) DEFAULT NULL COMMENT '教师工号',
  `jiaoshixingming` varchar(200) DEFAULT NULL COMMENT '教师姓名',
  `xueyuan` varchar(200) DEFAULT NULL COMMENT '学院',
  `banji` varchar(200) DEFAULT NULL COMMENT '班级',
  `timumiaoshu` longtext COMMENT '题目描述',
  `thumbsupnum` int(11) DEFAULT '0' COMMENT '赞',
  `crazilynum` int(11) DEFAULT '0' COMMENT '踩',
  `clicktime` datetime DEFAULT NULL COMMENT '最近点击时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `ketibianhao` (`ketibianhao`)
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COMMENT='课题信息';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `ketixinxi`
--

LOCK TABLES `ketixinxi` WRITE;
/*!40000 ALTER TABLE `ketixinxi` DISABLE KEYS */;
INSERT INTO `ketixinxi` VALUES (31,'2023-02-08 12:16:01','1111111111','课题名称1','课题分类1','容易',1,'2023-02-08','教师工号1','教师姓名1','学院1','班级1','题目描述1',1,1,'2023-02-08 20:16:01'),(32,'2023-02-08 12:16:01','2222222222','课题名称2','课题分类2','容易',2,'2023-02-08','教师工号2','教师姓名2','学院2','班级2','题目描述2',2,2,'2023-02-08 20:16:01'),(33,'2023-02-08 12:16:01','3333333333','课题名称3','课题分类3','容易',3,'2023-02-08','教师工号3','教师姓名3','学院3','班级3','题目描述3',3,3,'2023-02-08 20:16:01'),(34,'2023-02-08 12:16:01','4444444444','课题名称4','课题分类4','容易',4,'2023-02-08','教师工号4','教师姓名4','学院4','班级4','题目描述4',4,4,'2023-02-08 20:16:01'),(35,'2023-02-08 12:16:01','5555555555','课题名称5','课题分类5','容易',5,'2023-02-08','教师工号5','教师姓名5','学院5','班级5','题目描述5',5,5,'2023-02-08 20:16:01'),(36,'2023-02-08 12:16:01','6666666666','课题名称6','课题分类6','容易',6,'2023-02-08','教师工号6','教师姓名6','学院6','班级6','题目描述6',6,6,'2023-02-08 20:16:01'),(37,'2023-02-08 12:16:01','7777777777','课题名称7','课题分类7','容易',7,'2023-02-08','教师工号7','教师姓名7','学院7','班级7','题目描述7',7,7,'2023-02-08 20:16:01'),(38,'2023-02-08 12:16:01','8888888888','课题名称8','课题分类8','容易',8,'2023-02-08','教师工号8','教师姓名8','学院8','班级8','题目描述8',8,8,'2023-02-08 20:16:01');
/*!40000 ALTER TABLE `ketixinxi` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `news`
--

DROP TABLE IF EXISTS `news`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `news` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `title` varchar(200) NOT NULL COMMENT '标题',
  `introduction` longtext COMMENT '简介',
  `picture` longtext NOT NULL COMMENT '图片',
  `content` longtext NOT NULL COMMENT '内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='校园资讯';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `news`
--

LOCK TABLES `news` WRITE;
/*!40000 ALTER TABLE `news` DISABLE KEYS */;
INSERT INTO `news` VALUES (71,'2023-02-08 12:16:01','有梦想,就要努力去实现','不管你想要怎样的生活,你都要去努力争取,不多尝试一些事情怎么知道自己适合什么、不适合什么呢?你说你喜欢读书,让我给你列书单,你还问我哪里有那么多时间看书;你说自己梦想的职业是广告文案,问我如何成为一个文案,应该具备哪些素质;你说你计划晨跑,但总是因为学习、工作辛苦或者身体不舒服第二天起不了床;你说你一直梦想一个人去长途旅行,但是没钱,父母觉得危险。','upload/news_picture1.jpg','<p>不管你想要怎样的生活,你都要去努力争取,不多尝试一些事情怎么知道自己适合什么、不适合什么呢?</p><p>你说你喜欢读书,让我给你列书单,你还问我哪里有那么多时间看书;你说自己梦想的职业是广告文案,问我如何成为一个文案,应该具备哪些素质;你说你计划晨跑,但总是因为学习、工作辛苦或者身体不舒服第二天起不了床;你说你一直梦想一个人去长途旅行,但是没钱,父母觉得危险。其实,我已经厌倦了你这样说说而已的把戏,我觉得就算我告诉你如何去做,你也不会照做,因为你根本什么都不做。</p><p>真正有行动力的人不需要别人告诉他如何做,因为他已经在做了。就算碰到问题,他也会自己想办法,自己动手去解决或者主动寻求可以帮助他的人,而不是等着别人为自己解决问题。</p><p>首先要学习独立思考。花一点时间想一下自己喜欢什么,梦想是什么,不要别人说想环游世界,你就说你的梦想是环游世界。</p><p>很多人说现实束缚了自己,其实在这个世界上,我们一直都可以有很多选择,生活的决定权也---直都在自己手上,只是我们缺乏行动力而已。</p><p>如果你觉得安于现状是你想要的,那选择安于现状就会让你幸福和满足;如果你不甘平庸,选择一条改变、进取和奋斗的道路,在这个追求的过程中,你也一样会感到快乐。所谓的成功,即是按照自己想要的生活方式生活。最糟糕的状态,莫过于当你想要选择一条不甘平庸、改变、进取和奋斗的道路时,却以一种安于现状的方式生活,最后抱怨自己没有得到想要的人生。</p><p>因为喜欢,你不是在苦苦坚持,也因为喜欢,你愿意投入时间、精力,长久以往,获得成功就是自然而然的事情。</p>'),(72,'2023-02-08 12:16:01','又是一年毕业季','又是一年毕业季,感慨万千,还记的自己刚进学校那时候的情景,我拖着沉重的行李箱站在偌大的教学楼前面,感叹自己未来的日子即将在这个陌生的校园里度过,而如今斗转星移,浮光掠影,弹指之间,那些青葱岁月如同白驹过隙般悄然从指缝溜走。过去的种种在胸口交集纠结,像打翻的五味瓶,甜蜜,酸楚,苦涩,一并涌上心头。','upload/news_picture2.jpg','<p>又是一年毕业季,感慨万千,还记的自己刚进学校那时候的情景,我拖着沉重的行李箱站在偌大的教学楼前面,感叹自己未来的日子即将在这个陌生的校园里度过,而如今斗转星移,浮光掠影,弹指之间,那些青葱岁月如同白驹过隙般悄然从指缝溜走。</p><p>过去的种种在胸口交集纠结,像打翻的五味瓶,甜蜜,酸楚,苦涩,一并涌上心头。一直都是晚会的忠实参与者,无论是台前还是幕后,忽然间,角色转变,那种感觉确实难以用语言表达。</p><p>	过去的三年,总是默默地期盼着这个好雨时节,因为这时候,会有灿烂的阳光,会有满目的百花争艳,会有香甜的冰激凌,这是个毕业的季节,当时不经世事的我们会殷切地期待学校那一大堆的活动,期待穿上绚丽的演出服或者礼仪服,站在大礼堂镁光灯下尽情挥洒我们的澎拜的激情。</p><p>百感交集,隔岸观火与身临其境的感觉竟是如此不同。从来没想过一场晚会送走的是我们自己的时候会是怎样的感情,毕业就真的意味着结束吗?倔强的我们不愿意承认,谢谢学弟学妹们慷慨的将这次的主题定为"我们在这里"。我知道,这可能是他们对我们这些过来人的尊敬和施舍。</p><p>没有为这场晚会排练、奔波,没有为班级、学生会、文学院出点力,还真有点不习惯,百般无奈中,用"工作忙"个万能的借口来搪塞自己,欺骗别人。其实自己心里明白,那只是在逃避,只是不愿面对繁华落幕后的萧条和落寞。大四了,大家各奔东西,想凑齐班上的人真的是难上加难,敏燕从越南回来,刚落地就匆匆回了学校,那么恋家的人也启程回来了,睿睿学姐也是从家赶来跟我们团圆。大家---如既往的寒暄、打趣、调侃对方,似乎一切又回到了当初的单纯美好。</p><p>看着舞台上活泼可爱的学弟学妹们,如同一群机灵的小精灵,清澈的眼神,稚嫩的肢体,轻快地步伐,用他们那热情洋溢的舞姿渲染着在场的每一个人,我知道,我不应该羡慕嫉妒他们,不应该顾自怜惜逝去的青春,不应该感叹夕阳无限好,曾经,我们也拥有过,曾经,我们也年轻过,曾经,我们也灿烂过。我深深地告诉自己,人生的每个阶段都是美的,年轻有年轻的活力,成熟也有成熟的魅力。多---份稳重、淡然、优雅,也是漫漫时光掠影遗留下的.珍贵赏赐。</p>'),(73,'2023-02-08 12:16:01','挫折路上,坚持常在心间','回头看看,你会不会发现,曾经的你在这里摔倒过;回头看看,你是否发现,一次次地重复着,却从没爬起过。而如今,让我们把视线转向前方,那一道道金色的弧线,是流星飞逝的痕迹,或是成功运行的轨道。今天的你,是否要扬帆起航,让幸福来敲门?清晨的太阳撒向大地,神奇的宇宙赋予它神奇的色彩,大自然沐浴着春光,世界因太阳的照射而精彩,林中百鸟啾啾,河水轻轻流淌,汇成清宁的山间小调。','upload/news_picture3.jpg','<p>回头看看,你会不会发现,曾经的你在这里摔倒过;回头看看,你是否发现,一次次地重复着,却从没爬起过。而如今,让我们把视线转向前方,那一道道金色的弧线,是流星飞逝的痕迹,或是成功运行的轨道。今天的你,是否要扬帆起航,让幸福来敲门?</p><p>清晨的太阳撒向大地,神奇的宇宙赋予它神奇的色彩,大自然沐浴着春光,世界因太阳的照射而精彩,林中百鸟啾啾,河水轻轻流淌,汇成清宁的山间小调。</p><p>是的,面对道途上那无情的嘲讽,面对步伐中那重复的摔跤,面对激流与硬石之间猛烈的碰撞,我们必须选择那富于阴雨,却最终见到彩虹的荆棘路。也许,经历了那暴风雨的洗礼,我们便会变得自信,幸福也随之而来。</p><p>司马迁屡遭羞辱,却依然在狱中撰写《史记》,作为一名史学家,不因王权而极度赞赏,也不因卑微而极度批判,然而他在坚持自己操守的同时,却依然要受统治阶级的阻碍,他似乎无权选择自己的本职。但是,他不顾于此,只是在面对道途的阻隔之时,他依然选择了走下去的信念。终于一部开山巨作《史记》诞生,为后人留下一份馈赠,也许在他完成毕生的杰作之时,他微微地笑了,没有什么比梦想实现更快乐的了......</p><p>	或许正如"长风破浪会有时,直挂云帆济沧海"一般,欣欣然地走向看似深渊的崎岖路,而在一番耕耘之后,便会发现这里另有一番天地。也许这就是困难与快乐的交融。</p><p>也许在形形色色的社会中,我们常能看到一份坚持,一份自信,但这里却还有一类人。这类人在暴风雨来临之际,只会闪躲,从未懂得这也是一种历炼,这何尝不是一份快乐。在阴暗的角落里,总是独自在哭,带着伤愁,看不到一点希望。</p><p>我们不能堕落于此,而要像海燕那般,在苍茫的大海上,高傲地飞翔,任何事物都无法阻挡,任何事都是幸福快乐的。</p>'),(74,'2023-02-08 12:16:01','挫折是另一个生命的开端','当遇到挫折或失败,你是看见失败还是看见机会?挫折是我们每个人成长的必经之路,它不是你想有就有,想没有就没有的。有句名言说的好,如果你想一生摆脱苦难,你就得是神或者是死尸。这句话形象地说明了挫折是伴随着人生的,是谁都逃不掉的。','upload/news_picture4.jpg','<p>当遇到挫折或失败,你是看见失败还是看见机会?</p><p>挫折是我们每个人成长的必经之路,它不是你想有就有,想没有就没有的。有句名言说的好,如果你想一生摆脱苦难,你就得是神或者是死尸。这句话形象地说明了挫折是伴随着人生的,是谁都逃不掉的。</p><p>人生在世,从古到今,不分天子平民,机遇虽有不同,但总不免有身陷困境或遭遇难题之处,这时候唯有通权达变,才能使人转危为安,甚至反败为胜。</p><p>大部分的人,一生当中,最痛苦的经验是失去所爱的人,其次是丢掉一份工作。其实,经得起考验的人,就算是被开除也不会惊慌,要学会面对。</p><p>	"塞翁失马,焉知非福。"人生的道路,并不是每一步都迈向成功,这就是追求的意义。我们还要认识到一点,挫折作为一种情绪状态和一种个人体验,各人的耐受性是大不相同的,有的人经历了一次次挫折,就能够坚忍不拔,百折不挠;有的人稍遇挫折便意志消沉,一蹶不振。所以,挫折感是一种主观感受,因为人的目的和需要不同,成功标准不同,所以同一种活动对于不同的人可能会造成不同的挫折感受。</p><p>凡事皆以平常心来看待,对于生命顺逆不要太执著。能够"破我执"是很高层的人生境界。</p><p>人事的艰难就是一种考验。就像---支剑要有磨刀来磨,剑才会利:一块璞玉要有粗石来磨,才会发出耀眼的光芒。我们能够做到的,只是如何减少、避免那些由于自身的原因所造成的挫折,而在遇到痛苦和挫折之后,则力求化解痛苦,争取幸福。我们要知道,痛苦和挫折是双重性的,它既是我们人生中难以完全避免的,也是我们在争取成功时,不可缺少的一种动力。因为我认为,推动我们奋斗的力量,不仅仅是对成功的渴望,还有为摆脱痛苦和挫折而进行的奋斗。</p>'),(75,'2023-02-08 12:16:01','你要去相信,没有到不了的明天','有梦想就去努力,因为在这一辈子里面,现在不去勇敢的努力,也许就再也没有机会了。你要去相信,一定要相信,没有到不了的明天。不要被命运打败,让自己变得更强大。不管你现在是一个人走在异乡的街道上始终没有找到一丝归属感,还是你在跟朋友们一起吃饭开心址笑着的时候闪过一丝落寞。','upload/news_picture5.jpg','<p>有梦想就去努力,因为在这一辈子里面,现在不去勇敢的努力,也许就再也没有机会了。你要去相信,一定要相信,没有到不了的明天。不要被命运打败,让自己变得更强大。</p><p>不管你现在是一个人走在异乡的街道上始终没有找到一丝归属感,还是你在跟朋友们一起吃饭开心址笑着的时候闪过一丝落寞。</p><p>	不管你现在是在图书馆里背着怎么也看不进去的英语单词,还是你现在迷茫地看不清未来的方向不知道要往哪走。</p><p>不管你现在是在努力着去实现梦想却没能拉近与梦想的距离,还是你已经慢慢地找不到自己的梦想了。</p><p>你都要去相信,没有到不了的明天。</p><p>	有的时候你的梦想太大,别人说你的梦想根本不可能实现;有的时候你的梦想又太小,又有人说你胸无大志;有的时候你对死党说着将来要去环游世界的梦想,却换来他的不屑一顾,于是你再也不提自己的梦想;有的时候你突然说起将来要开个小店的愿望,却发现你讲述的那个人,并没有听到你在说什么。</p><p>不过又能怎么样呢,未来始终是自己的,梦想始终是自己的,没有人会来帮你实现它。</p><p>也许很多时候我们只是需要朋友的一句鼓励,一句安慰,却也得不到。但是相信我,世界上还有很多人,只是想要和你说说话。</p><p>因为我们都一样。一样的被人说成固执,一样的在追逐他们眼里根本不在意的东西。</p><p>所以,又有什么关系呢,别人始终不是你、不能懂你的心情,你又何必多去解释呢。这个世界会来阻止你,困难也会接踵而至,其实真正关键的只有自己,有没有那个倔强。</p><p>这个世界上没有不带伤的人,真正能治愈自己的,只有自己。</p>'),(76,'2023-02-08 12:16:01','离开是一种痛苦,是一种勇气,但同样也是一个考验,是一个新的开端','无穷无尽是离愁,天涯海角遍寻思。当离别在即之时,当面对着相濡以沫兄弟般的朋友时,当面对着经历了四年的磨合而形成的真挚友谊之时,我内心激动无语,说一声再见,道一声珍重都很难出口。回想自己四年大学的风风雨雨,回想我们曾经共同经历的岁月流年,我感谢大家的相扶相依,感谢朋友们的莫大支持与帮助。虽然舍不得,但离别的脚步却不因我们的挚情而停滞。','upload/news_picture6.jpg','<p>无穷无尽是离愁,天涯海角遍寻思。当离别在即之时,当面对着相濡以沫兄弟般的朋友时,当面对着经历了四年的磨合而形成的真挚友谊之时,我内心激动无语,说一声再见,道一声珍重都很难出口。回想自己四年大学的风风雨雨,回想我们曾经共同经历的岁月流年,我感谢大家的相扶相依,感谢朋友们的莫大支持与帮助。虽然舍不得,但离别的脚步却不因我们的挚情而停滞。离别的确是一种痛苦,但同样也是我们走入社会,走向新环境、新领域的一个开端,希望大家在以后新的工作岗位上能够确定自己的新起点,坚持不懈,向着更新、更高的目标前进,因为人生最美好的东西永远都在最前方!</p><p>忆往昔峥嵘岁月,看今朝潮起潮落,望未来任重而道远。作为新时代的我们,就应在失败时,能拼搏奋起,去谱写人生的辉煌。在成功时,亦能居安思危,不沉湎于一时的荣耀、鲜花和掌声中,时时刻刻怀着一颗积极寻找自己新的奶酪的心,处变不惊、成败不渝,始终踏着自己坚实的步伐,从零开始,不断向前迈进,这样才能在这风起云涌、变幻莫测的社会大潮中成为真正的弄潮儿!</p>'),(77,'2023-02-08 12:16:01','Leave未必是一种痛苦','无穷无尽是离愁,天涯海角遍寻思。当离别在即之时,当面对着相濡以沫兄弟般的朋友时,当面对着经历了四年的磨合而形成的真挚友谊之时,我内心激动无语,说一声再见,道一声珍重都很难出口。回想自己四年大学的风风雨雨,回想我们曾经共同经历的岁月流年,我感谢大家的相扶相依,感谢朋友们的莫大支持与帮助。虽然舍不得,但离别的脚步却不因我们的挚情而停滞。','upload/news_picture7.jpg','<p>无穷无尽是离愁,天涯海角遍寻思。当离别在即之时,当面对着相濡以沫兄弟般的朋友时,当面对着经历了四年的磨合而形成的真挚友谊之时,我内心激动无语,说一声再见,道一声珍重都很难出口。回想自己四年大学的风风雨雨,回想我们曾经共同经历的岁月流年,我感谢大家的相扶相依,感谢朋友们的莫大支持与帮助。虽然舍不得,但离别的脚步却不因我们的挚情而停滞。离别的确是一种痛苦,但同样也是我们走入社会,走向新环境、新领域的一个开端,希望大家在以后新的工作岗位上能够确定自己的新起点,坚持不懈,向着更新、更高的目标前进,因为人生最美好的东西永远都在最前方!</p><p>忆往昔峥嵘岁月,看今朝潮起潮落,望未来任重而道远。作为新时代的我们,就应在失败时,能拼搏奋起,去谱写人生的辉煌。在成功时,亦能居安思危,不沉湎于一时的荣耀、鲜花和掌声中,时时刻刻怀着一颗积极寻找自己新的奶酪的心,处变不惊、成败不渝,始终踏着自己坚实的步伐,从零开始,不断向前迈进,这样才能在这风起云涌、变幻莫测的社会大潮中成为真正的弄潮儿!</p>'),(78,'2023-02-08 12:16:01','坚持才会成功','回头看看,你会不会发现,曾经的你在这里摔倒过;回头看看,你是否发现,一次次地重复着,却从没爬起过。而如今,让我们把视线转向前方,那一道道金色的弧线,是流星飞逝的痕迹,或是成功运行的轨道。今天的你,是否要扬帆起航,让幸福来敲门?清晨的太阳撒向大地,神奇的宇宙赋予它神奇的色彩,大自然沐浴着春光,世界因太阳的照射而精彩,林中百鸟啾啾,河水轻轻流淌,汇成清宁的山间小调。','upload/news_picture8.jpg','<p>回头看看,你会不会发现,曾经的你在这里摔倒过;回头看看,你是否发现,一次次地重复着,却从没爬起过。而如今,让我们把视线转向前方,那一道道金色的弧线,是流星飞逝的痕迹,或是成功运行的轨道。今天的你,是否要扬帆起航,让幸福来敲门?</p><p>清晨的太阳撒向大地,神奇的宇宙赋予它神奇的色彩,大自然沐浴着春光,世界因太阳的照射而精彩,林中百鸟啾啾,河水轻轻流淌,汇成清宁的山间小调。</p><p>是的,面对道途上那无情的嘲讽,面对步伐中那重复的摔跤,面对激流与硬石之间猛烈的碰撞,我们必须选择那富于阴雨,却最终见到彩虹的荆棘路。也许,经历了那暴风雨的洗礼,我们便会变得自信,幸福也随之而来。</p><p>司马迁屡遭羞辱,却依然在狱中撰写《史记》,作为一名史学家,不因王权而极度赞赏,也不因卑微而极度批判,然而他在坚持自己操守的同时,却依然要受统治阶级的阻碍,他似乎无权选择自己的本职。但是,他不顾于此,只是在面对道途的阻隔之时,他依然选择了走下去的信念。终于一部开山巨作《史记》诞生,为后人留下一份馈赠,也许在他完成毕生的杰作之时,他微微地笑了,没有什么比梦想实现更快乐的了......</p><p>	或许正如"长风破浪会有时,直挂云帆济沧海"一般,欣欣然地走向看似深渊的崎岖路,而在一番耕耘之后,便会发现这里另有一番天地。也许这就是困难与快乐的交融。</p><p>也许在形形色色的社会中,我们常能看到一份坚持,一份自信,但这里却还有一类人。这类人在暴风雨来临之际,只会闪躲,从未懂得这也是一种历炼,这何尝不是一份快乐。在阴暗的角落里,总是独自在哭,带着伤愁,看不到一点希望。</p><p>我们不能堕落于此,而要像海燕那般,在苍茫的大海上,高傲地飞翔,任何事物都无法阻挡,任何事都是幸福快乐的。</p>');
/*!40000 ALTER TABLE `news` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `storeup`
--

DROP TABLE IF EXISTS `storeup`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `storeup` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `refid` bigint(20) DEFAULT NULL COMMENT '商品id',
  `tablename` varchar(200) DEFAULT NULL COMMENT '表名',
  `name` varchar(200) NOT NULL COMMENT '名称',
  `picture` longtext NOT NULL COMMENT '图片',
  `type` varchar(200) DEFAULT '1' COMMENT '类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)',
  `inteltype` varchar(200) DEFAULT NULL COMMENT '推荐类型',
  `remark` varchar(200) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='收藏表';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `storeup`
--

LOCK TABLES `storeup` WRITE;
/*!40000 ALTER TABLE `storeup` DISABLE KEYS */;
/*!40000 ALTER TABLE `storeup` 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 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 */;
/*!40000 ALTER TABLE `token` 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 */;

--
-- Dumping data for table `users`
--

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
INSERT INTO `users` VALUES (1,'admin','admin','管理员','2023-02-08 12:16:01');
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `xuantixinxi`
--

DROP TABLE IF EXISTS `xuantixinxi`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `xuantixinxi` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `ketibianhao` varchar(200) DEFAULT NULL COMMENT '课题编号',
  `ketimingcheng` varchar(200) DEFAULT NULL COMMENT '课题名称',
  `ketifenlei` varchar(200) DEFAULT NULL COMMENT '课题分类',
  `nanyichengdu` varchar(200) DEFAULT NULL COMMENT '难易程度',
  `renshu` varchar(200) NOT NULL COMMENT '人数',
  `jiaoshigonghao` varchar(200) DEFAULT NULL COMMENT '教师工号',
  `jiaoshixingming` varchar(200) DEFAULT NULL COMMENT '教师姓名',
  `xuehao` varchar(200) DEFAULT NULL COMMENT '学号',
  `xueshengxingming` varchar(200) DEFAULT NULL COMMENT '学生姓名',
  `banji` varchar(200) DEFAULT NULL COMMENT '班级',
  `zhuanye` varchar(200) DEFAULT NULL COMMENT '专业',
  `riqi` date DEFAULT NULL COMMENT '日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COMMENT='选题信息';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `xuantixinxi`
--

LOCK TABLES `xuantixinxi` WRITE;
/*!40000 ALTER TABLE `xuantixinxi` DISABLE KEYS */;
INSERT INTO `xuantixinxi` VALUES (51,'2023-02-08 12:16:01','课题编号1','课题名称1','课题分类1','难易程度1','1','教师工号1','教师姓名1','学号1','学生姓名1','班级1','专业1','2023-02-08'),(52,'2023-02-08 12:16:01','课题编号2','课题名称2','课题分类2','难易程度2','1','教师工号2','教师姓名2','学号2','学生姓名2','班级2','专业2','2023-02-08'),(53,'2023-02-08 12:16:01','课题编号3','课题名称3','课题分类3','难易程度3','1','教师工号3','教师姓名3','学号3','学生姓名3','班级3','专业3','2023-02-08'),(54,'2023-02-08 12:16:01','课题编号4','课题名称4','课题分类4','难易程度4','1','教师工号4','教师姓名4','学号4','学生姓名4','班级4','专业4','2023-02-08'),(55,'2023-02-08 12:16:01','课题编号5','课题名称5','课题分类5','难易程度5','1','教师工号5','教师姓名5','学号5','学生姓名5','班级5','专业5','2023-02-08'),(56,'2023-02-08 12:16:01','课题编号6','课题名称6','课题分类6','难易程度6','1','教师工号6','教师姓名6','学号6','学生姓名6','班级6','专业6','2023-02-08'),(57,'2023-02-08 12:16:01','课题编号7','课题名称7','课题分类7','难易程度7','1','教师工号7','教师姓名7','学号7','学生姓名7','班级7','专业7','2023-02-08'),(58,'2023-02-08 12:16:01','课题编号8','课题名称8','课题分类8','难易程度8','1','教师工号8','教师姓名8','学号8','学生姓名8','班级8','专业8','2023-02-08');
/*!40000 ALTER TABLE `xuantixinxi` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `xuesheng`
--

DROP TABLE IF EXISTS `xuesheng`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `xuesheng` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `xuehao` varchar(200) NOT NULL COMMENT '学号',
  `mima` varchar(200) NOT NULL COMMENT '密码',
  `xueshengxingming` varchar(200) NOT NULL COMMENT '学生姓名',
  `touxiang` longtext COMMENT '头像',
  `xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
  `shouji` varchar(200) DEFAULT NULL COMMENT '手机',
  `banji` varchar(200) DEFAULT NULL COMMENT '班级',
  `zhuanye` varchar(200) DEFAULT NULL COMMENT '专业',
  `xueyuan` varchar(200) DEFAULT NULL COMMENT '学院',
  `sfsh` varchar(200) DEFAULT '待审核' COMMENT '是否审核',
  `shhf` longtext COMMENT '审核回复',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COMMENT='学生';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `xuesheng`
--

LOCK TABLES `xuesheng` WRITE;
/*!40000 ALTER TABLE `xuesheng` DISABLE KEYS */;
INSERT INTO `xuesheng` VALUES (11,'2023-02-08 12:16:01','学号1','123456','学生姓名1','upload/xuesheng_touxiang1.jpg','男','13823888881','班级1','专业1','学院1','是',''),(12,'2023-02-08 12:16:01','学号2','123456','学生姓名2','upload/xuesheng_touxiang2.jpg','男','13823888882','班级2','专业2','学院2','是',''),(13,'2023-02-08 12:16:01','学号3','123456','学生姓名3','upload/xuesheng_touxiang3.jpg','男','13823888883','班级3','专业3','学院3','是',''),(14,'2023-02-08 12:16:01','学号4','123456','学生姓名4','upload/xuesheng_touxiang4.jpg','男','13823888884','班级4','专业4','学院4','是',''),(15,'2023-02-08 12:16:01','学号5','123456','学生姓名5','upload/xuesheng_touxiang5.jpg','男','13823888885','班级5','专业5','学院5','是',''),(16,'2023-02-08 12:16:01','学号6','123456','学生姓名6','upload/xuesheng_touxiang6.jpg','男','13823888886','班级6','专业6','学院6','是',''),(17,'2023-02-08 12:16:01','学号7','123456','学生姓名7','upload/xuesheng_touxiang7.jpg','男','13823888887','班级7','专业7','学院7','是',''),(18,'2023-02-08 12:16:01','学号8','123456','学生姓名8','upload/xuesheng_touxiang8.jpg','男','13823888888','班级8','专业8','学院8','是','');
/*!40000 ALTER TABLE `xuesheng` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 

5、关键代码

5.1 课题分类Controller模块

java 复制代码
package com.controller;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
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.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.KetifenleiEntity;
import com.entity.view.KetifenleiView;

import com.service.KetifenleiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 课题分类
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/ketifenlei")
public class KetifenleiController {
    @Autowired
    private KetifenleiService ketifenleiService;

    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,KetifenleiEntity ketifenlei,
		HttpServletRequest request){
        EntityWrapper<KetifenleiEntity> ew = new EntityWrapper<KetifenleiEntity>();

		PageUtils page = ketifenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, ketifenlei), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,KetifenleiEntity ketifenlei, 
		HttpServletRequest request){
        EntityWrapper<KetifenleiEntity> ew = new EntityWrapper<KetifenleiEntity>();

		PageUtils page = ketifenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, ketifenlei), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(KetifenleiEntity ketifenlei){
        EntityWrapper< KetifenleiEntity> ew = new EntityWrapper< KetifenleiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( ketifenlei, "ketifenlei")); 
		KetifenleiView ketifenleiView =  ketifenleiService.selectView(ew);
		return R.ok("查询课题分类成功").put("data", ketifenleiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        KetifenleiEntity ketifenlei = ketifenleiService.selectById(id);
        return R.ok().put("data", ketifenlei);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        KetifenleiEntity ketifenlei = ketifenleiService.selectById(id);
        return R.ok().put("data", ketifenlei);
    }
    
    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody KetifenleiEntity ketifenlei, HttpServletRequest request){
    	ketifenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(ketifenlei);
        ketifenleiService.insert(ketifenlei);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody KetifenleiEntity ketifenlei, HttpServletRequest request){
    	ketifenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(ketifenlei);
        ketifenleiService.insert(ketifenlei);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody KetifenleiEntity ketifenlei, HttpServletRequest request){
        //ValidatorUtils.validateEntity(ketifenlei);
        ketifenleiService.updateById(ketifenlei);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        ketifenleiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<KetifenleiEntity> wrapper = new EntityWrapper<KetifenleiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		int count = ketifenleiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
}

5.2 课题分类Service模块

java 复制代码
package com.service;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils;
import com.entity.KetifenleiEntity;
import java.util.List;
import java.util.Map;
import com.entity.vo.KetifenleiVO;
import org.apache.ibatis.annotations.Param;
import com.entity.view.KetifenleiView;

/**
 * 课题分类
 *
 * @author 
 * @email 
 * @date 
 */
public interface KetifenleiService extends IService<KetifenleiEntity> {

    PageUtils queryPage(Map<String, Object> params);
    
   	List<KetifenleiVO> selectListVO(Wrapper<KetifenleiEntity> wrapper);
   	
   	KetifenleiVO selectVO(@Param("ew") Wrapper<KetifenleiEntity> wrapper);
   	
   	List<KetifenleiView> selectListView(Wrapper<KetifenleiEntity> wrapper);
   	
   	KetifenleiView selectView(@Param("ew") Wrapper<KetifenleiEntity> wrapper);
   	
   	PageUtils queryPage(Map<String, Object> params,Wrapper<KetifenleiEntity> wrapper);
   	
}

5.3 课题分类ServiceImpl模块

java 复制代码
package com.service.impl;

import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;

import com.dao.KetifenleiDao;
import com.entity.KetifenleiEntity;
import com.service.KetifenleiService;
import com.entity.vo.KetifenleiVO;
import com.entity.view.KetifenleiView;

@Service("ketifenleiService")
public class KetifenleiServiceImpl extends ServiceImpl<KetifenleiDao, KetifenleiEntity> implements KetifenleiService {
	
	
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<KetifenleiEntity> page = this.selectPage(
                new Query<KetifenleiEntity>(params).getPage(),
                new EntityWrapper<KetifenleiEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<KetifenleiEntity> wrapper) {
		  Page<KetifenleiView> page =new Query<KetifenleiView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<KetifenleiVO> selectListVO(Wrapper<KetifenleiEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public KetifenleiVO selectVO(Wrapper<KetifenleiEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<KetifenleiView> selectListView(Wrapper<KetifenleiEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public KetifenleiView selectView(Wrapper<KetifenleiEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}

}

5.4 课题分类Dao模块

java 复制代码
package com.dao;

import com.entity.KetifenleiEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;

import org.apache.ibatis.annotations.Param;
import com.entity.vo.KetifenleiVO;
import com.entity.view.KetifenleiView;

/**
 * 课题分类
 * 
 * @author 
 * @email 
 * @date 
 */
public interface KetifenleiDao extends BaseMapper<KetifenleiEntity> {
	
	List<KetifenleiVO> selectListVO(@Param("ew") Wrapper<KetifenleiEntity> wrapper);
	
	KetifenleiVO selectVO(@Param("ew") Wrapper<KetifenleiEntity> wrapper);
	
	List<KetifenleiView> selectListView(@Param("ew") Wrapper<KetifenleiEntity> wrapper);

	List<KetifenleiView> selectListView(Pagination page,@Param("ew") Wrapper<KetifenleiEntity> wrapper);
	
	KetifenleiView selectView(@Param("ew") Wrapper<KetifenleiEntity> wrapper);	

}

6、论文目录结构

7、源码获取

感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!

喜欢文章可以点赞、收藏、关注、评论

获取源码请私信

相关推荐
火烧屁屁啦10 分钟前
【JavaEE进阶】初始Spring Web MVC
java·spring·java-ee
飞飞-躺着更舒服14 分钟前
【QT】实现电子飞行显示器(改进版)
开发语言·qt
w_312345424 分钟前
自定义一个maven骨架 | 最佳实践
java·maven·intellij-idea
岁岁岁平安26 分钟前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA29 分钟前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
Q_192849990636 分钟前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
Q_192849990640 分钟前
基于Spring Boot的营销项目系统
spring boot
张国荣家的弟弟1 小时前
【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
java·jar·bi
ZSYP-S1 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos1 小时前
c++------------------函数
开发语言·c++