基于java+springmvc+mybatis+vue+mysql的高校普法系统

news2024/11/15 21:54:17

项目介绍

随着信息化时代的到来,管理系统都趋向于智能化、系统化,高校普法系统也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而高校普法系统能很好地解决这一问题,轻松应对高校普法平时的工作,既能提高人力物力财力,又能加快工作的效率,取代人工管理是必然趋势。

本高校普法系统以ssm作为框架,b/s模式以及mysql作为后台运行的数据库,前端采用vue技术,同时使用tomcat用为系统的服务器。本系统主要包括以下功能模块:首页、个人中心、律师推荐管理、咨询问题管理、问题回复管理、学生管理、律师管理、类型管理、法律知识管理、新闻类型管理、法律新闻管理、律师推荐管理、咨询问题管理、问题回复管理、管理员管理、普法论坛、系统管理等模块,通过这些模块的实现能够基本满足日常高校普法管理的操作。

本次设计任务是要设计一个高校普法系统,通过这个系统能够满足高校普法系统的管理、学生和律师的普法服务。系统的主要功能包括:首页、个人中心、律师推荐管理、咨询问题管理、问题回复管理、学生管理、律师管理、类型管理、法律知识管理、新闻类型管理、法律新闻管理、律师推荐管理、咨询问题管理、问题回复管理、管理员管理、普法论坛、系统管理等功能。

管理员可以根据系统给定的账号进行登录,登录后可以进入高校普法系统对普法所有模块进行管理。包括查看和修改自己的个人信息以及登录密码。

根据高校普法系统的功能需求,进行系统设计。
前台功能:学生进入系统可以实现首页、法律知识、法律新闻、律师推荐、普法论坛、法律与校园、个人中心、后台管理等进行操作。

后台主要是管理员和律师,管理员功能包括首页、个人中心、律师推荐管理、咨询问题管理、问题回复管理、学生管理、律师管理、类型管理、法律知识管理、新闻类型管理、法律新闻管理、律师推荐管理、咨询问题管理、问题回复管理、管理员管理、普法论坛、系统管理等。律师功能包括首页、个人中心、律师推荐管理、咨询问题管理、问题回复管理等。
这个系统的功能结构设计如图所示。
在这里插入图片描述

开发环境

开发语言:java
数据库 :mysql
系统架构:b/s
后端框架:ssm
前端框架:Vue
开发工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序/vue/爬虫/c#/asp.net

系统截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分代码

package com.controller;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.ForumEntity;
import com.entity.view.ForumView;
import com.service.ForumService;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;


/**
 * 普法论坛
 * 后端接口
 */
@RestController
@RequestMapping("/forum")
public class ForumController {
    @Autowired
    private ForumService forumService;



    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, ForumEntity forum, HttpServletRequest request){
        EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();
		ew.isNotNull("title");
        if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
            forum.setUserid((Long)request.getSession().getAttribute("userId"));
            ew.eq("userid",forum.getUserid());
        }
    	PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params));
        return R.ok().put("data", page);
    }


    /**
     * 后端列表(查看论坛评论)
     */
    @RequestMapping("/page1")
    public R page1(@RequestParam Map<String, Object> params, ForumEntity forum, HttpServletRequest request){
        if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
            forum.setUserid((Long)request.getSession().getAttribute("userId"));
        }
        EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();
        //ew.eq("parentid",forum.getId());
        PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, ForumEntity forum, HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		forum.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();
		PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @IgnoreAuth
    @RequestMapping("/flist")
    public R flist(@RequestParam Map<String, Object> params, ForumEntity forum, HttpServletRequest request){
        EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();
    	PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allEq(ew, forum), params), params));
        return R.ok().put("data", page);
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ForumEntity forum){
        EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();
 		ew.allEq(MPUtil.allEQMapPre( forum, "forum"));
		ForumView forumView =  forumService.selectView(ew);
		return R.ok("查询论坛表成功").put("data", forumView);
    }

    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        ForumEntity forum = forumService.selectById(id);
        return R.ok().put("data", forum);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        ForumEntity forum = forumService.selectById(id);
        return R.ok().put("data", forum);
    }

	/**
     * 论坛详情
     */
	@IgnoreAuth
    @RequestMapping("/list/{id}")
    public R list(@PathVariable("id") String id){
        ForumEntity forum = forumService.selectById(id);
        getChilds(forum);
        return R.ok().put("data", forum);
    }

	private ForumEntity getChilds(ForumEntity forum) {
    	List<ForumEntity> childs = new ArrayList<ForumEntity>();
    	childs = forumService.selectList(new EntityWrapper<ForumEntity>().eq("parentid", forum.getId()));
    	if(childs == null || childs.size()==0) {
    		return null;
    	}
    	forum.setChilds(childs);
    	for(ForumEntity forumEntity : childs) {
    		getChilds(forumEntity);
    	}
    	return forum;
    }



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody ForumEntity forum, HttpServletRequest request){
    	forum.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(forum);
    	forum.setUserid((Long)request.getSession().getAttribute("userId"));
        forumService.insert(forum);
        return R.ok();
    }

    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody ForumEntity forum, HttpServletRequest request){
    	forum.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(forum);
    	forum.setUserid((Long)request.getSession().getAttribute("userId"));
        forumService.insert(forum);
        return R.ok();
    }

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


    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        forumService.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<ForumEntity> wrapper = new EntityWrapper<ForumEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


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



}

