基于Java+Spring+vue+nodo.js实现大学生科技创新创业项目管理系统

1,728 阅读8分钟

​ 一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情

前言介绍:

          随着社会的不断快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对大学生创新创业项目管理方面的要求也在不断的提高、需要大学生创新创业项目管理的人数更是不断增加,使得大学生创新创业项目管理的开发成为必需而且紧迫的事情。大学生创新创业项目管理主要是借助计算机,通过对大学生创新创业项目管理所需的信息管理,增加用户选择,同时也方便对广大用户信息的及时查询、修改以及对用户信息的及时了解。大学生创新创业项目管理对一些用户带来了更多的便利, 该系统通过和Mysql数据库管理系统软件协作来满足用户的需求保存数据等。

系统设计:

开发工具:idea/eclipse、navicat for mysql

开发语言:java、jdk1.8、mysql5

硬件环境:Win10系统、Google等。

主要技术:springmvc、mybatis、vue 、java等

主要功能设计:首页、个人中心、学生管理、指导老师管理、评审专家管理、项目任务书管理、中期检查报告管理、项目申请书管理、结项报告管理、项目进展日志管理、项目立项申请管理、项目评价管理

​​

功能截图:

用户登录注册: 管理员通过输入用户名、密码、选择角色等信息,然后点击登录就能登录到系统

管理员登录进入系统之后,就可以对所有的信息进行查看,可以查看到首页、个人中心、学生管理、指导老师管理、评审专家管理、项目任务书管理、中期检查报告管理、项目申请书管理、结项报告管理、项目进展日志管理、项目立项申请管理、项目评价管理等,并且还可以对其进行相应的操作管理

学生信息管理: 在学生管理页面中可以对索引、姓名、学号、性别、手机、邮箱、联系地址、身份证、照片等信息进行详情,修改或删除等操作

指导老师管理: 指导老师管理,在指导老师管理页面中可以对索引、工号、指导老师姓名、性别、手机、邮箱、身份证、图片等信息进行详情,修改或删除等操作

评审专家管理: 在评审专家管理页面中可以对索引、账号、姓名、性别、身份证、手机、邮箱、照片等信息进行详情,修改或删除等操作

项目任务书管理: 在项目申请书管理页面中可以对索引、项目名称、学号、姓名、手机、邮箱、指导老师姓名、工号、文件、联系地址、申请时间、审核回复、审核状态等信息进行详情,修改或删除等操作

中期检查报告管理: 在中期检查报告管理页面中可以对索引、项目名称、项目类别、学号、文件、编号、项目负责人、指导老师姓名、工号、提交时间、审核回复、审核状态等信息进行详情,修改或删除等操作

项目申请书管理: 在项目进展日志管理页面中可以对索引、项目名称、文件、指导老师姓名、工号、学号、姓名、提交时间等信息进行详情,修改或删除等操作

结项报告管理: 在结项报告管理页面中可以对索引、项目名称、项目类型、学号、文件、编号、项目负责人、指导老师姓名、工号、提交时间、审核回复、审核状态等信息进行详情,修改或删除等操作

项目进展日志管理: 在项目进展日志管理页面中可以对索引、项目名称、文件、指导老师姓名、工号、学号、姓名、提交时间等信息进行详情,修改或删除等操作

项目评价管理: 在项目进展日志管理页面中可以对索引、项目名称、文件、指导老师姓名、工号、学号、姓名、提交时间等信息进行详情,修改或删除等操作

数据设计:

项目申请书管理实体属性图,如图所示:

 结项报告管理实体属性图如图所示:

部分数据库表设计:

将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。

表:项目任务书

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
xiangmumingchengvarchar2200项目名称
wenjianvarchar2200文件
lixiangdengjivarchar2200立项等级
xiangmubianhaovarchar2200项目编号
xiangmufuzerenvarchar2200项目负责人
xuehaovarchar2200学号
suozaixueyuanvarchar2200所在学院
zhidaolaoshixingmingvarchar2200指导老师姓名
gonghaovarchar2200工号
kaishishijiandatetime开始时间
jieshushijiandatetime结束时间
shuominglongtext4294967295说明

表:项目评价

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
xiangmumingchengvarchar2200项目名称
xiangmuleixingvarchar2200项目类型
xiangmufuzerenvarchar2200项目负责人
xuehaovarchar2200学号
zhidaolaoshixingmingvarchar2200指导老师姓名
gonghaovarchar2200工号
pingjiavarchar2200评价
shuominglongtext4294967295说明

