【源码论文】基于SSM的大学生创新创业项目管理系统JAVA.VUE

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA实战项目持续更新中~

🔎上百套小程序实战项目持续更新中~

🔎上百套Python实战项目持续更新中
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,帮你完成文档

⚠️文末联系方式获取完整资料⚠️

 第四章 系统设计

4.1系统的框架设计

该体系结构将以MVC模型作为体系结构,其体系结构上将其划分为三个层次:表示级、服务级、数据库级。采用MVC模型的思路,实现了各个业务的分离,实现了多个功能的高内聚和低耦合。在代码编写中,对通用代码、相同逻辑代码进行精化和包装,以提升代码使用效率,并使代码逻辑更为清楚。

1.表示层:系统浏览器是展示层面的主体,使用者可以透过系统浏览进入该系统。利用Java技术在前端系统中的应用,通过Ajax技术来与后台的业务服务进行交互,以满足系统的局部动态改变。

2.逻辑层:当系统使用者在进入该体系之后,能够在该层呼叫该业务的业务函数界面。

3.数据库:该系统使用MySQL实现对数据的持久性管理,为了实现数据的标准化、简化和快速的存储,将会引进MybatisORM持久性架构。

4.2系统功能模块设计

大学生创新创业项目管理系统在设计与实施时,采取了模块性的设计理念,把相似的系统的功能整合到一个模组中,以增强内部的功能,减少各组件之间的联系,从而达到减少相互影响的目的。

主要功能是:首页,个人中心,学生管理,教师管理,专家管理,项目分类管理,项目登记管理,项目申报管理,提交专家审核管理,专家审核管理等功能。系统总体功能结构图如图4-1所示。

图4-1 系统总体功能结构图

4.3 数据库设计

4.3.1数据库概念设计

概念模型用于独立于指定的数据库管理系统对信息世界进行建模。方便将现实世界中的实际事物抽象出来,形成适合数据库管理系统的数据库模型。人们倾向于将现实世界抽象为信息世界,再将信息世界抽象为机器世界。也就是说,首先将现实世界中的目标抽象为一个独立于专用计算机软件和专用数据库管理系统的信息结构,而是一个数据模型,然后将实体模型在电子计算机上转化为一个适用于数据库管理系统的数据库系统。事实上,数据模型是介于现实世界和机器世界之间的一个层次。信息世界的基本要素包含实体和关联。

(1)实体(entity)

实体(entity) 客观存在并可相互区别的事物称为实体。实体可以是实际的人、事或物,还可以是抽象化的概念或联络。主要的实体属性图如下图所示:

项目登记实体属性如图4-2所示。

图4-2项目登记实体属性图

教师实体属性如图4-3所示。

图4-3教师实体属性图

项目申报实体属性如图4-4所示。

图4-4项目申报实体属性图

专家审核实体属性如图4-5所示。

图4-5专家审核实体属性图

专家实体属性如图4-6所示。

图4-6专家实体属性图

4.3.2 数据库表设计

在本系统中,采用的是目前比较主流的MySQL数据库,并且设计了几个数据表如下所示:

表4-1:项目登记

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xiangmubianhao

varchar

200

项目编号

xiangmumingcheng

varchar

200

项目名称

xiangmufenlei

varchar

200

项目分类

xiangmutupian

longtext

4294967295

项目图片

xiangmuneirong

longtext

4294967295

项目内容

xiangmuxiangqing

longtext

4294967295

项目详情

dengjishijian

date

登记时间

xueshengzhanghao

varchar

200

学生账号

xueshengxingming

varchar

200

学生姓名

banji

varchar

200

班级

zhuanye

varchar

200

专业

表4-2:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-3:token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表4-4:提交专家审核

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xiangmubianhao

varchar

200

项目编号

xiangmumingcheng

varchar

200

项目名称

xiangmufenlei

varchar

200

项目分类

xiangmuneirong

longtext

4294967295

项目内容

xiangmuxiangqing

longtext

4294967295

项目详情

tijiaoshijian

date

提交时间

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

xueshengzhanghao

varchar

200

学生账号

xueshengxingming

varchar

200

学生姓名

banji

varchar

200

班级

