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