




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于C/S架構(gòu)企業(yè)項(xiàng)目管理系統(tǒng)設(shè)計(jì)方案目錄摘要 [22]。項(xiàng)目管理信息化系統(tǒng)是工業(yè)工程管理的趨勢(shì),它能規(guī)范一個(gè)團(tuán)隊(duì)的日常工作,提高團(tuán)隊(duì)的工作效率,并使團(tuán)隊(duì)合理掌控項(xiàng)目的當(dāng)前進(jìn)度,及時(shí)做出正確的決策,保證項(xiàng)目的質(zhì)量,在當(dāng)前信息化時(shí)代具有不可缺少的作用。企業(yè)項(xiàng)目管理系統(tǒng)就是在這樣的背景下應(yīng)運(yùn)而生。本課題要做的系統(tǒng)由客戶端、服務(wù)器端、數(shù)據(jù)庫(kù)端、維護(hù)程序和通信協(xié)議五部分組成。客戶端要實(shí)現(xiàn)如下功能:用戶權(quán)限管理,用戶登錄,系統(tǒng)創(chuàng)建、修改及刪除,系統(tǒng)數(shù)據(jù)錄入及修改,系統(tǒng)查詢及打印。服務(wù)器主機(jī)端主要實(shí)現(xiàn)客戶端連接管理及和數(shù)據(jù)庫(kù)數(shù)據(jù)交互。數(shù)據(jù)庫(kù)主機(jī)端要設(shè)計(jì)合適的表格及主鍵對(duì)應(yīng)關(guān)系。維護(hù)程序?qū)崿F(xiàn)記錄客戶端操作情況和數(shù)據(jù)庫(kù)表格創(chuàng)建。通信協(xié)議用來(lái)客戶端和服務(wù)器端通信,要設(shè)計(jì)成易于打包發(fā)送,易于解包等。另外編碼時(shí)要注意編程規(guī)范,設(shè)計(jì)界面應(yīng)合理友好,模塊間相對(duì)獨(dú)立,耦合性小等。3.1.1系統(tǒng)功能需求系統(tǒng)功能需求部分,從系統(tǒng)的使用者的角度來(lái)分析系統(tǒng)需要給用戶提供哪些可使用的功能,是整個(gè)企業(yè)項(xiàng)目管理系統(tǒng)需要實(shí)現(xiàn)的核心部分。經(jīng)分析,系統(tǒng)的功能需求主要包括以下幾個(gè)方面:(1)用戶能登陸客戶端操作項(xiàng)目流圖用戶都有自己的操作權(quán)限,根據(jù)權(quán)限和自身需求對(duì)項(xiàng)目進(jìn)行增、刪、改、查操作??蛻舳艘獙?shí)現(xiàn)如下功能:用戶權(quán)限管理,用戶登錄,系統(tǒng)創(chuàng)建、修改及刪除,系統(tǒng)數(shù)據(jù)錄入及修改,系統(tǒng)查詢及打印。(2)系統(tǒng)維護(hù)人員能登陸到服務(wù)器維護(hù)維護(hù)人員登陸到服務(wù)器后,能查看當(dāng)時(shí)登陸用戶的類型,用戶操作過程,并能對(duì)用戶的操作進(jìn)行管理。(3)系統(tǒng)維護(hù)人員能登陸維護(hù)程序進(jìn)行系統(tǒng)維護(hù)維護(hù)人員登陸到維護(hù)程序能進(jìn)行系統(tǒng)數(shù)據(jù)庫(kù)的創(chuàng)建,能定義模板數(shù)據(jù)庫(kù)及模板數(shù)據(jù),進(jìn)行系統(tǒng)備份、恢復(fù)及刪除,數(shù)據(jù)到導(dǎo)入和導(dǎo)出等。3.1.2系統(tǒng)非功能需求系統(tǒng)的非公能需求部分是系統(tǒng)不可或缺的一部分,包括系統(tǒng)展現(xiàn)給用戶的界面的友好性、合理性,系統(tǒng)處理性能要求,處理負(fù)載的能力,以及系統(tǒng)的擴(kuò)展能力。具體來(lái)講,主要包括以下幾個(gè)方面:(1)直觀的圖形顯示項(xiàng)目當(dāng)前的狀態(tài)操作界面要友好,查詢項(xiàng)目圖形時(shí)用戶根據(jù)當(dāng)前的項(xiàng)目狀態(tài)圖能清晰的知道自己負(fù)責(zé)項(xiàng)目的組成部分,起始時(shí)間和截止時(shí)間,參與的人員及各子部分的狀態(tài),有風(fēng)險(xiǎn)的部分等。(2)服務(wù)器端性能要處理多個(gè)客戶端登陸同時(shí)操作時(shí)服務(wù)器要能及時(shí)響應(yīng),盡可能少出現(xiàn)通信阻塞、死鎖等情況。(3)可維護(hù)性要好系統(tǒng)設(shè)計(jì)的接口要留有充分的余地,以后需求變更要有可維護(hù)的空間。相關(guān)的幫助文檔要齊全,第一次運(yùn)行系統(tǒng)時(shí)相關(guān)配置方便。3.1.3系統(tǒng)接口需求本管理系統(tǒng)是基于C/S架構(gòu)的,系統(tǒng)需要提供客戶端與服務(wù)器端進(jìn)行通信的接口,還需要提供服務(wù)器端與維護(hù)模塊的接口。(1)服務(wù)器端提供多個(gè)客戶端同時(shí)操作的接口為了使用戶登錄時(shí)能順利登錄,系統(tǒng)要求服務(wù)器提供能讓多個(gè)客戶端登錄的接口,妥善處理好多線程之間的關(guān)系,既要保證正確性,又要提高性能。(2)系統(tǒng)提供維護(hù)程序接入的接口為了維護(hù)程序登錄后便于進(jìn)行系統(tǒng)維護(hù),需提供維護(hù)程序接入的接口。3.1.4系統(tǒng)的主要用戶角色對(duì)管理系統(tǒng)中的用戶進(jìn)行角色劃分是為了實(shí)現(xiàn)系統(tǒng)的安全管理,企業(yè)項(xiàng)目管理系統(tǒng)主要有普通用戶、項(xiàng)目經(jīng)理、超級(jí)用戶等三種權(quán)限。普通用戶對(duì)應(yīng)到具體某一個(gè)項(xiàng)目的一個(gè)子過程權(quán)限。項(xiàng)目經(jīng)理對(duì)應(yīng)一個(gè)項(xiàng)目的所有權(quán)限。超級(jí)用戶則擁有系統(tǒng)的所有權(quán)限。3.2項(xiàng)目管理系統(tǒng)的總體設(shè)計(jì)3.2.1項(xiàng)目系統(tǒng)總體功能模塊分析根據(jù)系統(tǒng)的需求分析和系統(tǒng)總體框架,以及C/S架構(gòu)開發(fā)特點(diǎn),設(shè)計(jì)系統(tǒng)的總體功能模塊如圖3-1所示:圖3-1系統(tǒng)總體功能結(jié)構(gòu)圖(1)客戶端用戶通過客戶端來(lái)進(jìn)行日常的操作,包括用戶登錄功能、用戶管理功能、項(xiàng)目定義功能、數(shù)據(jù)錄入和修改功能、查詢/打印功能。其中用戶管理又包括用戶的注冊(cè)、注銷和用戶的權(quán)限管理。(2)服務(wù)器端服務(wù)器端的主要功能包括客戶端的連接管理、數(shù)據(jù)處理、數(shù)據(jù)庫(kù)操作三部分。客戶端連接管理模塊主要負(fù)責(zé)客戶端與服務(wù)器端連接的建立、維持、釋放。客戶端是連接請(qǐng)求的主動(dòng)方。當(dāng)客戶端發(fā)出連接請(qǐng)求給服務(wù)器時(shí),服務(wù)器根據(jù)已經(jīng)設(shè)計(jì)好的協(xié)議確定客戶的請(qǐng)求類型,轉(zhuǎn)入相關(guān)處理。另外客戶端連接管理還要負(fù)責(zé)控制客戶端連接數(shù)等情況,以避免連接數(shù)過多而造成服務(wù)器處理速度大幅度下降,甚至導(dǎo)致企業(yè)內(nèi)部網(wǎng)絡(luò)的局部擁塞現(xiàn)象。(3)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)采用Oracle11g數(shù)據(jù)庫(kù)管理系統(tǒng),支持新項(xiàng)目信息的錄入、項(xiàng)目信息修改、查詢、刪除,以及用戶信息的其他信息的增、刪、改、查操作。(4)維護(hù)模塊系統(tǒng)的維護(hù)模塊主要負(fù)責(zé)數(shù)據(jù)庫(kù)的建立、數(shù)據(jù)備份/恢復(fù)、數(shù)據(jù)導(dǎo)入/導(dǎo)出以及超級(jí)用戶管理。(5)通信協(xié)議客戶端與服務(wù)器端進(jìn)行通信的協(xié)議包括“請(qǐng)求、應(yīng)答”模式和“廣播”模式?!罢?qǐng)求、應(yīng)答”模式中,客戶端程序的請(qǐng)求需要服務(wù)端對(duì)請(qǐng)求做出響應(yīng),客戶端收到服務(wù)端程序應(yīng)答后,完成一次通訊。“廣播”模式:客戶端或服務(wù)端程序發(fā)出一個(gè)信息,不要求另一方響應(yīng)。3.2.2項(xiàng)目管理系統(tǒng)數(shù)據(jù)總體框架分析設(shè)計(jì)該企業(yè)項(xiàng)目管理系統(tǒng)采取C/S架構(gòu),管理功能主要由服務(wù)器端進(jìn)行實(shí)現(xiàn)。該系統(tǒng)主要由五部分組成,分別是客戶端模塊、服務(wù)器端模塊、數(shù)據(jù)庫(kù)端模塊、維護(hù)模塊和通信協(xié)議模塊。整體的框架如圖3-2所示:圖3-2系統(tǒng)總體框架由于本系統(tǒng)采取C/S架構(gòu),因此需要客戶端和服務(wù)器端的不斷通信來(lái)完成系統(tǒng)的全部管理功能。當(dāng)客戶欲使用該系統(tǒng)進(jìn)行管理操作時(shí),首先需要向服務(wù)器發(fā)送服務(wù)請(qǐng)求,等待服務(wù)器的應(yīng)答。在發(fā)送/應(yīng)答請(qǐng)求的過程中,該系統(tǒng)使用的是針對(duì)本系統(tǒng)開發(fā)的通信協(xié)議,協(xié)議根據(jù)系統(tǒng)的需求包括“請(qǐng)求、應(yīng)答”模式和“廣播”模式。在服務(wù)器接收到管理請(qǐng)求的時(shí)候,會(huì)對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作,處理相應(yīng)數(shù)據(jù),并作出最終的應(yīng)答處理結(jié)果,返回給客戶端。而在系統(tǒng)維護(hù)功能模塊部分,將對(duì)該系統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行周期性維護(hù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行定期的備份、恢復(fù)、導(dǎo)入、導(dǎo)出等必要的操作。3.2.3項(xiàng)目管理系統(tǒng)數(shù)據(jù)流程分析設(shè)計(jì)(1)客戶端數(shù)據(jù)流程客戶端程序是用戶直接登陸操作的部分,系統(tǒng)的大部分功能都需要在客戶端中完成.初步設(shè)計(jì)客戶端程序的流程圖如圖3.3所示:圖3-3客戶端數(shù)據(jù)流程圖用戶在登錄客戶端前,需要進(jìn)行用戶登錄。根據(jù)登錄信息的不同,用戶可扮演超級(jí)用戶和普通用戶的身份。超級(jí)用戶則可以對(duì)項(xiàng)目進(jìn)行創(chuàng)建和修改、對(duì)用戶進(jìn)行定義和修改。普通用戶則只能進(jìn)行數(shù)據(jù)進(jìn)行錄入和修改、對(duì)數(shù)據(jù)進(jìn)行查新以及對(duì)數(shù)據(jù)進(jìn)行打印等操作。(2)服務(wù)器端數(shù)據(jù)流程由于服務(wù)器端著重的是業(yè)務(wù)邏輯,數(shù)據(jù)流程圖如圖3-4所示:圖3.4服務(wù)器端數(shù)據(jù)流程圖服務(wù)器端收到客戶端發(fā)送的數(shù)據(jù)包后,檢查數(shù)據(jù)庫(kù)的狀態(tài),若數(shù)據(jù)庫(kù)未啟動(dòng),則生成數(shù)據(jù)庫(kù)未啟動(dòng)信息數(shù)據(jù)包。假使數(shù)據(jù)庫(kù)已經(jīng)啟動(dòng),則檢查用戶的合法性,若用戶為非法用戶,則生成非法用戶數(shù)據(jù)包。假使用戶合法且可提取SQL語(yǔ)句,則提取數(shù)據(jù)包中的SQL語(yǔ)句,執(zhí)行客戶端的請(qǐng)求處理,倘若操作成功則生成執(zhí)行結(jié)果數(shù)據(jù)包,倘若操作失敗則生成操作失敗數(shù)據(jù)包。假使用戶合法且不可提取SQL語(yǔ)句,則生成記錄用戶操作系統(tǒng)SQL語(yǔ)句,并執(zhí)行操作,直至處理完畢。當(dāng)在服務(wù)器端進(jìn)行處理過程中產(chǎn)生了各類數(shù)據(jù)包后,需要將各類數(shù)據(jù)包發(fā)送返回。3.3本章小結(jié)本章對(duì)系統(tǒng)的總體分析與設(shè)計(jì)做了詳盡的描述。本章首先從對(duì)項(xiàng)目管理的需求分析方面入手,對(duì)用戶實(shí)際需求角度對(duì)項(xiàng)目所需完成的功能模塊做了分析。接下來(lái)根據(jù)現(xiàn)有需求對(duì)系統(tǒng)做出了總體設(shè)計(jì),并總結(jié)出了系統(tǒng)的總體功能框架。并對(duì)所設(shè)計(jì)的功能框架從數(shù)據(jù)總體框架以及系統(tǒng)數(shù)據(jù)流程分析的幾個(gè)角度做了詳細(xì)的介紹。
第4章項(xiàng)目管理系統(tǒng)的實(shí)現(xiàn)4.1項(xiàng)目管理系統(tǒng)的詳細(xì)設(shè)計(jì)該系統(tǒng)基于C/S架構(gòu)進(jìn)行開發(fā)設(shè)計(jì),用戶通過客戶端訪問服務(wù)器,對(duì)該管理系統(tǒng)進(jìn)行各項(xiàng)功能的訪問操作。為了反映用戶和系統(tǒng)的各用例間的關(guān)系,用例圖可以很好的反應(yīng)參與者以及用例間的關(guān)系設(shè)計(jì)模型。該系統(tǒng)的整體用例圖如圖4-1所示:圖4-1系統(tǒng)整體用例圖用戶通過客戶端可以進(jìn)行用戶登錄操作,并發(fā)送用戶管理、項(xiàng)目定義和數(shù)據(jù)處理等處理請(qǐng)求給服務(wù)器端。雖然用戶無(wú)法直接操作服務(wù)器,但當(dāng)服務(wù)器與客戶端建立了連接,服務(wù)器將綜合數(shù)據(jù)庫(kù)信息以及數(shù)據(jù)處理請(qǐng)求,對(duì)來(lái)自客戶端的各類請(qǐng)求作出處理并應(yīng)答。用戶通過數(shù)據(jù)庫(kù)維護(hù)和項(xiàng)目維護(hù)來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)的維護(hù)操作。用例圖反映的是系統(tǒng)在做什么,而在詳細(xì)實(shí)現(xiàn)系統(tǒng)各功能前,更要弄清楚用例的行為順序,通過描述對(duì)象之間發(fā)送消息的時(shí)間順序顯示多個(gè)對(duì)象之間的動(dòng)態(tài)協(xié)作。時(shí)序圖展現(xiàn)的正是各用例間行為順序的模型。系統(tǒng)整體的時(shí)序圖如圖4-2所示:圖4-2系統(tǒng)時(shí)序圖SEQ4.2系統(tǒng)時(shí)序圖\*ARABIC1在用戶操作個(gè)功能前,首先需要登錄客戶端,通過客戶端利用為系統(tǒng)專門提供的通信協(xié)議,對(duì)服務(wù)器和維護(hù)模塊進(jìn)行操作請(qǐng)求及應(yīng)答。登錄客戶端后客戶端,用戶可以向服務(wù)器發(fā)送用戶管理請(qǐng)求、項(xiàng)目定義請(qǐng)求、數(shù)據(jù)處理請(qǐng)求、系統(tǒng)維護(hù)請(qǐng)求等,通過服務(wù)器端和維護(hù)模塊的處理,最終完成各類處理功能,并利用該協(xié)議進(jìn)行請(qǐng)求應(yīng)答。4.2項(xiàng)目管理系統(tǒng)各功能的設(shè)計(jì)實(shí)現(xiàn)以上已經(jīng)根據(jù)系統(tǒng)的詳細(xì)需求分析設(shè)計(jì)出系統(tǒng)的各個(gè)功能模塊,包括客戶端模塊、服務(wù)器端模塊、通信模塊、維護(hù)模塊和數(shù)據(jù)庫(kù)端。下面幾個(gè)細(xì)節(jié)分別針對(duì)各個(gè)模塊的詳細(xì)需求進(jìn)行分析設(shè)計(jì)和實(shí)現(xiàn)。4.2.1客戶端的設(shè)計(jì)實(shí)現(xiàn)根據(jù)客戶端應(yīng)具備的功能初步將客戶端劃分為五個(gè)模塊:登陸模塊、項(xiàng)目定義模塊、用戶管理模塊、數(shù)據(jù)錄入/修改模塊和查詢/打印模塊。用戶登陸子模塊需要區(qū)分三種用戶:超級(jí)用戶、有權(quán)限定義子過程用戶和普通用戶,根據(jù)權(quán)限進(jìn)行相應(yīng)操作。用戶登錄步驟:選擇登陸模塊,并且輸入用戶名和密碼;查詢數(shù)據(jù)庫(kù),檢查用戶是否存在;查詢數(shù)據(jù)庫(kù):USER_KS用戶存在,繼續(xù)下一步,否則告知用戶名或密碼錯(cuò)誤,返回第一步;判斷是否用權(quán)限進(jìn)入相應(yīng)模塊,超級(jí)用戶:只允許進(jìn)入“項(xiàng)目定義模塊和用戶管理模塊”;有定義子過程權(quán)限用戶:可以進(jìn)入兩個(gè)模塊;其他用戶:進(jìn)入“數(shù)據(jù)錄入和查詢模塊”;超級(jí)用戶:UserID=“00000000”。系統(tǒng)進(jìn)入到“項(xiàng)目定義模塊和用戶管理模塊”或“數(shù)據(jù)錄入和查詢模塊”;用戶權(quán)限數(shù)據(jù)庫(kù):查詢數(shù)據(jù)庫(kù):POPDEM_KS。繼續(xù)操作直至結(jié)束。登陸模塊采用向服務(wù)器發(fā)送一條sql語(yǔ)句,來(lái)查詢輸入用戶名和密碼是否存在,從而確定用戶是否能成功登陸。用戶登陸界面如圖4-3所示:圖4-3用戶登錄界面為了使用戶在操作的時(shí)候系統(tǒng)能迅速響應(yīng),系統(tǒng)設(shè)計(jì)為當(dāng)用戶登陸成功后,判斷用戶的權(quán)限,之后把該用戶有權(quán)限部分的數(shù)據(jù)一次性發(fā)過來(lái),這樣用戶查詢操作實(shí)際查詢的是本地的數(shù)據(jù),而修改和刪除操作時(shí),程序先發(fā)送修改和刪除的命令給服務(wù)器,在收到服務(wù)器成功響應(yīng)后,再在本地同步修改刪除操作。因接收數(shù)據(jù)需要一段時(shí)間,在此增加了一個(gè)進(jìn)度條,程序中啟動(dòng)一個(gè)定時(shí)器,由接收的進(jìn)度同步設(shè)置進(jìn)度條進(jìn)度,如圖4-4所示:圖4-4進(jìn)度條登陸模塊實(shí)際編程的時(shí)候需要注意一些異常防范處理。比如輸入的用戶名或者密碼不能含有“ADDINEN.CITE<EndNote><Cite><Author>Bari</Author><Year>2012</Year><RecNum>3</RecNum><record><rec-number>3</rec-number><foreign-keys><keyapp="EN"db-id="fspxr2xvx2pzdqed90qv5wwesfdvpzetzsex">3</key></foreign-keys><ref-typename="JournalArticle">17</ref-type><contributors><authors><author>Bari,Ataul</author><author>Jaekel,Arunita</author><author>Jiang,Jin</author><author>Xu,Yufei</author></authors></contributors><auth-address>DepartmentofElectricalandComputerEngineering,UniversityofWesternOntario,Canada</auth-address><titles><title>Designoffaulttolerantwirelesssensornetworkssatisfyingsurvivabilityandlifetimerequirements</title><secondary-title>ComputerCommunications</secondary-title></titles><periodical><full-title>ComputerCommunications</full-title></periodical><pages>320-333</pages><volume>35</volume><number>3</number><keywords><keyword>Sensornodes</keyword><keyword>Clustercomputing</keyword><keyword>Energyutilization</keyword><keyword>Faulttolerance</keyword><keyword>Integerprogramming</keyword><keyword>Networkarchitecture</keyword><keyword>Sensornetworks</keyword></keywords><dates><year>2012</year></dates><pub-location>P.O.Box211,Amsterdam,1000AE,Netherlands</pub-location><publisher>Elsevier</publisher><isbn>01403664</isbn><urls><related-urls><url>/10.1016/com.2011.10.006</url></related-urls></urls><electronic-resource-num>10.1016/com.2011.10.006</electronic-resource-num></record></Cite></EndNote>[2][]>”等特殊字符,這是由于需要配合協(xié)議的設(shè)計(jì),以上字符在協(xié)議中是標(biāo)志字符。成功登陸后進(jìn)入客戶端程序主界面,如圖4-5所示:圖4-5客戶端主界面用戶管理子模塊包括編輯用戶(增加、修改、刪除),用戶權(quán)限分配。用戶和密碼存放在數(shù)據(jù)庫(kù)表USER_KS中;權(quán)限信息存放在數(shù)據(jù)庫(kù)表POPDEM_KS中。用戶管理模塊在此處為了實(shí)現(xiàn)的方便進(jìn)行了調(diào)整,調(diào)整為用戶管理和權(quán)限管理兩個(gè)部分。用戶管理是以用戶的角度來(lái)顯示用戶的權(quán)限,如圖4.6所示,列出了“-11”這個(gè)用戶所具有的所有權(quán)限,圖中表示“-11”擁有過程ID為010100這個(gè)過程的編輯權(quán)限。而權(quán)限管理是以項(xiàng)目的角度來(lái)顯示權(quán)限,如圖4-6所示,表示“R301”這個(gè)項(xiàng)目中只有“b”一個(gè)參與成員,并且“b”擁有這個(gè)項(xiàng)目的編輯權(quán)限,相當(dāng)于項(xiàng)目經(jīng)理的角色。這樣安排各有側(cè)重,信息查找時(shí)能較直觀顯示所關(guān)心的信息。圖4-6用戶管理界面用戶管理部分只負(fù)責(zé)用戶的增加和刪除、用戶密碼的修改等,權(quán)限管理部分可以給具體的過程賦予權(quán)限。權(quán)限管理部分難點(diǎn)是樹視圖的遍歷,遍歷方法是按深度優(yōu)先的方法來(lái)遍歷的,即先遍歷子節(jié)點(diǎn)再遍歷兄弟節(jié)點(diǎn),核心代碼段如下:NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;HTREEITEMhItem,hItemHide;intiNum=0,i;hItem=m_treePrj.GetSelectedItem();DWORDdwReal,dwVirl;dwReal=m_treePrj.GetItemData(hItem);hItemHide=m_treeHide.GetRootItem();iNum=m_treeHide.GetCount();for(i=0;i<iNum;i++){dwVirl=m_treeHide.GetItemData(hItemHide);if(dwReal==dwVirl)//匹配到過程ID{g_strCurID=m_treeHide.GetItemText(hItemHide);break;}if(m_treeHide.GetChildItem(hItemHide)!=NULL)//如果沒有子節(jié)點(diǎn)了{(lán)hItemHide=m_treeHide.GetChildItem(hItemHide);}elseif(m_treeHide.GetNextSiblingItem(hItemHide)!=NULL)//如果沒有兄弟節(jié)點(diǎn)了{(lán)hItemHide=m_treeHide.GetNextSiblingItem(hItemHide);}else{hItemHide=m_treeHide.GetParentItem(hItemHide);if(m_treeHide.GetNextSiblingItem(hItemHide)!=NULL){hItemHide=m_treeHide.GetNextSiblingItem(hItemHide);}else{hItemHide=m_treeHide.GetParentItem(hItemHide);if(m_treeHide.GetNextSiblingItem(hItemHide)!=NULL){hItemHide=m_treeHide.GetNextSiblingItem(hItemHide);}else{hItemHide=m_treeHide.GetParentItem(hItemHide);if(m_treeHide.GetNextSiblingItem(hItemHide)==NULL){MessageBox("程序出現(xiàn)異常,請(qǐng)點(diǎn)擊更新按鈕!","溫馨提示",MB_ICONINFORMATION|MB_OK);return;}hItemHide=m_treeHide.GetNextSiblingItem(hItemHide);//從第四級(jí)上來(lái),這個(gè)兄弟節(jié)點(diǎn)肯定是有的}}}}用戶權(quán)限管理實(shí)現(xiàn)對(duì)話框如下:圖4-7權(quán)限管理界面項(xiàng)目定義子模塊有以下三個(gè)功能:定義/修改項(xiàng)目、定義/修改過程、導(dǎo)入/導(dǎo)出項(xiàng)目。定義/修改項(xiàng)目系統(tǒng)從數(shù)據(jù)庫(kù)表“PRJ_KS”中讀取項(xiàng)目信息;如果有項(xiàng)目,進(jìn)行第4步,否則進(jìn)行下一步;增加項(xiàng)目相關(guān)信息,提交內(nèi)容到項(xiàng)目表“PRJ_KS”中;顯示項(xiàng)目信息,對(duì)項(xiàng)目信息進(jìn)行修改,并提交數(shù)據(jù)庫(kù);進(jìn)行下一過程“定義修改過程”。定義/修改過程定義/修改過程對(duì)話框設(shè)計(jì)如圖4-8所示:圖4.8定義/修改過程界面導(dǎo)出/導(dǎo)入項(xiàng)目導(dǎo)出項(xiàng)目:導(dǎo)出內(nèi)容:過程屬性表、sql語(yǔ)句表;導(dǎo)出格式:能被記事本正常打開;導(dǎo)入項(xiàng)目:按照過程屬性表內(nèi)容恢復(fù)項(xiàng)目過程樹和繪圖,并將sql語(yǔ)句表導(dǎo)入,如果sql語(yǔ)句表內(nèi)容非空,表明上一次導(dǎo)出時(shí)有修改項(xiàng)沒有提交數(shù)據(jù)庫(kù),應(yīng)該提示用戶做出操作。數(shù)據(jù)錄入/修改子模塊編輯過程信息;編輯產(chǎn)品信息;查看權(quán)限內(nèi)的過程(或產(chǎn)品)信息。數(shù)據(jù)錄入/修改模塊界面設(shè)計(jì)如圖4-9所示:圖4-9數(shù)據(jù)錄入/修改子模塊界面由圖4-9所示,過程信息和產(chǎn)品信息使用一個(gè)Tab控件相互隔開,過程信息顯示當(dāng)前操作者選中過程的信息(操作者必須要有這個(gè)過程的權(quán)限才能顯示),產(chǎn)品信息中顯示這個(gè)過程所包含哪些產(chǎn)品的信息,每個(gè)過程中都有過程屬性(屬性分為硬件、軟件、結(jié)構(gòu)、工藝、測(cè)試、整機(jī)試驗(yàn)和使用說明等七種),屬性不同,產(chǎn)品信息也不同。例如硬件類產(chǎn)品信息如圖4-10所示:圖4-10硬件產(chǎn)品信息界面此處需要注意的是,在每次增加、修改和刪除產(chǎn)品信息時(shí),都需要首先判斷用戶的權(quán)限,只有具有該過程的編輯權(quán)限才能操作。然后再根據(jù)不用的屬性,打開各自的對(duì)話框完成增、刪、改操作。查看/打印模塊包括查詢功能、打印功能、本地存儲(chǔ)功能。查詢功能包括:查詢過程、產(chǎn)品、用戶、項(xiàng)目信息等內(nèi)容。打印功能包括:打印過程信息:以表格形式打印,可以選擇行和列;打印產(chǎn)品信息:以表格形式打印,可以選擇行和列;打印項(xiàng)目過程圖:以圖片形式打?。淮蛴∮脩魴?quán)限表:以表格形式打印。打印功能設(shè)計(jì)如圖:圖4-11打印功能界面本地存儲(chǔ)功能實(shí)現(xiàn)存儲(chǔ)過程信息和存儲(chǔ)產(chǎn)品信息。存儲(chǔ)格式:以文本格式進(jìn)行存儲(chǔ),每條信息存儲(chǔ)一行,用戶可以選擇分隔符。設(shè)計(jì)顯示界面如圖:圖4-12保存功能界面4.2.2服務(wù)器端的設(shè)計(jì)實(shí)現(xiàn)服務(wù)器端分為客戶端連接管理模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)庫(kù)操作模塊。服務(wù)器端主界面如4-13所示:圖4-13服務(wù)器端主界面系統(tǒng)啟動(dòng)時(shí)就開辟了十個(gè)線程,可以供十個(gè)用戶同時(shí)操作,當(dāng)用戶數(shù)超過十個(gè)時(shí)就不能繼續(xù)登陸。這樣的限制保證了服務(wù)器的正常運(yùn)行,不會(huì)負(fù)荷太大而死機(jī)??蛻暨B接管理模塊首先需要驗(yàn)證用戶的合法性,同一時(shí)間只允許用戶登陸一次。其次需要為每一個(gè)登陸的用戶開辟一個(gè)線程。這里需要闡述線程的分類。我們知道,線程可以通過Win32API創(chuàng)建,也可以通過MFC創(chuàng)建。其中MFC的線程又可以分為工作者線程和用戶界面線程。工作者線程是沒有消息循環(huán)的簡(jiǎn)單線程,而用戶界面線程可以有消息隊(duì)列和消息循環(huán)。故服務(wù)器端創(chuàng)建有消息隊(duì)列的用戶界面線程較為合適。調(diào)用方法如下所示:m_UserThread=(UserThread*)AfxBeginThread(RUNTIME_CLASS(UserThread),THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); 連接數(shù)據(jù)庫(kù)的接口常用的有ODBC和ADO,由于ODBC相對(duì)復(fù)雜,這里采用了ADO接口,并且把ADO接口常用的函數(shù)進(jìn)行了封裝,成為一個(gè)封裝類,極大的簡(jiǎn)化了數(shù)據(jù)庫(kù)的調(diào)用。需要注意的是使用ADO接口前需要初始化COM接口。4.2.3維護(hù)模塊的設(shè)計(jì)實(shí)現(xiàn)維護(hù)程序部分主要涉及到數(shù)據(jù)庫(kù)的創(chuàng)建、備份、恢復(fù)刪除。其中創(chuàng)建項(xiàng)目表的腳本如下:promptCreatingPRJ_KS...createtablePRJ_KS(PRJIDVARCHAR2(10)notnull,PRJNAMEVARCHAR2(50)notnull,BEGINDATEDATE,ENDDATEDATE,PRJMGRVARCHAR2(20),PRJMEMVARCHAR2(500),PRJSTATUSVARCHAR2(10),DESCRIPTIONVARCHAR2(100),RESERVE1VARCHAR2(50),RESERVE2VARCHAR2(50),INSERTDATETIMEDATEdefaultSYSDATE) 在維護(hù)程序中,只要執(zhí)行上述sql腳本,就可以創(chuàng)建一個(gè)項(xiàng)目表。參照以上sql語(yǔ)句,便可以創(chuàng)建其他表格。維護(hù)模塊的界面實(shí)現(xiàn)如下圖4-14所示:圖4-14維護(hù)模塊主界面數(shù)據(jù)的備份、恢復(fù)和刪除可以使用數(shù)據(jù)庫(kù)客戶端工具PLSQLDeveloper,可以非常方便地實(shí)現(xiàn)所需的功能。故最后維護(hù)程序部分并沒有單獨(dú)作為一個(gè)軟件存在,而是把其創(chuàng)建表格的功能集成在了服務(wù)器端。4.2.4通信協(xié)議的設(shè)計(jì)實(shí)現(xiàn)通訊協(xié)議采用以下兩種方式“請(qǐng)求、應(yīng)答”模式:客戶端程序的請(qǐng)求需要服務(wù)端對(duì)請(qǐng)求做出響應(yīng),客戶端收到服務(wù)端程序應(yīng)答后,完成一次通訊?!皬V播”模式:客戶端或服務(wù)端程序發(fā)出一個(gè)信息,不要求另一方響應(yīng)。協(xié)議采用統(tǒng)一的協(xié)議頭,協(xié)議頭包含4個(gè)字節(jié),見表4-1:表4-1協(xié)議類型協(xié)議類型字節(jié)0字節(jié)1字節(jié)2字節(jié)3“請(qǐng)求、應(yīng)答”模式客戶端->服務(wù)端0x000x010x000x01服務(wù)端->客戶端0x000x010x000x02“廣播”模式客戶端->服務(wù)端0x000x020x000x01服務(wù)端->客戶端0x000x020x000x0“請(qǐng)求、應(yīng)答”模式協(xié)議結(jié)構(gòu)請(qǐng)求命令:客戶端→服務(wù)端注意:對(duì)于UPDATE,INSERT,DELETE命令,sql語(yǔ)句可以包含多條語(yǔ)句,語(yǔ)句之間用分號(hào)“;”分開。包內(nèi)容見表4-2:表4-2協(xié)議包格式1字節(jié)內(nèi)容默認(rèn)值取值范圍注0協(xié)議頭(字節(jié)0)0x00協(xié)議頭1協(xié)議頭(字節(jié)1)0x012協(xié)議頭(字節(jié)2)0x003協(xié)議頭(字節(jié)3)0x014命令長(zhǎng)度(高字節(jié))0~655355命令長(zhǎng)度(低字節(jié))0用戶ID標(biāo)志0xff1用戶ID長(zhǎng)度(高字節(jié))0..102用戶ID長(zhǎng)度(低字節(jié))3用戶ID(字節(jié)1)n<=104用戶ID(字節(jié)2)用戶ID(字節(jié)n)0用戶名標(biāo)志0xff1用戶名長(zhǎng)度(高字節(jié))0..102用戶名長(zhǎng)度(低字節(jié))3用戶名(字節(jié)1)n<=104用戶名(字節(jié)2)用戶名(字節(jié)n)0操作類型標(biāo)志0xff1操作類型//0x01:查詢//0x02:修改//0x03:插入//0x04:刪除//0x05:存儲(chǔ)過程//0x11:要求返回查詢的下一包數(shù)據(jù)//其它:其它0SQL語(yǔ)句標(biāo)志0xff1SQL語(yǔ)句長(zhǎng)度(高字節(jié))2SQL語(yǔ)句長(zhǎng)度(低字節(jié))3SQL語(yǔ)句內(nèi)容(字節(jié)1)SQL語(yǔ)句內(nèi)容(字節(jié)2)...SQL語(yǔ)句內(nèi)容(字節(jié)m)0列數(shù)標(biāo)志0xff1列數(shù)(高字節(jié))0..655352列數(shù)(低字節(jié))0列類型標(biāo)志0xff1第1列類型//0x01:VARCHAR2//0x02:DATE//0x03:NUMBER//其它:其它2第2列類型...k第k列類型表2-5協(xié)議包格式2字節(jié)內(nèi)容默認(rèn)值取值范圍備注0協(xié)議頭(字節(jié)0)0x00協(xié)議頭1協(xié)議頭(字節(jié)1)0x012協(xié)議頭(字節(jié)2)0x003協(xié)議頭(字節(jié)3)0x014命令長(zhǎng)度(高字節(jié))0..655355命令長(zhǎng)度(低字節(jié))0用戶ID標(biāo)志0xff1用戶ID長(zhǎng)度(高字節(jié))0..102用戶ID長(zhǎng)度(低字節(jié))3用戶ID(字節(jié)1)n<=104用戶ID(字節(jié)2)用戶ID(字節(jié)n)0用戶名標(biāo)志0xff1用戶名長(zhǎng)度(高字節(jié))0..102用戶名長(zhǎng)度(低字節(jié))3用戶名(字節(jié)1)n<=104用戶名(字節(jié)2)用戶名(字節(jié)n)0操作類型標(biāo)志0xff1操作類型0x05//0x05:調(diào)用存儲(chǔ)過程調(diào)用存儲(chǔ)過程命令0存儲(chǔ)過程名稱和參數(shù)標(biāo)志0xff應(yīng)答命令服務(wù)端→客戶端,返回結(jié)果:命令無(wú)法識(shí)別:返回“0xff0x01”;數(shù)據(jù)庫(kù)未啟動(dòng):返回“0xff0x02”;數(shù)據(jù)庫(kù)操作錯(cuò)誤:返回“0xff0x03”;命令不完整:返回“0xff0x04”;協(xié)議格式見表4-3表4-3應(yīng)答協(xié)議包格式內(nèi)容默認(rèn)值取值范圍備注0協(xié)議頭(字節(jié)0)0x00協(xié)議頭1協(xié)議頭(字節(jié)1)0x012協(xié)議頭(字節(jié)2)0x003協(xié)議頭(字節(jié)3)0x024命令長(zhǎng)度(高字節(jié))0x005命令長(zhǎng)度(低字節(jié))0x0a6操作類型標(biāo)志0xff7操作類型//0x01:查詢//0x02:修改//0x03:插入//0x04:刪除//0x05:存儲(chǔ)過程//其它:其它8操作結(jié)果標(biāo)志00xff9操作結(jié)果標(biāo)志10x01:命令無(wú)法識(shí)別0x02:數(shù)據(jù)庫(kù)未啟動(dòng)0x03:數(shù)據(jù)庫(kù)操作錯(cuò)誤0x04:命令不完整其他:未定義為了使代碼的獨(dú)立性更強(qiáng),不相互耦合,通信協(xié)議設(shè)計(jì)成了一個(gè)獨(dú)立的類,類的定義如下:classProtocolData:publicCObject{public: boolGetQuaryResult(); intGetHeadResult();//得到協(xié)議頭的類型 intInit(char*p,intlen); intGetColValue(char*aRecord,char*pValue,intcol);//得到指定字段名 intGetNextRecord(char*aRecord);//接收下一條記錄 intlengthData; intcurrent_point; intGetOperateType(); intflagEnd;//0:不是組后一包,1:匙最后一包數(shù)據(jù) char*m_pBuff; chardata[MAX_COUNT_BUFF]; charaRecord[MAX_COUNT_RECORD]; ProtocolData(); virtual~ProtocolData();}; 通過以上類的設(shè)計(jì),充分把協(xié)議打包解包所需要的函數(shù)都封裝起來(lái),從而使代碼結(jié)構(gòu)更加清晰。4.2.5數(shù)據(jù)庫(kù)設(shè)計(jì)前面已經(jīng)介紹本項(xiàng)目采用Oracle11g作為后臺(tái)數(shù)據(jù)庫(kù)管理系統(tǒng)。而不管采用哪一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng),根管理系統(tǒng)的實(shí)際需求設(shè)計(jì)好系統(tǒng)數(shù)據(jù)庫(kù)的表結(jié)構(gòu)以及各關(guān)系表之間的關(guān)聯(lián)關(guān)系才是系統(tǒng)實(shí)現(xiàn)的基礎(chǔ)。如圖4-15是系統(tǒng)數(shù)據(jù)庫(kù)中個(gè)表之間的關(guān)聯(lián)關(guān)系。圖4-15數(shù)據(jù)庫(kù)表結(jié)構(gòu)數(shù)據(jù)庫(kù)端需要設(shè)計(jì)好數(shù)據(jù)庫(kù)表和主鍵之間的對(duì)應(yīng)關(guān)系,并須提供存儲(chǔ)過程,滿足客戶端的多種要求。由于客戶端增加、修改、刪除過程時(shí),需要改變過程ID,而整個(gè)系統(tǒng)是以過程ID來(lái)表示順序過程和并列過程的。一旦一個(gè)過程ID進(jìn)行了修改,其后所有的過程ID應(yīng)隨之修改,故數(shù)據(jù)庫(kù)部分除了需要建表之外,還需要提供存儲(chǔ)過程。刪除過程的存儲(chǔ)過程腳本如下:createorreplaceprocedureDeleteProc(PROCID_Valueinvarchar2:=50)ascurrProcIDvarchar2(50);oldProcIDvarchar2(50);newProcIDvarchar2(50);strPrjIDvarchar2(10);strprjNamevarchar2(50);fourProcIDinteger;maxProcIDinteger;stepinteger;newidinteger;TYPEt_cursorISREFCURSOR;v_ProcCountt_cursor;v_procNewCountt_cursor;v_procidproc_cid%TYPE;v_newProcidproc_cid%TYPE;beginstrPrjID:=substr(PROCID_Value,1,2);--取PrjIDifstrPrjID=PROCID_Valuethendeletefromproc_kswhereprocidlikePROCID_Value||'%';deletefromINFO_CRAFT_KSwhereprocidlikePROCID_Value||'%';--刪除產(chǎn)品/模塊信息表-工藝類表deletefromINFO_HW_KSwhereprocidlikePROCID_Value||'%';--刪除產(chǎn)品/模塊信息表-硬件類表deletefromINFO_SW_KSwhereprocidlikePROCID_Value||'%';--刪除產(chǎn)品/模塊信息表-軟件類deletefromINFO_TEST_KSwhereprocidlikePROCID_Value||'%';--刪除整機(jī)/模塊功能測(cè)試信息表deletefromPOPDEM_KSwhereprocidlikePROCID_Value||'%';--刪除用戶權(quán)限表else--selectprjnameintostrprjNamefromprj_kswhereprjid=strPrjID;selectprjnameintostrprjNamefromproc_kswhereprjid=strPrjIDandrownum<=1;fourProcID:=to_number(substr(PROCID_Value,length(PROCID_Value)-3,4));--取procid后四位轉(zhuǎn)換成數(shù)字if(fourProcID>=100)then--計(jì)算當(dāng)前應(yīng)該是順序還是并列maxProcID:=9900;step:=100;elsemaxProcID:=99;step:=1;endif;--刪除當(dāng)前需要?jiǎng)h除過程的記錄及該過程的記錄deletefromproc_kswhereprjid=strPrjIDandprocidlikePROCID_Value||'%';deletefromINFO_CRAFT_KSwhereprjid=strPrjIDandprocidlikePROCID_Value||'%';--刪除產(chǎn)品/模塊信息表-工藝類表deletefromINFO_HW_KSwhereprjid=strPrjIDandprocidlikePROCID_Value||'%';--刪除產(chǎn)品/模塊信息表-硬件類表deletefromINFO_SW_KSwhereprjid=strPrjIDandprocidlikePROCID_Value||'%';--刪除產(chǎn)品/模塊信息表-軟件類deletefromINFO_TEST_KSwhereprjid=strPrjIDandprocidlikePROCID_Value||'%';--刪除整機(jī)/模塊功能測(cè)試信息表deletefromPOPDEM_KSwhereprjid=strPrjIDandprocidlikePROCID_Value||'%';--刪除用戶權(quán)限表openv_ProcCountforselectprocidFROMproc_kswhereto_number(substr(procid,length(procid)-3,4))<=maxProcIDandto_number(substr(procid,length(procid)-3,4))>fourProcIDandlength(procid)=length(PROCID_Value)andsubstr(procid,1,length(procid)-4)=substr(PROCID_Value,1,length(PROCID_Value)-4)ORDERBYto_number(substr(procid,length(procid)-3,4))asc;--開始循環(huán)更新procid編號(hào)LOOPFETCHv_ProcCountINTOv_procid;EXITWHENv_ProcCount%NOTFOUND;--當(dāng)前有大于id的記錄,需要循環(huán)修改id號(hào),同時(shí)更新相關(guān)表oldProcID:=v_procid;newid:=to_number(substr(v_procid,length(v_procid)-3,4))-step;currProcID:=substr(oldProcID,1,length(oldProcID)-4)||trim(to_char(newid,'0000'));--更新節(jié)點(diǎn)表中所有子節(jié)點(diǎn)記錄openv_procNewCountforselectprocidfromproc_kswhereprocidlikeoldProcID||'%'andprjid=strPrjID;LoopFETCHv_procNewCountINTOv_newProcid;EXITWHENv_procNewCount%NOTFOUND;newProcID:=currProcID||substr(v_newProcid,length(oldProcID)+1,length(v_newProcid)-length(oldProcID)+1);updateproc_kssetprocid=newProcIDwhereprocid=v_newProcidandprjid=strPrjID;endloop;updateproc_kssetprocid=currProcIDwhereprocid=oldProcIDandprjid=strPrjID;updateINFO_CRAFT_KSsetprocid=currProcIDwhereprocid=oldProcID;--更新產(chǎn)品/模塊信息表-工藝類表updateINFO_HW_KSsetprocid=currProcIDwhereprocid=oldProcID;--更新產(chǎn)品/模塊信息表-硬件類表updateINFO_SW_KSsetprocid=currProcIDwhereprocid=oldProcID;--產(chǎn)品/模塊信息表-軟件類updateINFO_TEST_KSsetprocid=currProcIDwhereprocid=oldProcID;--整機(jī)/模塊功能測(cè)試信息表updatePOPDEM_KSsetprocid=currProcIDwhereprocid=oldProcID;--用戶權(quán)限表endloop;endif;endDELETEPROC; 其余的存儲(chǔ)過程腳本基本類似,不在敘述。另外系統(tǒng)中的項(xiàng)目表設(shè)計(jì)如表4-4所示,其余各表的結(jié)構(gòu)不在贅述。表4-4項(xiàng)目表PRJ_KS/*項(xiàng)目表*/編號(hào)列名來(lái)源數(shù)據(jù)類型取值范圍主鍵1PrjID/*項(xiàng)目ID*/原始VARCHAR2(長(zhǎng)度:10)√2PrjName/*項(xiàng)目名稱*/原始VARCHAR2(長(zhǎng)度:50)√3BeginDate/*開始時(shí)間*/原始DATE4EndDate/*結(jié)束時(shí)間*/原始DATE5PrjMgr/*項(xiàng)目負(fù)責(zé)人*/原始VARCHAR2(長(zhǎng)度:20)6PrjMem/*項(xiàng)目成員*/原始VARCHAR2(長(zhǎng)度:500)7PrjStatus/*項(xiàng)目狀態(tài)*/原始VARCHAR2(長(zhǎng)度:10)“XX”00:中止01:進(jìn)行中02:完成03:廢除8Description/*項(xiàng)目描述*/原始VARCHAR2(長(zhǎng)度:1000)9Reserve1/*備用列1*/VARCHAR2(長(zhǎng)度:10)10Reserve2/*備用列2*/VARCHAR2(長(zhǎng)度:10)兩個(gè)主鍵:主鍵1<PrjID>,主鍵2<PrjName>4.3本章小結(jié)本章為系統(tǒng)具體實(shí)現(xiàn)的表述章節(jié),在本章中首先從系統(tǒng)的總體用例圖出發(fā)對(duì)系統(tǒng)的詳細(xì)設(shè)計(jì)做了描述。接下來(lái)對(duì)項(xiàng)目管理系統(tǒng)各功能設(shè)計(jì)實(shí)現(xiàn)做出了逐一的描述其中有客戶端的設(shè)計(jì)實(shí)現(xiàn)服務(wù)器端的設(shè)計(jì)實(shí)現(xiàn)通信協(xié)議的設(shè)計(jì)實(shí)現(xiàn)及數(shù)據(jù)庫(kù)的設(shè)計(jì)實(shí)現(xiàn)。
第5章系統(tǒng)測(cè)試5.1系統(tǒng)測(cè)試定義系統(tǒng)測(cè)試,英文是SystemTesting。是把現(xiàn)有被測(cè)試系統(tǒng)、計(jì)算機(jī)硬件環(huán)境、外部其他設(shè)施以及網(wǎng)絡(luò)連接等等眾多要素結(jié)合為一體,進(jìn)行被測(cè)試系統(tǒng)的功能測(cè)試性能測(cè)試檢查系統(tǒng)是否能完成規(guī)定需求并對(duì)系統(tǒng)運(yùn)行的整體表現(xiàn)進(jìn)行評(píng)估。當(dāng)然這種測(cè)試需要針對(duì)性的,它針對(duì)具體系統(tǒng)進(jìn)行有計(jì)劃的程序化的測(cè)試,其主旨就是以需求定義為標(biāo)準(zhǔn)逐步的對(duì)系統(tǒng)各個(gè)模塊已經(jīng)整體進(jìn)行測(cè)試。待找出系統(tǒng)漏洞后針對(duì)先關(guān)問題提出解決方案并組織改善。功能測(cè)試是以系統(tǒng)整體需求說明書為依據(jù)的黑盒測(cè)試,必須涵蓋系統(tǒng)所有的內(nèi)部模塊。測(cè)試單元并不只是需要測(cè)試的系統(tǒng)本身,連帶著軟件所需的硬件環(huán)境、外部設(shè)施、一些聯(lián)合開發(fā)的軟件系統(tǒng)重要的數(shù)據(jù)庫(kù)體系都要進(jìn)行測(cè)試。5.2系統(tǒng)測(cè)試相關(guān)方法介紹為了保證項(xiàng)目的質(zhì)量和性能,通常要在項(xiàng)目后期進(jìn)行系統(tǒng)測(cè)試。系統(tǒng)測(cè)試是一個(gè)很大的概念,有許多不同的方法。下面簡(jiǎn)單介紹幾種比較常用的測(cè)試方法。5.2.1恢復(fù)測(cè)試檢測(cè)系統(tǒng)的還原能力通常采用恢復(fù)測(cè)試的方法。系統(tǒng)的還原能力是指從錯(cuò)誤狀態(tài)到正常運(yùn)行狀態(tài)的時(shí)間,其解決錯(cuò)誤的時(shí)間越短,其性能越高。模擬失敗場(chǎng)景是進(jìn)行恢復(fù)測(cè)試的第一步,并觀察系統(tǒng)在一定時(shí)間內(nèi)的表現(xiàn)。針對(duì)那些可進(jìn)行自我復(fù)原的系統(tǒng)測(cè)試人員將對(duì)二次初始化、檢查點(diǎn)監(jiān)測(cè)、重要信息復(fù)原和系統(tǒng)重建等機(jī)制等過程進(jìn)行可行性監(jiān)測(cè);針對(duì)認(rèn)為操控的復(fù)原系統(tǒng)過程,必須統(tǒng)計(jì)其恢復(fù)時(shí)間、恢復(fù)成本、恢復(fù)可行性。并進(jìn)行多次試驗(yàn)。5.2.2安全測(cè)試檢測(cè)系統(tǒng)抵御外部攻擊的能力通常采用安全測(cè)試。為了進(jìn)行安全測(cè)試,通常需要模擬各種系統(tǒng)可能受到的外部攻擊方式。這個(gè)過程有以下幾種方式:通過木馬病毒等手段破譯用戶密碼登陸口令等②制定專門的應(yīng)急機(jī)制來(lái)防護(hù)外部攻擊,檢測(cè)到攻擊則自動(dòng)關(guān)閉數(shù)據(jù)庫(kù)連接等③在人為造成系統(tǒng)故障的時(shí)候,借機(jī)侵入系統(tǒng)內(nèi)部數(shù)據(jù)庫(kù);④通過現(xiàn)有信息以及系統(tǒng)開發(fā)人員疏漏外流的信息推測(cè)系統(tǒng)安全保護(hù)模式并借機(jī)侵入。系統(tǒng)的安全性是相對(duì)的不是絕對(duì)的只要人力時(shí)間允許沒有系統(tǒng)是不可入侵的,只是侵犯程度的大小區(qū)別。所以在這個(gè)過程中會(huì)主要是統(tǒng)計(jì)系統(tǒng)安全機(jī)制的相對(duì)可靠性。5.2.3性能測(cè)試對(duì)于有些大型的實(shí)時(shí)和嵌入式系統(tǒng),軟件大道需求書中所規(guī)定的功能需求相對(duì)容易,而真正實(shí)踐中對(duì)性能需求的滿足則是另一回事。盡管對(duì)每一個(gè)單元的性能測(cè)試的結(jié)果滿足對(duì)個(gè)體單元的性能需求,但是系統(tǒng)必定是有眾多單元一起組成的它們之間具有一定的連帶關(guān)系,所以當(dāng)系統(tǒng)進(jìn)行集成后系統(tǒng)未必就能達(dá)到性能要求。性能測(cè)試不應(yīng)是一個(gè)獨(dú)立的過程其最好伴隨著強(qiáng)度測(cè)試一起進(jìn)行。5.2.4強(qiáng)度測(cè)試所謂強(qiáng)度就是系統(tǒng)當(dāng)遇到外部異常情況時(shí)的自身調(diào)節(jié)能力。本測(cè)試過程就是要讓系統(tǒng)在與自身標(biāo)準(zhǔn)配置不同的環(huán)境下運(yùn)行進(jìn)而觀察系統(tǒng)表現(xiàn)。這個(gè)過程可以通過如下方式進(jìn)行1進(jìn)行與系統(tǒng)標(biāo)準(zhǔn)的中斷時(shí)常不符的測(cè)試測(cè)試系統(tǒng)的健壯性。2按比率增加信息吞吐率,測(cè)試系統(tǒng)子模塊的運(yùn)行速度的遲緩程度;3滿負(fù)荷運(yùn)行系統(tǒng)占用額定內(nèi)存進(jìn)行測(cè)試;4進(jìn)行到運(yùn)行環(huán)境的操作系統(tǒng)的極限觀察系統(tǒng)的表現(xiàn)看是否也隨之系統(tǒng)停止運(yùn)行。5.3系統(tǒng)測(cè)試過程概述功能開發(fā)完畢,系統(tǒng)要進(jìn)行整體的測(cè)試,來(lái)檢查需求同實(shí)現(xiàn)是否匹配。具體測(cè)試如下:在用戶登錄的時(shí)候,要求用戶名和密碼是必須填寫的信息。本測(cè)試主要是通過對(duì)輸入的用戶信息進(jìn)行分析與判斷,得出預(yù)期的輸出結(jié)果。然后將實(shí)際的輸出結(jié)果與預(yù)期的輸出結(jié)果進(jìn)行比較,得出最終的結(jié)論。5.3.1登錄失敗的測(cè)試測(cè)試用例見表表:測(cè)試用例用戶名密碼預(yù)期輸出結(jié)果111111123456注冊(cè)失敗輸入以上登錄信息以后,頁(yè)面顯示用戶登錄失敗,如圖6-1圖5-1登錄失敗5.3.2登錄成功的測(cè)試表:測(cè)試用例用戶名密碼預(yù)期輸出結(jié)果123456123456登錄成功圖5-2此時(shí),測(cè)試就暫告一個(gè)段落了。部署實(shí)現(xiàn):(1)我們要嚴(yán)格按照他給的規(guī)范來(lái)進(jìn)行(注意其中的層次關(guān)系):
(2)建立好了上面的目錄層次關(guān)系之后,我們下面的工作就是要對(duì)其中的信息進(jìn)行完善和處理,這里我們要的工作:編寫WEB.XML文件:建議拷貝以前有的,這樣可以防止出錯(cuò)包括:<?xmlversion="1.0"encoding="UTF-8"?>
<web-appversion="2.4"
xmlns="/xml/ns/j2ee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/j2ee
/xml/ns/j2ee/web-app_2_4.xsd">
//需要添加的內(nèi)容<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>這部分的內(nèi)容是不可以缺少的將編寫好的servlet程序編譯后的文件XX.class文件拷貝到classes文件夾下面回到WEB.XML文件當(dāng)中,這時(shí)我們就開始進(jìn)行關(guān)聯(lián)這上面的“//插入內(nèi)容”這個(gè)地方加上:<servlet>
<servlet-name>MyFirstServlet</servlet-name>
<servlet-class>XX</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyFirstServlet</servlet-name>
<url-pattern>/fang</url-pattern>
</servlet-mapping>說明幾點(diǎn):A.注意這里的兩個(gè)NAME的值一定要保持一致,但是可以是隨意的一個(gè)名字,他是給tomcat解析用的。B.這里的'XX'一定是剛才拷貝過來(lái)的文件的名字且不帶.class,另外我們也要注意的就是這里我們使用的是裸體類,但是如果說他不是裸體類的話,比如在com.fjg.test包中,那么我們先就要建立相應(yīng)的層次,然后把class文件放到他下面去,這時(shí)我們?cè)谏厦婢筒荒軌蛑苯佑谩癤X”而是要把它的包名全部帶上,應(yīng)該寫成“com.fjg.text.XX”C.“/fang”這里是我們?cè)诘刂窓谥羞M(jìn)行輸入時(shí)的地址標(biāo)簽,也就是訪問它的url是我們自己定義的,這個(gè)是根據(jù)實(shí)際情況進(jìn)行的。5.4本章小結(jié)本章為表述系統(tǒng)測(cè)試環(huán)節(jié)的單元,首先本章介紹了系統(tǒng)測(cè)試的相關(guān)知識(shí)及常用的測(cè)試方法,并通過身份認(rèn)證等測(cè)試用例對(duì)系統(tǒng)的測(cè)試進(jìn)行了簡(jiǎn)要的介紹。
結(jié)論通過對(duì)該企業(yè)管理系統(tǒng)的完善,加強(qiáng)了企業(yè)管理的力度。實(shí)現(xiàn)了企業(yè)對(duì)用戶信息的分類管理以及企業(yè)對(duì)眾多項(xiàng)目信息的科學(xué)管理。對(duì)于企業(yè)管理人員來(lái)說,通過企業(yè)管理系統(tǒng)對(duì)企業(yè)進(jìn)行有效管理,可以更高效利用現(xiàn)有的有限資源,從項(xiàng)目開發(fā)整體角度,運(yùn)用系統(tǒng)的理論、方法對(duì)工程項(xiàng)目開發(fā)到運(yùn)作整個(gè)流程中的全部工作進(jìn)行高效的管理。在該系統(tǒng)的應(yīng)用過程中,促進(jìn)了管理者對(duì)項(xiàng)目開發(fā)過程中各種資源的有效管理,實(shí)現(xiàn)了跟蹤和控制項(xiàng)目開發(fā)進(jìn)度,完成了項(xiàng)目開發(fā)中各部分的責(zé)任追蹤[23-25]。在企業(yè)管理系統(tǒng)中蘊(yùn)含著科學(xué)的項(xiàng)目管理理念,整合了項(xiàng)目管理實(shí)踐經(jīng)驗(yàn),并將這些這些理念和實(shí)踐經(jīng)驗(yàn)用于規(guī)范企業(yè)的管理行為,形成了有效的企業(yè)項(xiàng)目管理體系。本企業(yè)管理系統(tǒng)采取了C/S架構(gòu),結(jié)合MFC技術(shù),利用Orcale承載數(shù)據(jù)庫(kù)。通過綜合運(yùn)用各類技術(shù),充分發(fā)揮各類技術(shù)的優(yōu)勢(shì),形成了一款極具高效管理效果的企業(yè)管理系統(tǒng)。為了提高系統(tǒng)的穩(wěn)定性和性能,采取了客戶機(jī)/服務(wù)器的結(jié)構(gòu),不再僅使用服務(wù)器進(jìn)行數(shù)據(jù)的處理,而是將任務(wù)分配給客戶端,服務(wù)器只用于接收客戶端的結(jié)果,提高了客戶端的工作效率和相應(yīng)速度,緩解了服務(wù)器的壓力。本系統(tǒng)根據(jù)企業(yè)特點(diǎn),只在企業(yè)內(nèi)部局域網(wǎng)范圍內(nèi)進(jìn)行部署實(shí)施,不僅有助于系統(tǒng)的運(yùn)行階段的維護(hù),也對(duì)企業(yè)的數(shù)據(jù)安全提供了一定的保護(hù)環(huán)境。在客戶體驗(yàn)方面,基于C/S架構(gòu)的系統(tǒng),界面表現(xiàn)形式更加豐富,與業(yè)務(wù)邏輯貼合更加緊密。而基于Orcale的數(shù)據(jù)庫(kù)處理,更加適合作為客戶機(jī)/服務(wù)器系統(tǒng)中服務(wù)器端的數(shù)據(jù)庫(kù)系統(tǒng)?;谏鲜黾夹g(shù)優(yōu)勢(shì),本系統(tǒng)集合了客戶端協(xié)助處理、服務(wù)器快速響應(yīng)、操作界面豐富、數(shù)據(jù)處理靈便等特點(diǎn),最終為企業(yè)的快速、科學(xué)管理,提供了必要的手段。本企業(yè)項(xiàng)目管理系統(tǒng)完成了客戶端模塊、服務(wù)器端模塊、維護(hù)模塊、通信協(xié)議模塊以及數(shù)據(jù)庫(kù)的建立等功能,雖然基本實(shí)現(xiàn)了客戶端的協(xié)助處理、服務(wù)器的快速處理及快速響應(yīng)、自定義通信協(xié)議的構(gòu)造以及復(fù)雜數(shù)據(jù)的處理等功能,但是本企業(yè)管理系統(tǒng)還存在著一些不足。在企業(yè)管理系統(tǒng)中,沒有融入企業(yè)管理的全局信息流的思想,容易出現(xiàn)企業(yè)管理的信息孤島。系統(tǒng)的功能和結(jié)構(gòu)與企業(yè)整體組織結(jié)構(gòu)和企業(yè)運(yùn)作特點(diǎn)未能實(shí)現(xiàn)緊密聯(lián)系;系統(tǒng)的操作流程和企業(yè)的項(xiàng)目管理方法貼合不夠緊密;系統(tǒng)用戶為完全采用權(quán)限管理模式,沒有實(shí)現(xiàn)依據(jù)不同權(quán)限對(duì)企業(yè)不同層面和不同部門的針對(duì)性管理,系統(tǒng)的安全性管理不夠完備;對(duì)于數(shù)據(jù)庫(kù)還沒有實(shí)現(xiàn)災(zāi)難備份功能;歷史數(shù)據(jù)僅限于存儲(chǔ)和查看之用,缺乏對(duì)歷史數(shù)據(jù)的科學(xué)分析,造成歷史數(shù)據(jù)的浪費(fèi)。論文在撰寫的時(shí)候,本企業(yè)管理系統(tǒng)雖然已經(jīng)有部分功能已經(jīng)投入使用,但是針對(duì)不完善的功能還在進(jìn)行二期研發(fā)。還有些工作需要進(jìn)一步完成:(1)針對(duì)二期開發(fā),進(jìn)一步完善不明確的需求。(2)系統(tǒng)多線程方面還不夠穩(wěn)定,需要進(jìn)一步優(yōu)化代碼。(3)融合ERP的部分管理理念,完善系統(tǒng)中各部分之間信息流的傳遞過程,減少信息孤島的產(chǎn)生,進(jìn)一步完善符合企業(yè)運(yùn)作特點(diǎn)管理功能。(4)在熟知企業(yè)管理組織結(jié)構(gòu)的前提下,形成一整套科學(xué)完備的權(quán)限管理制度,進(jìn)一步提高企業(yè)的安全管理模式。(5)針對(duì)可挖掘的企業(yè)歷史數(shù)據(jù)信息,增加企業(yè)歷史數(shù)據(jù)的分析功能。(6)根據(jù)企業(yè)運(yùn)營(yíng)周期,定期進(jìn)行數(shù)據(jù)的災(zāi)難備份。希望在以后企業(yè)管理系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)中彌補(bǔ)上述的不足。
參考文獻(xiàn)馬建峰,張廣泉.基于C/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度晚會(huì)贊助合同示例
- 2025卓越的商業(yè)店鋪?zhàn)赓U合同
- 蘭州交大附中數(shù)學(xué)試卷
- 講解整張數(shù)學(xué)試卷
- 南充市小學(xué)畢業(yè)數(shù)學(xué)試卷
- 綿陽(yáng)高三二診數(shù)學(xué)試卷
- 執(zhí)業(yè)藥師之《西藥學(xué)綜合知識(shí)與技能》過關(guān)檢測(cè)附答案詳解(輕巧奪冠)
- 荔灣九年級(jí)期末數(shù)學(xué)試卷
- 2025年北京老年醫(yī)院面向2025年應(yīng)屆畢業(yè)生招聘(第二批)2人模擬試卷含答案詳解(精練)
- 昆明期中數(shù)學(xué)試卷
- 2025四川瀘州臨港物業(yè)管理有限公司招聘16人筆試參考題庫(kù)附帶答案詳解版
- DB11∕T 2342-2024 城市軌道交通牽引供電架空剛性接觸網(wǎng)技術(shù)規(guī)范
- (2025)入黨積極分子考試試題庫(kù)(附參考答案)
- 鋰電化成老化工藝培訓(xùn)
- 2025秋裝流行趨勢(shì)培訓(xùn)資料
- 手機(jī)釘釘培訓(xùn)課件
- 口腔器械銷售培訓(xùn)課件
- 小兒急危重癥急救護(hù)理講課件
- 康復(fù)英語(yǔ)面試題及答案
- 風(fēng)機(jī)吊裝安全培訓(xùn)
- 六級(jí)詞匯5500(亂序+音標(biāo)+默寫)
評(píng)論
0/150
提交評(píng)論