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