目录
第一章 绪论 5
1.1 研究背景 5
1.2 系统研究现状 5
1.3 系统实现的功能 6
1.4 系统实现的特点 6
1.5 本文的组织结构 6
第二章开发技术与环境配置 7
2.1 Java语言简介 7
2.2 MySQL环境配置 8
2.3 IDEA环境配置 9
2.4 Mysql数据库介绍 10
2.5 B/S架构 11
第三章系统分析与设计 11
3.1 可行性分析 11
3.1.1 技术可行性 11
3.1.2 操作可行性 11
3.1.3经济可行性 11
3.2 需求分析 12
3.3 总体设计 12
3.4 数据库设计与实现 13
3.4.1 数据库概念结构设计 13
3.4.2 数据库具体设计 14
第四章 系统功能的具体实现 22
4.1 系统功能模块 22
4.2 管理员功能模块 25
第五章 系统测试 29
总结 30
参考文献 31
致谢 32

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

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

相关文章

堆排序快速排序插入排序

堆排序 数据结构使用的是1 dimension的数组来作为二叉树的堆结构&#xff0c;所以并没有使用结构体&#xff0c;而是直接使用了数组 而且堆是完全二叉树&#xff0c;也就是除了最后一层以外&#xff0c;其他层都是满二叉树&#xff0c;最后一层可能不满&#xff0c;所以1dime…

基于jeecgboot的flowable流程支持服务任务的功能

1、描述 Java服务任务用于调用外部Java类。 2、图形表示法 服务任务可视化为圆角矩形&#xff0c;左上角有一个小齿轮图标&#xff0c;如下图&#xff1a; 3、XML表示 有三种方法声明如何调用Java逻辑&#xff0c;下面分别介绍&#xff1a; 调用固定的类 使用flowable:cla…

Flask打开调试模式

调试模式 Flask支持本地开发&#xff0c;但是每次修改代码后需要手动重新启动程序&#xff0c;这不是很友好&#xff0c;事实上Flask支持调试模式来做到更好&#xff0c;Flask服务会在代码更改时自动重新加载&#xff0c;如果出现问题&#xff0c;还能提供调试器以供调试 如何…

docker登陆MySQL提示密码错误,Navicat也连接不上

问题原因 今天在操作自己云服务器MySQL数据库的时候发现使用root进行远程登录的时候被拒绝了&#xff0c;一直提示Access denied for user ‘root‘‘localhost‘ (using password: YES)。 可以确认自己账号密码是没有错的。后来以为是远程访问出问题了&#xff0c;进入到容器…

JavaSE基础篇:泛型说明

本文整理自B站&#xff1a;JavaSE强化教程泛型&#xff0c;由点到面的讲解了整个泛型体系第一章&#xff1a;泛型概述一&#xff1a;泛型概念二&#xff1a;泛型类1&#xff1a;泛型类使用2&#xff1a;泛型类派生子类1)&#xff1a;子类也是泛型类2)&#xff1a;子类不是泛型类…

SQL进阶笔记

SQL进阶笔记 CASE表达式 简单case表达式 case sexwhen 1 then 男when 2 then 女else 其他 end搜索case表达式 case when sex 1 then 男when sex 2 then 女else 其他 end编写SQL语句的时候需要注意&#xff0c;在发现为真的WHEN子句时&#xff0c;CASE表达式的真假值判断就会中…

Java并发编程(一)—— FutureTask超详细教程

一、前言 创建线程有几种方式?这个问题的答案应该是可以脱口而出的吧: 继承 Thread 类实现 Runnable 接口但这两种方式创建的线程是属于三无产品: 没有参数没有返回值没办法抛出异常用着三无产品总是有一些弊端,其中没办法拿到返回值是最让人不能忍的,于是 Callable 就诞…

TeamsApp LukcyDraw升级之路 之 DB Infra 篇

