Author Homepage: Programming Compass
About the author: High-quality creator in the Java field, CSDN blog expert, CSDN content partner, invited author of Nuggets, Alibaba Cloud blog expert, 51CTO invited author, many years of architect design experience, resident lecturer of Tencent classroom
Main content: Java project, Python project, front-end project, artificial intelligence and big data, resume template, learning materials, interview question bank, technical mutual assistance
Favorites, likes, don't get lost, it's good to follow the author
Get the source code at the end of the article
Item number: BS-GX-063
1. Environmental introduction
Locale: Java: jdk1.8
Database: Mysql: mysql5.7
Application server: Tomcat: tomcat8.5.31
Development tools: IDEA or eclipse
Front-end development technology: Vue+ElementUI
Background development technology: SSM framework
2. Project introduction
2.1 Introduction
Today in the 21st century, with the continuous development and progress of society, people's understanding of information science has developed from a low level to a high level, from the original perceptual knowledge to rational knowledge, and the importance of management has gradually been recognized by people. As we know, scientific management makes information storage accurate, fast and perfect, and can improve work management efficiency and promote its development.
The thesis mainly introduces the graduation design management system, including the current research status and the development background involved, and then discusses the design goals of the system, as well as the requirements of the system, as well as the entire design plan, and the system The design and implementation of the paper are also discussed in detail, and finally some specific tests are carried out on the graduation design management system.
This paper uses Java as the development technology to realize a graduation design management system. The main functions of the graduation design management system include: administrator: home page, personal center, personal information, student management, teacher management, file template management, forum management, system management, online topic selection management, topic opening report management, mid-term report management, Dissertation management, etc. , Teacher management: personal center, personal information, file template management, online topic selection management, teacher Q&A management, topic opening report management, mid-term report management, graduation thesis management, student question management, thesis progress management, etc. Student management: personal center, personal information, student question management, , teacher answer management, opening report management, mid-term report management, graduation thesis management, student question management, thesis progress management, my collection management and other functions. Through the design of these functional modules, the entire graduation project management system process is basically realized.
Specifically, in the system design, the B/S structure is adopted. At the same time, Java technology is also used to design on the dynamic page, and the Mysql database is used in the background. It is a very excellent graduation design management system.
2.2 Use Case Requirements Analysis
Administrator Use Case Diagram
The core teacher in the system is the system administrator. After the administrator logs in, he can manage the background system through the administrator menu. The main functions are: home page, personal center, personal information, student management, teacher management, file template management, forum management, system management, online topic selection management, topic opening report management, interim report management, graduation thesis management, student problem management, Thesis progress management and other functions. An example of administrator usage is shown in Figure 1.
Teachers: Personal center, personal information, file template management, online topic selection management, teacher Q & A management, topic opening report management, mid-term report management, graduation thesis management, student question management, thesis progress management and other functions. An example of a teacher's use is shown in Figure 2.
Students: personal center, personal information, student question management, teacher question answer management, topic opening report management,
Mid-term report management, graduation thesis management, student question management, thesis progress management, my collection and other functions. An example of student use is shown in Figure 3.
2.3 System function design
The system architecture diagram belongs to the system design stage. The system architecture diagram is only a product of this stage. The overall architecture of the system determines the mode of the entire system and is the basis of the system. The overall structural design of the graduation design management system is shown in Figure 4-2.
2.4 Database design
The table information of the database is part of the design, and the detailed information of each table in the database is introduced below.
Form guanliyuanxinxi Form
column name |
type of data |
length |
constraint |
id |
int |
11 |
PRIMARY KEY |
username |
varchar |
50 |
DEFAULT NULL |
pwd |
varchar |
50 |
DEFAULT NULL |
cx |
varchar |
50 |
DEFAULT NULL |
Table 3 xuesheng table
column name |
type of data |
length |
constraint |
id |
int |
10 |
PRIMARY KEY |
xueshengxuehao |
int |
50 |
DEFAULT NULL |
xueshengxingming |
varchar |
50 |
DEFAULT NULL |
xingbie |
varchar |
50 |
DEFAULT NULL |
nianji |
varchar |
50 |
DEFAULT NULL |
I'm not |
varchar |
50 |
DEFAULT NULL |
shenfenzheng |
varchar |
50 |
DEFAULT NULL |
lianxidianhua |
varchar |
50 |
DEFAULT NULL |
Table 5 jiaoshi data table
column name |
type of data |
length |
constraint |
id |
int |
11 |
PRIMARY KEY |
jiaoshigonghao |
varchar |
50 |
DEFAULT NULL |
jiaoshixingming |
varchar |
50 |
DEFAULT NULL |
mima |
varchar |
50 |
DEFAULT NULL |
zhicheng |
varchar |
50 |
DEFAULT NULL |
lianxidianhua |
int |
10 |
DEFAULT NULL |
shenfenzheng |
int |
500 |
DEFAULT NULL |
Table 6 `zaixianxuanti data sheet
column name |
type of data |
length |
constraint |
id |
int |
11 |
PRIMARY KEY |
your titi |
varchar |
10 |
DEFAULT NULL |
tupian |
varchar |
500 |
DEFAULT NULL |
jianjie |
varchar |
20 |
DEFAULT NULL |
jiaoshigonghao |
varchar |
4 |
DEFAULT NULL |
fabushijian |
varchar |
20 |
DEFAULT NULL |
sfsh |
varchar |
20 |
DEFAULT NULL |
shhf |
varchar |
20 |
DEFAULT NULL |
Table 6 `xueshengtiwen data sheet
column name |
type of data |
length |
constraint |
id |
int |
11 |
PRIMARY KEY |
woyaotiwen |
varchar |
10 |
DEFAULT NULL |
xueshengxuehao |
varchar |
500 |
DEFAULT NULL |
xueshengxingming |
varchar |
20 |
DEFAULT NULL |
jiaoshigonghao |
varchar |
4 |
DEFAULT NULL |
jiaoshixingming |
varchar |
20 |
DEFAULT NULL |
tiwenshijian |
varchar |
20 |
DEFAULT NULL |
Table 6 `laoshidayi data table
column name |
type of data |
length |
constraint |
id |
int |
11 |
PRIMARY KEY |
laoshidayi |
varchar |
10 |
DEFAULT NULL |
xueshengxuehao |
varchar |
500 |
DEFAULT NULL |
xueshengxingming |
varchar |
20 |
DEFAULT NULL |
jiaoshigonghao |
varchar |
4 |
DEFAULT NULL |
jiaoshixingming |
varchar |
20 |
DEFAULT NULL |
dayishijian |
varchar |
20 |
DEFAULT NULL |
Three, system display
Front-end display
Effect picture of online topic selection
administrator management
no longer show
Fourth, the core code display
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.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.ZhongqibaogaoEntity;
import com.entity.view.ZhongqibaogaoView;
import com.service.ZhongqibaogaoService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 中期报告
* 后端接口
* @author
* @email
* @date 2020-11-02 10:24:01
*/
@RestController
@RequestMapping("/zhongqibaogao")
public class ZhongqibaogaoController {
@Autowired
private ZhongqibaogaoService zhongqibaogaoService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ZhongqibaogaoEntity zhongqibaogao, HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
zhongqibaogao.setXueshengxuehao((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("jiaoshi")) {
zhongqibaogao.setJiaoshigonghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<ZhongqibaogaoEntity> ew = new EntityWrapper<ZhongqibaogaoEntity>();
PageUtils page = zhongqibaogaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zhongqibaogao), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ZhongqibaogaoEntity zhongqibaogao, HttpServletRequest request){
EntityWrapper<ZhongqibaogaoEntity> ew = new EntityWrapper<ZhongqibaogaoEntity>();
PageUtils page = zhongqibaogaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zhongqibaogao), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ZhongqibaogaoEntity zhongqibaogao){
EntityWrapper<ZhongqibaogaoEntity> ew = new EntityWrapper<ZhongqibaogaoEntity>();
ew.allEq(MPUtil.allEQMapPre( zhongqibaogao, "zhongqibaogao"));
return R.ok().put("data", zhongqibaogaoService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ZhongqibaogaoEntity zhongqibaogao){
EntityWrapper< ZhongqibaogaoEntity> ew = new EntityWrapper< ZhongqibaogaoEntity>();
ew.allEq(MPUtil.allEQMapPre( zhongqibaogao, "zhongqibaogao"));
ZhongqibaogaoView zhongqibaogaoView = zhongqibaogaoService.selectView(ew);
return R.ok("查询中期报告成功").put("data", zhongqibaogaoView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
ZhongqibaogaoEntity zhongqibaogao = zhongqibaogaoService.selectById(id);
return R.ok().put("data", zhongqibaogao);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") String id){
ZhongqibaogaoEntity zhongqibaogao = zhongqibaogaoService.selectById(id);
return R.ok().put("data", zhongqibaogao);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ZhongqibaogaoEntity zhongqibaogao, HttpServletRequest request){
zhongqibaogao.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zhongqibaogao);
zhongqibaogaoService.insert(zhongqibaogao);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ZhongqibaogaoEntity zhongqibaogao, HttpServletRequest request){
zhongqibaogao.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zhongqibaogao);
zhongqibaogaoService.insert(zhongqibaogao);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody ZhongqibaogaoEntity zhongqibaogao, HttpServletRequest request){
//ValidatorUtils.validateEntity(zhongqibaogao);
zhongqibaogaoService.updateById(zhongqibaogao);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
zhongqibaogaoService.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 && !map.get("remindstart").toString().equals("")) {
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 && !map.get("remindend").toString().equals("")) {
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<ZhongqibaogaoEntity> wrapper = new EntityWrapper<ZhongqibaogaoEntity>();
if(map.get("remindstart")!=null && !map.get("remindstart").toString().equals("")) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null && !map.get("remindend").toString().equals("")) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
wrapper.eq("xueshengxuehao", (String)request.getSession().getAttribute("username"));
}
if(tableName.equals("jiaoshi")) {
wrapper.eq("jiaoshigonghao", (String)request.getSession().getAttribute("username"));
}
int count = zhongqibaogaoService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
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.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.ZaixianxuantiEntity;
import com.entity.view.ZaixianxuantiView;
import com.service.ZaixianxuantiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 在线选题
* 后端接口
* @author
* @email
* @date 2020-11-02 10:24:01
*/
@RestController
@RequestMapping("/zaixianxuanti")
public class ZaixianxuantiController {
@Autowired
private ZaixianxuantiService zaixianxuantiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ZaixianxuantiEntity zaixianxuanti, HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("jiaoshi")) {
zaixianxuanti.setJiaoshigonghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<ZaixianxuantiEntity> ew = new EntityWrapper<ZaixianxuantiEntity>();
PageUtils page = zaixianxuantiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zaixianxuanti), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ZaixianxuantiEntity zaixianxuanti, HttpServletRequest request){
EntityWrapper<ZaixianxuantiEntity> ew = new EntityWrapper<ZaixianxuantiEntity>();
PageUtils page = zaixianxuantiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zaixianxuanti), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ZaixianxuantiEntity zaixianxuanti){
EntityWrapper<ZaixianxuantiEntity> ew = new EntityWrapper<ZaixianxuantiEntity>();
ew.allEq(MPUtil.allEQMapPre( zaixianxuanti, "zaixianxuanti"));
return R.ok().put("data", zaixianxuantiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ZaixianxuantiEntity zaixianxuanti){
EntityWrapper< ZaixianxuantiEntity> ew = new EntityWrapper< ZaixianxuantiEntity>();
ew.allEq(MPUtil.allEQMapPre( zaixianxuanti, "zaixianxuanti"));
ZaixianxuantiView zaixianxuantiView = zaixianxuantiService.selectView(ew);
return R.ok("查询在线选题成功").put("data", zaixianxuantiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
ZaixianxuantiEntity zaixianxuanti = zaixianxuantiService.selectById(id);
return R.ok().put("data", zaixianxuanti);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") String id){
ZaixianxuantiEntity zaixianxuanti = zaixianxuantiService.selectById(id);
return R.ok().put("data", zaixianxuanti);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ZaixianxuantiEntity zaixianxuanti, HttpServletRequest request){
zaixianxuanti.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zaixianxuanti);
zaixianxuantiService.insert(zaixianxuanti);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ZaixianxuantiEntity zaixianxuanti, HttpServletRequest request){
zaixianxuanti.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zaixianxuanti);
zaixianxuantiService.insert(zaixianxuanti);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody ZaixianxuantiEntity zaixianxuanti, HttpServletRequest request){
//ValidatorUtils.validateEntity(zaixianxuanti);
zaixianxuantiService.updateById(zaixianxuanti);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
zaixianxuantiService.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 && !map.get("remindstart").toString().equals("")) {
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 && !map.get("remindend").toString().equals("")) {
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<ZaixianxuantiEntity> wrapper = new EntityWrapper<ZaixianxuantiEntity>();
if(map.get("remindstart")!=null && !map.get("remindstart").toString().equals("")) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null && !map.get("remindend").toString().equals("")) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("jiaoshi")) {
wrapper.eq("jiaoshigonghao", (String)request.getSession().getAttribute("username"));
}
int count = zaixianxuantiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
5. Display of related works
Practical projects based on Java development, Python development, PHP development, C# development and other related language development
Front-end practical projects developed based on Nodejs, Vue and other front-end technologies
Related works based on WeChat applet and Android APP application development
Development and application of embedded IoT based on 51 single-chip microcomputer
AI intelligent application based on various algorithms
Various data management and recommendation systems based on big data