目錄
社團管理系統
相關文檔
源碼
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,給出相應解決方案,而不是“明天再說”。
課程建議
- 朱老師的課堂風格幽默風趣,同時靈活運用現實生活中的例子來讓我們加深印象。我覺得也要注重課本知識,適當的划一下重點,不然期末考還是挺慌。
- 另外,我個人覺得第一次的個人作業花費了太多的周期和時間。我覺得只要做一下需求分析,以及測試樣例的思考就差不多了,具體的代碼可以不用實現了。