




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目 錄1引言12 項(xiàng)目背景22.1項(xiàng)目提出的背景22.2名詞解釋22.3問題的提出32.4分析問題33 需求分析43.1產(chǎn)品介紹43.1.1 數(shù)據(jù)比較方法的設(shè)計(jì)思路43.1.2 應(yīng)用目標(biāo)43.2產(chǎn)品面向人群43.3產(chǎn)品功能性需求43.4產(chǎn)品模塊劃分53.4.1模塊劃分53.4.2文件導(dǎo)入模塊53.4.3數(shù)據(jù)比較模塊63.4.4數(shù)據(jù)修改模塊73.4.5新數(shù)據(jù)文件管理模塊83.5未來可能出現(xiàn)的需求及解決方案93.6故障處理要求94概要設(shè)計(jì)104.1系統(tǒng)設(shè)計(jì)目標(biāo)104.1.1近期目標(biāo)104.1.2長遠(yuǎn)目標(biāo)實(shí)現(xiàn)系統(tǒng)的二次開發(fā)104.2系統(tǒng)結(jié)構(gòu)114.2.1系統(tǒng)類圖114.2.2類功能描述124.3系統(tǒng)
2、流程154.3.1系統(tǒng)總體時(shí)序圖154.3.2系統(tǒng)時(shí)序圖分析164.4數(shù)據(jù)對比解決方案的評估175 系統(tǒng)功能實(shí)現(xiàn)185.1 文件導(dǎo)入模塊功能實(shí)現(xiàn)185.1.1 文件類型匹配檢查185.2 數(shù)據(jù)比較模塊195.2.1 表結(jié)構(gòu)匹配檢查205.2.2 數(shù)據(jù)量匹配檢查235.2.3 數(shù)據(jù)比較245.2.4 比較結(jié)果顯示245.3 數(shù)據(jù)修改模塊265.3.1 切換數(shù)據(jù)庫的邏輯處理265.3.2 動態(tài)存儲要修改的表275.4 新數(shù)據(jù)文件管理模塊285.4.1 保存修改數(shù)據(jù)286 總結(jié)30參考文獻(xiàn)致謝1 引言在實(shí)現(xiàn)企業(yè)信息化的過程中,大家最常掛在嘴邊的一句話是“三分技術(shù)、七分管理、十二分?jǐn)?shù)據(jù)”,以此來表達(dá)對
3、數(shù)據(jù)的高度重視。數(shù)據(jù)可以說是一個(gè)企業(yè)的血液,它隨著企業(yè)運(yùn)作不斷流動,并且在流動過程中隨著數(shù)據(jù)的采集和使用不斷變換著。在系統(tǒng)運(yùn)行過程中,及早發(fā)現(xiàn)和糾正數(shù)據(jù)質(zhì)量問題可大大降低成本和失敗的風(fēng)險(xiǎn)。數(shù)據(jù)質(zhì)量不高,有人簡單地以為數(shù)據(jù)是錯(cuò)誤的,數(shù)據(jù)不可用。其實(shí)數(shù)據(jù)質(zhì)量問題比較復(fù)雜,不能用簡單的對錯(cuò)來區(qū)分。簡單的說,評價(jià)數(shù)據(jù)質(zhì)量的唯一標(biāo)準(zhǔn)就是看它是否能夠滿足應(yīng)用需求。在數(shù)據(jù)的流動過程中,質(zhì)量低下的數(shù)據(jù)往往是在數(shù)據(jù)的采集和錄入時(shí)產(chǎn)生的。目前有一種比較好的方法可以保證數(shù)據(jù)質(zhì)量,即雙工輸入比較法。就是將同一批數(shù)據(jù)由兩個(gè)輸入人員在不同的時(shí)間和不同的終端上分別錄入,并且形成兩個(gè)臨時(shí)數(shù)據(jù)庫文件,然后由第三個(gè)人在程序的作用
4、下對兩個(gè)庫文件中的數(shù)據(jù)進(jìn)行逐項(xiàng)比較并進(jìn)行確認(rèn)或修改。在這種方法中,盡管同一批數(shù)據(jù)被錄入了兩次從而造成了數(shù)據(jù)冗余和影響了錄入進(jìn)度,但對于對輸入數(shù)據(jù)的正確性要求很高的場合,是一種不可缺少的和行之有效的方法,因?yàn)椋瑑蓚€(gè)數(shù)據(jù)錄入者都同時(shí)在某處出錯(cuò)的機(jī)會極少,故這種方法可以極大地減少出錯(cuò)率2。“勝利油田圖頭數(shù)據(jù)質(zhì)量檢測工具”就是采用雙工輸入比較法的解決方案,專門檢測錄入數(shù)據(jù)質(zhì)量的工具。2 項(xiàng)目背景2.1項(xiàng)目提出的背景勝利油田在對一口井進(jìn)行測量的過程中,會通過地震、氣壓、光電等方法對這口井的各種情況進(jìn)行測量,然后得出大量、復(fù)雜而又專業(yè)的圖表。由于技術(shù)瓶頸的原因這些圖表中所攜帶的數(shù)據(jù)還無法通過計(jì)算機(jī)技術(shù)自動
5、的識別并填寫到基礎(chǔ)數(shù)據(jù)庫中。這就需要數(shù)據(jù)錄入人員手工的來完成這項(xiàng)工作。由于專業(yè)的劃分不同這些數(shù)據(jù)錄入人員大部分對石油地址行業(yè)的數(shù)據(jù)不敏感,再加上超大的數(shù)據(jù)量使得錄入數(shù)據(jù)庫中的數(shù)據(jù)質(zhì)量無法得到保證,而往往在現(xiàn)實(shí)生產(chǎn)活動中對數(shù)據(jù)有一個(gè)共同的要求,那就是數(shù)據(jù)的準(zhǔn)確性和精確性,因而新錄入的數(shù)據(jù)無法直接使用,必須通過有著相當(dāng)專業(yè)知識的數(shù)據(jù)質(zhì)量檢測人員對數(shù)據(jù)進(jìn)行檢查。2.2名詞解釋(1) 勝利油田數(shù)據(jù)質(zhì)量錄入人員:勝利油田負(fù)責(zé)將基礎(chǔ)數(shù)據(jù)錄入數(shù)據(jù)庫中的專業(yè)人員,他們的工作是從實(shí)際生產(chǎn)中等到的各種圖表數(shù)據(jù)中識別出有用的基礎(chǔ)數(shù)據(jù),并將這些基礎(chǔ)數(shù)據(jù)錄入到數(shù)據(jù)庫中。(2) 勝利油田數(shù)據(jù)質(zhì)量檢測員:勝利油田負(fù)責(zé)檢測數(shù)
6、據(jù)質(zhì)量的專業(yè)人員,他們的工作是分析和排除基礎(chǔ)數(shù)據(jù)中的質(zhì)量問題,保證數(shù)據(jù)在流動過程中的準(zhǔn)確性。(3) 雙工輸入比較法:將同一批數(shù)據(jù)由兩個(gè)輸入人員在不同的時(shí)間和不同的終端上分別錄入,并且形成兩個(gè)臨時(shí)數(shù)據(jù)庫文件,然后由第三個(gè)人在程序的作用下對兩個(gè)庫文件中的數(shù)據(jù)進(jìn)行逐項(xiàng)比較并進(jìn)行確認(rèn)或修改的方法。(4) 數(shù)據(jù)的準(zhǔn)確性:數(shù)據(jù)的準(zhǔn)確性一般是說數(shù)據(jù)的測量值與真實(shí)值相比的符合情況,但在油田生產(chǎn)數(shù)據(jù)的采集和加工處理過程中,數(shù)據(jù)的準(zhǔn)確性往往是指采集入庫的數(shù)據(jù)值和現(xiàn)場采集記錄的正確值之間的差異。2.3問題的提出勝利油田數(shù)據(jù)質(zhì)量檢測工作現(xiàn)階段存在的主要問題是:工作量巨大使數(shù)據(jù)質(zhì)量檢測人員對數(shù)據(jù)的敏感性下降,專業(yè)人員的
7、匱乏使得數(shù)據(jù)質(zhì)量的檢測工作質(zhì)量年以保證,所有工作都由人工完成使得效率低下。希望解決的問題是:缺少一個(gè)能夠有效的檢測出錄入數(shù)據(jù)錯(cuò)誤的工具,能夠改善勝利油田數(shù)據(jù)質(zhì)量檢測員高壓的工作現(xiàn)狀,幫助他們高效率、高質(zhì)量的完成數(shù)據(jù)質(zhì)量檢測工作。2.4分析問題勝利油田圖頭數(shù)據(jù)是存儲在access數(shù)據(jù)庫的不同表當(dāng)中的。由于測井形式多種多樣導(dǎo)致這些access數(shù)據(jù)庫中的表的結(jié)構(gòu)也互不相同,這樣就難以從石油地質(zhì)專業(yè)的角度找到一個(gè)統(tǒng)一合理的解決方案來處理這些數(shù)據(jù)。從計(jì)算機(jī)技術(shù)的角度考慮我們采用雙工輸入比較法來解決這個(gè)問題。雙工輸入比較法解決方案的操作是這樣的:通過對兩個(gè)數(shù)據(jù)錄入人員錄入的兩份具有相同結(jié)構(gòu)的access數(shù)
8、據(jù)庫中的數(shù)據(jù)的對比,可以找出兩份數(shù)據(jù)中的差異。在一對存在差異的數(shù)據(jù)中,至少有一個(gè)數(shù)據(jù)是錯(cuò)誤的,數(shù)據(jù)質(zhì)檢人員可以通過改正這寫錯(cuò)誤數(shù)據(jù)得到一份數(shù)據(jù)質(zhì)量較高的數(shù)據(jù)文件。3 需求分析3.1產(chǎn)品介紹本軟件的主要目標(biāo)是通過數(shù)據(jù)比較的方法,使工作人員能夠方便的發(fā)現(xiàn)錄入到access數(shù)據(jù)庫中的數(shù)據(jù)的錯(cuò)誤,進(jìn)而改正這些錯(cuò)誤,以滿足某些行業(yè)對數(shù)據(jù)質(zhì)量的要求。3.1.1 數(shù)據(jù)比較方法的設(shè)計(jì)思路本軟件的主數(shù)據(jù)比較方法是指通過對兩份由數(shù)據(jù)錄入人員錄入到具有相同結(jié)構(gòu)的access數(shù)據(jù)庫文件中的數(shù)據(jù)進(jìn)行比較,發(fā)現(xiàn)兩份數(shù)據(jù)中差異的部分,則至少有有一個(gè)人的數(shù)據(jù)是錯(cuò)誤的。由于兩個(gè)人同時(shí)犯同一個(gè)錯(cuò)誤的幾率比一個(gè)人犯錯(cuò)誤的幾率低得多
9、,所以這種方法可以發(fā)現(xiàn)大多數(shù)的錯(cuò)誤。3.1.2 應(yīng)用目標(biāo)此工具可以是數(shù)據(jù)質(zhì)檢人員方便的發(fā)現(xiàn)錄入數(shù)據(jù)中的大部分錯(cuò)誤,從而提高工作效率和質(zhì)量。3.2產(chǎn)品面向人群本軟件主要面向的人群是勝利油田數(shù)據(jù)質(zhì)檢人員,他們現(xiàn)在面臨的主要問題是難以高效的對大量的錄入數(shù)據(jù)進(jìn)行檢查,本軟件可以方便的使他們發(fā)現(xiàn)錄入數(shù)據(jù)中的錯(cuò)誤,從而高效的完成工作任務(wù)。3.3產(chǎn)品功能性需求功能描述:軟件的主要任務(wù)是實(shí)現(xiàn)對兩個(gè)具有相同結(jié)構(gòu)的access數(shù)據(jù)庫文件中數(shù)據(jù)的比較,要求能夠靈活的查看數(shù)據(jù)庫表中的數(shù)據(jù)在數(shù)據(jù)庫,要能夠明確的標(biāo)記差異的數(shù)據(jù),在界面中可以對錯(cuò)誤的數(shù)據(jù)進(jìn)行修改,要能夠生成新的數(shù)據(jù)文件,其結(jié)構(gòu)與參與對比的兩個(gè)數(shù)據(jù)庫文件相同
10、,其數(shù)據(jù)為修改后正確的數(shù)據(jù)。具體功能需求如下:l 數(shù)據(jù)比較只針對結(jié)構(gòu)相同的表,對不同者需要作出提示。l 需要實(shí)現(xiàn)查看全部表和只查看存在差異的表。l 需要實(shí)現(xiàn)參與比較的兩個(gè)數(shù)據(jù)文件的同步和異步查看。l 需要實(shí)現(xiàn)查看全部表和查看存在差異的表。l 修改數(shù)據(jù)是需要實(shí)現(xiàn)修改數(shù)據(jù)庫的動態(tài)切換。l 修改數(shù)據(jù)只針對新生成的數(shù)據(jù)文件,參與比較的兩個(gè)文件不變。3.4產(chǎn)品模塊劃分3.4.1模塊劃分本系統(tǒng)劃分為文件輸入模塊、數(shù)據(jù)比較模塊、數(shù)據(jù)修改模塊和新數(shù)據(jù)文件管理模塊四個(gè)模塊,具體信息如表3-1:表31模塊劃分table 3-1 module partition模塊劃分子模塊文件導(dǎo)入模塊文件類型匹配檢查生成數(shù)據(jù)庫連
11、接串?dāng)?shù)據(jù)比較模塊表結(jié)構(gòu)匹配檢查數(shù)據(jù)量匹配檢查數(shù)據(jù)比較比較結(jié)果顯示數(shù)據(jù)修改模塊切換數(shù)據(jù)庫的邏輯處理動態(tài)存儲要修改的表新數(shù)據(jù)文件管理模塊保存修改數(shù)據(jù)生成新數(shù)據(jù)文件3.4.2文件導(dǎo)入模塊功能描述:此模塊負(fù)責(zé)導(dǎo)入兩個(gè)access數(shù)據(jù)庫文件,并與對應(yīng)的兩個(gè)access數(shù)據(jù)庫取得連接。 文件類型匹配檢查表32文件類型匹配檢查table 3-2 check the file type matches名稱、標(biāo)識符文件類型匹配檢查功能描述檢查導(dǎo)入的兩個(gè)數(shù)據(jù)文件是否都為access數(shù)據(jù)文件輸入兩個(gè)數(shù)據(jù)文件操作序列在導(dǎo)入兩個(gè)數(shù)據(jù)庫文件后執(zhí)行輸出1、若兩個(gè)文件都是access數(shù)據(jù)文件,繼續(xù)執(zhí)行;2、若兩
12、個(gè)文件不都是access數(shù)據(jù)文件,作出提示。生成數(shù)據(jù)庫連接串表33生成數(shù)據(jù)庫連接串table 3-3 database connection string generated名稱、標(biāo)識符生成數(shù)據(jù)庫連接串功能描述生成兩個(gè)數(shù)據(jù)庫文件對應(yīng)的連接字符串輸入兩個(gè)數(shù)據(jù)庫文件路徑操作序列在導(dǎo)入兩個(gè)數(shù)據(jù)庫文件,并檢查類型匹配通過后執(zhí)行輸出兩個(gè)access數(shù)據(jù)庫的連接串3.4.3數(shù)據(jù)比較模塊功能描述:對兩個(gè)數(shù)據(jù)庫中結(jié)構(gòu)相同的數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行比較,差異數(shù)據(jù)作出明確標(biāo)識。 表結(jié)構(gòu)匹配檢查表34表結(jié)構(gòu)匹配檢查table 3-4 table structure matching check
13、名稱、標(biāo)識符表結(jié)構(gòu)匹配檢查功能描述對名稱相同的兩個(gè)表進(jìn)行結(jié)構(gòu)檢查輸入兩個(gè)數(shù)據(jù)庫中名稱相同的兩個(gè)表操作序列獲取數(shù)據(jù)庫連接并取得兩個(gè)表后執(zhí)行輸出1、若兩個(gè)表結(jié)構(gòu)相同,則繼續(xù)執(zhí)行; 2、若兩個(gè)表結(jié)構(gòu)不同,則提示不能進(jìn)行比較。 數(shù)據(jù)量匹配檢查表35數(shù)據(jù)量匹配檢查table 3-5 check the amount of data matching名稱、標(biāo)識符數(shù)據(jù)量匹配檢查功能描述檢查兩個(gè)數(shù)據(jù)表的數(shù)據(jù)量是否相同輸入兩個(gè)結(jié)構(gòu)相同的數(shù)據(jù)表操作序列表結(jié)構(gòu)匹配檢查通過后執(zhí)行輸出1、 若兩個(gè)數(shù)據(jù)表的數(shù)據(jù)量相同,則繼續(xù)執(zhí)行; 2、 若兩個(gè)數(shù)據(jù)表的數(shù)據(jù)量不相同,則提示不能進(jìn)行比較。 數(shù)據(jù)比
14、較表36數(shù)據(jù)比較table 3-6 data comparison名稱、標(biāo)識符數(shù)據(jù)比較功能描述對兩個(gè)數(shù)據(jù)表中的每一個(gè)數(shù)據(jù)進(jìn)行比較輸入兩個(gè)結(jié)構(gòu)和數(shù)據(jù)量都相同的數(shù)據(jù)表操作序列在表結(jié)構(gòu)匹配檢查和數(shù)據(jù)量匹配檢查都通過后執(zhí)行輸出差異數(shù)據(jù)所在位置比較結(jié)果顯示表37比較結(jié)果顯示table 3-7 comparison of results名稱、標(biāo)識符比較結(jié)果顯示功能描述將對兩個(gè)表中數(shù)據(jù)比較的結(jié)果顯示出來輸入1、 兩個(gè)進(jìn)行比較的數(shù)據(jù)表2、 差異數(shù)據(jù)所在位置操作序列在數(shù)據(jù)比較完成后執(zhí)行輸出1、 對沒有差異的數(shù)據(jù)正常顯示; 2、 對存在差異的數(shù)據(jù)用紅色標(biāo)記,其所在行用藍(lán)色標(biāo)記。3.4.4數(shù)據(jù)修改模塊
15、 切換數(shù)據(jù)庫的邏輯處理表38切換數(shù)據(jù)庫的邏輯處理table 3-8 logic processing of switch database名稱、標(biāo)識符切換數(shù)據(jù)庫的邏輯處理功能描述處理切換數(shù)據(jù)庫時(shí)的邏輯關(guān)系輸入1、 上一次選擇的數(shù)據(jù)庫2、 當(dāng)前選擇的數(shù)據(jù)庫操作序列在比較結(jié)果顯示、新數(shù)據(jù)庫文件生成后執(zhí)行輸出當(dāng)前選擇表的基本信息及其中的數(shù)據(jù)補(bǔ)充說明動態(tài)存儲要修改的表表39動態(tài)存儲要修改的表table 3-9 dynamic storage modification table名稱、標(biāo)識符動態(tài)存儲修改的表功能描述將當(dāng)前選擇的表中的數(shù)據(jù)存儲到新數(shù)據(jù)庫文件中(選擇是在兩個(gè)數(shù)據(jù)庫
16、中具有相同名稱的兩個(gè)結(jié)構(gòu)和數(shù)據(jù)量都相同的表之間進(jìn)行)輸入當(dāng)前選擇表的基本信息及其中的數(shù)據(jù)操作序列在生成新數(shù)據(jù)庫文件、選擇要修改的數(shù)據(jù)庫后后執(zhí)行輸出將獲得的表的數(shù)據(jù)更新到新數(shù)據(jù)庫文件中補(bǔ)充說明3.4.5新數(shù)據(jù)文件管理模塊保存修改的數(shù)據(jù)表310保存修改的數(shù)據(jù)table 3-10 save the modified data名稱、標(biāo)識符保存修改的數(shù)據(jù)功能描述將修改后的數(shù)據(jù)保存到新數(shù)據(jù)文件對應(yīng)的表中輸入1、 修改數(shù)據(jù)的位置2、 修改后的值操作序列在修改數(shù)據(jù)后執(zhí)行輸出1、 界面上顯示修改后的值; 2、 修改后的值保存到了新數(shù)據(jù)文件中。補(bǔ)充說明生成新數(shù)據(jù)庫文件表311生成新數(shù)據(jù)
17、庫文件table 3-11 generate a new database file名稱、標(biāo)識符生成新數(shù)據(jù)庫文件功能描述生成一個(gè)新數(shù)據(jù)庫文件輸入默認(rèn)修改數(shù)據(jù)庫的連接串操作序列在生成數(shù)據(jù)庫連接串后執(zhí)行輸出新的數(shù)據(jù)庫文件(其中的表和表中的數(shù)據(jù)與默認(rèn)選擇表所在數(shù)據(jù)庫相同)所在路徑補(bǔ)充說明3.5未來可能出現(xiàn)的需求及解決方案(1) 兩個(gè)數(shù)據(jù)錄入人員錄入數(shù)據(jù)質(zhì)量統(tǒng)計(jì):描述:現(xiàn)需求要求修改數(shù)據(jù)時(shí)只針對新生成的數(shù)據(jù)庫文件,兩個(gè)進(jìn)行比較的數(shù)據(jù)庫文件中的數(shù)據(jù)不變。可能添加對原數(shù)據(jù)文件與新生成的數(shù)據(jù)文件對比取得的數(shù)據(jù)質(zhì)量的統(tǒng)計(jì)數(shù)據(jù)。解決方案:在改變要修改的表時(shí),針對修改前的表進(jìn)行數(shù)據(jù)比較和統(tǒng)計(jì),生成新數(shù)據(jù)庫文件時(shí)總
18、合這些單個(gè)表的統(tǒng)計(jì)數(shù)據(jù),得出兩個(gè)數(shù)據(jù)錄入人員錄入數(shù)據(jù)的質(zhì)量統(tǒng)計(jì)。3.6故障處理要求(1) 程序在運(yùn)行時(shí)主要會出現(xiàn)兩種錯(cuò)誤:l 由于輸入信息格式不正確或類型不對應(yīng)產(chǎn)生的錯(cuò)誤。l 由于兩個(gè)數(shù)據(jù)庫中一對同名表的結(jié)構(gòu)不同導(dǎo)致無法比較。(2) 出錯(cuò)處理對策:對于第一種錯(cuò)誤,須在輸入修改數(shù)據(jù)后對修改后的數(shù)據(jù)進(jìn)行分析,若符合要求則更新,若不符合要求則恢復(fù)原來數(shù)據(jù)并作出提示。對于第二種錯(cuò)誤,須在顯示表時(shí)對這一對表的結(jié)構(gòu)進(jìn)行判斷,若相同則正常顯示,若不同則不顯示,并作出提示。4概要設(shè)計(jì)4.1系統(tǒng)設(shè)計(jì)目標(biāo)4.1.1近期目標(biāo):(1) 界面設(shè)計(jì)合理化界面設(shè)計(jì)的好壞直接影響用戶使用軟件的體驗(yàn),簡單、易用、明了的界面可是
19、使用戶使用起來非常的方便、舒服。本軟件在設(shè)計(jì)時(shí)盡力考慮到以上的原則:數(shù)據(jù)庫文件中需要查看的表比較多所以考錄用treeview控件,展開后可全部顯示,方便查找;突出數(shù)據(jù)顯示區(qū)域,保證界面美觀的情況下把這一區(qū)域做到最大;兩個(gè)顯示表中數(shù)據(jù)的datagridview控件上下對齊擺放,以方便同步操作和查看。(2) 系統(tǒng)實(shí)用性系統(tǒng)的設(shè)計(jì)應(yīng)注重與現(xiàn)有系統(tǒng)的結(jié)合,盡量的減少冗余和流程上的改變,使得使用人員操作簡便、易懂易學(xué),最大限度的滿足各項(xiàng)功能要求。系統(tǒng)界面統(tǒng)一、提示準(zhǔn)確、操作簡單。(3) 系統(tǒng)的健壯性和可靠性系統(tǒng)總最容易引起錯(cuò)誤的地方在于兩個(gè)數(shù)據(jù)庫及其中表的結(jié)構(gòu)的比較,因此必須對兩個(gè)數(shù)據(jù)庫及其中表的結(jié)構(gòu)進(jìn)
20、行可靠的檢測,在系統(tǒng)實(shí)現(xiàn)過程中采用完備的異常處理機(jī)制,對各個(gè)異常進(jìn)行實(shí)時(shí)處理提醒,盡量保證程序運(yùn)行的可控性,使得到的結(jié)果符合實(shí)際需要。4.1.2長遠(yuǎn)目標(biāo)實(shí)現(xiàn)系統(tǒng)的二次開發(fā)(1) 使用三層架構(gòu)增加系統(tǒng)的可維護(hù)性3通常意義上的三層架構(gòu)是將整個(gè)業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(ui)、業(yè)務(wù)邏輯層(bll)、數(shù)據(jù)訪問層(dal)。區(qū)分層次的目的是為了“高內(nèi)聚、低耦合”的思想。表現(xiàn)層(ui):通俗的講是展現(xiàn)給用戶的界面,即用戶使用一個(gè)系統(tǒng)時(shí)的所見所得。業(yè)務(wù)邏輯層(bll):針對具體問題的操作,也可以說是對數(shù)據(jù)層的操作,對數(shù)據(jù)業(yè)務(wù)邏輯處理。數(shù)據(jù)訪問層(dal):該層所作事物直接操作數(shù)據(jù)庫,針對數(shù)據(jù)的添加、刪除、修改
21、、更新、查找等。三層架構(gòu)的原理是系統(tǒng)的主要功能和業(yè)務(wù)邏輯都在bll層進(jìn)行處理,bll作為ui與dal的中間層。使用三層架構(gòu)可以降低層與層之間的依賴,是開發(fā)人員可以只專注于整個(gè)結(jié)構(gòu)的某一層,同時(shí)有利于各層邏輯的復(fù)用。三層架構(gòu)也存在一些缺點(diǎn):由于采用分層的結(jié)構(gòu),很多業(yè)務(wù)所需的數(shù)據(jù)必須通過中間層來獲取,這樣降低了系統(tǒng)的性能,另外如果在bal層增加了一項(xiàng)業(yè)務(wù)也有可能導(dǎo)致ui和dal相應(yīng)的級聯(lián)修改。應(yīng)該注意的是三層架構(gòu)的程序并不是把項(xiàng)目分為ui、bll、dal三個(gè)模塊就算是三層了。三層程序還不惜遵循以下的規(guī)則:l 最關(guān)鍵的,ui只是一個(gè)外殼,不能包含任何業(yè)務(wù)邏輯的處理。l 設(shè)計(jì)時(shí)應(yīng)該從bll而不是ui出
22、發(fā)。l dal需要在一定的程度上抽象到與系統(tǒng)無關(guān)。l ui與dal不能發(fā)生關(guān)聯(lián),任何關(guān)聯(lián)必須通過bll來處理。4.2系統(tǒng)結(jié)構(gòu)在第三章“需求分析”中已經(jīng)介紹了系統(tǒng)的各個(gè)功能描述,這一節(jié)主要介紹用powerdesigner設(shè)計(jì)的系統(tǒng)uml4 5類圖和整個(gè)系統(tǒng)運(yùn)行的時(shí)序圖。4.2.1系統(tǒng)類圖系統(tǒng)類圖如圖41所示:圖4-1系統(tǒng)類圖figure 4-1 system class diagram4.2.2類功能描述本系統(tǒng)采用三層架構(gòu)設(shè)計(jì),以上各個(gè)類在三層中的分布如下:l ui:frmimportfile類、frmshowresult類。l bll:fileoperater類、treeviewoperate
23、r類、comparisonitemmanager類、comparisonmanager類。l dal:usercontrol類、daooperater類。(1) frmimportfile類圖4-2文件導(dǎo)入窗體類figure 4-2 the form class of import filefrmimportfile是文件導(dǎo)入窗體類,他的作用是導(dǎo)入數(shù)據(jù)文件取得文件的路徑等信息,并且通過它可以打開frmshowresult窗體。(2) frmshowresult類圖4-3結(jié)果顯示窗體類figure 4-3 the form class of show resultfrmshowresult窗體時(shí)
24、本軟件的主要窗體,他負(fù)責(zé)兩個(gè)數(shù)據(jù)庫中匹配的所有表表、所選擇表中的數(shù)據(jù)及兩個(gè)表中數(shù)據(jù)比較完成后結(jié)果的顯示。(3) fileoperater類圖4-4文件操作類figure 4-4 the class of operate filefileoperater是文件操作類,能夠?qū)崿F(xiàn)將文件復(fù)制或移動到指定路徑。(4) comparisonitemmanager類圖4-5對比項(xiàng)管理類figure 4-5 the class of manage comparison itemcomparisonitemmanager是具體的本系統(tǒng)操作的文件類,它繼承自fileoperater類,通過它可以對一個(gè)系統(tǒng)中使用的
25、文件進(jìn)行各種操作。(5) treeviewmanager類圖4-6 treeview控件管理類figure 4-6 the class of manage treeview controltreeviewmanager是針對frmshowresult窗體中的treeview控件進(jìn)行操作的類,它能實(shí)現(xiàn)treeview控件的各種操作。(6) comparisonmanager類圖4-7對比操作管理類figure 4-7 the class of manage comparison operatecomparisonmanager類是對兩個(gè)參與比較的類進(jìn)行處理的類,它能實(shí)現(xiàn)兩個(gè)數(shù)據(jù)文件的比較等基于兩
26、個(gè)文件的處理。(7) usercontrol類圖4-8數(shù)據(jù)訪問類figure 4-8 the class of data accessusercontrol類是數(shù)據(jù)處理類,它使用ado.net能實(shí)現(xiàn)對access數(shù)據(jù)的各種處理。由于三成架構(gòu)的使用,它與系統(tǒng)無關(guān)。(8) daooperater類圖4-9 dao數(shù)據(jù)訪問類figure 4-9 the class of dao data access與usercontrol類同為數(shù)據(jù)處理類,它的存在原沒有必要,但是由于ado.net不能方便的取得access數(shù)據(jù)庫表中的caption屬性,所以添加此類來實(shí)現(xiàn)對access數(shù)據(jù)庫表中caption屬性
27、的操作。顧名思義,它用的是dao技術(shù)。4.3系統(tǒng)流程4.3.1系統(tǒng)總體時(shí)序圖圖4-10系統(tǒng)總體時(shí)序圖figure 4-10 overall system timing diagram4.3.1系統(tǒng)時(shí)序圖分析(1) 消息1-6描述導(dǎo)入兩個(gè)數(shù)據(jù)庫文件。消息1:導(dǎo)入一個(gè)數(shù)據(jù)庫文件消息2:判斷此數(shù)據(jù)庫文件是否為access數(shù)據(jù)庫文件消息3:若導(dǎo)入的文件為access數(shù)據(jù)庫文件,返回此文件的路徑(2) 消息7-11描述導(dǎo)入兩個(gè)數(shù)據(jù)庫文件后,數(shù)據(jù)質(zhì)量檢測員單擊開始掃描按鈕,frmshowresult窗體的顯示和初始化。消息9:取得兩個(gè)導(dǎo)入的access數(shù)據(jù)庫文件中名稱相同的表的集合。消息11:將取得的集合
28、綁定到treeview控件上(3) 消息12-24描述用戶選擇要進(jìn)行比較的表,對數(shù)據(jù)進(jìn)行比較的過程。消息13:檢查兩個(gè)參與比較的表的結(jié)構(gòu)是否相同消息15:表結(jié)構(gòu)匹配檢查通過后檢查兩個(gè)參與比較的表的數(shù)據(jù)量是否相同消息17:取得兩個(gè)數(shù)據(jù)庫中對應(yīng)表的數(shù)據(jù)消息19:將取得的數(shù)據(jù)綁定到frmshowresult上兩個(gè)datagridview中消息20:通過復(fù)制默認(rèn)修改的數(shù)據(jù)庫生成新數(shù)據(jù)文件消息22:取得兩個(gè)數(shù)據(jù)庫文件中存在差異的單元消息23:標(biāo)記差異數(shù)據(jù)所在單元格(4) 消息25-26描述用戶更改要修改的數(shù)據(jù)庫后,更新新數(shù)據(jù)文件中數(shù)據(jù)。消息25:更新新數(shù)據(jù)庫文件中數(shù)據(jù)(5) 消息27-28描述用戶更新表
29、數(shù)據(jù)后,更新新數(shù)據(jù)文件中數(shù)據(jù)。消息28:更新新數(shù)據(jù)庫文件中數(shù)據(jù)消息25與28的差異在于,消息25的操作是通過循環(huán)更新所有存在差異的數(shù)據(jù),消息28的操作是修改完一個(gè)單元格的數(shù)據(jù)后,修改單個(gè)數(shù)據(jù)。實(shí)際上在25中存在對28的調(diào)用。(6) 消息29-30描述用戶點(diǎn)擊生成新數(shù)據(jù)庫文件按鈕后將修改后的新數(shù)據(jù)庫文件移動到指定路徑下。4.4數(shù)據(jù)對比解決方案的評估不足:數(shù)據(jù)對比解決方案是基于兩個(gè)從參與比較的數(shù)據(jù)文件中取得的數(shù)據(jù),兩個(gè)都正確、或有一個(gè)正確或兩個(gè)都錯(cuò)誤但錯(cuò)誤數(shù)據(jù)不同這種假設(shè)的,所以如果兩個(gè)數(shù)據(jù)都錯(cuò)誤且錯(cuò)誤數(shù)據(jù)相同則不能發(fā)現(xiàn)。建議:在使用本系統(tǒng)檢測完成后,對特別重要的數(shù)據(jù)仍要進(jìn)行人工檢查,盡力減少錯(cuò)誤
30、帶來的損失。5 系統(tǒng)功能實(shí)現(xiàn)5.1 文件導(dǎo)入模塊功能實(shí)現(xiàn)文件導(dǎo)入是整個(gè)系統(tǒng)操作的起始點(diǎn),在系統(tǒng)中這一模塊負(fù)責(zé)使用戶方便的選擇并導(dǎo)入兩個(gè)access數(shù)據(jù)庫文件并取得兩個(gè)文件的連接串,為以后的操作坐下準(zhǔn)備。文件導(dǎo)入界面如圖6-1所示:圖6-1文件導(dǎo)入界面figure 6-1 file import interface5.1.1 文件類型匹配檢查檢查導(dǎo)入文件是否為access數(shù)據(jù)庫文件,若不是作出提示。實(shí)現(xiàn)代碼如下:/ / 判斷指定文件是否為access數(shù)據(jù)文件 / / public bool ismatchfiletype( ) bool ismatchfiletype = false; stri
31、ng a = getfilename(); if (regex.ismatch(getfilename(), .mdb$) ismatchfiletype = true; else ismatchfiletype = false; return ismatchfiletype;輸入文件不是access數(shù)據(jù)文件時(shí),提示消息框如圖6-2所示:圖6-2文件類型錯(cuò)誤消息框figure 6-2 file type error message box5.2 數(shù)據(jù)比較模塊數(shù)據(jù)比較模塊是本系統(tǒng)的主要部分也是難點(diǎn)所在,它主要實(shí)現(xiàn)對兩個(gè)數(shù)據(jù)庫文件中具有相同名稱、相同結(jié)構(gòu)、相同數(shù)據(jù)量的表中的數(shù)據(jù)進(jìn)行比較,并把差異數(shù)
32、據(jù)明確標(biāo)記出來,以供查看和修改。數(shù)據(jù)比較界面如圖6-3所示:圖6-3數(shù)據(jù)比較界面figure 6-3 interface of comparison data5.2.1 表結(jié)構(gòu)匹配檢查表結(jié)構(gòu)匹配檢查用于查看兩個(gè)參與對比的表的結(jié)構(gòu)是否相同,若不相同則不能進(jìn)行比較,并作出提示。實(shí)現(xiàn)代碼如下:/ / 取得access數(shù)據(jù)庫文件中指定表的結(jié)構(gòu)信息/ / public dataset gettableproperty(string tablename) try if (_oledbcon.state = connectionstate.closed) _oledbcon.open(); dataset
33、ds = new dataset(); datatable tableproperty = _oledbcon.getoledbschematable(oledbschemaguid.columns, new object null, null, tablename, null ); ds.tables.add(tableproperty); return ds; catch return null; finally _oledbcon.close(); / / 比較兩個(gè)數(shù)據(jù)表的結(jié)構(gòu)是否相同/ / public string tablestructcompare() string strstr
34、uctinfo = ; dataset dsfirst = _firstuc.gettableproperty(tablename); dataset dssecond = _seconduc.gettableproperty(tablename);if (dsfirst.tables0.rows.count = dssecond.tables0.rows.count) int rowcount = dsfirst.tables0.rows.count; for (int i = 0; i rowcount; i+) string firstcolumnname = dsfirst.table
35、s0.rowsi.itemarray3.tostring().trim(); string secondcolumnname = dssecond.tables0.rowsi.itemarray3.tostring().trim(); if (firstcolumnname != secondcolumnname) if (strstructinfo = ) strstructinfo = 在兩個(gè)數(shù)據(jù)庫文件中的(+firstcolumnname+與+secondcolumnname+); else strstructinfo += 、(+firstcolumnname+與+secondcolu
36、mnname+); if (strstructinfo != ) strstructinfo += 不是同一字段; return strstructinfo; else strstructinfo = 在兩個(gè)數(shù)據(jù)庫文件中的字段數(shù)不相同; return strstructinfo; 表結(jié)構(gòu)不匹配時(shí)提示消息框如圖6-4所示:圖6-4表結(jié)構(gòu)不同消息框 figure 6-4 table struct is difference message box5.2.2 數(shù)據(jù)量匹配檢查檢查兩個(gè)數(shù)據(jù)庫中相同名稱且結(jié)構(gòu)相同的表的數(shù)據(jù)量是否相同,若不相同則不能進(jìn)行比較,并作出提示。實(shí)現(xiàn)代碼如下:/ / 比較兩個(gè)表中的
37、數(shù)據(jù)量/ / public bool tablerowcountcompare() string strsql = select * from +tablename + order by + _firstuc.getkeyname(tablename); dataset dsfirst = _firstuc.execdataset(strsql); dataset dssecond = _seconduc.execdataset(strsql);if (dsfirst.tables0.rows.count = dssecond.tables0.rows.count) return true;
38、else return false; 5.2.3 數(shù)據(jù)比較將要比較的兩個(gè)表分別綁定在兩個(gè)datagridview中,然后對兩個(gè)datagridview上的每一個(gè)位置相同的單元格中的數(shù)據(jù)進(jìn)行比較。5.2.4 比較結(jié)果顯示在數(shù)據(jù)比較過程中將存在差異的數(shù)據(jù)所在單元格的背景色設(shè)成紅色,將單元格所在的行背景色設(shè)成藍(lán)色,效果如圖6-5所示:圖6-4比較結(jié)果顯示figure 6-4 show the result of comparison實(shí)現(xiàn)代碼如下:/對兩個(gè)表中的每一個(gè)單元進(jìn)行比較for (int i = 0; i dgdfirst.rowcount; i+) bool isexistdifferent
39、 = false; for (int j = 0; j dgdfirst.columncount; j+) string first = dgdfirst.rowsi.cellsj.value.tostring().trim(); string second = dgdsecond.rowsi.cellsj.value.tostring().trim(); if (first != second) _thediffcount+; /設(shè)置差異單元格的背景色 dgdfirst.rowsi.cellsj.style.backcolor = color.red; dgdsecond.rowsi.cel
40、lsj.style.backcolor = color.red; isexistdifferent = true; if (isexistdifferent) _thediffrowcount+; /設(shè)置差異行的背景色 dgdfirst.rowsi.defaultcellstyle.backcolor = color.skyblue; dgdsecond.rowsi.defaultcellstyle.backcolor = color.skyblue; 為了方便同時(shí)產(chǎn)看兩個(gè)表中的數(shù)據(jù),可以是顯示兩個(gè)表中數(shù)據(jù)的datagridview同步操作,代碼如下:/ / 使兩個(gè)datagridview同步
41、操作/ / / private void dgdfirst_scroll(object sender, scrolleventargs e) if (_operatestyle = synchronize) if (dgdfirst.rowcount != 0) dgdsecond.firstdisplayedscrollingrowindex = dgdfirst.firstdisplayedscrollingrowindex; dgdsecond.horizontalscrollingoffset = dgdfirst.horizontalscrollingoffset; / / 使兩個(gè)d
42、atagridview同步操作/ / / private void dgdsecond_scroll(object sender, scrolleventargs e) if (_operatestyle = synchronize) if (dgdfirst.rowcount != 0) dgdfirst.firstdisplayedscrollingrowindex = dgdsecond.firstdisplayedscrollingrowindex; dgdfirst.horizontalscrollingoffset = dgdsecond.horizontalscrollingof
43、fset; 5.3 數(shù)據(jù)修改模塊5.3.1 切換數(shù)據(jù)庫的邏輯處理需求要求:兩個(gè)參與比較的數(shù)據(jù)庫文件不變,修改只針對新數(shù)據(jù)文件,且新數(shù)據(jù)文件中必須包含兩個(gè)數(shù)據(jù)文件中相同的數(shù)據(jù)和修改后的數(shù)據(jù)。處理方法:新數(shù)據(jù)文件c是通過復(fù)制兩個(gè)數(shù)據(jù)文件a和b中的一個(gè)得來,假設(shè)復(fù)制的是數(shù)據(jù)文件a,這樣c剛生成時(shí)其中的數(shù)據(jù)就和a中的數(shù)據(jù)完全相同。當(dāng)切換要修改的數(shù)據(jù)庫時(shí),c中的數(shù)據(jù)就要更新為當(dāng)前選擇的要修改的數(shù)據(jù)庫中的數(shù)據(jù)。5.3.2 動態(tài)存儲要修改的表參與對比的數(shù)據(jù)庫文件為a和b,新數(shù)據(jù)庫文件為c,默認(rèn)復(fù)制a中的數(shù)據(jù),現(xiàn)在要修改的兩張表a與b分別來自a與b,c中對應(yīng)的表為c,此時(shí)c等于a。當(dāng)我們選中要修改 b中的數(shù)據(jù)時(shí),就用b中數(shù)據(jù)更新c中數(shù)據(jù),更新完后c等于b。代碼實(shí)現(xiàn)如下所示:/ / 用第二個(gè)路徑中的文件修改第一個(gè)路徑中的文件/ public void change()string strsql = select * from +tablename + order by + _firstuc.getkeyname(tablename); dataset dsfirst = _firstuc.execdataset(strsql); dataset dssecond = _
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備檢修安全管理制度
- 設(shè)備等級評估管理制度
- 2025年中國家庭影院立體聲接收器行業(yè)市場全景分析及前景機(jī)遇研判報(bào)告
- 設(shè)計(jì)成果運(yùn)用管理制度
- 評估公司價(jià)格管理制度
- 診所醫(yī)療軟件管理制度
- 診所財(cái)務(wù)制度管理制度
- 貝殼門店分級管理制度
- 財(cái)務(wù)集中中心管理制度
- 賬務(wù)實(shí)物分開管理制度
- MOOC 工程倫理-西南石油大學(xué) 中國大學(xué)慕課答案
- 24春國家開放大學(xué)《教育法學(xué)》終結(jié)性考試(大作業(yè))參考答案
- 小米汽車發(fā)布會
- 設(shè)計(jì)質(zhì)量管理和保證措施及設(shè)計(jì)質(zhì)量管理和質(zhì)量保證措施
- 國家級社會體育指導(dǎo)員理論考試試題及答案
- 小學(xué)科學(xué)學(xué)法指導(dǎo)
- 充電樁建設(shè)項(xiàng)目可行性研究報(bào)告
- 第七屆全國急救技能大賽(醫(yī)生組)理論考試題庫大全-下部分
- 分級護(hù)理制度培訓(xùn)
- 初中物理核心素養(yǎng)培養(yǎng)
- 安全應(yīng)急管理培訓(xùn)
評論
0/150
提交評論