




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、116/120分布式數(shù)據(jù)庫課程設計與實現(xiàn)面向連鎖超市治理系統(tǒng)的分布式數(shù)據(jù)庫設計與實現(xiàn)目錄TOC o 1-3 hz u HYERLIK _c013466 1.連鎖超市治理系統(tǒng)概述 PAGEREF _To31001346 1 YERIK _oc3001467 1.背景介紹 PGRE _Toc013467 h 1HPERLIN l _Toc3100136 1.2 可行性分析PAEEF oc311468h 1 HYPERI l _To3100349 13系統(tǒng)目標和先進之處 AGEREF Tc3100136 h HYPERLNK _3001347 .小組成員和任務分配PAER _To31013470 h
2、 HYPERNKl _To3003472.需求分析 AGERF_Toc30131 h 4 HYPERIKl _Toc3103472.1用戶需求概述 PERE _Toc31001342 h PERLIK l T310134732.2 業(yè)務需求分析 PARF _Toc31001347 h HYPERLK l Toc1013742.3功能分析PAGREF Toc311344 HYPLIN _Toc31003475 3.系統(tǒng)總體設計AGERF _To31017 h 8 YPRLIN l _Toc10147 3.1繪制用例圖設計系統(tǒng)功能 PAGEE _Toc3100146 h HYPERINK Toc3
3、0147732繪制系統(tǒng)流程圖PAERF Toc001377 h9 HYINK l _c3101348 3. 系統(tǒng)開發(fā)環(huán)境 PGEREF _oc31013478 h 0 HYPERLIKl _Toc0134793.系統(tǒng)的運行環(huán)境 PAGEREF Toc3101479 h 11PERLIK l _Toc101348 3.系統(tǒng)運行演示 PAEE _Toc3100140h11 HYPELINKl _Toc31001341 .6系統(tǒng)類庫設計PGE _To1001348h 1 HYPERLINK l _T10018 4.分布式數(shù)據(jù)庫分析與設計 PGE _Toc300148h HYPRLIN _To1013
4、48 .1數(shù)據(jù)庫分析 PAGEREFTo301483 h 16YPERLINl _Toc00134842數(shù)據(jù)庫概念設計 AGEEF _Toc101384 16PERLINK _Toc310013485 .數(shù)據(jù)庫邏輯結構設計 AGREFTc3101385 h0 HYERLIK l _c31013486 4.4 分片與位置分配設計 PAGEREF _Toc01346 h 24HYPERINK l_Toc310013484.4.1站點通信模型 PGEF _Toc31013487 h 4 HRLK l To31001348 2數(shù)據(jù)表的分片與位置分配設計PAEREF _Toc3100348h 25 HY
5、ELINK l _Toc310013495.基于SQ的M的詳細設計(實現(xiàn))PAGEREF To31001349 h27 HPELINK l To1013 .1公共類設計 PAGERF Toc100140 h27 HYLINK l _Toc10034911.1文件操作類CFileOpate PAGERE _To30014 h 2HYEINK l _Toc31013925.12時刻格式轉換類CyTmPAGEREF _Toc3013492 h 2 HYPRLINK l _Toc3101343 5.1.3數(shù)據(jù)操作類CAOConn PAEEF Toc001343 h 29HYPERK _oc301349
6、4 5.1.數(shù)據(jù)庫表的操作類CtlePatIf PGEREF _Toc300149 HPERIN l_c31001345 5.2界面窗口設計 AGEREF_oc101345 4 HPEIK _T31001346 5.2.系統(tǒng)啟動登錄開發(fā) PAGEREF _Tc31013496h 41 HPEIK Toc3101349752.主界面對話框設計 PAGEREF _Toc31001397 h 43HPELIN l Toc103498 5.2.通用報表對話框設計開發(fā) PAER _c30139 44HYERLIN l To1003495.2.4打印對話框設計開發(fā) PGRF _o31013499h 46H
7、YERLIN l _Toc01500 5.差不多資料模塊設計 EREF_Tc31001500 h 48 YPRLNl _To3101501 5.3. 差不多資料治理功能開發(fā) PGERE T3101501 h 8 YPRLIK l _Toc310013525.3.2價格自動生成功能開發(fā) PAEEF _To3100150 h 52 HYPERLN _Tc0013503 5.3報表功能實現(xiàn) AEREF _To310013503h 5 HYPELINK _Toc310013504 5進貨/銷售模塊設計PGEEF _Tc310030455 HYRK l _To31001305 54.1進貨/銷售登記設計
8、 AGEREF _To101505 55HYPELINKl _Toc31006 5.42進貨設計PAEREF_Tc3101350 5 HYPRLINK l _T310135 5.43月度統(tǒng)計設計PGERE Tc310013507 h 61 HYPRLIN_Toc3003508 .5庫存模塊設計AGERE_Toc100130 62 HYPERLIKl _To31001505.1 庫存查詢功能開發(fā) PAGEREF_Toc31013509 h 62 HYPELINKl _Toc31013 5.5.2 庫存報警功能開發(fā) AGERFToc300510 h 63 HYPERIK l _Toc3100351
9、 6.開發(fā)技巧和難點分析 PGEREF _To310013511 h 64 YERLN l_To101312 OLE技術使用 GEREF_Toc3001351h 64 HPELIK l_Toc315136.2MFC ri Cnrol控件的使用 PEREF _Toc3101351 65連鎖超市治理系統(tǒng)概述背景介紹 隨著市場經濟的進展和人民生活水平的提高,原來單一、小規(guī)模的超市已無法滿足人民對購物環(huán)境的要求,大規(guī)模、物品豐富的超市正在蓬勃進展。超市銷售數(shù)據(jù)規(guī)模的日益龐大,商品數(shù)目的迅速增長,采納以往的手工治理已直接或間接地降低了工作效率,最終阻礙超市的日常運轉。另外超市的發(fā)張壯大,尤其是連鎖超市(
10、如家樂福、美廉美)的擴張,使得他們具有地域上分散而治理上又相對集中的特點,往往既要有各門店的局部操縱和分散治理,同時也要有整個組織的全局操縱和高層次的協(xié)同治理。因此把這些門店和中心通過網絡連接起來,設計開發(fā)一款基于分布式數(shù)據(jù)庫的連鎖超市治理系統(tǒng)SMS(Smakt mngemen ystem)勢在必行。12 可行性分析(1)經濟可行性使用連鎖超市治理系統(tǒng)對超市連鎖店進行信息化治理將直接提高公司治理部門的工作效率。通過網絡遠程提交匯總各門店的信息,節(jié)約了許多的時刻和金鈔票。另一方面,用信息化治理統(tǒng)計大量數(shù)據(jù),節(jié)約了專門多的人力和財力,為治理者提供更好的決策支持。(2)技術可行性 網絡應用基礎設施完
11、善,由于信息技術的進展,我國的計算機網絡飛速進展,先后建成了中國公眾多媒體通信網、hna Net、 中國教育與科研計算機網絡等組成了中國Ienet主體,網絡應用進入企業(yè)與一般家庭,這為進展連鎖超市網絡辦公提供了基礎設施。網絡安全技術應用,包括加密算法、數(shù)字認證、數(shù)字簽名等,為網絡辦公系統(tǒng)的應用提供安全保證,它實現(xiàn)了網絡傳輸數(shù)據(jù)的安全性、完整性等。 最后,確實是網絡技術的普及與掌握,如網絡互聯(lián)、網絡安全技術、網絡數(shù)據(jù)庫技術等,使我們有能力開發(fā)實現(xiàn)適合自己的治理系統(tǒng)。因此,公司構建跨區(qū)域的治理系統(tǒng)的技術瓶頸問題(網絡應用基礎設施、網絡安全、開發(fā)技術)得到了有效解決,公司構建網絡治理系統(tǒng)技術上可行。
12、()操作可行性由于SS的操作是基于C/的客戶端的頁面操作,簡單明了,用戶無需學習,一般都能夠專門容易的明白如何操作。而治理員也無需具備專業(yè)知識,只需要對一些數(shù)據(jù)進行輸入以及平常的日常維護就夠了。13系統(tǒng)目標和先進之處 ()系統(tǒng)目標為連鎖超市提高效率、降低成本;實現(xiàn)連鎖超市治理的優(yōu)化,簡化工作流程,節(jié)約人力物力,提高工作效率,極大地滿足客戶需要;對各環(huán)節(jié)進行操縱分析,實現(xiàn)統(tǒng)一調度。滿足連鎖超市的差不多治理功能,發(fā)揮信息系統(tǒng)的靈活性,減輕企業(yè)治理人員和操作人員的工作負擔,提高工作效率。本系統(tǒng)是一項功能比較完善的連鎖超市治理系統(tǒng),對連鎖店運作過程中的后臺數(shù)據(jù)能夠隨時進行分析,便于企業(yè)治理人員的經營、
13、決策。全面體現(xiàn)了現(xiàn)代企業(yè)治理理論所倡導的工作高效、環(huán)境輕松的氛圍。(2)系統(tǒng)先進之處 多數(shù)處理就地完成。各地的計算機由數(shù)據(jù)通信網絡相聯(lián)系。 克服了中心數(shù)據(jù)庫的弱點:降低了數(shù)據(jù)傳輸代價。 提高了系統(tǒng)的可靠性,局部系統(tǒng)發(fā)生故障,其他部分還可接著工作。 各個數(shù)據(jù)庫的位置是透明的,方便系統(tǒng)的擴充。為了協(xié)調整個系統(tǒng)的事務活動,事務治理的性能花費高。1.4 小組成員和任務分配.1用戶需求概述 下面是通過調查研究獲得的關于連鎖超市要緊信息數(shù)據(jù)的需求分析結果:(1) 連鎖超市通常由一個中心(公司總部)、多個遠程連鎖店(門店)組成,同時每個連鎖店分布在不同地域。 (2)連鎖超市的各個部門之間、各個分店之間、分店
14、與總部之間需要交換數(shù)據(jù),這種數(shù)據(jù)交換是通過局域網和廣域網進行的。(3)公司總部負責產生并治理該連鎖超市的整體匯總數(shù)據(jù),即各門店的明細匯總表數(shù)據(jù),如銷售匯總表等。(4)每一個遠程站點(各門店和公司總部)分不有一個數(shù)據(jù)庫系統(tǒng),各自組成一個獨立的子系統(tǒng),能夠分不獨立進行本部門業(yè)務處理。()總部為了便于對各店進行治理,同時也為了比較各店的銷售情況,要求門店將所有商品歸入相應的商品類不,由總部統(tǒng)一治理并提供各門店使用,而且,商品類不信息數(shù)據(jù)在各門店都要經常使用。(6)有關商品信息、供應商信息、機信息、進貨信息和銷售信息等經營基礎數(shù)據(jù)差不多上各門店單獨治理和使用,門店之間互不相關。(7)整個連鎖超市的職員
15、信息由公司總部治理和維護,各門店只能夠查詢本部門的職員信息。22 業(yè)務需求分析通過對超市的營業(yè)、治理業(yè)務流程的調查,得到下面的業(yè)務需求。 能夠對商品類不、商品、供應商、OS機等基礎信息進行治理。 能夠實現(xiàn)采購開單、銷售開單、采購退貨、銷售退貨等差不多功能。 軟件可依照商品資料中設置的最高庫存、最低庫存進行庫存報警。 商品的批發(fā)價、零售價可自動生成,減輕定價的工作量。 能夠生成各類統(tǒng)計報表,提供詳盡的營業(yè)報告,實現(xiàn)對商品進、銷、存及利潤等財務狀況了如指掌。所有單據(jù)、報表均能夠在打印前預覽,同時能夠導出為Excel文件,然后依照實際需要進行特不的編排處理。 為了系統(tǒng)安全,每次用戶登錄都創(chuàng)建相應的日
16、志文件,記錄用戶的所有操作。此外,對系統(tǒng)的性能要緊有以下幾個方面的需求。系統(tǒng)在設計過程中應充分考慮到可擴充性,要求操作界面美觀大方,容易上手。2.3功能分析依照對系統(tǒng)的業(yè)務調查和用戶的需求分析,結合計算機信息治理的特點,設計系統(tǒng)實現(xiàn)的功能如下?;A信息治理基礎信息治理包括業(yè)種商品類不信息、商品信息、供應商信息、PO機信息和價格信息維護與治理,實現(xiàn)的功能包括:差不多信息的添加、刪除和更新操作。生成各類基礎信息報表。打印和導出報表。進貨治理進貨治理要緊實現(xiàn)對商品的采購入庫信息進行治理,具體實現(xiàn)功能如下:進貨開單,實現(xiàn)商品的進貨結算、入庫操作。進貨退貨,退還商家相關的商品。生成進貨、退貨的單據(jù)、商品
17、報表。打印和導出報表。銷售治理銷售治理要緊實現(xiàn)對商品的銷售出庫相關信息進行治理,具體實現(xiàn)的功能如下:銷售開單,實現(xiàn)商品的銷售結算、出庫操作。銷售退貨,同意客戶退出相關的商品。生成銷售、銷售退貨的單據(jù)、商品報表。打印和導出報表。庫存治理庫存治理要緊實現(xiàn)對商品的庫存相關信息進行治理,具體實現(xiàn)的功能如下:庫存查詢,能夠查看所有庫存商品的相關信息。庫存報警,對庫存過多或過少的商品進行報表統(tǒng)計。庫存盤點,能夠修改商品的庫存數(shù)量。帳務治理帳務治理要緊實現(xiàn)對營業(yè)員的銷售商品、業(yè)務提成、營業(yè)收入等情況進行分類報表統(tǒng)計。數(shù)據(jù)治理數(shù)據(jù)治理要緊實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)進行備份、還原及清理等相關工作。系統(tǒng)治理系統(tǒng)治理要緊實現(xiàn)
18、登錄用戶(職員)治理、系統(tǒng)日志、修改登錄密碼等相關工作。系統(tǒng)總體設計3.1繪制用例圖設計系統(tǒng)功能用例圖表示了角色和用例以及它們之間的關系。它描述了系統(tǒng)、子系統(tǒng)和類的一致的功能集合,表現(xiàn)為系統(tǒng)和一個或多個外部交互者(角色)的消息交互動作序列。也確實是角色(用戶或外部系統(tǒng))和系統(tǒng)(要設計的系統(tǒng))為了實現(xiàn)一個目的交互,那個目的的描述通常是一個謂詞短語,例如簽合同等。系統(tǒng)設計包含超級治理員、治理員和營業(yè)員四種用戶角色。超級治理員具有所有的操作權限,其用例圖如圖3-1所示。圖3- 超級治理員角色系統(tǒng)用例圖治理員不具備系統(tǒng)設置模塊中的用戶治理和商品類不信息治理功能,其他功能均具備。而銷售人員則只具有銷售開
19、單治理功能。32繪制系統(tǒng)流程圖結合系統(tǒng)的具體設計要求,連鎖超市治理系統(tǒng)的要緊功能流程圖如圖3-2所示。圖- 系統(tǒng)要緊功能流程圖系統(tǒng)首先對登錄用戶身份進行驗證,依照用戶的權限激活相關功能。超級治理員具有所有的操作權限,系統(tǒng)的功能結構圖如圖3-3所示。圖33 系統(tǒng)功能結構圖上圖只是列出了一些要緊功能,系統(tǒng)還能夠依照不同需求生成各種統(tǒng)計報表。3. 系統(tǒng)開發(fā)環(huán)境 本系統(tǒng)是在WindwP中文版操作系統(tǒng)環(huán)境下,使用icrosf Visa Studo 208中文版用C+語言開發(fā)成功的。在開發(fā)過程中,使用了OLE技術和ctiveX控件技術。后臺數(shù)據(jù)庫系統(tǒng)設計采納的是Mcrsoft的 QL rer205和Aes
20、s數(shù)據(jù)庫系統(tǒng),通過ADO數(shù)據(jù)庫開發(fā)技術,直接操作數(shù)據(jù)庫文件。3.4系統(tǒng)的運行環(huán)境系統(tǒng)能夠直接在Win98、Wi200、inXP環(huán)境下運行。系統(tǒng)預設的超級治理員用戶名為“admin”,密碼為“din”。3. 系統(tǒng)運行演示程序啟動,首先彈出如圖3-4所示的“系統(tǒng)登錄”對話框,只有輸入正確的用戶D、登錄密碼才能進入系統(tǒng)能夠。圖3-4 “系統(tǒng)登錄”對話框假如登錄用戶為超級治理員或治理員,會進入系統(tǒng)的主界面窗口,如圖35所示。圖3-5 系統(tǒng)的主界面窗口假如登錄用戶權限為營業(yè)員,由于其只具有售貨權限,因此系統(tǒng)會直接彈出“銷售開單”對話框,如圖-6所示。圖3-6 “銷售開單”對話框在進行相關操作前,首先需要
21、添加、設置一些差不多資料,如商品分類登記,其操作設置對話框,如圖-7所示。圖3-7 “商品分類登記”對話框另外,系統(tǒng)還提供了豐富的報表功能,如圖3所示的商品分類報表,同時對報表提供了導出到Ece文件和打印的功能。圖3- 商品分類報表對話框36系統(tǒng)類庫設計 BITVRL超市治理系統(tǒng)主框架的設計是通過MFC創(chuàng)建向導創(chuàng)建的基于對話框的窗口程序,在對話框程序中添加了菜單欄,系統(tǒng)的要緊類庫設計如下。自定義擴展類:為了提高開發(fā)效率、便于代碼重用,自定義了一些數(shù)據(jù)操作類和控件擴展類,如表31所示。表3-1 自定義擴展類及功能類講明CDOonn通過ADO實現(xiàn)對ACCES、lSerer等數(shù)據(jù)庫的訪問Ctable
22、artIo依照數(shù)據(jù)庫表的分配、分片信息,實現(xiàn)對數(shù)據(jù)庫表的增、刪、改、查CFileOerate實現(xiàn)對硬盤文件的常用操作CMyChiTtr實現(xiàn)依照逐字提取漢字拼音的首字母CMyButtonBttn類的派生類,實現(xiàn)帶有位圖和文本的按鈕CMyMeuCnu類的派生類,用于定制自己的菜單CMenuIemCntextCMenu類中用到此類,用于保存菜單項的信息CMTme實現(xiàn)簡單的時刻格式的轉換MyEcel完成C對Exel文件的操作對話框窗口類:在系統(tǒng)中,用戶所有的數(shù)據(jù)查詢、操作差不多上通過對話框窗口來實現(xiàn)的,系統(tǒng)開發(fā)的對話框類如表-2所示。表-2 對話框類及講明類講 明ClgFenJBasePOS機差不多信
23、息治理對話框類Chopanaelg主框架對話框類CDgFeiBae商品分類差不多信息治理對話框類CDgDanganBase商品差不多信息治理對話框類lGongYigShanBase供應商差不多信息治理對話框GDlJiShZi價格自動設置對話框類lgnHuoKaDan商品進貨開單治理對話框類DlgJinHoTuDan商品進貨退單治理對話框類CDlgXaSoKanDa商品銷售開單治理對話框類CDlgXiaoSouTiDa商品銷售退單治理對話框類DlAl用于查找信息顯示對話框類ClgReort用于報表顯示對話框類CDlgLgo用戶登錄對話框類CDlgw更改密碼對話框類CDgQu退出系統(tǒng)提示對話框類打
24、印相關類:系統(tǒng)能夠提供了報表的打印和打印預覽功能,其相關的設計類如表-所示。表-3 打印相關類及講明類講 明CPrntFrmeCFraeWd派生類,用于構建打印框架類rtiw打印視圖類另外,系統(tǒng)還包含一些主框架相關類、導入ActveX控件(MC rdControl)相關類和導入LE對象(Excel)相關類。分布式數(shù)據(jù)庫分析與設計 4.1數(shù)據(jù)庫分析考慮到總站點的信息量大采納L Serve00數(shù)據(jù)庫,而區(qū)域站點信息量相對較小采納Accss數(shù)據(jù)庫。當區(qū)域業(yè)務拓展,操作終端增加時,Acess數(shù)據(jù)庫也專門容易的移植到SQSrvr數(shù)據(jù)庫系統(tǒng)中。另外區(qū)域站點采納Acce數(shù)據(jù)庫能夠實現(xiàn)方便的部署。4.2數(shù)據(jù)庫
25、概念設計分析超市治理功能流程,系統(tǒng)的數(shù)據(jù)實體要緊包括差不多資料對象實體、庫存實體、進貨/銷售開單、進貨/銷售退單、進貨/銷售商品實體、各站點數(shù)據(jù)庫服務器IP信息實體、數(shù)據(jù)庫表分配分片信息實體等。差不多資料對象實體包括商品類不、商品明細、供應商、P機和登錄用戶實體。商品庫存實體記錄庫存商品的數(shù)量和價格信息,事實上體的E圖如下。商品進貨單實體用于記錄進貨單的統(tǒng)計信息,事實上體的-圖如下所示。進貨商品實體用于記錄進貨單對應的商品信息,事實上體的E-R圖如下所示。進貨退單實體用于記錄進貨退單信息,事實上體的E-圖如下所示。與進貨相對應的銷售單實體、銷售商品實體和銷售退單實體的-R圖如下所示。各站點數(shù)據(jù)
26、庫服務器I信息,記錄各個區(qū)域數(shù)據(jù)庫服務器對應的I地址,事實上體的E-R圖,如下圖所示。數(shù)據(jù)庫表分配分片信息,記錄數(shù)據(jù)中所有的表的分布式分配和分片信息,事實上體E-R圖,如圖所示。.3數(shù)據(jù)庫邏輯結構設計商品類不表、商品明細表、供應商表、PS機表、登錄用戶表、庫存表、進貨/銷售開單表、進貨/銷售商品表、進貨/銷售退貨商品表、IP地址登錄信息表、數(shù)據(jù)庫表的分配和分片信息。商品類不表:商品明細表:供應商表:POS機表:用戶表:庫存表:進貨單表:進貨商品表:進貨商品退單表:銷售單表:銷售商品表:銷售商品退單表:服務器IP信息表:分片及分布信息表:4.4分片與位置分配設計 4.1站點通信模型在我們的連鎖超
27、市治理系統(tǒng)中,有一個總店并下分多個分店,總店和分店之間或分店與分店之間都能夠進行通信。每個分店是一個相對獨立的數(shù)據(jù)庫服務系統(tǒng),其能夠連接任意數(shù)量的客戶端。通信模型如下圖所示:4.4.2數(shù)據(jù)表的分片與位置分配設計依照以上得到的關于要緊信息數(shù)據(jù)的需求分析結果,為該連鎖超市系統(tǒng)的分布式數(shù)據(jù)庫系統(tǒng)進行要緊信息數(shù)據(jù)的分片和分配設計如下:1、數(shù)據(jù)的分片設計(1)由于該連鎖超市系統(tǒng)的各連鎖店之間在經營上是獨立的,每個門店只關懷自己的經營狀況,有關供應商信息、POS機信息、商品信息和進貨銷貨信息等基礎數(shù)據(jù)差不多上各門店單獨治理和使用,門店之間互不相關。因此,商品明細表、供應商表、PO機表、庫存表、進貨/銷售開
28、單表、進貨/銷售商品表、進貨/銷售退貨商品表按照地域(門店所在區(qū)域標志)采納水平分片的方法得到水平片段。(2)那個地點我們關于商品信息進行了垂直分片,分成了商品明細表和庫存表,因為商品的某些屬性,例如庫存量等需要經常更新,因此將這些屬性劃分出來構成單獨的實體能夠減少系統(tǒng)開銷。(3)由于整個連鎖超市的職員信息由總公司治理和維護,各門店只能夠查詢本店的職員信息。因此職員信息不必分片,能夠采納視圖的形式提供給各門店查詢本門店的職員信息。另外,各個區(qū)域數(shù)據(jù)庫服務器的I地址信息也只是由總部治理、維護,因此也不必分片。(4)由于商品分類數(shù)據(jù)由總部統(tǒng)一治理并提供各門店使用,而且,商品類不信息數(shù)據(jù)在各門店都要
29、經常使用。因此,商品類不信息數(shù)據(jù)也不必分片。()該分布式數(shù)據(jù)庫系統(tǒng)實現(xiàn)了簡單的目錄治理,記錄數(shù)據(jù)庫中各個表的分片和分配信息,以便數(shù)據(jù)更新時,維護各個站點上數(shù)據(jù)的一致性。那個表由總部規(guī)劃建立,各門店也會經常使用。因此,數(shù)據(jù)庫目錄信息表也不必分片。2、數(shù)據(jù)及其片段的分配設計(1)關于只在各門店單獨使用的除商品類不信息和數(shù)據(jù)庫目錄信息以外的其他基礎信息的片段,采納按區(qū)域分片然后分配到各個門店的數(shù)據(jù)庫服務器上??傉旧嫌兴虚T店的所有信息。(2)整個系統(tǒng)的職員信息、I地址信息由公司總部治理和維護,因此只分配在總部站點中。()商品類不信息、數(shù)據(jù)庫目錄信息是由總部統(tǒng)一規(guī)定并下發(fā)到各門店的,由于各店經常會使用
30、到這類基礎信息,因此在各門店都具有相同的副本。因此,商品類不信息、數(shù)據(jù)庫目錄信息都可不能分片但被復制,且復制的個數(shù)為門店的個數(shù)?;赟QL的SMS的詳細設計(實現(xiàn))5.1公共類設計為了提高程序代碼的開發(fā)效率,便于代碼重用,在系統(tǒng)開發(fā)中,創(chuàng)建了一些數(shù)據(jù)操作類和控件擴展類。5.1.1文件操作類CFilOpere為了便于對硬盤文件的操作,開發(fā)了文件操作類ClOpera,它通過調用AP函數(shù)實現(xiàn)常用的文件操作。CileOpeate類的聲明代碼如下。extern CtrngstrTmPt;clas ieOpratepblc:/構造函數(shù)Fileperae();/取得當前程序運行的路徑CStng GtAppP
31、ah();/推斷是否存在stFn文件夾BOOL sFlExist(CSting trFn,BOOL bDr);/制作strFldeame文件夾返回文件夾名CStrn MkeDrecty(CSig srFlome);/自動生成文件夾Strng kerectory();/得到文件夾名為strFderName的路徑StringGetirctoryPth(Ctin strFloderNa);/刪除strFloderdNme文件夾vod delDirectory(CSting strlerNm);/刪除主文件夾(dat)void dlMainiretory();/制作主文件夾vid aeanDirect
32、oy();/推斷strIntDgit是否為整數(shù),是否小于inBigOL CheckIngi(CStritrItDigit,int ntBig);/推斷srFileName是否能夠做文件夾或文件的名字BO eckFileName(CString strFlae);/推斷tText是否為空BO CheckEmpty(CStrin strext);/刪除rFoderame文件夾下名為srNa的文件oiddelFle(Crn strFldNme,CSting strleN);/得到stroerNa文件夾下名為strFileNam的文件路徑CStrgetFileame(Srin stlrame,Srin
33、gstrFiNm);/制作sFloderNe文件夾下名為strileNam的文件CString akeFile(CStringsrFlerm,BOObMak);/顯示文件夾對話框BO GFlder(Ctrng*srSelecteFolder,osthar*lpszitle,constHWND hwndOn,ons har* RooFlr,cnthar*strSttFoer);系統(tǒng)程序中要緊用到了CFiOperat類中的Getpath函數(shù)。GAppPath函數(shù)用于獵取當前運行程序所在文件夾的路徑,事實上現(xiàn)代碼如下。trg Fieprate:etAppPat()/取得當前運行程序所在文件夾路徑ch
34、a lpFileNameMP;/路徑數(shù)組/獵取當前運行程序的全路徑GduleFileName(fxGetInstnceanle(),lpFilNme,_PATH);Crn stFileNe = lpileNam;/從字符串的最右邊向左搜索串in nInde = stFieNae.ReverseFin ();CStrng strath;if (nIndex )strath strileame.ef (nIndex);/取串左邊字符lstrPath ;return srPath;/返回前運行程序的文件夾路徑5.2時刻格式轉換類CMTie系統(tǒng)開發(fā)中,需要頻繁的對日期、時刻數(shù)據(jù)進行操作,因此那個地點設
35、計了類CMyTim,實現(xiàn)簡單的時刻日期轉換,CMyTime類的聲明如下。clasyTimepubic:CTimeValueTime;/CTme類型的值/nChines:TRUE-年月日時分秒 FALSE-:Ctring GtAllStrng(OOLblCinese);/返回字符串形式的日期時刻/blnhinese:TRUE-年月日 FALSE-ring GetDateSn(BOOL blCnese);/返回字符串形式的日期/blnCines:TRE-時分秒 FAS:CString GetTimeStr(OOL blChinee);/返回字符串形式的時刻Strig GeSimpleSrn();/
36、返回簡單字符串形式的日期時刻CStrin GetWeek();/返回星期星期日/設置字符串形式的值/bnSiml:TUE-(%Y%m%d%H%S)LE-(年月日時分秒或-:)vid etAllStrng(CStrin ale,BOOLblnSimle);oi SetNow();/設置成現(xiàn)在時刻CMyTime();/構造函數(shù);SetNo函數(shù)獵取當前日期,時刻,將其值給予ValueTime。voiCyTime:Setow()ValueTie=CTime::GetCurrntTie();5.3數(shù)據(jù)操作類CADOConn系統(tǒng)開發(fā)了數(shù)據(jù)操作類CADCnn,它是本系統(tǒng)的核心,實現(xiàn)了對數(shù)據(jù)庫數(shù)據(jù)的差不多操作
37、功能,DCo類的聲明代碼如下。#impr c:proram flescmo filssysemadomsado.ll no_amesacerenam (EOF,dEOF)clss CDOConn / 定義變量public:_CnctnPtr m_pConntion;/指向Cnneion對象指針:/添加一個指向Recode對象的指針:_ecosetPt m_pRecordse;_bsr_t _Dta;nt DataTye;CAOCn(itDataTyp);/構造函數(shù)COonn();irualADOCnn();vo nIniCADOConn();/初始化連接數(shù)據(jù)庫_RecdsePtr& GeRco
38、rdSe(StringtrQL);/執(zhí)行查詢BOOLExecutSQ(Strng stQL);/執(zhí)行SQL語句,Iserpdte letevoiitonnect();/退出連接BOOLMoeFirs();/字段集移向開頭BoeNext();/字段集向下移BOOpen(CStrin srL);/打開記錄集OOLOpeLoo(Ctring stSQ);/打開記錄集Ctrg GetValuerin(nt inex,nstrSum);/返回記錄集中某字段的字符串by GetValeBt(int idex);/返回記錄集中某字段的字節(jié)nt GtValueIt(in index);/返回記錄集中某字段的短
39、整數(shù)ouble Getalueube(int ndx);/返回記錄集中某字段的雙精度數(shù)floatGeVaeFloat(nt nde);/返回記錄集中某字段的單精度數(shù)long GetValeLon(it idex);/返回記錄集中某字段的長整型數(shù)CTie etVaueDate(in inde);/返回記錄集中某字段的日期時刻/獵取記錄集某字段的BYT值,并換為Sring返回CStrig GeVlueBytStr(nt inx,it ru);/獵取記錄集某字段的NT值,并換為CSrng返回Sting GetValentSr(int iex,in strSu);/獵取記錄集某字段的uble值,并換為
40、Cting返回Ctrig tluDoleStr(int index,int trLSu, rRSm);/獵取記錄集某字段的loa值,并換為CSrin返回CStinGetVaueFlotSt(in ne, trLSum,int strRSu);/獵取記錄集某字段的Lo值,并換為CSti返回CSrgGtValueLongStr(int inx,int trSu);/獵取記錄集某字段的CTme值,并換為CSring返回CtgGeVaueDteS(in nex,Srig stp);/添加單項數(shù)據(jù)OOL AdItem(CStrig bl,int stru,LPCTSR pText, . );/得到字段中
41、數(shù)據(jù)的類型inteVluTye(int index);BOOL adoEOF();/記錄集的結束推斷Fllit(stCt *iMain,n lenEn);/填充列表(lOpnEnd代表展開多少列)OL InitLst(Cistrl *isMain,intoSum);/初始化列表CStrng GetApPat();/得到應用程序所在的文件夾BOOL ilist(istCtl*stain);/填充列表Stig GeFieldsame(itinde);/返回字段名字tetFldsCount();/返回字段數(shù)量/返回數(shù)據(jù)集數(shù)log GeRcordCu();dWritLog(CStrng trSql);
42、/寫日志文件voi WiteLog1(Ctrin usrNam);/寫日志文件,誰誰登錄;、數(shù)據(jù)庫操作函數(shù)對常用的數(shù)據(jù)庫操作定義了相關函數(shù)。(1)連接數(shù)據(jù)庫在類的構造函數(shù)CADOConn中,聲明數(shù)據(jù)庫的名稱。Dnn::CAOConn()m_Dataype1;/數(shù)據(jù)庫類型csmtrDaa_bsr_t(ShopDt.mdb);/數(shù)據(jù)庫名稱在OIniCADOCn函數(shù)中,實現(xiàn)連接數(shù)據(jù)庫。vod CADOConn:OnInitCAOon()/ 初始化OLE/M庫環(huán)境:Coniialize(NULL); try/初始化指針m_pCnetion=NUL;/初始化指針_pRecordset=NUL; 創(chuàng)建on
43、necion對象m_pConectionCeteIstan(ADODB.Cnction);/ 設置連接字符串,必須是BSTR型或者_stt類型_bstr_t srConnect;swth(m_DaaType)cas :/CEStrConec=bs_t(Prode=Mcrst.e.OLEDB.;);strCect=stronct+_rt(Dt urce=);strConnect=strConnct+trt(IPddess)bstr_(t);strCone=stCnnect+_trDta;bra;ase:/EXCELsronnct=_str_t(Provdecrft.Je.OLEB40;);stC
44、onnct=strCone+_str_t(DaSrce=);stConnect=rConnect+bstr_t(tApat()_rt();stCnectstrCont+m_strata;strCnect=sConect+;Exend ropertes=Exc 8.0;bak;case3:/SQLSERVEsConectPovdr=SQED; Serr=MiIP;atabase=Shata; uid=admin; pwd23456;rak;m_pConnection-Op(stnec,,,aoeUnnon);/捕捉異常catch(comeror e)/ 顯示錯誤信息fMgeBox(e.Dcrip
45、to());ASST(ponneci != NULL);(2)對數(shù)據(jù)庫進行查詢etRcordS函數(shù)實現(xiàn)執(zhí)行Selec查詢語句,返回查詢結果集_orettr& CDOCon:etRecordet(CStringtrQ)try/連接數(shù)據(jù)庫,假如Conetin對象為空,則重新連接數(shù)據(jù)庫if(m_onnction=LL)OnnitCDOn();strSL.TimLeft();stQ.TriRight();/創(chuàng)建記錄集對象m_pReorset.CrteIstae(_uido(Redst);/ 取得表中的記錄m_pReors-Open(br_t(trSL),_Cetion.GetntercePt(),dO
46、pDynamic,adLOpimistic,dCmdxt);/ 捕捉異常ac(_co_eror e)/ 顯示錯誤信息AfxMessageBox(e.Desrpion();SSER(mpecordset!= NULL);/返回記錄集retr _pRecordse;CADOCnn類的Open函數(shù)的實現(xiàn)與GetRcorSet函數(shù)差不多類似,只是它不返回記錄集,而是打開數(shù)據(jù)庫表。()執(zhí)行數(shù)據(jù)庫操作語句xecteSQL函數(shù)實現(xiàn)執(zhí)行SL數(shù)據(jù)操作語句,如INR/UPDAELEE語句等。BOOL CADOConn:ExeceSQL(Ctrn srSQL)tr/是否差不多連接數(shù)據(jù)庫i(_Cnecion = NU
47、L) OnnitCADOon();strL.rimLft();strSL.TrimRigt();m_Conncion-Eecue(_b_t(strSL),ULL,admText);WriteLg(stS);return TRUE;catch(_com_err e)MssagBo(eDecpin();rtrnALSE;2、記錄集操作函數(shù)為了便于對記錄集進行操作,在DConn類中定義了常用的記錄集操作函數(shù)。GeValueInt實現(xiàn)了從記錄集中獵取不同類型的字段值函數(shù),以獵取整形字段值。int CADOonn:GtuInt(int idex)_iant_t Value;/var型返回值_varitt
48、 Inex;/索引it iVa;/數(shù)值返回值vndexvt=VT_;vnex.iVal=inx;alue=m_pRecrdse-Fels-GeItem(vIndex)Vale;/獵取索引字段的值sitch(aluevt)ase VTULL:/為空值ilue=;/賦值brea;caV_ERR:/錯誤iVlu0;/賦值ba;case VT_EPTY:/不存在iVaue=0;/賦值reak;et:iValue=vValue.Vl;/獵取值eturnialu;/返回整數(shù)值、列表控件操作函數(shù)在ADCn類中定義了列表控件的操作函數(shù),實現(xiàn)將記錄集數(shù)據(jù)添加到指定的列表控件中。其中InitList函數(shù)實現(xiàn)初始化
49、列表控件。BOO ADOConn:InitList(CListCtrllisMin,itclSum)longlMax0;_ariant_t vIndex;/var類型索引Inde.vtV_I2;inti;ax=m_pRcodsetFields-Cot;獵取記錄集字段數(shù)/設置列表框控件風格lsMain-StendStl(VS_EX_RILINES|LVS_E_FULLOSEL);or(i0;iFilds-etIte(vIndx)-Getame();/在列表框中添加列l(wèi)itain-InertCmn(i,strTie,LFM_CNTER,100,0);int intWidth;/列表框列的寬度for
50、(0;iclSum;i+)遍歷列表框中添加列/依照字段標題自動設置列寬litMai-SetColumnWidth(i,LVW_UTOIZE_SEHADE);itidthinihlsMain-GeColunidth(i);/計算列寬總和RETrtList;listnGetWinoRect(&ecLis);/獵取列表框的窗口區(qū)域if(intWitSelunidth(,lisMai-GeCoumnh(i)+intdth);retun TUE;FillLt函數(shù)用于向列表框中添加記錄BOOL COonn:FList(CListCtr *lisMan,intColOpeEn)nt i,Tpe,iRow=,
51、listidh=0;_varant_ vIdex;/r類型索引ong la=0;lMaxpRecrdsetield-Cunt;/記錄集字段數(shù)目vInd.tVT_I2;lisMan-DeleeAllIte();/刪除列表控件各列的值(!m_pRecrsetaEOF)/遍歷記錄集ovFirs();/首條記錄le(!m_pRorset-adoEOF)r(=;iFields-ette(vndx)GetType();swith(iType)caeao_FieldSr:cs adField_et:/文本traueGetVueStrig(i,0);獵取文本值beak;ase o_Feld_og:/長整型tr
52、Vale=GetVauegStr(i,0);/獵取長整值并轉換為文本brak;casado_Feld_In:/型trVlue=GealueItSr(i,0);/獵取INT值并轉換為文本bea;ce ado_Fie_Foat:/Float型strVle=etVlueFoSr(,0,2);/獵取Flo值并轉換為文本rk;cae Feld_Dubl:/oble型talu=GeValueDoblStr(i,0,2);/獵取Dobe值并轉換為文本reak;as adld_Bye:/yte型strValue=VlueByetr(i,0);/獵取Byte值并轉換為文本beak;cs ado_Field_Da
53、e:/日期時刻型strVue=GtValueStig(i,0);/獵取日期時刻值并轉換為文本ba;dfaut:strVal;bea;if(_DaTye=2)/Excl文件tru=Geaering(i,);if(i=)/第一列itMin-InrItem(iRow,trValue,0);/添加行elseistMai-SeItem(iRo,i,strVae);/設置行值m_Reordset-MveNxt();/下一記錄iRo=Ro1;Mvit();/移向記錄集開頭if(listMa-tItemCoun()0)/列表框含有列if(olenn)/要展開的列or(int =0;Cpnnd;i+)listM
54、an-SetColumnWidh(i,LVSC_AUTOZE);/自動設置列寬lisWh=listMain-Gtoumndth(i);/獵取列寬listMi-etColumnWdth(i,W_AUOIEUSHEADER);/依照列標題設置列寬(listWidtistMinGtColumnd()/依照列標題設置的列寬若小于自動設置的列寬listain-eColumnWih(,LSCW_UTOIZ_UHEADE);elseisMain-SColumWidh(i,LVCW_AUTOIZ_USEHADE);/依照列標題設置列寬else/表中沒有列f(i=0;Ma;+)listin-StColumnWi
55、dth(i,LVSCW_AUSIZE_EEADR);listWdth=itidh+listin-GeColumnWidth(i);RECT ectLit;listMGetWindwect(recList);if(listtSetColumnWdh(i,listMin-GetCumnWith(i)+liWidth);retur RU;5.1.數(shù)據(jù)庫表的操作類CtblePartInfo由于本項目模擬分布式數(shù)據(jù)庫,對數(shù)據(jù)庫部分表進行了分片、分配等冗余設計。因此,對數(shù)據(jù)庫的增、刪、改、查要制定一定的規(guī)則,來保證數(shù)據(jù)的一致性,而這種規(guī)則不因為表的不同而不同。為此,我們設計了CtablePartIn來統(tǒng)一
56、的執(zhí)行這種規(guī)則。lass taePtInfo :pl CWndublc:tblearInf();ablrtIno(trng _tbleNme);ablPtInfo();public:/依照表名tablm獲得表的分片和分配信息oid GetTabePrtInfo();bool peratiOpen(CString tSQL,in nColum);/依照表的分片和分配信息,按增加規(guī)則執(zhí)行數(shù)據(jù)庫插入操作o perationAd(CSrg strQL);/依照表的分片和分配信息,按增加規(guī)則執(zhí)行數(shù)據(jù)庫修改操作bol OperatinModify(CSting strSQ);/依照表的分片和分配信息,按增
57、加規(guī)則執(zhí)行數(shù)據(jù)庫查詢操作bo OperatioS(CSing strSQL);ool OpertionSelc(rngtSQ,n nClmn);ooOpetoncIi(String stSL,nt nColn);bool OperaiSelctInita(Cring strQ);/依照表的分片和分配信息,按增加規(guī)則執(zhí)行數(shù)據(jù)庫刪除操作bool Opraionelet(Crng rSQL);/處理總站或者區(qū)域站點故障vodHnerro(bool suces,in ra);pulic:nt part;it copy;CLitCtr* mist;CSrin tableNam;CSi tr;boIDon
58、e;bolIsDone;CString rrorMesag;下面以ol pationAd(String rSQ)為例介紹了為維護數(shù)據(jù)庫一致性,對數(shù)據(jù)庫更新規(guī)則的詳細實現(xiàn)。bo ablPatnfo:peatoAdd(CStrn strSQ)bolsucess=tre;/用于推斷SQL語句是否執(zhí)行成功/首先更新總站數(shù)據(jù)庫中的相應記錄,因為所有的信息都會在總公司中存在CADOConnadoMain();succe=adoMin.cuQL(strQ,0);andlrr(suces,0);/處理執(zhí)行結果,執(zhí)行故障則給出報錯信息f(ucces)/總站執(zhí)行成功,接著進行區(qū)域站點的操作if(0=m_gobal
59、AreaIt)/主站用戶添加數(shù)據(jù)if(1=copy)/冗余分配的信息,同步各個區(qū)域站點數(shù)據(jù)CDOConn adP(3);CSing slt=select *from IPIno herearea!0;adoIP.Open(sqstr);/那個地點只有海淀和朝陽兩個站點,因此預先申請兩個CDICn對象Dnn aoAces1;AOon doAces2;int i=;/循環(huán)更新每個區(qū)域站點wile(!adIP.adEOF())i+;stIP = IPAddress;Address =+adoP.GtVaeStrng(1,0);if(1=i)/處理海淀區(qū)數(shù)據(jù)庫uccss=adAcess1.ExeS(s
60、trS,1);HndlErr(succes,1);if(!succes)/區(qū)域站點沒有添加成功,這時總站撤銷事務adoMan._ponnectionRllbckTras();doMan.Writeog(ErrorMessage,0);/區(qū)域站點添加成功,需等待區(qū)域添加成功再提交事務f(2=&sucess)/區(qū)域站點添加成功,處理朝陽區(qū)uccesdAcess2.ExeteSQ(stQ,2);HandeError(ses,2);if(!success)/區(qū)域站點沒有添加成功aoam_pConnctionRllbaTrans();/總站撤銷事務doMWrieog(Erorssage,0);dcss1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 屋面水泥瓦施工方案
- 耐腐蝕泵項目風險識別與評估綜合報告
- 青少年心理健康與行為發(fā)展教育實踐
- 浙江華遠:盈利預測報告及審核報告
- 金浦鈦業(yè):上海東邑酒店管理有限公司2024年1-9月財務報表審計報告
- 山東石雕六角亭施工方案
- 埋地涂塑鋼管安裝施工方案
- 項目監(jiān)理實施方案
- 黃土邊坡錨桿施工方案
- 電氣設備二次搬運施工方案
- 課件圍術期下肢深靜脈血栓的預防與護理
- 2025年菏澤家政職業(yè)學院單招職業(yè)技能測試題庫完美版
- 清華大學告訴你普通人如何抓住DeepSeek紅利
- (2025)輔警招聘公安基礎知識必刷題庫及參考答案
- 農業(yè)機械設備維護與質量保障措施
- 基于圖像處理的CAD圖紙比對算法
- 二零二五年度城市排水管網運維合作協(xié)議4篇
- 《習近平法治思想概論(第二版)》 課件 2. 第二章 習近平法治思想的理論意義
- 人教版高中英語挖掘文本深度學習-選修四-UNIT-4(答案版)
- 太陽能微動力農村污水處理系統(tǒng)建設項目可行性研究報告
- 子宮內膜增生護理個案
評論
0/150
提交評論