软件工程大作业(社团管理系统)-个人总结报告

目录

  • 社团管理系统
    • 相关文档
    • 源码
    • 整体思路
    • 参与工作
    • 项目总结
    • 课程建议

社团管理系统

相关文档

需求分析报告
设计图
原型报告
会议纪要

源码

yonginggg/StudentClubManagementSoftware

整体思路

这次的团队项目,我们采用的是spring-boot+vue前后端分离框架。

  • 前端:HTML、CSS、JavaScript(结合VUE框架和element组件库)
  • 后端:spring-boot

参与工作

1、编写建表语句

在项目的初期,我们小组讨论开会确定项目的基本需求后,由我编写了数据库的建表语句。

2、绘制ER图

由我绘制了项目的ER图。
软件工程大作业(社团管理系统)-个人总结报告_第1张图片

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模块测试成功。
软件工程大作业(社团管理系统)-个人总结报告_第2张图片

项目总结

数据库严谨性

  • 在之后的过程中发现了不少一开始没有考虑周到的地方,导致每个人后端成员都需要对数据库进行一些必要的修修补补。以后要吸取这次的教训,在一开始编写数据库的时候,就要考虑周到,并且适当的添加“备注”属性,用于方便数据库的修改。

    统筹规划

  • 在项目初期,由于进度不一时常会出现需要等待其他组员的情况,我认识到了统筹规划的重要性。也要给每个组员分配时间限制进行督促,以此保证整体进度的推进。

    及时调整

  • 由于缺乏经验,对各个模块的工作量判断有误,最后导致了前端人手不足、后端测试需要等待前端的界面完成的窘境。我认为,在以后的团队任务中,要先进行具体完整的规划,合理分配工作量,并且要在出现问题后,及时重新划分职责、分配工作。

    利用好Github

  • 在一开始,我们代码的上传使用Github,但是到后来,由于大家都要对公共部分进行修改,又或者是我们的使用方法不得当,导致后续无法上传和版本的混乱。我们后来都把各自的代码单独发给组长进行整合,这一次次的整合过程中,伴随着许多原本自己电脑没见过的无法预料的错误。我觉得,这种方法大大降低了我们项目后来的效率,我们应该好好研究一下Github的团队使用,而不是把它当一个简单的云盘,以此将他的作用最大化,提高效率。

    规范命名

  • 命名规范的重要性。本次的项目采用的是前后端分离的模式,在前后端连接的部分难免要去读组员的代码,这时候命名的规范就很重要了,有助于解读代码和后续代码方便编写。

    合作精神

  • 一个团队项目的推进,合作精神显得至关重要。每一个组员在进行个人模块的时候,遇到问题应该及时反馈,而不是憋着不说影响整体进度。大家都应具备团队精神,及时负责的完成个人任务,在后期测试遇到问题,也应该及时处理BUG,给出相应解决方案,而不是“明天再说”。

课程建议

  • 朱老师的课堂风格幽默风趣,同时灵活运用现实生活中的例子来让我们加深印象。我觉得也要注重课本知识,适当的划一下重点,不然期末考还是挺慌。
  • 另外,我个人觉得第一次的个人作业花费了太多的周期和时间。我觉得只要做一下需求分析,以及测试样例的思考就差不多了,具体的代码可以不用实现了。

你可能感兴趣的:(软件工程大作业(社团管理系统)-个人总结报告)