夏立軍,聶吉順
(大連中遠(yuǎn)海運(yùn)重工有限公司,遼寧大連 116113)
船廠的修造船工作具有涉及專業(yè)眾多、工程量龐大、設(shè)計(jì)方案獨(dú)立定制等特點(diǎn),施工現(xiàn)場(chǎng)產(chǎn)生的問題眾多,對(duì)這些問題進(jìn)行排查和處理十分重要。然而,很多船廠對(duì)施工現(xiàn)場(chǎng)數(shù)據(jù)的管理還停留在簡(jiǎn)單的工作問題記錄和交接階段,沒有形成一套完整的信息處理流程,既易產(chǎn)生疏漏,也不利于數(shù)據(jù)的管理。相較于其他計(jì)算機(jī)語言,Visual Basic 操作簡(jiǎn)單,容易上手,尤其適合非計(jì)算機(jī)專業(yè)的人員開發(fā)符合需求的軟件。
本文以船廠現(xiàn)場(chǎng)問題排查、記錄及處理(簡(jiǎn)稱“現(xiàn)場(chǎng)拉練”)工作為切入點(diǎn),以Visual Basic 為編程語言,以SQL Server 為后臺(tái)數(shù)據(jù)庫(kù),以ActiveX數(shù)據(jù)對(duì)象(ActiveX Data Objects,ADO)為數(shù)據(jù)庫(kù)訪問技術(shù),開發(fā)一套現(xiàn)場(chǎng)拉練信息管理系統(tǒng),以滿足船企的使用需求。
Visual Basic 擁有圖形用戶界面(Graphical User Interface,GUI)和快速應(yīng)用程序開發(fā)(Rapid Application Development,RAD)系統(tǒng),不需要編寫大量代碼去描述界面的外觀和位置,僅需使用自帶的各種控件即可實(shí)現(xiàn)相應(yīng)功能。
SQL Server 是當(dāng)今主流數(shù)據(jù)庫(kù)管理系統(tǒng)之一,具有使用方便、可伸縮性好,以及與其他服務(wù)器軟件兼容性高、性價(jià)比高等優(yōu)點(diǎn)。
本系統(tǒng)以Visual Basic 為編程語言,以SQL Server 為后臺(tái)數(shù)據(jù)庫(kù),以ADO 為數(shù)據(jù)庫(kù)訪問技術(shù),實(shí)現(xiàn)前端Visual Basic 和數(shù)據(jù)庫(kù)的交互連接。
在進(jìn)行系統(tǒng)設(shè)計(jì)前,需要對(duì)軟件進(jìn)行可行性分析,主要包括穩(wěn)定性、安全性、高效性等方面[1]。
1.2.1 穩(wěn)定性
對(duì)于程序的客戶端使用,應(yīng)能保證從注冊(cè)、登錄到最終退出程序的全過程流暢無故障,不發(fā)生報(bào)錯(cuò)及崩潰。
1.2.2 安全性
數(shù)據(jù)庫(kù)有足夠能力接收并儲(chǔ)存數(shù)據(jù),且能保證信息的安全。用戶端通過注冊(cè)及密碼登錄等方式,確保僅用戶本人可對(duì)名下數(shù)據(jù)進(jìn)行操控。
1.2.3 高效性
系統(tǒng)的操作界面應(yīng)清晰明了,使用過程應(yīng)簡(jiǎn)便易行,效率及便捷性能應(yīng)高出Excel 等傳統(tǒng)的記錄方式。軟件應(yīng)具備較長(zhǎng)的使用生命周期,通過獲得良好的經(jīng)濟(jì)效益以抵消開發(fā)軟件的設(shè)計(jì)成本。
根據(jù)實(shí)際需求,系統(tǒng)設(shè)計(jì)以下4 個(gè)模塊:系統(tǒng)管理模塊、信息提交模塊、申報(bào)預(yù)覽模塊、統(tǒng)計(jì)及報(bào)表導(dǎo)出模塊。
系統(tǒng)管理模塊包含賬戶管理、密碼管理、主要流程控制等3 個(gè)部分。用戶在首次使用系統(tǒng)時(shí),需要通過自己的員工編號(hào)進(jìn)行注冊(cè),每個(gè)員工編號(hào)和員工本人具有唯一對(duì)應(yīng)關(guān)系,這樣既能保證每個(gè)員工有且僅有唯一的系統(tǒng)登錄賬號(hào),還能規(guī)避冗余的賬戶注冊(cè)流程。密碼管理可幫助員工在忘記密碼且通過本人驗(yàn)證的情況下對(duì)密碼進(jìn)行重置。系統(tǒng)管理模塊設(shè)計(jì)流程見圖1。
圖1 系統(tǒng)管理模塊設(shè)計(jì)流程
如圖2 所示,信息提交模塊主要包含拉練信息提交、歷史數(shù)據(jù)預(yù)覽、管理和維護(hù)等兩部分。拉練信息主要包括項(xiàng)目船號(hào)、名稱,項(xiàng)目現(xiàn)狀及問題分析,處理方案及改進(jìn)措施,提交人和責(zé)任人,提出時(shí)間和完成時(shí)間,配圖及補(bǔ)充說明等。預(yù)覽操作可按照時(shí)間搜索個(gè)人上傳的歷史數(shù)據(jù)。
圖2 信息提交模塊設(shè)計(jì)流程
申報(bào)預(yù)覽模塊從數(shù)據(jù)庫(kù)中調(diào)取滿足限定條件的員工,并賦予其預(yù)覽查閱的權(quán)限。限定條件包括時(shí)間和科室。申報(bào)預(yù)覽模塊設(shè)計(jì)流程見圖3。
圖3 申報(bào)預(yù)覽模塊設(shè)計(jì)流程
統(tǒng)計(jì)及報(bào)表導(dǎo)出模塊可對(duì)科室上報(bào)數(shù)據(jù)和公司匯總數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析??剖覂?nèi)部統(tǒng)計(jì)每個(gè)員工的提交情況,主要包括拉練人次、記錄數(shù)量、案例分析數(shù)量、閉環(huán)數(shù)量等信息。公司對(duì)各科室的上報(bào)數(shù)據(jù)進(jìn)行匯總,并進(jìn)行對(duì)比分析。科室上報(bào)數(shù)據(jù)和公司匯總數(shù)據(jù)均可導(dǎo)出Excel 報(bào)表,以便進(jìn)一步處理。統(tǒng)計(jì)及報(bào)表導(dǎo)出模塊設(shè)計(jì)流程見圖4。
圖4 統(tǒng)計(jì)及報(bào)表導(dǎo)出模塊設(shè)計(jì)流程
登錄窗體界面是程序運(yùn)行的第一個(gè)窗體界面,也被稱為啟動(dòng)界面(對(duì)象),其主要功能包括首次使用注冊(cè)、忘記密碼重置及常規(guī)登錄。登錄窗體界面流程圖見圖5[2]。
圖5 登錄窗體界面流程圖
在登錄時(shí)需要輸入工號(hào)和密碼,只有當(dāng)工號(hào)和密碼文本框內(nèi)輸入的值能匹配數(shù)據(jù)庫(kù)中的對(duì)應(yīng)字段時(shí)才能登錄成功。若服務(wù)器中無對(duì)應(yīng)工號(hào),則提示用戶工號(hào)輸入錯(cuò)誤。若數(shù)據(jù)庫(kù)中密碼字段為空,則提示用戶需進(jìn)行注冊(cè)并彈出注冊(cè)頁面。注冊(cè)窗體界面流程圖見圖6。
圖6 注冊(cè)窗體界面流程圖
在進(jìn)行注冊(cè)時(shí),工號(hào)的文本框輸入值需要與數(shù)據(jù)庫(kù)對(duì)應(yīng)字段相匹配。在此基礎(chǔ)上,判定密碼的復(fù)雜程度是否達(dá)標(biāo),以及2 次輸入的密碼是否一致。如無問題,則注冊(cè)成功。若用戶忘記密碼,則需要進(jìn)行密碼重置,其邏輯判斷與注冊(cè)流程相似。
根據(jù)界面布局的不同,上傳主界面窗體可分為菜單欄、工具欄、狀態(tài)欄和主窗口;根據(jù)功能屬性的不同,上傳主界面窗體可分為個(gè)人上傳數(shù)據(jù)預(yù)覽板塊、信息填寫提交板塊、數(shù)據(jù)匯總統(tǒng)計(jì)及報(bào)表鏈接入口板塊。
3.2.1 個(gè)人上傳數(shù)據(jù)預(yù)覽板塊
個(gè)人上傳數(shù)據(jù)預(yù)覽板塊可對(duì)近期個(gè)人上傳的數(shù)據(jù)進(jìn)行預(yù)覽查看。個(gè)人上傳數(shù)據(jù)預(yù)覽板塊主要借助MSHFlexGrid 控件,可用表格形式顯示數(shù)據(jù)庫(kù)中的數(shù)據(jù)。MSHFlexGrid 控件中每一個(gè)單元格的內(nèi)容和數(shù)據(jù)庫(kù)中的對(duì)應(yīng)字段均能實(shí)現(xiàn)一一映射的關(guān)系,并能通過循環(huán)語句將滿足條件的信息逐行顯示出來。
3.2.2 信息填寫提交板塊
信息填寫提交板塊的功能在于將用戶填入的信息文本寫入數(shù)據(jù)庫(kù)文件并進(jìn)行保存。該板塊是整個(gè)程序的核心內(nèi)容,也是后續(xù)修改、刪除等操作的基礎(chǔ)。數(shù)據(jù)信息可分為文本信息和圖片信息等兩種形式。信息填寫提交板塊通過TextBox 控件逐項(xiàng)填寫拉練內(nèi)容,通過Label 控件給出填寫提示,通過image 控件上傳輔助說明圖片,通過DTPicker 控件記錄時(shí)間。信息填寫提交板塊窗體界面見圖7。
圖7 信息填寫提交板塊窗體界面
3.2.3 數(shù)據(jù)匯總統(tǒng)計(jì)及報(bào)表鏈接入口板塊
為方便上級(jí)部門和科室管理人員進(jìn)行信息查閱和數(shù)據(jù)分析,需要整理員工個(gè)人的拉練提案,統(tǒng)計(jì)數(shù)據(jù)臺(tái)賬,并制作數(shù)據(jù)匯總報(bào)表。
科室數(shù)據(jù)預(yù)覽窗體將科室上報(bào)的信息進(jìn)行整合,可按照時(shí)間或科室名稱進(jìn)行篩選查看。科室數(shù)據(jù)預(yù)覽窗體通過MSHFlexGrid 控件顯示篩選結(jié)果,并在數(shù)據(jù)預(yù)覽版塊顯示詳細(xì)的文字和圖片信息??赏ㄟ^點(diǎn)擊“導(dǎo)出到Excel”按鈕將科室數(shù)據(jù)預(yù)覽窗體的顯示內(nèi)容導(dǎo)出至Excel 文件。
科室上報(bào)匯總窗體可通過表格形式展示科室員工的年度、月度數(shù)據(jù)上傳和提交情況,以便部門領(lǐng)導(dǎo)進(jìn)行統(tǒng)計(jì)、管理、督促和激勵(lì)??赏ㄟ^點(diǎn)擊“導(dǎo)出到Excel”按鈕將員工拉練的情況導(dǎo)出至Excel文件。
技術(shù)中心匯總窗體以科室為單位,統(tǒng)計(jì)出各科室的拉練工作進(jìn)展情況,可通過點(diǎn)擊“導(dǎo)出到Excel”按鈕將具體數(shù)據(jù)導(dǎo)出至Excel 文件。
數(shù)據(jù)庫(kù)主要具有以下2 方面的作用:1)數(shù)據(jù)儲(chǔ)存;2)在程序打開記錄集,按照條件檢索時(shí),加載和調(diào)用相關(guān)數(shù)據(jù)。利用SQL Server 建立數(shù)據(jù)庫(kù)db_sitetrain,在此數(shù)據(jù)庫(kù)下建立拉練數(shù)據(jù)表tb_sitetrain 和人員信息數(shù)據(jù)表tb_personinfo。
員工需要正確填寫工號(hào)和密碼才能正常登錄系統(tǒng),只有填寫提交人姓名和科室才能對(duì)后續(xù)信息進(jìn)行跟蹤和統(tǒng)計(jì),這些過程都涉及系統(tǒng)和人員數(shù)據(jù)表的信息傳遞。人員數(shù)據(jù)表的結(jié)構(gòu)屬性設(shè)計(jì)見圖8。
圖8 人員數(shù)據(jù)表的結(jié)構(gòu)屬性設(shè)計(jì)
拉練信息是數(shù)據(jù)庫(kù)存儲(chǔ)的關(guān)鍵數(shù)據(jù)。數(shù)據(jù)表的設(shè)計(jì)宗旨是將用戶上傳的各類信息完整地保留下來,需要設(shè)計(jì)規(guī)范的名稱以及合理的數(shù)據(jù)類型。拉練數(shù)據(jù)表的結(jié)構(gòu)屬性設(shè)計(jì)見表1。
表1 拉練數(shù)據(jù)表的結(jié)構(gòu)屬性設(shè)計(jì)
各窗體模塊有一些變量和過程是通用的,程序在運(yùn)行時(shí)需要不斷連接數(shù)據(jù)庫(kù)以調(diào)取和儲(chǔ)存數(shù)據(jù)。為提高編程效率,設(shè)計(jì)一個(gè)類模塊Moudle1.bas 以實(shí)現(xiàn)上述功能。
數(shù)據(jù)庫(kù)連接代碼[3]如下所示:
通過ksdm 過程對(duì)數(shù)據(jù)表中科室名稱所對(duì)應(yīng)的代號(hào)進(jìn)行識(shí)別和轉(zhuǎn)化。以舾裝和船體室為例,相關(guān)代碼如下所示:
登錄窗體通過設(shè)置2 個(gè)Label 控件提示用戶輸入指定信息,通過設(shè)置2 個(gè)TextBox 控件供用戶填寫工號(hào)及密碼,通過設(shè)置3 個(gè)Button 控件用于常規(guī)登錄、忘記密碼及注冊(cè)的運(yùn)行情景,通過Image 控件展示背景畫面,通過設(shè)置1 個(gè)Label 控件顯示軟件版本信息。登錄窗體界面見圖9。
圖9 登錄窗體界面
5.3.1 上傳文字信息
以部分字段為例,上傳文字的主要代碼如下所示:
5.3.2 上傳圖片信息
通過數(shù)據(jù)流mstream 將CommonDialog 控件收集到的圖片路徑寫入二進(jìn)制文件,將圖片信息保存到數(shù)據(jù)庫(kù),并通過Image 控件實(shí)時(shí)顯示。
1)通過CommonDialog 控件打開一個(gè)對(duì)話框,用戶選擇需要上傳的圖片文件,主要代碼[4]如下:
2)通過數(shù)據(jù)流mstream 將CommonDialog 控件收集到的圖片路徑寫入二進(jìn)制文件,主要代碼如下:
在上述代碼中,F(xiàn)ileName2 字段為二進(jìn)制文件的名稱,F(xiàn)ileUploadTime2 字段為保存文件的建立時(shí)間,F(xiàn)ileNameContent2 字段為二進(jìn)制文件的內(nèi)容。
3)將圖片在Image 控件中顯示的代碼如下:
5.3.3 顯示上傳記錄
利用MSHFlexGrid 控件顯示數(shù)據(jù)庫(kù)上傳結(jié)果,通過雙重For 循環(huán)將數(shù)據(jù)庫(kù)的字段一一呈現(xiàn)在每一個(gè)TextMatrix 中,代碼如下:
報(bào)表窗體主要包括科室數(shù)據(jù)報(bào)表、科室匯總報(bào)表、技術(shù)中心報(bào)表等內(nèi)容,既可在軟件上查看,也能導(dǎo)出至Excel 文件。
5.4.1 軟件報(bào)表
通過調(diào)用數(shù)據(jù)庫(kù)并利用SQL 查詢語言select 檢索指定條件的數(shù)據(jù),生成軟件報(bào)表。根據(jù)實(shí)際工作需要,報(bào)表可體現(xiàn)科室上報(bào)的拉練信息、科室個(gè)人數(shù)據(jù)的上傳統(tǒng)計(jì),以及技術(shù)中心各科室月度上傳數(shù)據(jù)的對(duì)比情況。這樣既能獲得現(xiàn)場(chǎng)拉練的完整情況,也能掌握各科室員工的參與程度,便于更好地開展拉練工作。
5.4.2 Excel 文件
依靠Visual Basic 及其宏語言VBA,實(shí)現(xiàn)對(duì)Microsoft Excel 的控制,包括文本的單元格寫入、圖片文件的對(duì)象鏈接與嵌入(Object Linking and Embedding,OLE)對(duì)象插入、文字格式的設(shè)定、圖片大小及位置的設(shè)定等內(nèi)容。
本文針對(duì)船廠現(xiàn)場(chǎng)問題排查、記錄及處理工作,以Visual Basic 為編程語言,以SQL Server 為后臺(tái)數(shù)據(jù)庫(kù),以ADO 為數(shù)據(jù)庫(kù)訪問技術(shù),開發(fā)了一套現(xiàn)場(chǎng)拉練信息管理系統(tǒng)。研究表明:該系統(tǒng)可實(shí)現(xiàn)相關(guān)信息的傳遞、儲(chǔ)存和查閱,方便相關(guān)人員進(jìn)行數(shù)據(jù)處理與維護(hù)。