springboot035学科竞赛管理设计与开发

博主介绍:专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

springboot035学科竞赛管理录像(含源码文档)

4.2系统结构设计

系统架构的整体设计是一个将一个庞大的任务细分为多个小的任务的过程,这些小的任务分段完成后,组合在一起形成一个完整的任务。本学科竞赛管理系统的设计与实现主要包括学生功能模块和管理员功能模块两大部分,系统结构设计如图4-2所示。

图4-2系统结构图

4.3 系统顺序图

(1)登陆顺序图

用户在登录时,首先进入系统登录窗口,用户需要输入用户名和密码,点击登录按钮进行登录操作,系统会以用户名和密码为参数在数据库中进行登录信息的验证,验证成功则登录成功,进入用户主界面。登录模块顺序图如图4-3所示。

图4-3 登录顺序图

(2)注册顺序图

未有账号的用户可进入注册界面进行注册操作,在注册界面输入注册信息,点击提交按钮,系统首先判断用户名是否存在,存在则提示重新输入,不存在则验证注册信息是否正确,正确则在数据库中添加注册数据,提示注册成功。用户注册模块顺序图如图4-4所示。

图4-4 注册顺序图

(3)修改密码顺序图

用户登录后可进入修改密码界面进行修改密码操作,在修改密码时,需要输入原始密码和新密码,系统会在数据库中进行原密码的验证,原密码正确则在数据库中添加修改数据,修改成功。修改密码顺序图如图4-5所示。

图4-5 修改密码顺序图

4.4数据库设计

4.4.1 数据库实体(E-R图)

E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。

实体联系模型反映出来的是现实世界中实体的相互间关联的关系,是用来在数据库设计过程中表示数据库系统结构的方法。它的思想是使用现有的数据模型来表现出目前项目实体间所具有的现实关联。E-R图是可以表示实体间相互关联的意义,直观反映出实体间的关联。

在为实体设计属性与关联的时候便可以确定实体间主外键的关联关系,实体所具有的延伸性。在E-R图中这些都能直观的显示出来。像这样将数据分类成组后,就会产生了与相关的分组所不同的信心,这样更加的易于用户进行观察和实际分析。本学科竞赛管理系统的设计与实现的E-R图如下所示:

4.4.2 数据库表设计

本学科竞赛管理系统的设计与实现采用了MYSQL数据库管理系统,各个表的设计结果如下:

表4-1  jiangxiangtongji奖项统计信息表

字段名

数据类型

是否允许空

字段含义

id

bigint(20)

NOT NULL

编号

addtime

timestamp

NULL

创建时间

yuanxiaomingcheng`

varchar(200)

NULL

院校名称

leixing

varchar(200)

NULL

类型

shuxue

int(11)

NULL

数学

wuli

int(11)

NULL

物理

huaxue

int(11)

NULL

化学

shengwu

int(11)

NULL

生物

xinxixue

int(11)

NULL

信息学

zongshu

int(11)

NULL

总数

表4-2  saixiangbaoming赛项报名信息表

字段名

数据类型

是否允许空

字段含义

id

bigint(20)

NOT NULL

编号

addtime

timestamp

NULL

创建时间

`saixiangmingcheng

varchar(200)

NULL

赛项名称

`leixing

varchar(200)

NULL

类型

jibie

varchar(200)

NULL

级别

`baomingfeiyong

int(11)

NULL

报名费用

baomingriqi

date

NULL

报名日期

shenbaocailiao

longtext

NULL

申报材料

xuehao

varchar(200)

NULL

学号

xingming

varchar(200)

NULL

姓名

sfsh

varchar(200)

NULL

是否审核

shhf

longtext

NULL

审核回复

ispay

varchar(200)

NULL

是否支付

表4-3  users管理员信息表

字段名

数据类型

是否允许空

字段含义

id

bigint(20)

NOT NULL

编号

username

varchar(100)

NULL

用户名

password

varchar(100)

NULL

密码

role

varchar(100)

NULL

角色

addtime

timestamp

NULL

添加时间

表4-4  saixiangxinxi赛项信息表

字段名

数据类型

是否允许空

字段含义

id

bigint(20)

NOT NULL

编号

addtime

timestamp

NULL

创建时间

`saixiangmingcheng

varchar(200)

NULL

赛项名称

`leixing

varchar(200)

NULL

类型

`bisaididian

varchar(200)

NULL

比赛地点

saixiangneiron

longtext

NULL

赛项内容

jibie`

varchar(200)

NULL

