目录
- 项目介绍
- 背景
- 功能
- 技术栈
- 项目开发流程及源码
- 心得体会
- 学到了什么?
- 悟到了什么?
一、项目介绍
1.1项目背景
该项目为老师带队,应学校需求设计的的一个 基层教学组织评估
后台管理系统,
主要的功能是备案各学院的教学组织申报表,待全部功能开发完成后可投入使用
同时该项目也是 大二上学期寒假 开始着手锻炼的第一个 前后端分离
的项目
此前后端分离项目区别于早先接触的传统Web项目,通过该项目的练习,旨在学习掌握前后端开发模式,锻炼自己能力
为学习微服务架构做准备
主要开发人员:2人
开发模型:主要以螺旋模型为主
1.2项目功能
系统角色划分及涉及的功能模块:
早期需求
后期需求
-
1系统管理员
- 首页
- 用户管理:分配管理各个角色的账号
- 数据维护:学院名称、基层教学组织名称的维护
-
2校级管理员
- 首页待办项:显示待处理的申报表相关信息,包括审核中申请修改的数据
- 用户管理:分配管理 院级管理员、基层教学组织管理员、评审专家 账号
- 备案表的审核:院级管理员审核通过的备案表需要校级管理员审核
- 备案表的分配:校级管理员审核通过的备案表需要批量分配给指定评审专家
-
3院级管理员
- 首页待办项:显示待处理的备案表相关信息,包括审核中申请修改的数据
- 用户管理:分配管理 基层教学组织管理员、评审专家 账号
- 备案表的审核:基层教学组织管理员填写完备案表需要院级管理员先审核,审核通过为 院级审核通过 状态,不通过为返回修改状态
-
4基层教学组织管理员
- 首页待办项:显示待处理的备案表的相关信息,包括 申请修改通过待修改的信息
- 备案表的填报:填写备案表
- 备案表的详情页:显示当前用户填报过得备案表详情页
-
5评审专家
- 首页待办项:显示待处理备案表的相关信息,包括 待评分的信息
- 备案表的评分:进入详情页,为当前备案表打分,打完分备案表的状态改变为评审结束,显示分数
主体功能:
- 申报表主体相关:备案表的填报、详情、审核状态的改变、审核反馈
- 用户权限主体相关:用户的层级分配、用户的功能划分
- 备案表评分相关:特定角色的评分功能
- 用户管理相关
1.3项目技术栈
技术选型:
- 后端:SpringBoot + MongoDB + redis + Shiro
- 前端:vue-admin-template模板 + Tinymce富文本
开发环境:
- 后端:IDEA、MondoDBCompass
- 前端:Visual Studio Code
- 测试:yapi接口测试
二、项目开发流程及源码
流程:
基层教学组织评估系统1_SpringBoot、Shiro、前后端权限和登录初探、前端动态显示侧边栏、资源
基层教学组织评估系统2_登录、申报表信息填报、申报表详情页、审核状态的修改功能初步完成及遇到的问题解决
基层教学组织评估系统3_申报表内容的返回修改、层级用户角色分配、用户管理、校、院二层审核、评审专家的分配、打分功能基本实现
基层教学组织评估系统4_主页待办项功能模块显示、修改表单部分内容格式、请求修改被准许后基层组织管理员才能修改内容、按照需求系列改进优化
基层教学组织评估系统5_系统管理员数据维护模块功能完善,优化教学组织名称的输入提示补全,项目打包部署篇
源码:
-
前端:https://github.com/GitHubSi/base_education_system-ui
-
后端:https://github.com/GitHubSi/base_education_system
后续需求可能还会增加,主要的就是一些表单字段的增加。
三、心得体会
此项目是一个真实的项目,基本全切入从需求分析、代码编写、部署测试、使用手册编写到上线
相比于之前 跟着教学视频 做的一些小案例,差别还是很大的,因为真实的环境中往往是复杂的。
跟着视频能做一些东西 到 做一些真实项目 的过程练习中,不管是心智、技术方面收获还是不小的。
3.1学到了什么?
其实现在学习的就是一些框架的基本使用,底层原理基本是未深入学习的
需要一步一个台阶的走,对于这些底层一般是要求中高级程序员要掌握的
总之今后阶段还是需要学习底层源码知识,只停留在调用api进行增删改查的阶段肯定是不行的。
1.技术方面
对于项目的某些技术栈的选取,往往需要依据项目环境选取,因而某些需要的技术可能需要去现学现用的
该项目功能并不复杂,主要的两个特点就是
- 数据量略大
- 基本的权限控制,角色功能层级关联
开发过程像springboot、shiro、mongodb、vue技术都是项目开始之前在一定时间段学习的,相关博客部分已记录。
对于选mongodb作为数据库,则是依据表单 数据量 较大的情况考虑的,对于NoSQL类型的数据库,存储文档较为合适
通过该实战项目的锻炼,对前后端分离开发模式有了一定的了解,锻炼了开发思维。
开发过程中遇到的具体的vue系列报错、shiro配置、mongodb主键相关 、springboot 的restful风格不能传递中文字符串…等系列问题
也增强了我找错、排错、改错的能力,推展了我的知识面。
项目部署过程部署过程也并不是很顺利的,服务器一般都是linux操作系统,而且部署涉及网络相关知识,由于未系统的学习过linux和计网,
靠着 往期系列学习《网络安全学习篇》积累的一些 linux基本操作、网络相关知识以及排错、解决错误才得以一步步的部署成功(挺感谢当初能坚持跟着b站大学千峰网络安全系列视频学习的自己,哈哈)
部署过程中也是遇到一系列问题的,像阿里云的ecs服务器不支持8Uftp软件、mongodb、redis环境的配置,过程记录在往期博客
基层教学组织评估系统5_系统管理员数据维护模块功能完善,优化教学组织名称的输入提示补全,项目打包部署篇
开始一直跑不起来,通过本机和服务器共同排错才逐渐找出来问题所在(耗了不少时间),mongodb的配置bind_ip、
redis的配置bind、requirepass等都是一些新手容易踩得坑。
总之就是积累了一些经验,锻炼了找错、排错能力(还有开发票的能力哈哈)
2.其他方面
真实的开发环境是复杂的,
-
包括需求可能会变化,因此项目开发往往都是多种模型结合,而不是单单的 瀑布模型,类似螺旋模型、增量模型等结合
-
开发人员的不协调导致前后端整合的时候不太顺利,由于假期在家只能网上沟通,导致像 前后端某些字段命名、某些接口、某些功能实现逻辑不太一致,因而需要多一些整合的修改。
-
开发迭代过程没有使用像git类似的版本控制工具,每次功能完善迭代都需要以压缩包的形式发送前端文件来完成功能整合测试(经历见识多了才主键理解 存在即合理)
-
对于某些需求,一定要充分理解要求,否则达不到效果还是得从头再来
-
…
团队合作沟通协调很重要!
3.2领会到了什么?
纯属个人见解!!!
从java web 到 mvc 模式,再到现在的前后端分离模式,到最后的 微服务架构 开发,一系列演化都是为了简化开发、优化体验
项目经验来自 自己对 真实项目 中出现的系列问题解决方案和见解,学习的不只是技术上的一些知识,还有一些潜在软实力的提升
软实力在今后的职业发展中也是非常重要的,这估计也是 公司招聘一般都是要求有经验的
1.路在何方
又是一波思考人生(滑稽.jpg)
大二下已经开学近一个月,项目任务的安排、各种比赛、各种课的线下学习任务的安排、实验室任务的安排、春招、技术栈、准备面试算法、面试、人工智能、考研or就业…
焦虑感直接拉满
压力感其实主要来自就业or考研,
- 就业,沿着java这条路,成为一个程序员,大厂的饭不好吃上、国企技术相对落后等等系列问题直接让人头大。本科在大学学习的技术估计还不如培训机构他们强,他们面试的准备不一定比大学差。大厂的面试难度可想而知。随着考研人数的增加,本科学历不再像多年前那样有含金量,竞争力增大了很多。
- 考研,随着考研人数的增多,考研内卷太严重了,竞争太激烈了…特别是计算机考研难度很大。最怕跟大流盲从最后竹篮打水一场空。但是硕士待遇比本科生要好很多,包括津贴、薪水、落户政策等等,而且研究生导师包括同学人脉圈可能会对将来帮助很大。
所有的焦虑都是来自对未来的未知,总之,自己的路还是需要自己走,做选择还是需要多了解。
高山仰止 景行行止 虽不能至 心向往之!