文章目录
前言
本考研资料分享系统设计目标是实现考研资料的信息化管理,提高管理效率,使得考研资料交流工作规范化、科学化、高效化。
本文研究的考研资料分享系统基于Springboot架构,采用JSP技术、JAVA编程语言和MYSQL数据库设计开发。通过本系统,实现了管理员和用户两个角色的功能,能够有效提高考研资料交流诊断效率。本系统经过测试,运行效果稳定,操作方便、快捷,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的考研资料分享系统。
论文首先阐述了考研资料分享系统的开发,并对该系统进行了较详细的需求分析,探讨了考研资料分享系统的功能需求、业务流程、系统结构和数据库设计等方面的问题。望能利用先进的计算机技术和网络技术来改变目前的考研资料交流诊断状况,提高管理效率。
一、研究背景
随着计算机科学和互联网技术的迅猛发展,互联网正以惊人的速度逐步渗透到社会生活的各个领域,互联网极大地改变了人们的生活方式,丰富了人们获取信息的途径,使得人们更倾向于通过网络查询自己所需要的信息,考研学子也是需要通过各种途径来获取各种咨询。
对于考研的人来说,准备考试是一方面,关注考研信息也很重要,比如说:确定考研学校和专业;熟知考研流程,包含网上报名时间、现场确认、初试和复试时间、考试成绩公布时间等;了解考试科目、每科的分数、试卷结构;确定报考学硕还是专硕;了解复试线和国家线的区分。但是从不同途径去了解这些信息是很耗费时间和精力的,如果有一个网站,能够将考研学子需要的各种信息都融合在一起,那么将会为考研学子来带很多便利。
二、研究意义
随着信息技术的发展,人们生活的方方面面都离不开信息技术,并且本系统针对的主要是大学生,大学生是对信息技术接触最多的人群,这也为本系统的开发打下了良好的基础。通过本系统考研人员可以获取到最新的考研咨询信息,并且可以对不同的招生院校的政策有更好的了解,同时可以下载到一些考研复习所需的资料,最重要的是考研人员可以根据本系统论坛模块中进行交流,当有疑问的时候可以发起提问,当知识水平比较高的时候也可以帮助其他考研人员答疑解惑,从而让考研学子们更好的提高自己。
此外本系统是以毕业设计的形式呈现,系统使用Java语言和MySQL数据库进行设计,是对大学生四年所学知识的一个综合应用的体现。
三、主要使用技术
环境需要
1.运行环境:最好是java jdk 1.8,这是目前最稳定的JDK也是被使用最多的JDK版本。
2.IDE环境:IDEA,Eclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat7/Tomcat8/Tomcat9版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
后端:Spring+SpringMVC+Mybatis+Springboot
前端:vue+CSS+JavaScript+jQuery+elementui
使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;
将项目中applicationContext.xml配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名
四、研究内容
用户首次登录系统需要注册一个用户,用户在登陆平台后,可以进行平台操作,主要有以下模块:
1.注册功能:个人基本信息以及目标院校(正在考研的)和就读学校(已经上岸的)方便区分是否考研成功,这个地方可以给一个下拉选项是备研和研究生,选择备研就是输入目标院校,研究生就是填写自己就读的院校(但是需要发送验证照片—身份证和学生证或录取通知书给管理员)。
2.登录功能:
(1)一类为管理员账户,
(2)一类为普通用户,用户登录系统后可以对自己的个人基本信息进行更改。普通用户里面可以用一个字段进行区分是否考研成功,考研成功的后期可以更改当前状态为研究生
(3)还有一个游客的角色,可以浏览,但是不能进行其他的操作,进行其他的操作要给出提示需要登录或注册账户。通过本系统,实现了管理员和用户两个角色的功能,能够有效提高考研资料交
流诊断效率。本系统经过测试,运行效果稳定,操作方便、快捷,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的考研资料分享系统。前端技术
五、核心代码
package com.controller;
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.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.NewsEntity;
import com.entity.view.NewsView;
import com.service.NewsService;
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;
/**
* 考研资讯
* 后端接口
*/
@RestController
@RequestMapping("/news")
public class NewsController {
@Autowired
private NewsService newsService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,NewsEntity news,
HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,NewsEntity news,
HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( NewsEntity news){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
return R.ok().put("data", newsService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(NewsEntity news){
EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
NewsView newsView = newsService.selectView(ew);
return R.ok("查询考研资讯成功").put("data", newsView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody NewsEntity news, HttpServletRequest request){
//ValidatorUtils.validateEntity(news);
newsService.updateById(news);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
newsService.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<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = newsService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
六、文章目录
摘 要 I
ABSTRACT II
第1章 项目概述 1
1.1 问题描述 1
1.2 项目目标 1
1.3 项目适用范围 1
1.4 项目应遵守的规范与标准 1
1.5 涉众 1
第2章 需求分析 2
2.1 业务需求 2
2.1.1 业务流程 2
2.2 功能性需求 4
2.2.1 用例概述 4
2.2.2 用例细化描述 5
2.3 非功能性需求 11
2.4 运行环境 11
第3章 系统设计 13
3.1 技术路线 13
3.2 软件体系结构设计 14
3.2.1 功能结构 14
3.2.2 系统架构 14
3.3 数据库设计 15
3.3.1 概念结构设计 15
3.3.2 表的详细设计 16
第4章 系统实现 29
4.1 核心功能实现 29
4.2 关键技术难点与解决方案 32
4.3 编码规范 33
第5章 系统测试 34
5.1 功能测试 34
5.2 测试总结 36
第6章 结论与展望 38
参考文献 39
致 谢 40