• 【Java毕设项目】基于SpringBoot+Vue科研管理系统的设计与实现


    博主主页:一季春秋
    博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
    主要内容:毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题库、技术咨询。

    🍅文末获取联系🍅

    精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

    SpringBoot+Vue项目持续更新中

    http://t.csdn.cn/1mgm8

    目录

    一、项目介绍 

    二、项目主要技术 

    三、系统的设计

    四、系统的实现

    4.1 系统前台功能实现

    4.2 管理员功能实现

    4.3 科研队伍功能实现

    4.4 用户功能实现

    五、实现代码


    一、项目介绍 

    系统阐述的是使用科研管理系统,对于Java、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计,描述,实现和分析与测试方面来表明开发的过程。开发中使用了springboot框架和MySql数据库技术搭建系统的整体架构。利用这些技术结合实际需求开发了具有个人中心、用户管理、科研队伍管理、队伍信息管理、加入队伍管理、队伍申请管理、科研成果管理、项目成果申报管理、公告信息管理、资源文件管理、信息交流、系统管理等功能的系统,最后对系统进行相应的测试,测试系统有无存在问题以及测试用户权限来优化系统,最后系统达到预期目标。

    二、项目主要技术 

    1. 开发语言:Java
    2. 使用框架:spring boot
    3. 前端技术:JavaScript、Vue 、css3
    4. 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
    5. 数据库:MySQL 5.7/8.0
    6. 数据库管理工具:phpstudy/Navicat
    7. JDK版本:jdk1.8
    8. Maven: apache-maven 3.8.1-bin

    三、系统的设计

    科研管理系统分三大部分,即管理员管理、科研队伍管理和用户管理。系统按照用户的实际需求开发而来,贴近生活。从管理员出拿到分配好的账号密码可以进入系统,使用相关的系统应用。管理员总体负责整体系统的运行维护,统筹协调。

    系统整体模块设计:系统分为管理员、科研队伍和用户三大用户角色,系统管理员有最大的权限,整体功能展示如图所示。

    四、系统的实现

    4.1 系统前台功能实现

    打开系统的网址后,首先看到的就是首页界面。在这里能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图所示: 

    系统注册:在系统注册页面的输入栏中输入用户注册信息进行注册操作,系统注册页面如图所示: 

    队伍信息:在队伍信息页面的输入栏中输入队伍名称和组长姓名进行查询,可以查看到队伍详细信息,并根据需要进行加入申请、评论或收藏操作;队伍信息页面如图所示: 

    队伍详细信息

    科研成果:在科研成果页面的输入栏中输入成果名称、选择队伍名称和成果类型进行查询,可以查看到科研成果详细信息,并根据需要进行评论或收藏操作;科研成果页面如图所示: 

    资源文件:在资源文件页面的输入栏中输入资源名称、资源类型和发布人进行查询,可以查看到资源文件详细信息,并根据需要进行评论或收藏操作;资源文件页面如图所示: 

    个人中心:在个人中心页面输入个人信息可以进行更新操作,并根据需要对我的发布和我的收藏进行详细操作;如图所示: 

    4.2 管理员功能实现

    后台登录,在登录页面选择角色,正确输入用户名和密码后,点击登录进入操作系统进行操作;如图所示。 

    管理员进入主页面,主要功能包括对个人中心、用户管理、科研队伍管理、队伍信息管理、加入队伍管理、队伍申请管理、科研成果管理、项目成果申报管理、公告信息管理、资源文件管理、信息交流、系统管理等进行操作。管理员主页面如图所示: 

    管理员点击用户管理。在用户页面输入账号、姓名和选择性别进行查询、新增、用户人数和删除用户列表,并根据需要对用户详情信息进行详情、修改或删除操作;如图所示: 

    管理员点击科研队伍管理。在科研队伍页面输入队伍账号进行查询、队长人数、新增或删除科研队伍列表,并根据需要对科研队伍详情信息进行详情、修改或删除操作;如图所示: 

    管理员点击科研成果管理。在科研成果页面输入成果名称、选择队伍名称和成果类型进行查询、导出、成果类型或删除科研成果列表,并根据需要对科研成果详情信息进行详情、查看评论或删除操作;如图所示: 

    管理员点击资源文件管理。在资源文件页面输入资源名称、资源类型和发布人进行查询、导出或删除资源文件列表,并根据需要对资源文件详情信息进行详情、修改、查看评论或删除操作;如图所示: 

    4.3 科研队伍功能实现

    科研队伍进入主页面,主要功能包括对个人中心、队伍信息管理、加入队伍管理、科研成果管理、项目成果申报管理、公告信息管理、资源文件管理等进行操作。科研队伍主页面如图所示: 

    科研队伍点击队伍信息管理。在队伍信息页面输入队伍名称和组长姓名进行查询、新增或删除队伍信息列表,并根据需要对队伍详情信息进行详情、修改或删除操作;如图所示: 

    科研队伍点击科研成果管理。在科研成果页面输入成果名称、选择队伍名称和成果类型进行查询、导出、新增或删除科研成果列表,并根据需要对科研成果详情信息进行详情、修改、查看评论或删除操作;如图所示: 

    4.4 用户功能实现

    用户进入主页面,主要功能包括对个人中心、加入队伍管理、队伍申请管理等进行操作。用户主页面如图所示: 

    用户点击队伍申请管理。在队伍申请页面输入标题、账号、姓名和选择是否通过进行查询、新增或删除队伍申请列表,并根据需要对队伍申请详情信息进行详情、修改或删除操作;如图所示: 

    五、实现代码

    队伍信息

    1. /**
    2. * 队伍信息
    3. * 后端接口
    4. * @author
    5. * @email
    6. * @date 2023-04-25 10:50:40
    7. */
    8. @RestController
    9. @RequestMapping("/duiwuxinxi")
    10. public class DuiwuxinxiController {
    11. @Autowired
    12. private DuiwuxinxiService duiwuxinxiService;
    13. @Autowired
    14. private StoreupService storeupService;
    15. /**
    16. * 后端列表
    17. */
    18. @RequestMapping("/page")
    19. public R page(@RequestParam Map params,DuiwuxinxiEntity duiwuxinxi,
    20. HttpServletRequest request){
    21. String tableName = request.getSession().getAttribute("tableName").toString();
    22. if(tableName.equals("keyanduiwu")) {
    23. duiwuxinxi.setDuiwuzhanghao((String)request.getSession().getAttribute("username"));
    24. }
    25. EntityWrapper ew = new EntityWrapper();
    26. PageUtils page = duiwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, duiwuxinxi), params), params));
    27. return R.ok().put("data", page);
    28. }
    29. /**
    30. * 前端列表
    31. */
    32. @IgnoreAuth
    33. @RequestMapping("/list")
    34. public R list(@RequestParam Map params,DuiwuxinxiEntity duiwuxinxi,
    35. HttpServletRequest request){
    36. EntityWrapper ew = new EntityWrapper();
    37. PageUtils page = duiwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, duiwuxinxi), params), params));
    38. return R.ok().put("data", page);
    39. }
    40. /**
    41. * 列表
    42. */
    43. @RequestMapping("/lists")
    44. public R list( DuiwuxinxiEntity duiwuxinxi){
    45. EntityWrapper ew = new EntityWrapper();
    46. ew.allEq(MPUtil.allEQMapPre( duiwuxinxi, "duiwuxinxi"));
    47. return R.ok().put("data", duiwuxinxiService.selectListView(ew));
    48. }
    49. /**
    50. * 查询
    51. */
    52. @RequestMapping("/query")
    53. public R query(DuiwuxinxiEntity duiwuxinxi){
    54. EntityWrapper< DuiwuxinxiEntity> ew = new EntityWrapper< DuiwuxinxiEntity>();
    55. ew.allEq(MPUtil.allEQMapPre( duiwuxinxi, "duiwuxinxi"));
    56. DuiwuxinxiView duiwuxinxiView = duiwuxinxiService.selectView(ew);
    57. return R.ok("查询队伍信息成功").put("data", duiwuxinxiView);
    58. }
    59. /**
    60. * 后端详情
    61. */
    62. @RequestMapping("/info/{id}")
    63. public R info(@PathVariable("id") Long id){
    64. DuiwuxinxiEntity duiwuxinxi = duiwuxinxiService.selectById(id);
    65. duiwuxinxi.setClicknum(duiwuxinxi.getClicknum()+1);
    66. duiwuxinxi.setClicktime(new Date());
    67. duiwuxinxiService.updateById(duiwuxinxi);
    68. return R.ok().put("data", duiwuxinxi);
    69. }
    70. /**
    71. * 前端详情
    72. */
    73. @IgnoreAuth
    74. @RequestMapping("/detail/{id}")
    75. public R detail(@PathVariable("id") Long id){
    76. DuiwuxinxiEntity duiwuxinxi = duiwuxinxiService.selectById(id);
    77. duiwuxinxi.setClicknum(duiwuxinxi.getClicknum()+1);
    78. duiwuxinxi.setClicktime(new Date());
    79. duiwuxinxiService.updateById(duiwuxinxi);
    80. return R.ok().put("data", duiwuxinxi);
    81. }
    82. /**
    83. * 后端保存
    84. */
    85. @RequestMapping("/save")
    86. public R save(@RequestBody DuiwuxinxiEntity duiwuxinxi, HttpServletRequest request){
    87. duiwuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    88. //ValidatorUtils.validateEntity(duiwuxinxi);
    89. duiwuxinxiService.insert(duiwuxinxi);
    90. return R.ok();
    91. }
    92. /**
    93. * 前端保存
    94. */
    95. @RequestMapping("/add")
    96. public R add(@RequestBody DuiwuxinxiEntity duiwuxinxi, HttpServletRequest request){
    97. duiwuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    98. //ValidatorUtils.validateEntity(duiwuxinxi);
    99. duiwuxinxiService.insert(duiwuxinxi);
    100. return R.ok();
    101. }
    102. /**
    103. * 修改
    104. */
    105. @RequestMapping("/update")
    106. @Transactional
    107. public R update(@RequestBody DuiwuxinxiEntity duiwuxinxi, HttpServletRequest request){
    108. //ValidatorUtils.validateEntity(duiwuxinxi);
    109. duiwuxinxiService.updateById(duiwuxinxi);//全部更新
    110. return R.ok();
    111. }
    112. /**
    113. * 删除
    114. */
    115. @RequestMapping("/delete")
    116. public R delete(@RequestBody Long[] ids){
    117. duiwuxinxiService.deleteBatchIds(Arrays.asList(ids));
    118. return R.ok();
    119. }
    120. /**
    121. * 前端智能排序
    122. */
    123. @IgnoreAuth
    124. @RequestMapping("/autoSort")
    125. public R autoSort(@RequestParam Map params,DuiwuxinxiEntity duiwuxinxi, HttpServletRequest request,String pre){
    126. EntityWrapper ew = new EntityWrapper();
    127. Map newMap = new HashMap();
    128. Map param = new HashMap();
    129. Iterator> it = param.entrySet().iterator();
    130. while (it.hasNext()) {
    131. Map.Entry entry = it.next();
    132. String key = entry.getKey();
    133. String newKey = entry.getKey();
    134. if (pre.endsWith(".")) {
    135. newMap.put(pre + newKey, entry.getValue());
    136. } else if (StringUtils.isEmpty(pre)) {
    137. newMap.put(newKey, entry.getValue());
    138. } else {
    139. newMap.put(pre + "." + newKey, entry.getValue());
    140. }
    141. }
    142. params.put("sort", "clicknum");
    143. params.put("order", "desc");
    144. PageUtils page = duiwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, duiwuxinxi), params), params));
    145. return R.ok().put("data", page);
    146. }
    147. }
  • 相关阅读:
    【Bug】8086汇编学习
    基于参与意愿的物流联盟资源优化配置模型
    alpha融合详解(alpha compositing)
    这个时钟屏保太有酷了 电脑屏保时钟软件推荐
    前端学习笔记一.Flex布局与VUE2中vuex的使用
    DRM全解析 —— ADD_FB2(5)
    Python中的单元测试框架:使用unittest进行有效测试
    ssm课堂考勤管理毕业设计-附源码191617
    56、MQ(异步通讯的的缺点/优点)
    【JavaWeb】手写一个Servlet+JSP+JavaBean分页
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/133148233