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