级别

canjiarenshu

int(11)

NULL

参加人数

baomingfeiyong

int(11)

NULL

报名费用

xiangqing

longtext

NULL

详情

jiezhiriqi

date

NULL

截至日期

tupian

varchar(200)

NULL

图片

表4-5   xuesheng学生信息表

字段名

数据类型

是否允许空

字段含义

id

bigint(20)

NOT NULL

编号

addtime

timestamp

NULL

创建时间

xuehao

varchar(200)

NULL

学号

mima

varchar(200)

NULL

密码

xingming

varchar(200)

NULL

姓名

xingbie

varchar(200)

NULL

性别

shouji

varchar(200)

NULL

手机

youxiang

varchar(200)

NULL

邮箱

shenfenzheng

varchar(200)

NULL

身份证

tupian`

varchar(200)

NULL

图片

5 系统的实现

5.1学生功能模块的实现

学生进入本系统可查看系统信息,系统主界面展示如图5-1所示。

图5-1系统主界面图

5.1.1 学生注册界面

没有账号的学生用户可进行注册操作,学生注册界面展示如图5-2所示。

图5-2 学生注册界面图

5.1.2 学生登录界面

学生在登录时需输入正确的登录用户名和密码,系统会以登录用户名、密码为参数进行登录信息的验证,信息正确则登录成功,反之登录失败,学生登录界面展示如图5-2所示。

图5-3   学生登录界面图

5.1.3 赛项详情界面

学生可选择赛项查看详情信息,登录后可进行报名操作,赛项详情界面展示如图5-4所示,报名界面展示如图5-5所示。

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.SaixiangbaomingEntity;
import com.entity.view.SaixiangbaomingView;

import com.service.SaixiangbaomingService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 赛项报名
 * 后端接口
 * @author 
 * @email 
 * @date 2021-03-26 17:35:20
 */
@RestController
@RequestMapping("/saixiangbaoming")
public class SaixiangbaomingController {
    @Autowired
    private SaixiangbaomingService saixiangbaomingService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,SaixiangbaomingEntity saixiangbaoming,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("xuesheng")) {
			saixiangbaoming.setXuehao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<SaixiangbaomingEntity> ew = new EntityWrapper<SaixiangbaomingEntity>();
		PageUtils page = saixiangbaomingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, saixiangbaoming), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,SaixiangbaomingEntity saixiangbaoming, HttpServletRequest request){
        EntityWrapper<SaixiangbaomingEntity> ew = new EntityWrapper<SaixiangbaomingEntity>();
		PageUtils page = saixiangbaomingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, saixiangbaoming), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(SaixiangbaomingEntity saixiangbaoming){
        EntityWrapper< SaixiangbaomingEntity> ew = new EntityWrapper< SaixiangbaomingEntity>();
 		ew.allEq(MPUtil.allEQMapPre( saixiangbaoming, "saixiangbaoming")); 
		SaixiangbaomingView saixiangbaomingView =  saixiangbaomingService.selectView(ew);
		return R.ok("查询赛项报名成功").put("data", saixiangbaomingView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        SaixiangbaomingEntity saixiangbaoming = saixiangbaomingService.selectById(id);
        return R.ok().put("data", saixiangbaoming);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        SaixiangbaomingEntity saixiangbaoming = saixiangbaomingService.selectById(id);
        return R.ok().put("data", saixiangbaoming);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody SaixiangbaomingEntity saixiangbaoming, HttpServletRequest request){
    	saixiangbaoming.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(saixiangbaoming);
        saixiangbaomingService.insert(saixiangbaoming);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody SaixiangbaomingEntity saixiangbaoming, HttpServletRequest request){
    	saixiangbaoming.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(saixiangbaoming);
        saixiangbaomingService.insert(saixiangbaoming);
        return R.ok();
    }

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

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

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("xuesheng")) {
			wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
		}

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


}

5.1.4 个人中心界面

学生可对个人信息进行修改,个人中心界面展示如图5-6所示。

图5-6  个人中心界面图

5.2管理员功能模块的实现

5.2.1 管理员登录界面

管理员要想进入后台进行管理操作,必须登录系统后台,管理员登录界面展示如图5-7所示。

图5-7 管理员登录界面图

5.2.2 学生管理界面

管理在学生管理界面可查看所有学生信息,并可对其进行修改和删除操作,同时也可添加学生信息,学生管理界面展示如图5-8所示。

图5-8 学生管理界面图


大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翰文编程

你的鼓励 是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值