???????????????????????????????????????????????????
???????ssm安全生產(chǎn)培訓(xùn)管理平臺(tái)
目錄
摘 ?要
Abstract
第1章 ?前 ?言
1.1 ?研究背景
1.2 ?研究現(xiàn)狀
1.3 ?系統(tǒng)開(kāi)發(fā)目標(biāo)
第2章 ?系統(tǒng)開(kāi)發(fā)環(huán)境
2.1?JAVA簡(jiǎn)介
2.2?MySql數(shù)據(jù)庫(kù)
2.3??B/S架構(gòu)
2.4?JSP技術(shù)介紹
2.5?SSM三大框架
第3章 ?需求分析
3.1 ?需求分析
3.2 ?系統(tǒng)可行性分析
3.2.1 技術(shù)可行性
3.2.2 經(jīng)濟(jì)可行性
3.2.3 操作可行性
3.3 ?項(xiàng)目設(shè)計(jì)目標(biāo)與原則
3.4 ?系統(tǒng)流程分析
第4章 ?架構(gòu)設(shè)計(jì)
4.1 ?系統(tǒng)體系結(jié)構(gòu)
4.2 ?數(shù)據(jù)庫(kù)實(shí)體設(shè)計(jì)
4.3 ?數(shù)據(jù)庫(kù)表設(shè)計(jì)
第5章 ?系統(tǒng)實(shí)現(xiàn)
5.1 ?登錄
5.2 ?前臺(tái)功能模塊
5.3 ?后臺(tái)管理員功能模塊
第6章 ?系統(tǒng)測(cè)試
6.1 ?測(cè)試目的
6.2 ?測(cè)試方法
6.3 ?功能測(cè)試
6.4 ?測(cè)試結(jié)論
第7章 結(jié) ?論
參考文獻(xiàn)
致 ?謝
摘 ?要
在經(jīng)濟(jì)大發(fā)展的時(shí)代,安全生產(chǎn)培訓(xùn)管理平臺(tái)作為企業(yè)的安全培訓(xùn)職能部門,在轉(zhuǎn)變思想觀念強(qiáng)化服務(wù)意識(shí)的前提下,提高自身素質(zhì)和工作質(zhì)量,努力圍繞安全生產(chǎn)培訓(xùn)管理平臺(tái)中心任務(wù)開(kāi)展工作,國(guó)家對(duì)安全越來(lái)越重視,為企業(yè)的發(fā)展獻(xiàn)力獻(xiàn)策,才能實(shí)現(xiàn)安全生產(chǎn)培訓(xùn)管理平臺(tái)的有效發(fā)揮,本文將通過(guò)安全生產(chǎn)培訓(xùn)管理平臺(tái)的信息,分析在日常工作中安全生產(chǎn)培訓(xùn)管理平臺(tái)存在哪些問(wèn)題探討出進(jìn)一步提升工作效率,管理能力的對(duì)策。
系統(tǒng)采用了Java技術(shù),將所有業(yè)務(wù)模塊采用以瀏覽器交互的模式,選擇MySQL作為系統(tǒng)的數(shù)據(jù)庫(kù),開(kāi)發(fā)工具選擇My eclipse來(lái)進(jìn)行系統(tǒng)的設(shè)計(jì)。基本實(shí)現(xiàn)了安全生產(chǎn)培訓(xùn)管理平臺(tái)應(yīng)有的主要功能模塊,本系統(tǒng)有管理員、員工,管理員:管理員:首頁(yè)、站點(diǎn)管理(輪播圖、公告欄)用戶管理(管理員、員工)內(nèi)容管理(安全要聞、要聞分類列表)更多管理(生產(chǎn)培訓(xùn)、共享資源、共享資源分類、學(xué)習(xí)課件),前臺(tái);首頁(yè)、公告消息、安全要聞、共享資源、學(xué)習(xí)課件,員工;首頁(yè)、更多管理(生產(chǎn)培訓(xùn)、共享資源、學(xué)習(xí)課件)管理等操作。
對(duì)系統(tǒng)進(jìn)行測(cè)試后,改善了程序邏輯和代碼。同時(shí)確保系統(tǒng)中所有的程序都能正常運(yùn)行,所有的功能都能操作,并且該系統(tǒng)有很好的操作體驗(yàn),實(shí)現(xiàn)了對(duì)于安全生產(chǎn)培訓(xùn)管理平臺(tái)和企業(yè)雙贏。
關(guān)鍵詞:安全生產(chǎn)培訓(xùn)管理平臺(tái);SSM框架 ;Mysql數(shù)據(jù)庫(kù);Java語(yǔ)言?
Abstract
In the era of great economic development, the safety production training management platform, as the safety training functional department of the enterprise, can realize the effective play of the safety production training management platform only by changing ideas and strengthening service awareness, improving their own quality and work quality, and striving to work around the central task of the safety production training management platform, This article will analyze what problems exist in the daily work of the safety production training management platform through the information of the safety production training management platform, and discuss the countermeasures to further improve the work efficiency and management ability.
The system adopts Java technology, adopts browser interaction mode for all business modules, selects MySQL as the system database, and selects My eclipse as the development tool to design the system. Basically realized the main functional modules of the safety production training management platform. The system includes administrators, employees, administrators: home page, site management (broadcast map, bulletin board), user management (administrators, employees), content management (safety news, news classified list), more management (production training, shared resources, shared resource classification, learning courseware), and the front desk; Home page, announcement, safety news, shared resources, learning courseware, employees; Home page, more management (production training, sharing resources, learning courseware) management and other operations.
After testing the system, the program logic and code are improved. At the same time, it ensures that all programs in the system can operate normally, all functions can be operated, and the system has a good operating experience, realizing a win-win situation for the safety production training management platform and the enterprise.
Keywords:?safety production training management platform; SSM framework; MySQL database; Java Language
第1章 ?前 ?言
1.1 ?研究背景
傳統(tǒng)的安全生產(chǎn)培訓(xùn)管理平臺(tái)方式是在線下實(shí)體進(jìn)行的,用戶需要到線下進(jìn)行實(shí)際的安全生產(chǎn)培訓(xùn)信息,而隨著安全生產(chǎn)的不斷普及,越來(lái)越多的企業(yè)也開(kāi)始出于各種各樣的理由而熱衷網(wǎng)上發(fā)展 ,傳統(tǒng)的線下安全生產(chǎn)培訓(xùn)模式已經(jīng)無(wú)法滿足人們的需求了。
互聯(lián)網(wǎng)的產(chǎn)生,帶來(lái)了網(wǎng)絡(luò)的再次高速發(fā)展,人們的生活得到了翻天覆地的變化。人們可以隨時(shí)隨地的享受互聯(lián)網(wǎng)帶來(lái)的方便快捷,在生活工作中的方方面面的需要都能在網(wǎng)絡(luò)上實(shí)現(xiàn),比如生產(chǎn)培訓(xùn)、共享資源、共享資源分類等等。也就是說(shuō)網(wǎng)絡(luò)成了人們目前最直接、最方便、最輕松的接入口。
在當(dāng)今世界,互聯(lián)網(wǎng)快速發(fā)展的現(xiàn)在,如何利用互聯(lián)網(wǎng)創(chuàng)造更簡(jiǎn)單高效的生活,這是我們首要討論的。需要安全生產(chǎn)培訓(xùn)管理平臺(tái)相關(guān)網(wǎng)站,一方面使得管理員可以對(duì)安全生產(chǎn)培訓(xùn)管理平臺(tái)的信息進(jìn)行及時(shí)更新和信息化的管理,可以較為容易的獲取學(xué)習(xí)課件、安全生產(chǎn)信息等等。另一方面用戶可以利用互聯(lián)網(wǎng)更直觀的查看安全生產(chǎn)的相關(guān)信息。與傳統(tǒng)的安全生產(chǎn)培訓(xùn)管理平臺(tái)方式相比,用戶安全生產(chǎn)培訓(xùn)的方式更加輕松,系統(tǒng)的操作更加的準(zhǔn)確,這是一種潛在趨勢(shì),或許可以有效加快安全生產(chǎn)培訓(xùn)管理平臺(tái)的普及情況。
1.2 ?研究現(xiàn)狀
經(jīng)過(guò)調(diào)查,目前現(xiàn)代人的生活節(jié)奏加快,生活壓力也在逐漸的增加,網(wǎng)絡(luò)的發(fā)展給人們帶來(lái)的便利,人們對(duì)安全生產(chǎn)管理不斷的了解,越來(lái)越多的企業(yè)開(kāi)始加入了項(xiàng)目這個(gè)行業(yè)中,但是我國(guó)對(duì)于安全生產(chǎn)培訓(xùn)管理平臺(tái)信息管理效果低下,而且出錯(cuò)率也很高。因此大家都在尋找一款更加專業(yè)化的安全生產(chǎn)培訓(xùn)管理平臺(tái)。
隨著安全生產(chǎn)培訓(xùn)管理平臺(tái)的不斷出現(xiàn),用戶需求不斷增多,安全生產(chǎn)培訓(xùn)管理平臺(tái)也不斷的得到壯大,本系統(tǒng)主要根據(jù)管理員和員工的實(shí)際需要,方便用戶利用互聯(lián)網(wǎng)實(shí)現(xiàn)對(duì)安全生產(chǎn)培訓(xùn)管理平臺(tái)的了解、對(duì)比,同時(shí)讓管理者可以通過(guò)這個(gè)系統(tǒng)對(duì)用戶實(shí)際需求以及各辦公信息的所有了解和項(xiàng)目情況進(jìn)行管理。設(shè)計(jì)該系統(tǒng)主要目的是為了方便用戶可以有一個(gè)非常好的平臺(tái)體驗(yàn),管理員也可以通過(guò)該系統(tǒng)進(jìn)行更加方便的管理操作,實(shí)現(xiàn)了之前指定好的計(jì)劃。
1.3 ?系統(tǒng)開(kāi)發(fā)目標(biāo)
對(duì)于網(wǎng)站的設(shè)計(jì),要保證主界面的整潔有序,能夠抓住人的眼球,不會(huì)產(chǎn)生視覺(jué)疲勞,更重要的是,帶給人容易操作的直觀感受,這樣才能留住用戶去進(jìn)行使用,增加三分熱度的延續(xù)期。在系統(tǒng)的后臺(tái)設(shè)計(jì)上,要采取非常簡(jiǎn)潔有效的技術(shù),開(kāi)發(fā)方便的同時(shí),便于以后的維護(hù)。我們不但要確保所有的功能都能夠滿足用戶的需求,用戶還要能自己主動(dòng)通過(guò)網(wǎng)站去實(shí)現(xiàn)想要的操作,而管理者的簡(jiǎn)單通過(guò)網(wǎng)站對(duì)用戶的需求情況進(jìn)行了解和管理。為達(dá)到這一目的,提出以下目標(biāo):
(1)用戶可以實(shí)時(shí)查看最新的生產(chǎn)中心信息,以及相關(guān)資訊;
(2)用戶可以查看各安全生產(chǎn)培訓(xùn)的信息,選擇自己較為合適的的學(xué)習(xí)課件;
(3)用戶可以通過(guò)系統(tǒng)信息進(jìn)行查看安全生產(chǎn)培訓(xùn)通知;
(4)管理員可以在后臺(tái)方便管理后臺(tái)網(wǎng)頁(yè)的各種信息;
(5)用戶可以方便查詢、項(xiàng)目的狀態(tài)。
第2章 ?系統(tǒng)開(kāi)發(fā)環(huán)境
2.1?JAVA簡(jiǎn)介
Java主要采用CORBA技術(shù)和安全模型,可以在互聯(lián)網(wǎng)應(yīng)用的數(shù)據(jù)保護(hù)。它還提供了對(duì)EJB(Enterprise JavaBeans)的全面支持,java servlet API,JSP(java server pages),和XML技術(shù)。JAVA語(yǔ)言是一種面向?qū)ο蟮恼Z(yǔ)言,它通過(guò)提供最基本的方法來(lái)完成指定的任務(wù),開(kāi)發(fā)者只需要知道一些概念就能夠編寫(xiě)出一些應(yīng)用程序。Java程序相對(duì)較小,其代碼能夠在小機(jī)器上運(yùn)行。Java是一種計(jì)算機(jī)編程語(yǔ)言,具有封裝、繼承和多態(tài)性三個(gè)主要特性,廣泛應(yīng)用于企業(yè)Web應(yīng)用程序開(kāi)發(fā)和移動(dòng)應(yīng)用程序開(kāi)發(fā)。
Java語(yǔ)言和一般編譯器以及直譯的區(qū)別在于,Java首先將源代碼轉(zhuǎn)換為字節(jié)碼,然后將其轉(zhuǎn)換為JVM的可執(zhí)行文件,JVM可以在各種不同的JVM上運(yùn)行。因此,實(shí)現(xiàn)了它的跨平臺(tái)特性。雖然這使得Java在早期非常緩慢,但是隨著Java的開(kāi)發(fā),它已經(jīng)得到了改進(jìn)。
2.2?MySql數(shù)據(jù)庫(kù)
Mysql的語(yǔ)言是非結(jié)構(gòu)化的,用戶可以在數(shù)據(jù)上進(jìn)行工作。MySQL因?yàn)槠渌俣?、可靠性和適應(yīng)性而備受關(guān)注。大多數(shù)人都認(rèn)為在不需要事務(wù)化處理的情況下,MySQL是管理內(nèi)容最好的選擇。并且因?yàn)镸ysql的語(yǔ)言和結(jié)構(gòu)比較簡(jiǎn)單,但是功能和存儲(chǔ)信息量很強(qiáng)大,所以得到了普遍的應(yīng)用。
Mysql數(shù)據(jù)庫(kù)在編程過(guò)程中的作用是很廣泛的,為用戶進(jìn)行數(shù)據(jù)查詢帶來(lái)了的方便。Mysql數(shù)據(jù)庫(kù)的應(yīng)用因其靈活性強(qiáng),功能強(qiáng)大,所以在實(shí)現(xiàn)某功能時(shí)只需要一小段代碼,而不像其他程序需要編寫(xiě)大段代碼??傮w來(lái)說(shuō),Mysql數(shù)據(jù)庫(kù)的語(yǔ)言相對(duì)要簡(jiǎn)潔很多。
數(shù)據(jù)流程分析主要就是數(shù)據(jù)存儲(chǔ)的儲(chǔ)藏室,它是在計(jì)算機(jī)上進(jìn)行的,而不是現(xiàn)實(shí)中的儲(chǔ)藏室。數(shù)據(jù)的存放是按固定格式,而不是無(wú)序的,其定義就是:長(zhǎng)期有固定格式,可以共享的存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器上。數(shù)據(jù)庫(kù)管理主要是數(shù)據(jù)存儲(chǔ)、修改和增加以及數(shù)據(jù)表的建立。為了保證系統(tǒng)數(shù)據(jù)的正常運(yùn)行,一些有能力的處理者可以進(jìn)行管理而不需要專業(yè)的人來(lái)處理。數(shù)據(jù)表的建立,可以對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行調(diào)整,數(shù)據(jù)的重新組合及重新構(gòu)造,保證數(shù)據(jù)的安全性。介于數(shù)據(jù)庫(kù)的功能強(qiáng)大等特點(diǎn),本系統(tǒng)的開(kāi)發(fā)主要應(yīng)用了Mysql進(jìn)行對(duì)數(shù)據(jù)的管理。
2.3??B/S架構(gòu)?
B/S結(jié)構(gòu)的特點(diǎn)也非常多,例如在很多瀏覽器中都可以做出信號(hào)請(qǐng)求。并且可以適當(dāng)?shù)臏p輕用戶的工作量,通過(guò)對(duì)客戶端安裝或者是配置少量的運(yùn)行軟件就能夠逐步減少用戶的工作量,這些功能的操作主要是由服務(wù)器來(lái)進(jìn)行控制的,由于該軟件的技術(shù)不斷成熟,最主要的特點(diǎn)就是與瀏覽器相互配合為軟件開(kāi)發(fā)帶來(lái)了極大的便利,不僅能夠減少開(kāi)發(fā)成本,還能夠不斷加強(qiáng)系統(tǒng)的軟件功能,層層相互獨(dú)立和展現(xiàn)層是該B/S結(jié)構(gòu)完成相互連接的主要特性。
2.4?JSP技術(shù)介紹
JSP技術(shù)本身是一種腳本語(yǔ)言,但它的功能是十分強(qiáng)大的,因?yàn)樗梢允褂盟械腏AVA類。當(dāng)它與JavaBeans 類進(jìn)行結(jié)合時(shí),它可以使顯示邏輯和內(nèi)容分開(kāi),這就極大的方便了用戶的需求。JavaBeans 可以對(duì)JSP技術(shù)的程序進(jìn)行擴(kuò)展,從而形成新的應(yīng)用程序,而且JavaBeans的代碼可以重復(fù)使用,所以就便于對(duì)程序進(jìn)行維護(hù)。JavaBean 組件有內(nèi)部的接口,可以幫助不同的人對(duì)系統(tǒng)進(jìn)行訪問(wèn)。1999年,Sun微系統(tǒng)公司正式推出了JSP技術(shù),這是一種動(dòng)態(tài)技術(shù),是基于整個(gè)JAVA體系和JavaServlet提出的,是具有普遍適用性的WEB技術(shù),也是本系統(tǒng)設(shè)計(jì)的核心技術(shù)之一。JSP技術(shù)能夠極大的提高WEB網(wǎng)頁(yè)的運(yùn)行速度。這些內(nèi)容會(huì)與腳本結(jié)合,并且由JavaBean和Servlet組件封裝。所有的腳本均在服務(wù)器端運(yùn)行,JSP引擎會(huì)針對(duì)客戶端所 提交的申請(qǐng)進(jìn)行解釋,然后生成腳本程序和JSP標(biāo)識(shí),然后通過(guò)HTML/XML頁(yè)面將結(jié)果反饋給瀏覽器。因此,開(kāi)發(fā)人員親自設(shè)計(jì)最終頁(yè)面的格式和HTML/XML標(biāo)識(shí)時(shí),完全可以使用JSP技術(shù)。
所以結(jié)合安全生產(chǎn)培訓(xùn)管理平臺(tái)的需求及功能模塊的實(shí)現(xiàn),使用JSP技術(shù)是最合適的,而且JSP的拓展性比較好,對(duì)于系統(tǒng)在后期使用過(guò)程中可以不斷對(duì)系統(tǒng)功能進(jìn)行拓展,是系統(tǒng)更完成,更方便的滿足用戶管理。
2.5?SSM三大框架
1.Spring的優(yōu)勢(shì):
通過(guò)Spring的IOC特性,將對(duì)象之間的依賴關(guān)系交給了Spring控制,方便解耦,簡(jiǎn)化了開(kāi)發(fā)。
2.Spring MVC的優(yōu)勢(shì):
SpringMVC是使用了MVC設(shè)計(jì)思想的輕量級(jí)web框架,對(duì)web層進(jìn)行解耦,使我們的開(kāi)發(fā)更簡(jiǎn)潔。
3.Mybatis的優(yōu)勢(shì):
數(shù)據(jù)庫(kù)的操作(sql)采用xml文件配置,解除了sql和代碼的耦合,提供映射標(biāo)簽,支持對(duì)象和和數(shù)據(jù)庫(kù)orm字段關(guān)系的映射,支持對(duì)象關(guān)系映射標(biāo)簽,支持對(duì)象關(guān)系的組建提供了xml標(biāo)簽,支持動(dòng)態(tài)的sql。
第3章 ?需求分析
3.1 ?需求分析
開(kāi)發(fā)系統(tǒng)的過(guò)程中,去調(diào)查用戶的功能訴求,對(duì)需要存在的功能進(jìn)行需求分析是特別重要的,且對(duì)于系統(tǒng)的開(kāi)發(fā)有著實(shí)際的意義,設(shè)計(jì)安全生產(chǎn)培訓(xùn)管理平臺(tái)通過(guò)對(duì)用戶的需求進(jìn)行分析,結(jié)合實(shí)際情況進(jìn)行開(kāi)發(fā)研究,對(duì)用戶的所有需求做出一個(gè)完整的基本的框架,然后一步一步的完成、實(shí)現(xiàn)。需求分析可以為系統(tǒng)的開(kāi)發(fā)提供一個(gè)目標(biāo),只有按照這個(gè)目標(biāo)進(jìn)行開(kāi)發(fā)設(shè)計(jì),才能進(jìn)行完整的開(kāi)發(fā),這樣設(shè)計(jì)出的系統(tǒng)才有使用的意義,才能在競(jìng)爭(zhēng)激烈的軟件市場(chǎng)中生存,才能真正的幫助人們解決問(wèn)題,提高實(shí)際的效率。
3.2 ?系統(tǒng)可行性分析
3.2.1 技術(shù)可行性
本系統(tǒng)采取的是目前應(yīng)用最廣泛的程序進(jìn)行技術(shù)的支持,主要的技術(shù)支持是java語(yǔ)言,他作為一個(gè)相當(dāng)成熟的語(yǔ)言程序,在眾多的軟件開(kāi)發(fā)中起著很大作用。而且用java語(yǔ)言編輯出來(lái)程序可以直接運(yùn)行,不需要借助其他的翻譯器進(jìn)行翻譯。所以在技術(shù)方面是完全可以行的。
3.2.2 經(jīng)濟(jì)可行性
本項(xiàng)目開(kāi)發(fā)的初衷就是為了節(jié)約,因?yàn)橄到y(tǒng)開(kāi)發(fā)的所有過(guò)程都是我自己開(kāi)發(fā)的,而且在開(kāi)發(fā)過(guò)程使用到的技術(shù)也都是市面上常見(jiàn)的容易操作的,所以不需要請(qǐng)專業(yè)的人士花資金來(lái)進(jìn)行系統(tǒng)的開(kāi)發(fā),而且在項(xiàng)目開(kāi)發(fā)的過(guò)程中我也學(xué)到了更多的知識(shí)。開(kāi)發(fā)的這個(gè)軟件可以在網(wǎng)絡(luò)中進(jìn)行免費(fèi)的下載,對(duì)計(jì)算機(jī)的軟硬件沒(méi)有很高的要求,因此這個(gè)項(xiàng)目是非常實(shí)惠的,在經(jīng)濟(jì)方面是完全可性的。
3.2.3 操作可行性
操作可行性也就是系統(tǒng)的可用性,一個(gè)系統(tǒng)的操作是否容易決定著這個(gè)系統(tǒng)的使用度,在系統(tǒng)的操作方面的設(shè)計(jì)我都是采取簡(jiǎn)潔易懂的方式,操作的整個(gè)菜單界面整齊有序,所有的功能都有序的排列,不會(huì)出現(xiàn)重疊或者需要轉(zhuǎn)換的現(xiàn)象,用戶想要哪方面的操作都可以直接進(jìn)行操作,所以該系統(tǒng)任何人都可以進(jìn)行操作,不需要有相關(guān)專業(yè)的技術(shù)這樣用戶在操作起來(lái)就容易很多。
3.3 ?項(xiàng)目設(shè)計(jì)目標(biāo)與原則
1、關(guān)于安全生產(chǎn)培訓(xùn)管理平臺(tái)的基本要求
(1)功能要求:管理員:首頁(yè)、站點(diǎn)管理(輪播圖、公告欄)用戶管理(管理員、員工)內(nèi)容管理(安全要聞、要聞分類列表)更多管理(生產(chǎn)培訓(xùn)、共享資源、共享資源分類)
員工;首頁(yè)、更多管理(生產(chǎn)培訓(xùn)、共享資源、學(xué)習(xí)課件),
(2)性能:因?yàn)榘踩a(chǎn)培訓(xùn)管理平臺(tái)管理中有很多的信息需要存儲(chǔ),因此對(duì)于系統(tǒng)的存儲(chǔ)量有很大的要求,需要有一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)的支持才能確保所有的信息都能安全穩(wěn)定的進(jìn)行存儲(chǔ)。
(3)安全與保密要求:用戶都必須注冊(cè)、登錄才能進(jìn)入系統(tǒng)。
(4)環(huán)境要求:支持Windows系列、Vista系統(tǒng)等多種操作系統(tǒng)使用。
2、設(shè)計(jì)原則
本安全生產(chǎn)培訓(xùn)管理平臺(tái)采用JSP技術(shù),Mysql數(shù)據(jù)庫(kù)開(kāi)發(fā),充分保證了系統(tǒng)穩(wěn)定性、完整性。
(1)系統(tǒng)響應(yīng)效率:由于是安全生產(chǎn)培訓(xùn)管理平臺(tái),因此就需要系統(tǒng)的響應(yīng)效率是非常高的,并且可以支持很多人同時(shí)進(jìn)行系統(tǒng)的使用。
(2)界面簡(jiǎn)潔清晰:系統(tǒng)界面要簡(jiǎn)單有序,所有的功能一目了然。
(3)儲(chǔ)存性高:因?yàn)槭前踩a(chǎn)培訓(xùn)管理平臺(tái),所以就會(huì)在數(shù)據(jù)庫(kù)要求上比較嚴(yán)格,信息錄入的比較多,而且豐富復(fù)雜, 這就需要一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)來(lái)存放更多的數(shù)據(jù)和保證數(shù)據(jù)的時(shí)時(shí)性。
(4)易學(xué)性:系統(tǒng)的設(shè)計(jì)一定要簡(jiǎn)單,使得用戶使用起來(lái)非常好的順手。
(5)穩(wěn)定性需求:該系統(tǒng)在使用過(guò)程中必須保持穩(wěn)定,不要出現(xiàn)卡頓、模糊等情況。
(6)穩(wěn)定性:由于是安全生產(chǎn)培訓(xùn)管理平臺(tái),因此系統(tǒng)運(yùn)行必須要十分的穩(wěn)定。
3.4 ?系統(tǒng)流程分析
用戶需要擁有屬于自己的賬號(hào)和密碼,且必須正確,這樣才能順利登錄到系統(tǒng)中。進(jìn)入網(wǎng)站后,用戶可以自行查詢項(xiàng)目情況,在自己滿意的項(xiàng)目的詳情頁(yè)面的最后,可以直接選擇安全生產(chǎn)操作。具體流程如下圖3-2所示:
圖3-2 用戶操作流程圖
為了保證系統(tǒng)的安全性,要使用本系統(tǒng)對(duì)系統(tǒng)信息進(jìn)行管理,必須先登陸到系統(tǒng)中。其具體登錄流程圖如圖3-3所示:
圖3-3 系統(tǒng)操作流程圖
第4章 ?架構(gòu)設(shè)計(jì)
4.1 ?系統(tǒng)體系結(jié)構(gòu)
安全生產(chǎn)培訓(xùn)管理平臺(tái)的結(jié)構(gòu)圖4-1所示:
圖4-1 系統(tǒng)結(jié)構(gòu)
登錄系統(tǒng)結(jié)構(gòu)圖,如圖4-2所示:
圖4-2 登錄結(jié)構(gòu)圖
系統(tǒng)結(jié)構(gòu)圖,如圖4-3所示:
圖4-3 系統(tǒng)結(jié)構(gòu)圖
4.2 ?數(shù)據(jù)庫(kù)實(shí)體設(shè)計(jì)
數(shù)據(jù)庫(kù)的功能就是對(duì)系統(tǒng)中所有的數(shù)據(jù)進(jìn)行存儲(chǔ)和管理。所有的數(shù)據(jù)可以在數(shù)據(jù)庫(kù)中產(chǎn)時(shí)間的進(jìn)行存儲(chǔ),方便用戶的使用。而且所有的數(shù)據(jù)庫(kù)中的數(shù)據(jù)也應(yīng)該具有一定的共享性,任何的系統(tǒng)可以對(duì)一些數(shù)據(jù)進(jìn)行使用,同時(shí)還應(yīng)該保持一定的獨(dú)立性,每一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)都有很強(qiáng)的安全性,可以被很好的存放到數(shù)據(jù)庫(kù),沒(méi)有進(jìn)行身份的驗(yàn)證是不能對(duì)這些數(shù)據(jù)進(jìn)行查看和使用的。數(shù)據(jù)庫(kù)的設(shè)計(jì)需要明確每一個(gè)實(shí)體之間的聯(lián)系,系統(tǒng)的E-R圖如下圖所示::
管理員實(shí)體主要存儲(chǔ)管理信息包括用戶名、密碼、角色。管理員信息屬性圖如圖4-5所示。
圖4-5 管理員信息實(shí)體屬性圖
1、生產(chǎn)培訓(xùn)管理信息實(shí)體圖如圖4-6所示:
圖4-6生產(chǎn)培訓(xùn)管理實(shí)體圖
2、管理員信息實(shí)體圖如圖4-7所示:
圖4-7管理員信息實(shí)體圖
4.3 ?數(shù)據(jù)庫(kù)表設(shè)計(jì)
當(dāng)安全生產(chǎn)培訓(xùn)管理平臺(tái)在運(yùn)行的時(shí)候,數(shù)據(jù)庫(kù)要能確保自己的獨(dú)立性,想要哪部分的數(shù)據(jù)就選擇相應(yīng)的設(shè)置選項(xiàng),對(duì)應(yīng)的數(shù)據(jù)就會(huì)以表格的形式展現(xiàn)出來(lái)。當(dāng)對(duì)這一個(gè)功能進(jìn)行設(shè)置,他就會(huì)與數(shù)據(jù)庫(kù)進(jìn)行連接,會(huì)在對(duì)話框中彈出相應(yīng)的數(shù)據(jù)源。
|
|||||
chart |
|||||
字段名稱 |
類型 |
長(zhǎng)度 |
不是null |
主鍵 |
字段說(shuō)明 |
chart_id |
int |
10 |
是 |
主鍵 |
聊天ID |
user_id |
int |
11 |
是 |
用戶ID |
|
title |
varchar |
64 |
否 |
標(biāo)題 |
|
content |
longtext |
0 |
是 |
內(nèi)容 |
|
nickname |
varchar |
32 |
是 |
昵稱 |
|
avatar |
varchar |
255 |
否 |
頭像 |
|
create_time |
timestamp |
0 |
是 |
創(chuàng)建時(shí)間 |
|
update_time |
timestamp |
0 |
是 |
更新時(shí)間 |
|
reply_id |
int |
11 |
是 |
回復(fù)ID |
|
collect |
|||||
字段名稱 |
類型 |
長(zhǎng)度 |
不是null |
主鍵 |
字段說(shuō)明 |
collect_id |
int |
10 |
是 |
主鍵 |
收藏ID |
user_id |
int |
10 |
是 |
收藏人ID |
|
source_table |
varchar |
255 |
否 |
來(lái)源表 |
|
source_field |
varchar |
255 |
否 |
來(lái)源字段 |
|
source_id |
int |
10 |
是 |
來(lái)源ID |
|
title |
varchar |
255 |
否 |
標(biāo)題 |
|
img |
varchar |
255 |
否 |
封面 |
|
create_time |
timestamp |
0 |
是 |
創(chuàng)建時(shí)間 |
|
update_time |
timestamp |
0 |
是 |
更新時(shí)間 |
|
comment |
|||||
字段名稱 |
類型 |
長(zhǎng)度 |
不是null |
主鍵 |
字段說(shuō)明 |
comment_id |
int |
11 |
是 |
主鍵 |
評(píng)論ID |
user_id |
int |
11 |
是 |
評(píng)論人ID |
|
reply_to_id |
int |
11 |
是 |
回復(fù)評(píng)論ID空為0 |
|
content |
longtext |
0 |
否 |
內(nèi)容 |
|
nickname |
varchar |
255 |
否 |
昵稱 |
|
avatar |
varchar |
255 |
否 |
頭像地址 |
|
create_time |
timestamp |
0 |
是 |
創(chuàng)建時(shí)間 |
|
update_time |
timestamp |
0 |
是 |
更新時(shí)間 |
|
source_table |
varchar |
255 |
否 |
來(lái)源表 |
|
source_field |
varchar |
255 |
否 |
來(lái)源字段 |
|
source_id |
int |
10 |
是 |
來(lái)源ID |
|
learning_courseware |
|||||
字段名稱 |
類型 |
長(zhǎng)度 |
不是null |
主鍵 |
字段說(shuō)明 |
learning_courseware_id |
int |
11 |
是 |
主鍵 |
學(xué)習(xí)課件ID |
courseware_name |
varchar |
64 |
否 |
課件名稱 |
|
courseware_type |
varchar |
64 |
否 |
課件類型 |
|
cover |
varchar |
255 |
否 |
封面 |
|
release_time |
date |
0 |
否 |
發(fā)布時(shí)間 |
|
content_introduction |
longtext |
0 |
否 |
內(nèi)容介紹 |
|
related_materials |
varchar |
255 |
否 |
相關(guān)材料 |
|
hits |
int |
11 |
是 |
點(diǎn)擊數(shù) |
|
praise_len |
int |
11 |
是 |
點(diǎn)贊數(shù) |
|
recommend |
int |
11 |
是 |
智能推薦 |
|
create_time |
datetime |
0 |
是 |
創(chuàng)建時(shí)間 |
|
update_time |
timestamp |
0 |
是 |
更新時(shí)間 |
|
production_training |
|||||
字段名稱 |
類型 |
長(zhǎng)度 |
不是null |
主鍵 |
字段說(shuō)明 |
production_training_id |
int |
11 |
是 |
主鍵 |
生產(chǎn)培訓(xùn)ID |
training_topic |
varchar |
64 |
否 |
培訓(xùn)主題 |
|
cover |
varchar |
255 |
否 |
封面 |
|
trainee_no |
int |
11 |
否 |
培訓(xùn)員工號(hào) |
|
full_name |
varchar |
64 |
否 |
姓名 |
|
department |
varchar |
64 |
否 |
部門 |
|
training_time |
date |
0 |
否 |
培訓(xùn)時(shí)間 |
|
training_place |
varchar |
64 |
否 |
培訓(xùn)地點(diǎn) |
|
training_materials |
varchar |
255 |
否 |
培訓(xùn)材料 |
|
training_content |
longtext |
0 |
否 |
培訓(xùn)內(nèi)容 |
|
recommend |
int |
11 |
是 |
智能推薦 |
|
create_time |
datetime |
0 |
是 |
創(chuàng)建時(shí)間 |
|
update_time |
timestamp |
0 |
是 |
更新時(shí)間 |
|
shared_resource |
|||||
字段名稱 |
類型 |
長(zhǎng)度 |
不是null |
主鍵 |
字段說(shuō)明 |
shared_resource_id |
int |
11 |
是 |
主鍵 |
共享資源ID |
resource_name |
varchar |
64 |
否 |
資源名稱 |
|
resource_type |
varchar |
64 |
否 |
資源類型 |
|
source |
varchar |
64 |
否 |
來(lái)源 |
|
release_time |
date |
0 |
否 |
發(fā)布時(shí)間 |
|
share_link |
varchar |
255 |
否 |
共享鏈接 |
|
content_introduction |
text |
0 |
否 |
內(nèi)容介紹 |
|
hits |
int |
11 |
是 |
點(diǎn)擊數(shù) |
|
praise_len |
int |
11 |
是 |
點(diǎn)贊數(shù) |
|
recommend |
int |
11 |
是 |
智能推薦 |
|
create_time |
datetime |
0 |
是 |
創(chuàng)建時(shí)間 |
|
update_time |
timestamp |
0 |
是 |
更新時(shí)間 |
|
shared_resource_classification |
|||||
字段名稱 |
類型 |
長(zhǎng)度 |
不是null |
主鍵 |
字段說(shuō)明 |
shared_resource_classification_id |
int |
11 |
是 |
主鍵 |
共享資源分類ID |
resource_type |
varchar |
64 |
否 |
資源類型 |
|
remarks |
varchar |
64 |
否 |
備注 |
|
recommend |
int |
11 |
是 |
智能推薦 |
|
create_time |
datetime |
0 |
是 |
創(chuàng)建時(shí)間 |
|
update_time |
timestamp |
0 |
是 |
更新時(shí)間 |
|
slides |
|||||
字段名稱 |
類型 |
長(zhǎng)度 |
不是null |
主鍵 |
字段說(shuō)明 |
slides_id |
int |
10 |
是 |
主鍵 |
輪播圖ID |
title |
varchar |
64 |
否 |
標(biāo)題 |
|
content |
varchar |
255 |
否 |
內(nèi)容 |
|
url |
varchar |
255 |
否 |
鏈接 |
|
img |
varchar |
255 |
否 |
輪播圖 |
|
hits |
int |
10 |
是 |
點(diǎn)擊量 |
|
create_time |
timestamp |
0 |
是 |
創(chuàng)建時(shí)間 |
|
update_time |
timestamp |
0 |
是 |
更新時(shí)間 |
|
staff |
|||||
字段名稱 |
類型 |
長(zhǎng)度 |
不是null |
主鍵 |
字段說(shuō)明 |
staff_id |
int |
11 |
是 |
主鍵 |
員工ID |
employee_id |
varchar |
64 |
是 |
員工工號(hào) |
|
full_name |
varchar |
64 |
否 |
姓名 |
|
department |
varchar |
64 |
否 |
部門 |
|
position |
varchar |
64 |
否 |
職位 |
|
examine_state |
varchar |
16 |
是 |
審核狀態(tài) |
|
recommend |
int |
11 |
是 |
智能推薦 |
|
user_id |
int |
11 |
是 |
用戶ID |
|
create_time |
datetime |
0 |
是 |
創(chuàng)建時(shí)間 |
|
update_time |
timestamp |
0 |
是 |
更新時(shí)間 |
第5章 ?系統(tǒng)實(shí)現(xiàn)
5.1 登錄
管理員輸入個(gè)人的賬號(hào)、密碼登錄系統(tǒng),這時(shí)候系統(tǒng)的數(shù)據(jù)庫(kù)就會(huì)在進(jìn)行查找相關(guān)的信息,如果我們輸入的賬號(hào)、密碼不正確,數(shù)據(jù)庫(kù)就會(huì)提示出錯(cuò)誤的信息提示,同時(shí)會(huì)提示管理員重新輸入自己的賬號(hào)、密碼,直到賬號(hào)密碼輸入成功后,會(huì)提登錄成功的信息。網(wǎng)站管理員登錄效果圖如圖5-1所示:
?????
圖5-1登錄界面
登錄代碼如下:
???/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執(zhí)行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????QueryWrapper wrapper = new QueryWrapper<User>();
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}else{
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????//判斷是否有這個(gè)用戶
????????if (resultList.size()<=0){
????????????return error(30000,"用戶不存在");
????????}
????????User byUsername = (User) resultList.get(0);
????????Map<String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態(tài)
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過(guò)")){
????????????????return error(30000,"該用戶審核未通過(guò)");
????????????}
????????}
????????//查詢用戶狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態(tài),不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲(chǔ)Token到數(shù)據(jù)庫(kù)
????????????AccessToken accessToken = new AccessToken();
????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
????????????accessToken.setUser_id(byUsername.getUserId());
????????????tokenService.save(accessToken);
????????????// 返回用戶信息
????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
????????????user.put("token", accessToken.getToken());
????????????JSONObject ret = new JSONObject();
????????????ret.put("obj",user);
????????????return success(ret);
????????} else {
????????????return error(30000, "賬號(hào)或密碼不正確");
????????}
}
????public String select(Map<String,String> query,Map<String,String> config){
????????StringBuffer sql = new StringBuffer("select ");
????????sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
????????sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
????????if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
????????????sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
????????}
????????if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
????????????sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
????????}
????????if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
????????????int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
????????????int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
????????????sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
????????}
????????log.info("[{}] - 查詢操作,sql: {}",table,sql);
????????return sql.toString();
}
????public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
5.2 ?前臺(tái)功能模塊
安全生產(chǎn)培訓(xùn)管理平臺(tái),在系統(tǒng)首頁(yè)可以查看首頁(yè)、公告消息、安全要聞、共享資源、學(xué)習(xí)課件等內(nèi)容,如圖5-1所示。
圖5-1系統(tǒng)功能界面圖
首頁(yè)功能代碼如下:
package com.project.demo.utils;
import java.util.UUID;
/**
?* <p>
?* 高效GUID產(chǎn)生算法(sequence),基于Snowflake實(shí)現(xiàn)64位自增ID算法。 <br>
?*/
public class IdWorker {
????private IdWorker() {
????}
????/**
?????* 主機(jī)和進(jìn)程的機(jī)器碼
?????*/
????private static Sequence worker = new Sequence(0, 0);
????public static long getId() {
????????return worker.nextId();
????}
????/**
?????* 由于js精度問(wèn)題,只能處理到15位,所以一般情況下將其轉(zhuǎn)換成字符串
?????* @return
?????*/
????public static String getIdAsString() {
????????return String.valueOf(getId());
????}
????/**
?????* <p>
?????* 獲取去掉"-" UUID
?????* </p>
?????*/
????public static synchronized String get32UUID() {
????????return UUID.randomUUID().toString().replace("-", "");
????}
}
entity實(shí)體類,使用java類去映射數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)表,以AccessToken.java為例,里面含有數(shù)據(jù)庫(kù)表名稱,表中的主鍵字段,表中其他字段與Java屬性間的映射,代碼如下:
/**
?* 臨時(shí)訪問(wèn)牌(AccessToken)表實(shí)體類
?*
?*/
@TableName("access_token")
@Data
@EqualsAndHashCode(callSuper = false)
public class AccessToken implements Serializable {
????private static final long serialVersionUID = 913269304437207500L;
????/**
?????* 臨時(shí)訪問(wèn)牌ID
?????*/
????@TableId(value = "token_id", type = IdType.AUTO)
????private Integer tokenId;
????/**
?????* 臨時(shí)訪問(wèn)牌
?????*/
????@TableField(value = "token")
????private String token;
????/**
?????* 最大壽命:默認(rèn)2小時(shí)
?????*/
????@TableField(value = "maxage")
????private Integer maxage;
????/**
?????* 創(chuàng)建時(shí)間:
?????*/
????@TableField(value = "create_time")
????private Timestamp createTime;
????/**
?????* 更新時(shí)間:
?????*/
????@TableField(value = "update_time")
????private Timestamp updateTime;
????/**
?????* 用戶信息
?????*/
????@TableField(value = "user_id")
????private Integer user_id;
}
???
???用戶注冊(cè),在用戶注冊(cè)頁(yè)面通過(guò)填寫(xiě)用戶名、密碼、姓名、手機(jī)、郵箱、地址等信息完成用戶注冊(cè),如圖5-2所示。在個(gè)人中心頁(yè)面通過(guò)填寫(xiě)用戶名、密碼、姓名、性別、上傳圖片、手機(jī)、郵箱、地址等信息進(jìn)行信息更新,如圖5-3所示。
圖5-2用戶注冊(cè)界面圖
注冊(cè)代碼如下:
??/**
?????* 注冊(cè)
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????Map<String,Object> map = service.readBody(request.getReader());
????????query.put("username",String.valueOf(map.get("username")));
????????List list = service.selectBaseList(service.select(query, new HashMap<>()));
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????map.put("password",service.encryption(String.valueOf(map.get("password"))));
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
????}
????public void insert(Map<String,Object> body){
????????E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
????????baseMapper.insert(entity);
????????log.info("[{}] - 插入操作:{}",entity);
}
共享資源,共享資源頁(yè)面可以查看資源名稱、資源類型、來(lái)源、發(fā)布時(shí)間等操作。共享資源如下圖5-3所示:
圖5-3共享資源界面
共享資源代碼如下:
?public Map<String, Object> success(Object o) {
????????Map<String, Object> map = new HashMap<>();
????????if (o == null) {
????????????map.put("result", null);
????????????return map;
????????}
????????if (o instanceof List) {
????????????if (((List) o).size() == 1) {
???????????????o = ?((List) o).get(0);
????????????????map.put("result", o);
????????????}else {
????????????????String jsonString = JSONObject.toJSONString(o);
????????????????JSONArray objects = service.covertArray(JSONObject.parseArray(jsonString));
????????????????map.put("result", objects);
????????????}
????????} else if (o instanceof Integer || o instanceof String) {
????????????map.put("result", o);
????????} else {
????????????String jsonString = JSONObject.toJSONString(o);
????????????JSONObject jsonObject = JSONObject.parseObject(jsonString);
????????????JSONObject j = service.covertObject(jsonObject);
????????????map.put("result", j);
????????}
????????return map;
}
學(xué)習(xí)課件,學(xué)習(xí)課件頁(yè)面可以查看課件名稱、課件類型、發(fā)布時(shí)間等操作。學(xué)習(xí)課件如下圖5-4所示:
圖5-4前臺(tái)學(xué)習(xí)課件界面
學(xué)習(xí)課件代碼如下:
?@PostMapping("/upload")
????public Map<String, Object> upload(@RequestParam(value = "file",required=false) MultipartFile file,HttpServletRequest request) {
????????log.info("進(jìn)入方法");
????????if (file.isEmpty()) {
????????????return error(30000, "沒(méi)有選擇文件");
????????}
????????try {
????????????//判斷有沒(méi)路徑,沒(méi)有則創(chuàng)建
????????????String filePath = request.getSession().getServletContext().getRealPath("\\") +"upload\\";
// ???????????String filePath = System.getProperty("user.dir") + "\\target\\classes\\static\\upload\\";
????????????File targetDir = new File(filePath);
????????????if (!targetDir.exists() && !targetDir.isDirectory()) {
????????????????if (targetDir.mkdirs()) {
????????????????????log.info("創(chuàng)建目錄成功");
????????????????} else {
????????????????????log.error("創(chuàng)建目錄失敗");
????????????????}
????????????}
// ???????????String path = ResourceUtils.getURL("classpath:").getPath() + "static/upload/";
// ???????????String filePath = path.replace('/', '\\').substring(1, path.length());
????????????String fileName = file.getOriginalFilename();
????????????int lastIndexOf = fileName.lastIndexOf(".");
????????????//獲取文件的后綴名 .jpg
????????????String suffix = fileName.substring(lastIndexOf);
????????????fileName = IdWorker.getId()+suffix;
????????????File dest = new File(filePath + fileName);
????????????log.info("文件路徑:{}", dest.getPath());
????????????log.info("文件名:{}", dest.getName());
????????????file.transferTo(dest);
????????????JSONObject jsonObject = new JSONObject();
????????????jsonObject.put("url", "/api/upload/" + fileName);
????????????return success(jsonObject);
????????} catch (IOException e) {
????????????log.info("上傳失?。簕}", e.getMessage());
????????}
????????return error(30000, "上傳失敗");
}
5.3 ?后臺(tái)管理員功能模塊
用戶管理,管理員進(jìn)入系統(tǒng)可以對(duì)用戶管理管理進(jìn)行添加、修改等操作。用戶管理如下圖5-5所示:
圖5-5用戶管理界面圖
生產(chǎn)培訓(xùn),在生產(chǎn)培訓(xùn)頁(yè)面,管理員通過(guò)對(duì)培訓(xùn)主題、封面、培訓(xùn)員工號(hào)、姓名、部門、培訓(xùn)內(nèi)容、培訓(xùn)時(shí)間、培訓(xùn)地點(diǎn)、培訓(xùn)資料,進(jìn)行添加、查看、修改等操作。生產(chǎn)培訓(xùn)如下圖5-6所示:
圖5-6生產(chǎn)培訓(xùn)管理界面
管理員進(jìn)入系統(tǒng)可以對(duì)共享資源、資源類型、來(lái)源、發(fā)布時(shí)間、共享鏈接、內(nèi)容管理進(jìn)行添加、修改及查看評(píng)論等操作。共享資源如下圖5-7所示:
圖5-7共享資源功能界面圖
第6章 ?系統(tǒng)測(cè)試
6.1 ?測(cè)試目的
隨著互聯(lián)網(wǎng)不斷的發(fā)展,目前各大領(lǐng)域都利用互聯(lián)網(wǎng)進(jìn)行了信息的管理,質(zhì)量問(wèn)題是很重要的標(biāo)準(zhǔn),也決定著是否有更多的人使用。所以軟件的質(zhì)量我們必須要把關(guān),必須要把軟件做好,做到位,少出不必要的問(wèn)題,這樣才能有更多的用戶使用,并且得到更多的推廣。所以,我們?cè)陂_(kāi)發(fā)完系統(tǒng)后,需要進(jìn)行大量的測(cè)試,以確保系統(tǒng)的穩(wěn)定性和可使用性,并要確定系統(tǒng)的質(zhì)量能否做到滿足不同人的需求。這是系統(tǒng)在開(kāi)發(fā)設(shè)計(jì)中非常重要的環(huán)節(jié),測(cè)試的結(jié)果直接關(guān)系到系統(tǒng)的好壞。
集成測(cè)試:在系統(tǒng)測(cè)試當(dāng)中會(huì)出現(xiàn)很多的問(wèn)題,我們要及時(shí)的進(jìn)行標(biāo)注并且在進(jìn)行測(cè)試的時(shí)候要采取自動(dòng)化的測(cè)試,這樣即準(zhǔn)確又快速,而且不會(huì)出現(xiàn)疲勞,手動(dòng)的測(cè)試很容易出現(xiàn)疲勞期,而且測(cè)試的結(jié)果也有時(shí)候會(huì)出錯(cuò),所以在測(cè)試的時(shí)候才去自動(dòng)測(cè)試時(shí)最好的測(cè)試方法。
在測(cè)試的過(guò)程中及時(shí)的發(fā)現(xiàn)問(wèn)題,并且進(jìn)行問(wèn)題的解決,這樣設(shè)計(jì)出的系統(tǒng)可以正常穩(wěn)定的運(yùn)行,不會(huì)出現(xiàn)重大的問(wèn)題。我所進(jìn)行的軟件測(cè)試參照以下三個(gè)步驟進(jìn)行測(cè)試:
(1)模塊測(cè)試:對(duì)系統(tǒng)中的每一項(xiàng)都進(jìn)行針對(duì)的測(cè)試,發(fā)現(xiàn)并找到問(wèn)題。
(2)系統(tǒng)測(cè)試:讓系統(tǒng)長(zhǎng)時(shí)間進(jìn)行各種情況下的運(yùn)行,反饋運(yùn)行期間的穩(wěn)定性問(wèn)題并解決。
(3)驗(yàn)收測(cè)試:其他測(cè)試完成后,最后檢測(cè)階段,確保軟件準(zhǔn)備就緒。
6.2 ?測(cè)試方法
在對(duì)系統(tǒng)進(jìn)行測(cè)試的時(shí)候我們主要應(yīng)用到兩種測(cè)試的方法,通過(guò)測(cè)試我們就能找出可能存在的問(wèn)題保證系統(tǒng)成功運(yùn)行。
從軟件的內(nèi)部構(gòu)造和具體實(shí)施是否有關(guān)系的觀點(diǎn)來(lái)看:黑盒測(cè)試和白盒測(cè)試。
1)黑盒測(cè)試:測(cè)試系統(tǒng)功能,當(dāng)用戶進(jìn)行相應(yīng)的操作時(shí),系統(tǒng)是否能夠及時(shí)且準(zhǔn)確的反饋數(shù)據(jù),并執(zhí)行相應(yīng)功能。需要對(duì)功能以及使用方法進(jìn)行詳細(xì)的測(cè)試,保證所有的操作信息都能夠完整的輸出輸入。
2)白盒測(cè)試:主要是對(duì)系統(tǒng)的結(jié)構(gòu)進(jìn)行測(cè)試,了解系統(tǒng)在運(yùn)行過(guò)程中是否可以正常的工作。
安全生產(chǎn)培訓(xùn)管理平臺(tái)的測(cè)試也會(huì)從下面幾方面進(jìn)行:
(1)窗體測(cè)試:例如用戶登錄界面,在用戶名和密碼輸入時(shí),需要界面窗口彈出,給予用戶反饋,我對(duì)窗口的設(shè)計(jì)進(jìn)行了測(cè)試,確保每一個(gè)窗口在用戶進(jìn)行相應(yīng)操作后,能夠及時(shí)的彈出。
(2)數(shù)據(jù)跟蹤:進(jìn)行數(shù)據(jù)跟蹤,我們就能知道系統(tǒng)功能是否在順利的執(zhí)行當(dāng)中。將數(shù)據(jù)庫(kù)中的相關(guān)的信息進(jìn)行調(diào)動(dòng),彈出我們需要的相對(duì)應(yīng)的數(shù)據(jù)信息。同時(shí),在追蹤過(guò)程中,我們也更容易的發(fā)現(xiàn)系統(tǒng)的問(wèn)題所在,便于解決問(wèn)題和維護(hù)系統(tǒng)。
(3)綜合測(cè)試:完成上述測(cè)試后,需要對(duì)系統(tǒng)進(jìn)行由內(nèi)而外的重新檢測(cè),來(lái)宏觀的發(fā)現(xiàn)系統(tǒng)中存在的問(wèn)題,并且及時(shí)的進(jìn)行解決,系統(tǒng)的設(shè)計(jì)要結(jié)合實(shí)際的使用情況有針對(duì)性的進(jìn)行開(kāi)發(fā),可以滿足不同人的需求。
6.3 ?功能測(cè)試
本安全生產(chǎn)培訓(xùn)管理平臺(tái)設(shè)計(jì)基本達(dá)到我理想的開(kāi)發(fā)狀態(tài),在各個(gè)功能的運(yùn)行方面,表現(xiàn)較為良好,基本滿足用戶的使用需求,及時(shí)矯正了較多的錯(cuò)誤信息??傮w說(shuō)來(lái),軟件通過(guò)了相應(yīng)的測(cè)試。
表6-1:用戶登錄測(cè)試表
模塊名稱 |
測(cè)試用例 |
預(yù)期結(jié)果 |
實(shí)際結(jié)果 |
是否通過(guò) |
登錄模塊 |
用戶名:admin ??密碼:123 ? |
彈出錯(cuò)誤提示,提示密碼錯(cuò)誤 |
彈出錯(cuò)誤提示,提示密碼錯(cuò)誤 |
通過(guò) |
登錄模塊 |
用戶名:123 ?? 密碼:admin ?? |
彈出錯(cuò)誤提示,提示用戶名錯(cuò)誤 |
彈出錯(cuò)誤提示,提示用戶名錯(cuò)誤 |
通過(guò) |
登錄模塊 |
用戶名:admin ?? 密碼:admin ?? |
管理員登錄成功 |
管理員登錄成功 |
通過(guò) |
表6-3:修改密碼測(cè)試表
模塊名稱 |
測(cè)試用例 |
預(yù)期結(jié)果 |
實(shí)際結(jié)果 |
是否通過(guò) |
修改密碼模塊 |
原密碼:666 新密碼:123 確認(rèn)密碼:123 ? |
彈出錯(cuò)誤提示,提示原密碼錯(cuò)誤 |
彈出錯(cuò)誤提示,提示原密碼錯(cuò)誤 |
通過(guò) |
修改密碼模塊 |
原密碼:admin ??新密碼:123 確認(rèn)密碼:333 ? |
彈出錯(cuò)誤提示,提示確認(rèn)密碼不一致 |
彈出錯(cuò)誤提示,提示確認(rèn)密碼不一致 |
通過(guò) |
修改密碼模塊 |
原密碼:admin ??新密碼:123 確認(rèn)密碼:123 ? |
密碼修改成功 |
密碼修改成功 |
通過(guò) |
6.4 ?測(cè)試結(jié)論
測(cè)試的過(guò)程要按照指定好的計(jì)劃一步一步的實(shí)行,測(cè)試時(shí)候一定不要著急,并且將測(cè)試的結(jié)果進(jìn)行詳細(xì)的記錄,我們?cè)谶M(jìn)行測(cè)試的時(shí)候做好選擇自動(dòng)化的測(cè)試,這樣更加的準(zhǔn)確也更快捷,如果采用人工測(cè)試的方法就不會(huì)這么的方便,很可能會(huì)出現(xiàn)一些問(wèn)題,而且極其測(cè)試不會(huì)疲勞也不會(huì)出現(xiàn)問(wèn)題。在測(cè)試的時(shí)候一定要非常專注,時(shí)刻關(guān)注著測(cè)試的結(jié)果,一旦發(fā)現(xiàn)異常及時(shí)進(jìn)行修改,;最后,測(cè)試完之后的文檔應(yīng)該保存下來(lái),方便以后測(cè)試時(shí)用到。
通過(guò)測(cè)試,我們也可以直觀的感受到,在我們最開(kāi)始進(jìn)行系統(tǒng)設(shè)計(jì)的時(shí)候,先把思路理清楚,才能有機(jī)會(huì)把代碼寫(xiě)好。有好的邏輯性的代碼在后期的測(cè)試中才能避免出現(xiàn)問(wèn)題,也可以給我們節(jié)省很多的時(shí)間和不必要的操作。
第7章 結(jié)??論
?安全生產(chǎn)培訓(xùn)管理平臺(tái)為用戶提供了公平的、相互包容的、操作方便的使用系統(tǒng),基本滿足了用戶的使用需要,以及我最初的開(kāi)發(fā)目標(biāo)和方向。Java語(yǔ)言、MySQL數(shù)據(jù)庫(kù)等技術(shù)時(shí)是我開(kāi)發(fā)的基礎(chǔ),這些技術(shù)都有各自的優(yōu)點(diǎn),學(xué)好這些技術(shù),至關(guān)重要。通過(guò)這些優(yōu)點(diǎn)設(shè)計(jì)出來(lái)的系統(tǒng)能夠正常穩(wěn)定的運(yùn)行,并且可以滿足人們的所有需求,在對(duì)系統(tǒng)的需求以及各個(gè)模塊進(jìn)行了詳細(xì)的分析后,有針對(duì)性的進(jìn)行設(shè)計(jì),最后通過(guò)測(cè)試,系統(tǒng)能夠正常的運(yùn)行,該安全生產(chǎn)培訓(xùn)管理平臺(tái)設(shè)計(jì)完成。
本次開(kāi)發(fā)過(guò)程中使用的是Java技術(shù),該技術(shù)具有代碼編寫(xiě)簡(jiǎn)單方便,對(duì)平臺(tái)沒(méi)有要求對(duì)技術(shù)方面也沒(méi)有要求,并且有很好的面像對(duì)象性,所以在技術(shù)方面是相當(dāng)成熟的。利用java技術(shù)作為系統(tǒng)主要的技術(shù)支持可以使得系統(tǒng)能夠正常的運(yùn)行并且實(shí)現(xiàn)相應(yīng)的功能。在這次的系統(tǒng)的設(shè)計(jì)過(guò)程中遇到了很多的困難,幸好有老師同學(xué)們的幫助,在他們的幫助下完成了這次系統(tǒng)的設(shè)計(jì)。
通過(guò)這次安全生產(chǎn)培訓(xùn)管理平臺(tái)的開(kāi)發(fā),我參考了很多相關(guān)系統(tǒng)的例子,取長(zhǎng)補(bǔ)短,吸取了其他系統(tǒng)的長(zhǎng)處,逐步對(duì)該系統(tǒng)進(jìn)行了完善,但是該系統(tǒng)還是有很多的不足之處,有待以后進(jìn)一步學(xué)習(xí)。
實(shí)踐證明,安全生產(chǎn)培訓(xùn)管理平臺(tái)有著非常好的發(fā)展前景,經(jīng)過(guò)測(cè)試運(yùn)行,系統(tǒng)各項(xiàng)功能都十分完善,界面漂亮,使用方便,操作容易,在技術(shù)理論上已經(jīng)成熟。
參考文獻(xiàn)
[1]李樂(lè).Java語(yǔ)言應(yīng)用研究[J].智慧中國(guó),2022(09):80-81.
[2]馬鴻飛,丁麗娜.基于MySQL的驗(yàn)光數(shù)據(jù)庫(kù)[J].科技資訊,2022,20(17):8-10.DOI:10.16661/j.cnki.1672-3791.2201-5042-9296.
[3]鄭戟明,董云朝,柳青.MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入導(dǎo)出方法的探討[J].電腦知識(shí)與技術(shù),2022,18(22):24-25.DOI:10.14004/j.cnki.ckt.2022.1517.
[4]宋旸.使用Java語(yǔ)言開(kāi)發(fā)Web應(yīng)用軟件的知識(shí)探討[J].中國(guó)設(shè)備工程,2022(14):121-123.
[5]楊卓凡.基于MySQL不同存儲(chǔ)引擎下數(shù)據(jù)存儲(chǔ)效率研究[J].電腦知識(shí)與技術(shù),2022,18(21):18-20.DOI:10.14004/j.cnki.ckt.2022.1232.
[6]曹秀麗.智慧教學(xué)在“Java語(yǔ)言課程”中的應(yīng)用探索[J].信息系統(tǒng)工程,2022(06):157-160.
[7]賀斌.計(jì)算機(jī)軟件開(kāi)發(fā)中JAVA語(yǔ)言的應(yīng)用研究[J].中國(guó)設(shè)備工程,2022(11):247-249.
[8]Wu Daiwen. The Application and Management System of Scientific Research Projects Based on PHP and MySQL[J]. Journal of Interconnection Networks,2022,22(Supp02).
[9]黃加偉,夏興,馮子瀟.基于SSM+VUE框架的樓宇電能綜合管控系統(tǒng)[J].計(jì)算技術(shù)與自動(dòng)化,2022,41(01):184-188.DOI:10.16339/j.cnki.jsjsyzdh.202201033.
[10]楊迎.Java語(yǔ)言異常處理機(jī)制的分析[J].電子技術(shù),2022,51(03):42-43.
[11]曹嵩彭,王鵬宇.淺析Java語(yǔ)言在軟件開(kāi)發(fā)中的應(yīng)用[J].信息記錄材料,2022,23(03):114-116.DOI:10.16009/j.cnki.cn13-1295/tq.2022.03.009.
[12]孟維成.對(duì)基于Java語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)庫(kù)的訪問(wèn)研究[J].軟件,2022,43(02):169-171.
[13]吳華,李湉,張世貴,李心靈,楊滔.STEP中EXPRESS語(yǔ)言到Java語(yǔ)言的映射方法[J].機(jī)械工程師,2022(02):117-120.
[14]王慧芳,孫方,陳玉,朱茜.基于SSM框架的大數(shù)據(jù)個(gè)性化推薦系統(tǒng)設(shè)計(jì)[J].信息與電腦(理論版),2022,34(02):90-92.
[15]劉學(xué)玉.JAVA編程語(yǔ)言在計(jì)算機(jī)軟件開(kāi)發(fā)中的應(yīng)用[J].電子技術(shù)與軟件工程,2022(01):57-60.
[16]Siyi Liu. Explore Java Language and Android Mobile Software Development[J]. International Journal of Frontiers in Engineering Technology,2021,3.0(2.0).
[17]Kevin Kline. The Java Language Extension for SQL Server Is Now Open Source[J]. Database Trends and Applications,2020,34(4).
[18]向成藝, “三項(xiàng)崗位人員”安全生產(chǎn)能力省級(jí)網(wǎng)絡(luò)考核平臺(tái)建設(shè)及推廣應(yīng)用. 四川省,四川省安全科學(xué)技術(shù)研究院,2020-05-26.
[19]賈娜莉,徐陽(yáng),李莉莉,李惠.“互聯(lián)網(wǎng)+”安全培訓(xùn)的研究與應(yīng)用[J].安全,2018,39(10):57-59.
[20]吳立活,刁文靜,王智杰.安全生產(chǎn)教育培訓(xùn)管理系統(tǒng)的開(kāi)發(fā)與應(yīng)用[J].中國(guó)礦業(yè),2017,26(S2):401-405+411.
??????????????????????致 ?謝
光陰似箭,一晃大學(xué)生活即將過(guò)去了。一直以嚴(yán)謹(jǐn)?shù)膽B(tài)度和積極的熱情投身于學(xué)習(xí)和工作中,雖然有競(jìng)爭(zhēng),也有淚水,但是通過(guò)我不斷學(xué)習(xí)和奮斗不斷的完善自己,不僅很好的完成了我的學(xué)業(yè)而且也讓我的各方面得到了發(fā)展,取得了很大的進(jìn)步。
大學(xué)的生活也即將結(jié)束,雖然也有許多的不舍,但是終究是要告別的。回想大學(xué)的學(xué)習(xí)生活,有淚水也有汗水。在此期間我嚴(yán)格要求自己,憑著對(duì)知識(shí)的強(qiáng)烈追求,刻苦鉆研,勤奮好學(xué),態(tài)度端正,目標(biāo)明確,牢固的掌握了一些專業(yè)知識(shí)和技能,做到了理論聯(lián)系實(shí)際。除了專業(yè)知識(shí)的學(xué)習(xí)外,我還不斷的擴(kuò)展我的知識(shí)面,從不同的領(lǐng)域以不同的方式來(lái)獲得新的知識(shí)。爭(zhēng)取成為一名各方面都很合格的大學(xué)生。
這次的畢業(yè)設(shè)計(jì),是我獨(dú)自完成周期最長(zhǎng),也是耗力最大的一個(gè)項(xiàng)目。值得慶幸的是,在我畢業(yè)設(shè)計(jì)完成的過(guò)程當(dāng)中,有許多幫助我的同學(xué)和老師。在幾個(gè)月的開(kāi)發(fā)過(guò)程中,我遇到了大大小小無(wú)數(shù)個(gè)問(wèn)題。是我的舍友和老師,不斷地幫助鼓勵(lì)。
我的指導(dǎo)老師,在自身工作十分繁忙的情況下,依然能做到及時(shí)恢復(fù)我們發(fā)去的問(wèn)題郵件,并抽時(shí)間對(duì)我們進(jìn)行線下的輔導(dǎo)。指出我們?cè)O(shè)計(jì)上的失誤,邏輯錯(cuò)誤以及學(xué)習(xí)規(guī)劃問(wèn)題,可以說(shuō)沒(méi)有導(dǎo)師的幫助,我的畢設(shè)會(huì)陷入死胡同,是導(dǎo)師為我指點(diǎn)了迷津,像迷霧中的路燈,為我指明方向!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-757773.html
請(qǐng)關(guān)注點(diǎn)贊+私信博主,免費(fèi)領(lǐng)取項(xiàng)目源碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-757773.html
到了這里,關(guān)于ssm安全生產(chǎn)培訓(xùn)管理平臺(tái)-計(jì)算機(jī)畢設(shè) 附源碼 26918的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!