zhuanye

varchar

200

专业

zhuanjiazhanghao

varchar

200

专家账号

zhuanjiaxingming

varchar

200

专家姓名

表4-5:教师

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

mima

varchar

200

密码

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

renkebanji

varchar

200

任课班级

dianhuahaoma

varchar

200

电话号码

表4-6:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-7:专家审核

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xiangmubianhao

varchar

200

项目编号

xiangmumingcheng

varchar

200

项目名称

xiangmufenlei

varchar

200

项目分类

xiangmuneirong

longtext

4294967295

项目内容

xiangmuxiangqing

longtext

4294967295

项目详情

zhuanjiashenhe

varchar

200

专家审核

shenheshijian

date

审核时间

zhuanjiazhanghao

varchar

200

专家账号

zhuanjiaxingming

varchar

200

专家姓名

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

xueshengzhanghao

varchar

200

学生账号

xueshengxingming

varchar

200

学生姓名

banji

varchar

200

班级

zhuanye

varchar

200

专业

表4-8:专家

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhuanjiazhanghao

varchar

200

专家账号

zhuanjiaxingming

varchar

200

专家姓名

mima

varchar

200

密码

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

nianling

int

年龄

dianhuahaoma

varchar

200

电话号码

表4-9:学生

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xueshengzhanghao

varchar

200

学生账号

xueshengxingming

varchar

200

学生姓名

mima

varchar

200

密码

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

nianling

int

年龄

dianhuahaoma

varchar

200

电话号码

banji

varchar

200

班级

zhuanye

varchar

200

专业

表4-10:项目申报

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xiangmubianhao

varchar

200

项目编号

xiangmumingcheng

varchar

200

项目名称

xiangmufenlei

varchar

200

项目分类

shenbaozhuangtai

varchar

200

申报状态

xiangmuneirong

longtext

4294967295

项目内容

xiangmuxiangqing

longtext

4294967295

项目详情

shenbaoshijian

date

申报时间

xueshengzhanghao

varchar

200

学生账号

xueshengxingming

varchar

200

学生姓名

banji

varchar

200

班级

zhuanye

varchar

200

专业

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-11:项目分类

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xiangmufenlei

varchar

200

项目分类

第五章 系统实现

5.1管理员功能模块实现

管理员进入主页面,主要功能包括对首页,个人中心,学生管理,教师管理,专家管理,项目分类管理,项目登记管理,项目申报管理,提交专家审核管理,专家审核管理等进行操作。管理员主页面如图5-1所示:

图5-1 管理员主界面

管理员点击学生管理。进入学生页面输入学生账号和学生姓名进行查询,新增或删除学生信息,并进行查看详情,修改或删除操作。如图5-2所示:

图5-2学生管理界面

管理员点击教师管理。进教师页面输入教师工号和我教师姓名可以查询,新增或删除教师详细信息,并进行详情,修改或删除操作。如图5-3所示:

图5-3教师管理界面

管理员点击专家管理。进入专家页面输入专家账号和专家姓名可以新增,删除和查询专家详细信息,并进行详情,修改和删除操作。如图5-4所示:

图5-4专家管理界面

管理员点击项目分类管理。进入项目分类页面输入项目分类进行查询,新增或删除项目分类详细信息,并进行详情,修改或删除操作。如图5-5所示:

图5-5项目分类管理界面

管理员点击项目登记管理。进入项目登记页面输入项目名称进行查询或删除项目登记详细信息,并进行详情,修改或删除操作。如图5-6所示:

图5-6项目登记管理界面

管理员点击项目申报管理。进入项目申报页面输入项目名称,选择申报状态和选择是否通过进行查询或删除项目申报详细信息,并进行详情,修改或删除操作。如图5-7所示:

图5-7项目申报管理界面

管理员点击提交专家申报管理。进入提交专家申报页面输入项目名称可以查询或删除提交专家申报详细信息,并进行详情,修改或删除操作。如图5-8所示:

图5-8提交专家申报管理界面

代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

🔎千套JAVA实战项目持续更新中~

🔎上百套小程序实战项目持续更新中~

🔎上百套Python实战项目持续更新中

👇下方有我的微信名片👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值