今天继续 LuckyDraw 的升级之路&#xff0c;之前在1500以上用户同时使用的时候&#xff0c;特别是在短时间内大家一起点击参与抽奖参的时候&#xff0c;服务会出现大量的错误&#xff0c;分析后发现&#xff0c;出现错误的原因基本都是 Azure Storage Table 返回的。当时使用 A…

【GRU回归预测】基于matlab卷积神经网络结合门控循环单元CNN-GRU数据预测(多输入单输出)【含Matlab期源码 2274期】

⛄一、CNN-GRU数据预测 1 理论基础 1.1 CNN算法 负荷序列数据为一维数据&#xff0c;用一维卷积核对数据进行卷积处理&#xff0c;以获取数据的特征。 现设定卷积核的维度为3&#xff0c;移动步长为1&#xff0c;对输入数据进行卷积&#xff0c;以获得特征图图谱&#xff0c;即…

记录那不用百度的美好代码

努力工作&#xff0c;日益消瘦&#xff0c;总有些代码不想记住。我称之为&#xff1a;拿来即用系列 一&#xff1a;格式化时间 1.去除时间的T // 去除日期中T function timeFormatSeconds(time) {if(!time) return time;var date time.substr(0, 10); //年月日var hours ti…

jsp+ssm计算机毕业设计宠物商城【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

基于SPRINGBOOT的健康饮食管理系统

11-8开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 基于springboot框架&#xff0c;通过对事物健康程度的总结与归纳&#xff0c;进行软件设计&#xff0c;并通过优秀的…

go 语言Http服务器远程执行shell命令

背景 想要在服务器上起一个http服务器&#xff0c;用来远程执行shell命令并且返回。 基础版 package mainimport ("io""log""net/http" )func main() {// Hello world, the web serverhelloHandler : func(w http.ResponseWriter, req *http.R…

性能脚本:用案例和图示帮你理解HTTP协议

当前使用得最为广泛的应用层协议就是 HTTP 了。我想了好久,还是觉得应该把 HTTP 协议写一下。 因为做性能测试分析的人来说,HTTP 协议可能是绕不过去的一个槛。在讲 HTTP 之前,我们得先知道一些基本的信息。 HTTP(HyperText Transfer Protocol,超文本传输协议),显然是…

linux shell编程

linux shell编程1.shell脚本概述2.脚本的调用形式3.shell脚本语法3.1 脚本开头标识3.2 脚本注释3.3 给脚本加上可执行权限3.4 shell脚本的运行方式3.5 检测脚本是否正确3.6 重定向的使用3.7 获取上一条命令的执行结果4.变量4.1 变量的定义和使用4.2 从键盘上读取变量&#xff1…

(十七)Vue之自定义指令

文章目录自定义指令局部指令回调函数形式配置对象形式全局配置回调函数形式配置对象形式Vue学习目录 上一篇&#xff1a;&#xff08;十六&#xff09;Vue之内置指令 先看两个需求&#xff1a; 需求1&#xff1a;定义一个v-big指令&#xff0c;和v-text功能类似&#xff0c;…

陈表达学VBA-msgbox辨别用户选择和代码调用

今天有个老客户提出需求&#xff1a; 模块&#xff1a;sub 过程A( ) ①如果是单独使用时则显示msgbox选择消息框 ②如果A过程调用B过程&#xff0c;则不显示消息框&#xff0c;默认选择是 msgbox没有设置默认值这个功能&#xff0c;msgbox也没有参数可以失败是用户点击还是代…

pytorch基础操作(六)利用L2范数(权重衰减)解决线性模型过拟合问题

一、一些概念 训练误差&#xff08;training error&#xff09; 是指&#xff0c;模型在训练数据集上计算得到的误差。 泛化误差&#xff08;generalization error&#xff09; 是指&#xff0c;模型应⽤在同样从原始样本的分布中抽取的⽆限多数据样本时&#xff0c;模型误差的…

【Linux】Linux基本指令

Linux基本指令1.ls指令2.pwd指令3.cd指令3.touch 指令4.mkdir指令5. rmdir指令 && rm 指令5.1 rmdir5.2 rm6.tree 指令7.man指令8.cp指令9.mv指令10. cat指令11.echo指令12.more指令13.less指令14.wc指令15.head指令16.tail指令17. | &#xff08;管道指令&#xff09;…

每天五分钟机器学习:PCA算法如何确定数据压缩降维的最佳维度?

本文重点 上节课程中我们已经学习了pca算法,已经知道了如何将n维特征变量降到k维,k是PCA算法的一个参数,也被称为主成分的数量。那么现在就产生了一个问题,这个问题就是如何选择K,因为PCA要做的就是要尽量减少投射的平均均方误差,所以K的选择很关键。 平均均方误差 其中…