博主介绍:✌公司项目主程、全网粉丝10W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌
公众号:java李杨勇 简历模板、学习资料、面试题库等都给你💪
🍅文末获取源码联系🍅
前言介绍:
随着社会的不断快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对大学生创新创业项目管理方面的要求也在不断的提高、需要大学生创新创业项目管理的人数更是不断增加,使得大学生创新创业项目管理的开发成为必需而且紧迫的事情。大学生创新创业项目管理主要是借助计算机,通过对大学生创新创业项目管理所需的信息管理,增加用户选择,同时也方便对广大用户信息的及时查询、修改以及对用户信息的及时了解。大学生创新创业项目管理对一些用户带来了更多的便利, 该系统通过和Mysql数据库管理系统软件协作来满足用户的需求保存数据等。
系统设计:
开发工具:idea/eclipse、navicat for mysql
开发语言:java、jdk1.8、mysql5
硬件环境:Win10系统、Google等。
主要技术:springmvc、mybatis、vue 、java等
主要功能设计:首页、个人中心、学生管理、指导老师管理、评审专家管理、项目任务书管理、中期检查报告管理、项目申请书管理、结项报告管理、项目进展日志管理、项目立项申请管理、项目评价管理
功能截图:
用户登录注册:管理员通过输入用户名、密码、选择角色等信息,然后点击登录就能登录到系统
管理员登录进入系统之后,就可以对所有的信息进行查看,可以查看到首页、个人中心、学生管理、指导老师管理、评审专家管理、项目任务书管理、中期检查报告管理、项目申请书管理、结项报告管理、项目进展日志管理、项目立项申请管理、项目评价管理等,并且还可以对其进行相应的操作管理
学生信息管理:在学生管理页面中可以对索引、姓名、学号、性别、手机、邮箱、联系地址、身份证、照片等信息进行详情,修改或删除等操作
指导老师管理:指导老师管理,在指导老师管理页面中可以对索引、工号、指导老师姓名、性别、手机、邮箱、身份证、图片等信息进行详情,修改或删除等操作
评审专家管理:在评审专家管理页面中可以对索引、账号、姓名、性别、身份证、手机、邮箱、照片等信息进行详情,修改或删除等操作
项目任务书管理:在项目申请书管理页面中可以对索引、项目名称、学号、姓名、手机、邮箱、指导老师姓名、工号、文件、联系地址、申请时间、审核回复、审核状态等信息进行详情,修改或删除等操作
中期检查报告管理:在中期检查报告管理页面中可以对索引、项目名称、项目类别、学号、文件、编号、项目负责人、指导老师姓名、工号、提交时间、审核回复、审核状态等信息进行详情,修改或删除等操作
项目申请书管理:在项目进展日志管理页面中可以对索引、项目名称、文件、指导老师姓名、工号、学号、姓名、提交时间等信息进行详情,修改或删除等操作
结项报告管理:在结项报告管理页面中可以对索引、项目名称、项目类型、学号、文件、编号、项目负责人、指导老师姓名、工号、提交时间、审核回复、审核状态等信息进行详情,修改或删除等操作
项目进展日志管理:在项目进展日志管理页面中可以对索引、项目名称、文件、指导老师姓名、工号、学号、姓名、提交时间等信息进行详情,修改或删除等操作
项目评价管理:在项目进展日志管理页面中可以对索引、项目名称、文件、指导老师姓名、工号、学号、姓名、提交时间等信息进行详情,修改或删除等操作
数据设计:
项目申请书管理实体属性图,如图所示:
结项报告管理实体属性图如图所示:
部分数据库表设计:
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
表:项目任务书
字段名称 |
类型 |
长度 |
字段说明 |
id |
bigint |
主键 |
|
addtime |
timestamp |
创建时间 |
|
xiangmumingcheng |
varchar2 |
200 |
项目名称 |
wenjian |
varchar2 |
200 |
文件 |
lixiangdengji |
varchar2 |
200 |
立项等级 |
xiangmubianhao |
varchar2 |
200 |
项目编号 |
xiangmufuzeren |
varchar2 |
200 |
项目负责人 |
xuehao |
varchar2 |
200 |
学号 |
suozaixueyuan |
varchar2 |
200 |
所在学院 |
zhidaolaoshixingming |
varchar2 |
200 |
指导老师姓名 |
gonghao |
varchar2 |
200 |
工号 |
kaishishijian |
datetime |
开始时间 |
|
jieshushijian |
datetime |
结束时间 |
|
shuoming |
longtext |
4294967295 |
说明 |
表:项目评价
字段名称 |
类型 |
长度 |
字段说明 |
id |
bigint |
主键 |
|
addtime |
timestamp |
创建时间 |
|
xiangmumingcheng |
varchar2 |
200 |
项目名称 |
xiangmuleixing |
varchar2 |
200 |
项目类型 |
xiangmufuzeren |
varchar2 |
200 |
项目负责人 |
xuehao |
varchar2 |
200 |
学号 |
zhidaolaoshixingming |
varchar2 |
200 |
指导老师姓名 |
gonghao |
varchar2 |
200 |
工号 |
pingjia |
varchar2 |
200 |
评价 |
shuoming |
longtext |
4294967295 |
说明 |
表:项目立项申请
字段名称 |
类型 |
长度 |
字段说明 |
id |
bigint |
主键 |
|
addtime |
timestamp |
创建时间 |
|
xiangmumingcheng |
varchar2 |
200 |
项目名称 |
shangchuanwenjian |
varchar2 |
200 |
上传文件 |
gonghao |
varchar2 |
200 |
工号 |
zhidaolaoshixingming |
varchar2 |
200 |
指导老师姓名 |
xuehao |
varchar2 |
200 |
学号 |
xingming |
varchar2 |
200 |
姓名 |
shenqingshijian |
datetime |
申请时间 |
|
shuoming |
longtext |
4294967295 |
说明 |
sfsh |
varchar2 |
200 |
是否审核 |
shhf |
longtext |
4294967295 |
审核回复 |
表:项目进展日志
字段名称 |
类型 |
长度 |
字段说明 |
id |
bigint |
主键 |
|
addtime |
timestamp |
创建时间 |
|
xiangmumingcheng |
varchar2 |
200 |
项目名称 |
wenjian |
varchar2 |
200 |
文件 |
xuehao |
varchar2 |
200 |
学号 |
xingming |
varchar2 |
200 |
姓名 |
zhidaolaoshixingming |
varchar2 |
200 |
指导老师姓名 |
gonghao |
varchar2 |
200 |
工号 |
tijiaoshijian |
datetime |
提交时间 |
|
shuoming |
longtext |
4294967295 |
说明 |
表4-5:用户表
字段名称 |
类型 |
长度 |
字段说明 |
id |
bigint |
主键 |
|
username |
varchar2 |
100 |
用户名 |
password |
varchar2 |
100 |
密码 |
role |
varchar2 |
100 |
角色 |
addtime |
timestamp |
新增时间 |
表:中期检查报告
字段名称 |
类型 |
长度 |
字段说明 |
id |
bigint |
主键 |
|
addtime |
timestamp |
创建时间 |
|
xiangmumingcheng |
varchar2 |
200 |
项目名称 |
xiangmuleibie |
varchar2 |
200 |
项目类别 |
wenjian |
varchar2 |
200 |
文件 |
bianhao |
varchar2 |
200 |
编号 |
xiangmufuzeren |
varchar2 |
200 |
项目负责人 |
xuehao |
varchar2 |
200 |
学号 |
zhidaolaoshixingming |
varchar2 |
200 |
指导老师姓名 |
gonghao |
varchar2 |
200 |
工号 |
tijiaoshijian |
datetime |
提交时间 |
|
shuoming |
longtext |
4294967295 |
说明 |
sfsh |
varchar2 |
200 |
是否审核 |
shhf |
longtext |
4294967295 |
审核回复 |
代码实现:
1 |
/** * 项目立项申请 * 后端接口 * @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 |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <mvc:default-servlet-handler/> <!-- Controller包(自动注入) --> <context:component-scan base-package="com.controller"/> <!-- FastJson注入 --> <mvc:annotation-driven> <!-- <mvc:message-converters register-defaults="true"> 避免IE执行AJAX时,返回JSON出现下载文件 FastJson <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> 这里顺序不能反,一定先写text/html,不然ie下出现下载提示 <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> <property name="features"> <array value-type="com.alibaba.fastjson.serializer.SerializerFeature"> 避免循环引用 <value>DisableCircularReferenceDetect</value> 是否输出值为null的字段 <value>WriteMapNullValue</value> 数值字段如果为null,输出为0,而非null <value>WriteNullNumberAsZero</value> 字符类型字段如果为null,输出为"",而非null <value>WriteNullStringAsEmpty</value> List字段如果为null,输出为[],而非null <value>WriteNullListAsEmpty</value> Boolean字段如果为null,输出为false,而非null <value>WriteNullBooleanAsFalse</value> </array> </property> </bean> </mvc:message-converters> --> </mvc:annotation-driven> <!-- 静态资源配置 --> <mvc:resources mapping="/resources/**" location="/resources/"/> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 拦截器配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/upload"/> <bean class="com.interceptor.AuthorizationInterceptor"/> </mvc:interceptor> </mvc:interceptors> <!-- 上传限制 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 上传文件大小限制为31M,31*1024*1024 --> <property name="maxUploadSize" value="32505856"/> </bean> </beans> |
论文参考:
源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻
打卡 文章 更新 261/ 365天
精彩专栏推荐订阅:在下方专栏👇🏻👇🏻👇🏻👇🏻