董袁泉 賈蘇 錢夢穎



關鍵詞:Spring Boot;自動化排車系統;Web
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2023)02-0047-03
1 引言
隨著知識經濟的發展,高職逐漸成為區域經濟實用性人才的主要來源。為了促進學生了解張家港,尋求本土企業參與人才培養,提高愛國主義情懷,沙洲職業工學院電子信息工程系在學生學習生涯中安排了多次外出交流活動,例如:走訪當地知名企業,參觀紅色主題場館等。可以幫助學生了解所學專業的在本地布局的企業,為其畢業后留張家港就業打下了基礎,進而更好地服務張家港產業。
上述活動安排均涉及了用車需求,進而需要安排車輛,為了保證學生準確且迅速地尋找自己車輛座位等信息,避免每次用車時排座所需的人力,減少人工排座可能出現的錯誤,故采用SpringBoot技術開發了自動化排座系統。
2 相關技術概述
2.1 SpringBoot
SpringBoot基于Spring4.0設計,不僅繼承了Spring框架原有的優秀特性,提高了性能,并且通過簡化配置來進一步簡化了Spring應用的整個搭建和開發過程。相較于Spring其不需要XML等配置文件。
其可以減少在項目開發中所需要的一系列的第三方類庫的配置,例如:JDBC、MySQL等,實現了部分自動化配置,極大程度地提高了開發效率[1]。
2.2 JXL
JXL[2]是一個開源的、基于Java開發的操作Excel文件的第三方類庫。其支持Excel95-2000的所有版本,且不依賴于具體的平臺。
其可以完成:
1)支持多種Excel版本,基本上覆蓋了常見用戶,支持多版本Excel文件的創建。
2)支持操縱數字、日期等數據格式的數據。
3)支持豐富的單元格設定。
4)支持文字的字體、大小的設定
其提供了WorkBook、Sheet、Cell等對象實現對Ex?cel不同構件的抽象。
一個WorkBook對應一個Excel。
Sheet對象對應于一個工作表,一個WorkBook中可以有多個Sheet,Sheet對象從0開始,序號對應著依次創建的sheet。
Cell對象存在于Sheet對象中,代表了具體的單元格。
3 系統功能概述
本系統主要的功能是實現對學生和車輛、車輛座位的自動化排座,可以減少排車過程中所需要的人力。系統角色分為兩大類:學生和管理員。
學生模塊中,提供兩大功能:登錄系統以及查看活動信息。
管理員模塊,提供學生信息管理,提供新增用戶、編輯用戶以及刪除用戶,并且支持使用Excel表格批量導入用戶信息。活動信息管理,提供新建活動、編輯已發布活動和刪除已發布活動。車輛信息管理,提供新增車輛、編輯車輛信息、刪除處理以及批量導入車輛。排車管理,提供了三種排車方案:順序排車,其按照學生的學號順序和已有的車輛及其座位順序地安排座位。班級排車,按照學生班級進行排車,一個班級的學生優先放入一輛車中,便于管理。環保排車,結合順序排車和班級排車的優點,在保證班級學生不分散的情況下使用最少輛車完成配車。
系統的主要功能模塊如圖1所示:
4 總體設計
4.1 系統架構
本系統使用MVC架構開發,可以將系統中的前后端代碼進行分離。后端使用SpringBoot框架和My?Batis進行設計,主要設計了Controller控制層、Service服務層以及DAO數據訪問層。
Controll 控制層主要負責接受并響應客戶的請求,其通過對Service服務層中定義的調用處理用戶不同的請求,并將結果返回給視圖層。
Service服務層主要是系統中的業務邏輯,比如系統中不同的排車方案,數據的添加、刪除、修改等操作。其針對控制層傳來的不同參數,通過DAO層完成對數據庫的訪問,完成業務邏輯處理。
DAO 數據訪問層,使用MyBatis 框架完成了對ORM結果集的封裝。實現了對JDBC的簡單封裝,實現對系統所需數的增刪查改。
View視圖層使用Thymeleaf模板引擎,其可以很好的結合SpringBoot框架[3-4]。視圖層依據控制層返回的數據,結合瀏覽器完成和用戶的交互。
4.2 數據庫設計
系統主要涉及學生、車輛、活動和班級等實體。結合數據庫設計原則,滿足實際應用的需求[5],數據庫由用戶(User)表、活動(Activity)表、汽車信息(Car)表和班級(Class)表組成。
5 功能實現
5.1 項目環境
本項目開發平臺配置:I7 10700處理器,16GB內容,64 位Windows 操作系統。前端開發工具為VScode,后端開發使用IDEA 2020。其他軟硬件版本如下:
5.2 綠色環保排車
為了降低出行費用,響應節能減排的號召,在系統中添加了綠色環保排車,在確保出行的情況下,使用最少的車輛完成出行。排車思路如下:對車輛按人數進行降序排序,依次和最少人數的班級進行匹配。實現代碼如下:
for (Car car : collectDes) {
try {
car.carryStudents=students.subList(sum, sum
+ car.getCarryNumber());
} catch (IndexOutOfBoundsException e) {
int overage = studentSize - sum;
for (Car car2 : collectAsc) {
if (car2.getCarryNumber() >= overage) {
car2. carryStudents=students. subList
(sum, studentSize);
break;
}
}
}
sum += car.getCarryNumber();
}
5.3 部分功能實現
系統管理員登錄之后,有學生管理模塊,其中提供了單個學生添加、修改、刪除以及批量添加,批量添加如圖4所示:
在排車管理模塊中可以進行排車,系統一共提供了三種排車方式:順序排車、班級排車和環保排車,如圖5所示:
點擊排車按鈕之后,系統會依據不同的排車方法生成最終乘車信息名單。
6 結束語
本文主要介紹使用SpringBoot框架搭建一個自動化排車的信息系統,就功能設計、項目系統框架以及數據庫設計進行了詳細的介紹。系統開發完畢后,經過了一定的測試,可以滿足校內學生出行需求。
系統在設計上還存在一定的問題,在排座上不夠靈活,不能有效地支持學生個性化選座,后面會考慮加入新的模塊,以滿足學生個性化選座的需求。同時還需要驗證大量用戶訪問時系統地表現,進一步完善以提高系統用戶友好性。