作者简介:全栈开发工程,从事Java、Python、前端、小程序方面的开发和研究,对大数据应用与开发比较感兴趣,
主要内容:Java项目、前端项目、Python项目、小程序开发、大数据项目、单片机
收藏点赞不迷路 关注作者有好处
文末获取源码
感谢您的关注,请收藏以免忘记,点赞以示鼓励,评论给以建议,爱你哟
目录
一,环境介绍
二,项目简介
三,系统展示
四,核心代码展示
五,相关作品展示
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
开发技术后台:SSM框架
前台开发技术:JSP+Bootstrap+Jquery
当代大学生人生观、社会价值观与以往大学生是截然不同的,相对于80后,90后赶上新世纪的门槛,其性格更加独立自主,自我意识强,但对于网络的依赖性非常大。但是,过分沉溺于网络的虚拟世界势必会造成部分大学生思想意志的薄弱,精神空虚,拜金及贪图享乐的思想严重等情况。这对个人发展是极其不利的,对祖国的未来甚至于国家安全来说都是一种隐患,所以加强大学生思想政治教育是我国高校人才培养中非常重要、必不可少的一环。针对于当代大学生对网络的依赖性较强的特点,利用新世纪网络技术的优势来建设一个大学生思想政治教育网站可以作为学生校内思想政治教育的线上补充,充分调动大学生学习热情,提高大学生爱党爱国、艰苦奋斗、乐于奉献的思想觉悟。
本网站使用Java语言编写,使用MySQL数据库进行数据存储和管理,开发与实现了一个高校的思政教育平台网站。网站包含多个模块,通过后期调试,实现了网站预计的目标,与传统的线下教学相比,本网站更高效的利用现代计算机网络技术通过线上教育的方式对大学生进行思想政治教育,拓宽了大学生思想政治教育的研究方向。系统采用B/S结构,SSM三大框架以及IDEA集成开发工具和Tomcat8.5服务器完成系统开发。
管理员模块分成六大子模块分别是注册会员管理,网站内容类别管理,网站内容信息管理,网站公告管理,评论信息管理,留言信息管理。会员用户功能包括:注册登录操作,网站内容信息浏览,网站内容信息搜索,网站内容信息评论,网站内容信息浏览,网站内容信息发布。根据模块进行数据库表编写,然后在IDEA开发工具中分模块进行代码的编,写每做好一个模块进行都会与数据库进行交互信息以确定信息能正确的进行前端展示,然后进行分析总结调试。各个模块全部开发好以后进行模块拼接测试,将降低模块耦合提升性能,最后编写测试用例,根据测试用例进行系统测试找出BUG修改。
我这次设计的内容管理系统分成了三个部分进行了不同的设计这三部分包括浏览者、会员与管理员:
1、浏览者权限:这个角色只能搜索和浏览内容内容但是不可以对任何内容进行评论当然也不可以留言只有注册成为会员以后才能使用相应权限。
2、会员权限:会员可以进行不同的搜索和模糊搜索,还可以对所有内容进行评论留言以及自己的个人信息。
3、管理员:管理员拥有系统的所有权限,管理员能对内容有增加删除修改查询操作等,可以冻结不良用户,维护内容系统等工作[4]。
管理员用例图:
前端用户用例图
从会员用例图中可以看出只有注册成为会员后,注册成为会员以后方可浏览内容、搜索内容、评价内容、公告浏览急留言信息发布[6]。
数据表的设计思想我是首先建立一个E-R图模型,然后就是确定数据库表之间的关系图解,在E-R图用长方形来展示实体名称,实体名称在长方形框中写明此名称,椭圆的形状是用来展现实体具备的属性,菱形联系实体,并标明名称,再用无向边把模型中所有的图联系起来[8]。数据概念模型设计如图所示。
图 整体属性E-R图
整体功能结构图:
1、前台功能模块:
2、后台功能模块:
系统首页
全文检索
评论互动
新闻列表
后台管理
会员管理
类型管理
package cn.base.controller;
import cn.base.service.BaseService;
import cn.entity.User;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;
/**
* 抽取的顶层controller:提取公用的方法并利于扩展
* @param 业务类
* @param 实体类
*/
public abstract class BaseController {
@Autowired
protected S service;
@Autowired
protected HttpServletRequest request;
@Autowired
protected HttpServletResponse response;
@Autowired
protected HttpSession session;
@RequestMapping("jsonList")
@ResponseBody
public List jsonList() {
return service.getList(null);
}
@RequestMapping("get")
@ResponseBody
public T get(Integer id) {
return (T) service.get(id);
}
@RequestMapping("del")
@ResponseBody
public void del(Integer id) {
service.delete(id);
}
@RequestMapping("modify")
@ResponseBody
public void modify(T t) {
service.updateSelective(t);
}
@RequestMapping("insert")
@ResponseBody
public void insert(T t) {
service.insertSelective(t);
}
/**
*
* @param pageNo 页码
* @param pageSize 每页显示的条数
* @param map 查询条件
* @param model 存储数据模型
*/
protected void page(Integer pageNo, Integer pageSize, Map map, Model model) {
pageSize = pageSize == null ? 10 : pageSize;
pageNo = pageNo == null ? 1 : pageNo;
String order = "";
if (map != null && map.containsKey("order")) {
order = (String) map.get("order");
map.remove("order");
}
PageInfo pageInfo=service.getPage(pageNo, pageSize, order, map);
model.addAttribute("pageInfo",pageInfo);
if (map!=null) {
for (String key : map.keySet()) {
model.addAttribute(key,map.get(key));
}
}
}
protected User getLogin(){
return (User) session.getAttribute("login");
}
}
package cn.controller;
import cn.base.controller.BaseController;
import cn.base.util.RestResult;
import cn.entity.User;
import cn.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
@RequestMapping("user")
public class UserController extends BaseController {
@RequestMapping("list")
public String List(Integer pageNo, Integer role, String name, Model model) {
if (StringUtils.isEmpty(name)) name = null;
Map map = new HashMap();
map.put("isDel", 0);
map.put("name", name);
if (role != null && role != -1) map.put("role", role);
page(pageNo, 5, map, model);
return "manage/userList";
}
@RequestMapping("jsonLogin")
@ResponseBody
public RestResult login(String account, String password, Model model) {
Map map = new HashMap();
map.put("account", account);
map.put("password", password);
List list = service.getList(map);
if (list.size() > 0) {
User user = list.get(0);
session.setAttribute("login", user);
return new RestResult(RestResult.SUCCESS, new Exception(""));
} else {
model.addAttribute("error", "用户名或密码错误");
return new RestResult(RestResult.ERROR, new Exception("用户名或密码错误!\n请重新输入。"));
}
}
@RequestMapping("reg")
@ResponseBody
public void reg(User user) {
user.setRole(2);
service.insert(user);
}
@RequestMapping("accTest")
@ResponseBody
public boolean accTest(String account) {
if (StringUtils.isEmpty(account)) account = null;
Map map = new HashMap();
map.put("account", account);
List list = service.getList(map);
return list.size() >0;
}
@RequestMapping("pwdTest")
@ResponseBody
public boolean pwdTest(String old) {
User user = (User) session.getAttribute("login");
return user.getPassword().equals(old);
}
@RequestMapping("pwd")
@ResponseBody
public void pwd(String password) {
User user = (User) session.getAttribute("login");
user.setPassword(password);
service.updateSelective(user);
}
@RequestMapping("view/{id}")
public String view(@PathVariable Integer id, Model model) {
User user = service.get(id);
model.addAttribute("user", user);
if (user.getRole() == 1) return "manage/userView";
return "pwd";
}
@RequestMapping("logout")
public String logout() {
User user = getLogin();
session.removeAttribute("login");
if (user.getRole() == 1) return "manage/login/login";
else return "login";
}
}
package cn.controller;
import cn.base.controller.BaseController;
import cn.base.util.Const;
import cn.base.util.JedisUtil;
import cn.entity.Xin;
import cn.service.XinService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 内容相关的请求控制器
*/
@Controller
@RequestMapping("xin")
public class XinController extends BaseController {
/**
* 首页的内容列表
* @param pageNo 页码参数
* @param title 搜索时的标题
* @param tid 内容分类ID
* @param model 数据存储模型
* @return
*/
@RequestMapping("list")
public String List(Integer pageNo, String title, Integer tid, Model model) {
if (StringUtils.isEmpty(title)) {
title = null;
}
if (tid != null && tid == -1) {
tid = null;
}
Map map = new HashMap();
map.put("title", title);
map.put("tid", tid);
page(pageNo, 10, map, model);
//角色判断:如果未登陆或登陆人为普通用户,跳转到前端显示
if (getLogin() == null || getLogin().getRole() == 2) {
return "list";
}else {
//角色判断:如果是管理员用户,跳转到后端显示
return "manage/xinList";
}
}
public void insert(Xin xin) {
xin.setClick(0);
xin.setPubTime(Const.getCurrentTime());
service.insert(xin);
}
@RequestMapping("view/{id}")
public String view(@PathVariable Integer id, Model model) {
Xin xin = service.get(id);
xin.setClick(xin.getClick()+1);
service.updateSelective(xin);
xin=service.get(id);
model.addAttribute("xin", xin);
if (getLogin()==null||getLogin().getRole()==2) return "xinView";
return "manage/view";
}
/**
* 今日最热查询:查询今天发布的内容,最多10条
* @return
*/
@RequestMapping("hotList")
@ResponseBody
public List hotList() {
Map map = new HashMap();
//map.put("pubTime", Const.getCurrentDay());
return service.getPage(1,10,"click desc",map).getList();
}
/**
* 推荐内容查询:查询当前这条内容同类的内容信息,最多10条
* @return
*/
@RequestMapping("tuijianList")
@ResponseBody
public List tuijianList(int tid,int xid) {
Map map = new HashMap();
map.put("tid", tid);
Jedis jedis = JedisUtil.getJedis();
String tjnews = jedis.get("tjnews_"+tid);
List xinList = new ArrayList<>();
if(tjnews!=null){
xinList = JSON.parseArray(tjnews,Xin.class );
}else{
xinList = service.getPage(1, 10, "click desc", map).getList();
jedis.set("tjnews_"+tid, JSON.toJSONString(xinList));
}
//将当前浏览的内容排除
for(int i=0;i
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的各类毕业设计作品
基于Nodejs、Vue等前端技术开发设计的前端毕业设计作品
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统
前沿技术、一站式服务、贴心售后解决你后顾之忧