表:项目立项申请

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
xiangmumingchengvarchar2200项目名称
shangchuanwenjianvarchar2200上传文件
gonghaovarchar2200工号
zhidaolaoshixingmingvarchar2200指导老师姓名
xuehaovarchar2200学号
xingmingvarchar2200姓名
shenqingshijiandatetime申请时间
shuominglongtext4294967295说明
sfshvarchar2200是否审核
shhflongtext4294967295审核回复

表:项目进展日志

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
xiangmumingchengvarchar2200项目名称
wenjianvarchar2200文件
xuehaovarchar2200学号
xingmingvarchar2200姓名
zhidaolaoshixingmingvarchar2200指导老师姓名
gonghaovarchar2200工号
tijiaoshijiandatetime提交时间
shuominglongtext4294967295说明

表4-5:用户表

字段名称类型长度字段说明
idbigint主键
usernamevarchar2100用户名
passwordvarchar2100密码
rolevarchar2100角色
addtimetimestamp新增时间

表:中期检查报告

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
xiangmumingchengvarchar2200项目名称
xiangmuleibievarchar2200项目类别
wenjianvarchar2200文件
bianhaovarchar2200编号
xiangmufuzerenvarchar2200项目负责人
xuehaovarchar2200学号
zhidaolaoshixingmingvarchar2200指导老师姓名
gonghaovarchar2200工号
tijiaoshijiandatetime提交时间
shuominglongtext4294967295说明
sfshvarchar2200是否审核
shhflongtext4294967295审核回复

代码实现:


/**
 * 项目立项申请
 * 后端接口
 * @author 
 * @email 
 * @date 2022-04-10 16:31:21
 */
@RestController
@RequestMapping("/xiangmulixiangshenqing")
public class XiangmulixiangshenqingController {
    @Autowired
    private XiangmulixiangshenqingService xiangmulixiangshenqingService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,XiangmulixiangshenqingEntity xiangmulixiangshenqing, 
		HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("zhidaolaoshi")) {
			xiangmulixiangshenqing.setGonghao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("xuesheng")) {
			xiangmulixiangshenqing.setXuehao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<XiangmulixiangshenqingEntity> ew = new EntityWrapper<XiangmulixiangshenqingEntity>();
		PageUtils page = xiangmulixiangshenqingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiangmulixiangshenqing), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,XiangmulixiangshenqingEntity xiangmulixiangshenqing, HttpServletRequest request){
        EntityWrapper<XiangmulixiangshenqingEntity> ew = new EntityWrapper<XiangmulixiangshenqingEntity>();
		PageUtils page = xiangmulixiangshenqingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiangmulixiangshenqing), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(XiangmulixiangshenqingEntity xiangmulixiangshenqing){
        EntityWrapper< XiangmulixiangshenqingEntity> ew = new EntityWrapper< XiangmulixiangshenqingEntity>();
 		ew.allEq(MPUtil.allEQMapPre( xiangmulixiangshenqing, "xiangmulixiangshenqing")); 
		XiangmulixiangshenqingView xiangmulixiangshenqingView =  xiangmulixiangshenqingService.selectView(ew);
		return R.ok("查询项目立项申请成功").put("data", xiangmulixiangshenqingView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        XiangmulixiangshenqingEntity xiangmulixiangshenqing = xiangmulixiangshenqingService.selectById(id);
        return R.ok().put("data", xiangmulixiangshenqing);
    }

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



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody XiangmulixiangshenqingEntity xiangmulixiangshenqing, HttpServletRequest request){
    	xiangmulixiangshenqing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(xiangmulixiangshenqing);

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

        xiangmulixiangshenqingService.insert(xiangmulixiangshenqing);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        xiangmulixiangshenqingService.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<XiangmulixiangshenqingEntity> wrapper = new EntityWrapper<XiangmulixiangshenqingEntity>();
		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("zhidaolaoshi")) {
			wrapper.eq("gonghao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("xuesheng")) {
			wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
		}

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


}

 论文参考:

摘  要

1 系统概述

1.1 概述

1.2课题意义

1.3主要内容

2 系统开发环境

2.1 SSM框架

2.2 JAVA简介

2.3访问数据库实现方法

2.4系统对MySQL数据库的两种连接方式

2.5 MySql数据库

3 需求分析

3.1技术可行性:技术背景

3.2经济可行性

3.3操作可行性

3.4系统设计规则

3.5系统流程和逻辑

4系统概要设计

4.1 概述

4.2 系统结构

4.3. 数据库设计

4.3.1 数据库实体

4.3.2 数据库设计表

5 系统详细设计

5.1管理员功能模块

5.2学生功能模块

5.3指导老师功能模块

5.4评审专家功能模块

6 系统测试

6.1系统测试的目的

6.2系统测试方法

6.3 测试结果

结论

致 谢

参考文献

源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻主页获取联系方式👇🏻👇🏻👇🏻

打卡 文章 更新 261/  365天