目录
社团管理系统
相关文档
源码
yonginggg/StudentClubManagementSoftware
整体思路
这次的团队项目,我们采用的是spring-boot+vue前后端分离框架。
- 前端:HTML、CSS、JavaScript(结合VUE框架和element组件库)
- 后端:spring-boot
参与工作
1、编写建表语句
在项目的初期,我们小组讨论开会确定项目的基本需求后,由我编写了数据库的建表语句。
2、绘制ER图
由我绘制了项目的ER图。
3、后端框架搭建
小组最终确定使用spring+vue的框架模式实现项目。我在学习了相关教程之后(搭建spring-boot+vue前后端分离框架并实现登录功能)通过更改pom.xml确定项目所需要用到的架包,和使用mybatis generator生成数据库映射,以此来完成项目框架的基本搭建。
4、工具接口编写
- 我编写了一个工具接口MybatiesSession,方便service层调用mapper中的具体sql语句来进行数据库操作。
public class MybatiesSession {
public static SqlSession getSession() {
String resources = "mybatis.cfg.xml";
Reader reader = null;
SqlSession session = null;
try {
reader = Resources.getResourceAsReader(resources);
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
session = sqlMapper.openSession();
} catch (IOException e) {
e.printStackTrace();
return null;
}
return session;
}
}
- 编写工具接口JsonUtil,来返回Json格式的数据类型(端口号+Model类/报错信息)给前端。
public class JsonUtil {
static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static JSONObject errorResult(int port, String ErrorResult){
JSONObject jsonObject = new JSONObject(true);
jsonObject.put("port",port);
jsonObject.put("ErrorResult",ErrorResult);
return jsonObject;
}
public static JSONObject ActivitySignResult(int port, BeanActivitySign activitySign){
JSONObject jsonObject = new JSONObject(true);
jsonObject.put("port",port);
jsonObject.put("activitysignid",activitySign.getActivitysignid());
jsonObject.put("studentsigntime",df.format(activitySign.getStudentsigntime()));
jsonObject.put("activitysignstate",activitySign.getActivitysignstate());
jsonObject.put("userid",activitySign.getUserid());
jsonObject.put("activityid",activitySign.getActivityid());
return jsonObject;
}
}
5、Controller层测试注解组合
在最初的分组中,我分到的模块是活动Activity,但是由于需要先用用户的注册登陆在验证前后端的连接交互,我就把用户User模块先一并完成了。由于缺乏经验,在这实现前后端交互的过程中,踩了不少坑、请教多次大佬、尝试了许多组合之后才在Controller层确定@RestController @CrossOrigin @ResponseBody 这三个注解组合的可行性。
6、后端编写
在用户的注册登陆测试跑通后,我将工程push到GitHub上作为小组后端的基础模型。并在此基础上完成了以下模块的后端编写。
- 用户User
- 活动Activity
- 活动报名ActivitySign
- 场地Place
- 主题贴SubjectPost
7、参与前端
由于没有前端网页的相关知识基础,我一开始没有分到前端的编写任务。随着进度的推进,我主动参与前端界面的设计,但出现前端任务繁重和人手不足的问题,我编写了一个相对简单的“修改密码”的界面与前后端连接,也与我自己编写的User模块测试成功。
项目总结
数据库严谨性
- 在之后的过程中发现了不少一开始没有考虑周到的地方,导致每个人后端成员都需要对数据库进行一些必要的修修补补。以后要吸取这次的教训,在一开始编写数据库的时候,就要考虑周到,并且适当的添加“备注”属性,用于方便数据库的修改。
统筹规划
- 在项目初期,由于进度不一时常会出现需要等待其他组员的情况,我认识到了统筹规划的重要性。也要给每个组员分配时间限制进行督促,以此保证整体进度的推进。
及时调整
- 由于缺乏经验,对各个模块的工作量判断有误,最后导致了前端人手不足、后端测试需要等待前端的界面完成的窘境。我认为,在以后的团队任务中,要先进行具体完整的规划,合理分配工作量,并且要在出现问题后,及时重新划分职责、分配工作。
利用好Github
- 在一开始,我们代码的上传使用Github,但是到后来,由于大家都要对公共部分进行修改,又或者是我们的使用方法不得当,导致后续无法上传和版本的混乱。我们后来都把各自的代码单独发给组长进行整合,这一次次的整合过程中,伴随着许多原本自己电脑没见过的无法预料的错误。我觉得,这种方法大大降低了我们项目后来的效率,我们应该好好研究一下Github的团队使用,而不是把它当一个简单的云盘,以此将他的作用最大化,提高效率。
规范命名
- 命名规范的重要性。本次的项目采用的是前后端分离的模式,在前后端连接的部分难免要去读组员的代码,这时候命名的规范就很重要了,有助于解读代码和后续代码方便编写。
合作精神
- 一个团队项目的推进,合作精神显得至关重要。每一个组员在进行个人模块的时候,遇到问题应该及时反馈,而不是憋着不说影响整体进度。大家都应具备团队精神,及时负责的完成个人任务,在后期测试遇到问题,也应该及时处理BUG,给出相应解决方案,而不是“明天再说”。
课程建议
- 朱老师的课堂风格幽默风趣,同时灵活运用现实生活中的例子来让我们加深印象。我觉得也要注重课本知识,适当的划一下重点,不然期末考还是挺慌。
- 另外,我个人觉得第一次的个人作业花费了太多的周期和时间。我觉得只要做一下需求分析,以及测试样例的思考就差不多了,具体的代码可以不用实现了。