前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇車輛技術(shù)管理論文范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
采用的B/S系統(tǒng)結(jié)構(gòu),系統(tǒng)擬實(shí)現(xiàn)以下六大功能:車輛基礎(chǔ)數(shù)據(jù)記錄及實(shí)時顯示;車輛行駛里程、加油管理信息化管理;維修管理等管理功能記錄數(shù)據(jù)化和即時查詢功能;用戶等級劃分,管理員可掌控部門車輛整體運(yùn)行情況,通過長期的數(shù)據(jù)記錄分析,確保車輛安全高效運(yùn)行。由于交付使用用戶非專業(yè)用戶,對于系統(tǒng)的部署和維護(hù)不熟悉,因此系統(tǒng)在配置和部署上需要盡量簡便。
2系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2.1系統(tǒng)架構(gòu)
本系統(tǒng)采用Go語言開發(fā),采用B/S架構(gòu)。雖然Go語言內(nèi)建了對HTTP服務(wù)的支持,但是為了快速開發(fā),本系統(tǒng)使用了基于Go語言的BeegoWeb框架。數(shù)據(jù)庫的選擇上,為了保持系統(tǒng)的簡潔,使用了可內(nèi)嵌的數(shù)據(jù)庫tiedot。
2.1.1Go語言
Go語言是一種靜態(tài)語言,語法上類似C語言,同時增加了現(xiàn)代編程語言的新特性:垃圾回收、動態(tài)類型、跟多的內(nèi)建數(shù)據(jù)類型、以及內(nèi)建的多核處理的支持。筆者作為多年的C語言使用者,在使用Go語言開發(fā)本系統(tǒng)時,也感受到其高效、便捷的特性。首先,語法簡潔,代碼風(fēng)格簡練優(yōu)美;內(nèi)建的切片、map等數(shù)據(jù)類型也大大提高了開發(fā)效率;由于是開源技術(shù),相應(yīng)的庫函數(shù)和外部庫的代碼全部開放,對問題的排查分析也十分有幫助。同時,Go語言的跨平臺編譯有較好的的支持。本系統(tǒng)在32位的linux系統(tǒng)上開發(fā)調(diào)試,但是通過簡單的配置,就可以交叉編譯出在64位Win系統(tǒng)上運(yùn)行的程序。
2.1.2Beego框架
Go語言內(nèi)建了對HTTP服務(wù)的支持。目前使用Go語言構(gòu)建的web引擎也有數(shù)十個。選擇BeeGo首要的原因,是因?yàn)锽eego是一款由國人主導(dǎo)開發(fā)的開源項(xiàng)目。根據(jù)Beego官網(wǎng)的信息,目前國內(nèi)的各大網(wǎng)絡(luò)公司均有使用Beego技術(shù),如淘寶、騰訊等,也說明了該框架的可用性。Beego是一個輕量級的web框架,主要由8個獨(dú)立的模塊組成。模塊間的耦合度低,開發(fā)者可以根據(jù)自己的需要選擇要使用的模塊。用戶即使不使用Beego的HTTP邏輯,也依舊可以使用這些獨(dú)立模塊。
2.1.3tiedot數(shù)據(jù)庫
Tiedot是github上的一個開源項(xiàng)目。與傳統(tǒng)的SQL數(shù)據(jù)庫不同,tiedot是一個文檔數(shù)據(jù)庫,使用json作為文檔描述的接口。其自身可以作為獨(dú)立的數(shù)據(jù)庫運(yùn)行,采用HTTP交互,此時可以和任何語言配合使用;也可以內(nèi)嵌到Go語言的程序中運(yùn)行。雖然傳統(tǒng)的SQL數(shù)據(jù)庫亦能勝任本系統(tǒng)的開發(fā),但是考慮到tiedot可以和Go程序的精密結(jié)合,方便部署。
2.2數(shù)據(jù)庫的設(shè)計(jì)
Tiedo屬于NoSQL數(shù)據(jù)庫,即非關(guān)系型數(shù)據(jù)庫,在數(shù)據(jù)表設(shè)計(jì)時有一定區(qū)別。主要在于:NoSQL數(shù)據(jù)模型設(shè)計(jì)一般從業(yè)務(wù)應(yīng)用的具體數(shù)據(jù)查詢?nèi)胧郑皇菙?shù)據(jù)間的關(guān)系;數(shù)據(jù)冗余、反規(guī)格化、聚合。反規(guī)格化(Denormalization),即可以被認(rèn)為是把相同的數(shù)據(jù)拷貝到不同的文檔或是表中,這樣就可以簡化和優(yōu)化查詢;聚合(Aggregates),文檔數(shù)據(jù)庫是一種層級式的“去Schema”的存儲,允許嵌套式的內(nèi)部數(shù)據(jù)方式來存儲一組有關(guān)聯(lián)的業(yè)務(wù)實(shí)體。遵循反規(guī)格化與聚合的設(shè)計(jì)原則,以及功能需求的分析歸納,本系統(tǒng)分解出車輛信息表、運(yùn)維信息表、用戶信息表、信息匯總4個表。其中運(yùn)維信息表的包含:里程記錄,維修記錄,保險記錄、油耗記錄等子數(shù)據(jù)結(jié)構(gòu)。實(shí)際操作中,運(yùn)維信息可以靈活地根據(jù)情況進(jìn)行填充,每條運(yùn)維記錄可以包含多種類型的記錄。這也與用戶的實(shí)際操作習(xí)慣相符。
2.3系統(tǒng)主體的設(shè)計(jì)
系統(tǒng)采用典型的MVC的模式進(jìn)行設(shè)計(jì)。主要的模塊劃分為以下幾個:
(1)Model模塊:抽象出系統(tǒng)中所需的數(shù)據(jù)結(jié)構(gòu)。負(fù)責(zé)頁面數(shù)據(jù)的載體、數(shù)據(jù)格式的轉(zhuǎn)換、內(nèi)部統(tǒng)計(jì)處理、以及數(shù)據(jù)庫的交互。在數(shù)據(jù)處理上Go語言的一些特性給實(shí)現(xiàn)帶來了便利。Go語言支持struct成員的tag定義。通過tag定義以及反射機(jī)制,可以實(shí)現(xiàn)對數(shù)據(jù)的泛型轉(zhuǎn)換,在數(shù)據(jù)結(jié)構(gòu)修改后依然可以使用,減少了維護(hù)的成本。
(2)Controller模塊:負(fù)責(zé)頁面邏輯的對應(yīng)實(shí)現(xiàn)。又分為車輛信息、運(yùn)維信息、統(tǒng)計(jì)信息、系統(tǒng)管理幾個子模塊。采用自定義的session處理來實(shí)現(xiàn)用戶認(rèn)證功能的實(shí)現(xiàn)。用戶的密碼取md5存儲到數(shù)據(jù)庫,用戶登錄時通過比照用戶名及md5的密碼進(jìn)行驗(yàn)證。通過驗(yàn)證后,存取用戶ID到自定義的session進(jìn)行保存,在頁面prepare階段對session中的用戶ID進(jìn)行檢查,決策用戶是否可以訪問頁面。
(3)View模塊:配合Controller模塊,對頁面內(nèi)容進(jìn)行呈現(xiàn)。在開源的bootstrap框架基礎(chǔ)上進(jìn)行開發(fā),能夠很好的兼容各種終端設(shè)備。另外,在統(tǒng)計(jì)數(shù)據(jù)呈現(xiàn)時,采用了開源的Chart.js庫,能夠以友好的動態(tài)效果呈現(xiàn)出車輛油耗,維護(hù)費(fèi)用等數(shù)據(jù)。
2.4系統(tǒng)的部署
部署的易操作性是本系統(tǒng)的一大特色。由于Go語言內(nèi)建的http服務(wù)支持及tiedot嵌入式數(shù)據(jù)庫,整個系統(tǒng)編譯產(chǎn)生的可執(zhí)行文件沒有任何外部依賴。只需要將可執(zhí)行文件連同靜態(tài)文件(html/js/css)及數(shù)據(jù)庫文件一并拷貝到要部署的服務(wù)器上,保證對應(yīng)端口有使用權(quán)限,運(yùn)行可執(zhí)行文件即可。
3結(jié)語