




已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
文檔資料管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)1引 言當(dāng)今世界是飛速發(fā)展的信息時(shí)代,在各行各業(yè)中離不開(kāi)信息處理,這正是計(jì)算機(jī)被廣泛用于管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。但是在眾多的資料中,如何規(guī)范,準(zhǔn)確,快速,全面的管理自己的資料,如書(shū)籍,電子資料等,并且方便自己查閱。使用計(jì)算機(jī)進(jìn)行信息管理控制,不僅提高了工作效率,而且大大提高了其安全性。本系統(tǒng)就是為了管理好自己的各種有用資料信息而設(shè)計(jì)的。面對(duì)各種繁多的資料,很多人是沒(méi)有進(jìn)行合理的分類(lèi)整理和建立一個(gè)資料管理系統(tǒng)來(lái)管理它們,有時(shí)候在手頭研究需要一些資料的時(shí)候往往是靠記憶來(lái)尋找,但是這樣做會(huì)浪費(fèi)很多時(shí)間和精力。由于數(shù)據(jù)繁多容易丟失,且不易查找。總的來(lái)說(shuō)缺乏系統(tǒng),規(guī)范的信息處理手段。盡管我們有計(jì)算機(jī),但是尚未用于信息管理,沒(méi)有發(fā)揮它的效益,資料閑置比較突出,就是管理信息開(kāi)發(fā)的基本環(huán)境。基于此類(lèi)問(wèn)題,我認(rèn)為有必要建立一個(gè)資料管理系統(tǒng),使資料管理工作規(guī)范化,程序化,避免資料管理隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢和修改資料情況。本次是在老師指導(dǎo)下自己獨(dú)立完整的進(jìn)行軟件的設(shè)計(jì),程序編寫(xiě),調(diào)試等工作。通過(guò)自己對(duì)整個(gè)流程的設(shè)計(jì)和實(shí)現(xiàn),能夠完成最初提出的要求,也對(duì)一些功能進(jìn)行了擴(kuò)展和加深。利用文檔資料管理系統(tǒng)能夠比較完善的管理自己的資料,也能比較快速的找到自己以前看過(guò)或是記錄下的資料,使用起來(lái)也很方便,快速。2 設(shè)計(jì)理論依據(jù)2.1 MFC簡(jiǎn)介MFC微軟基礎(chǔ)類(lèi)(Microsoft Foundation Classes),實(shí)際上是微軟提供的,用于在C+環(huán)境下編寫(xiě)應(yīng)用程序的一個(gè)框架和引擎。MFC就是掛在它之上的一個(gè)輸助軟件開(kāi)發(fā)包,MFC作為與VC+血肉相連的部分(注意C+和VC+的區(qū)別:C+是一種程序設(shè)計(jì)語(yǔ)言,是一種大家都承認(rèn)的軟件編制的通用規(guī)范,而VC+只是一個(gè)編譯器,或者說(shuō)是一種編譯器+源程序編輯器的IDE,WS,PlatForm),MFC同BC+集成的VCL一樣是一個(gè)非外掛式的軟件包,類(lèi)庫(kù),只不過(guò)MFC類(lèi)是微軟為VC+專(zhuān)配的. MFC是Win API與C+的結(jié)合,API,即微軟提供的Winos下應(yīng)用程序的編程語(yǔ)言接口,是一種軟件編程的規(guī)范,但不是一種程序開(kāi)發(fā)語(yǔ)言本身。MFC不只是一個(gè)功能單純的界面開(kāi)發(fā)系統(tǒng),它提供的類(lèi)絕大部分用來(lái)進(jìn)行界面開(kāi)發(fā),關(guān)聯(lián)一個(gè)窗口的動(dòng)作,但它提供的類(lèi)中有好多類(lèi)不與一個(gè)窗口關(guān)聯(lián),即類(lèi)的作用不是一個(gè)界面類(lèi),不實(shí)現(xiàn)對(duì)一個(gè)窗口對(duì)象的控制(如創(chuàng)建,銷(xiāo)毀)MFC中的各種類(lèi)結(jié)合起來(lái)構(gòu)成了一個(gè)應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來(lái)建立Windows下的應(yīng)用程序。MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,程序員所要做的就是通過(guò)預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個(gè)輪廓。Microsoft Visual C+提供了相應(yīng)的工具來(lái)完成這個(gè)工作:AppWizard可以用來(lái)生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計(jì)用戶接口;Class Wizard用來(lái)協(xié)助添加代碼到框架文件;最后,編譯,則通過(guò)類(lèi)庫(kù)實(shí)現(xiàn)了應(yīng)用程序特定的邏輯。2.2 XML介紹XML是Extensible Markup Language的縮寫(xiě),即可擴(kuò)展標(biāo)記語(yǔ)言是一種您可以用來(lái)創(chuàng)建自己標(biāo)記的標(biāo)記語(yǔ)言。它由萬(wàn)維網(wǎng)協(xié)會(huì)(W3C)創(chuàng)建,用來(lái)克服 (即超文本標(biāo)記語(yǔ)言(Hypertext Markup Language),它是所有網(wǎng)頁(yè)的基礎(chǔ))的局限。和 一樣;XML 基于 SGML 標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(Standard Generalized Markup Language)XML實(shí)際上是Web上表示結(jié)構(gòu)化信息的一種標(biāo)準(zhǔn)文本格式,它沒(méi)有復(fù)雜的語(yǔ)法和包羅萬(wàn)象的數(shù)據(jù)定義。XML同一樣,都來(lái)自SGML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)。SGML是一種在Web發(fā)明之前就早已存在的用標(biāo)記來(lái)描述文檔資料的通用語(yǔ)言。但SGML十分龐大且難于學(xué)習(xí)和使用。鑒于此,人們提出了語(yǔ)言。但近年來(lái),隨著Web應(yīng)用的不斷深入,在需求廣泛的應(yīng)用中已顯得捉襟見(jiàn)肘,有人建議直接使用SGML作為Web語(yǔ)言。但SGML太龐大了,學(xué)用兩難尚且不說(shuō),就是全面實(shí)現(xiàn)SGML的瀏覽器也非常困難。于是Web標(biāo)準(zhǔn)化組織W3C建議使用一種精簡(jiǎn)的SGML版本XML。XML與SGML一樣,是一個(gè)用來(lái)定義其他語(yǔ)言的元語(yǔ)言。與SGML相比,XML規(guī)范不到SGML規(guī)范的1/10,簡(jiǎn)單易懂,是一門(mén)既無(wú)標(biāo)簽集也無(wú)語(yǔ)法的新一代標(biāo)記語(yǔ)言。 可以說(shuō),XML的出現(xiàn)給數(shù)據(jù)交換帶來(lái)了一場(chǎng)革命;XML的出現(xiàn)是至今為止最聰明的一種符號(hào)化語(yǔ)言;XML成為下一代網(wǎng)絡(luò)發(fā)展的基石。 XML作為引人注目的核心技術(shù)應(yīng)用于BtoB、Web服務(wù)、.NET等許多系統(tǒng)中。XML可以作為電子數(shù)據(jù)交換的統(tǒng)一格式,用XML可以對(duì)數(shù)據(jù)關(guān)系進(jìn)行定義形成特有的標(biāo)準(zhǔn),因此各行各業(yè)都在建立自己的行業(yè)化標(biāo)準(zhǔn),以應(yīng)用于網(wǎng)絡(luò)上處理電子商務(wù),把后臺(tái)系統(tǒng)通過(guò)Web站點(diǎn)表現(xiàn)出來(lái)。XML還可以作為數(shù)據(jù)倉(cāng)儲(chǔ),一個(gè)XML文件就是一個(gè)小的數(shù)據(jù)庫(kù),通過(guò)對(duì)數(shù)據(jù)關(guān)系的定義形成各種關(guān)系、屬性的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)交換、上下文檢索、多媒體傳輸。XML具有其他方法所不具備的數(shù)據(jù)描述特點(diǎn)XML是以文本形式來(lái)描述的一種文件格式 由于XML是以文本形式描述的,所以適合于各種平臺(tái)環(huán)境的數(shù)據(jù)交換。同樣由于使用文本來(lái)描述內(nèi)容,可以越過(guò)不同平臺(tái)的障礙進(jìn)行正常的數(shù)據(jù)交換。但是,文本形式也會(huì)因?yàn)槲淖执a的不同造成不能閱讀的問(wèn)題,在這一點(diǎn)上XML有著非常完美的解決方案。 XML使用有意義的標(biāo)記(Tag) 在XML中文件是由一個(gè)個(gè)稱之為元素(Element)的部件構(gòu)成。使用標(biāo)記(Tag)來(lái)描述元素。由于使用了標(biāo)記的描述方法,可以保持原數(shù)據(jù)的意思和構(gòu)造在互聯(lián)網(wǎng)上進(jìn)行數(shù)據(jù)交換,進(jìn)而可以保持不同系統(tǒng)之間數(shù)據(jù)交換的靈活性。 可以說(shuō),XML是“定義語(yǔ)言的語(yǔ)言”,也即是一種元語(yǔ)言。由于XML具有元語(yǔ)言的功能,所以可以成為描述電子商務(wù)數(shù)據(jù)、多媒體演示數(shù)據(jù)、數(shù)學(xué)公式等各種各樣數(shù)據(jù)應(yīng)用語(yǔ)言的基礎(chǔ)語(yǔ)言。下面提供幾個(gè)以XML為基礎(chǔ)生成的數(shù)據(jù)描述語(yǔ)言(本文亦稱為XML應(yīng)用語(yǔ)言)的應(yīng)用例子,即出版媒體:Open eBook(電子書(shū)籍)、NewsML(新聞媒體);科學(xué):MathML(數(shù)學(xué)表達(dá)式)、CML(化學(xué));電子商務(wù):cXML(電子商務(wù))、FpML(金融);多媒體:SMIL(多媒體演示)、BML(衛(wèi)星數(shù)據(jù)傳送)。 XML是描述內(nèi)容的數(shù)據(jù)格式,在使用XML數(shù)據(jù)時(shí),還需要XML數(shù)據(jù)的顯示、打印、數(shù)據(jù)結(jié)構(gòu)的變更等許多相關(guān)技術(shù)。如果這些相關(guān)技術(shù)也都標(biāo)準(zhǔn)化的話,即使在不同平臺(tái)開(kāi)發(fā)應(yīng)用程序也都可以用相同的方法,使開(kāi)發(fā)難度降低。 處理XML數(shù)據(jù)時(shí),一定要使用XML Processor(也就是XML Parser),把XML數(shù)據(jù)結(jié)構(gòu)的檢查等交給XML Parser去做。應(yīng)用程序?qū)邮盏絏MLProcessor傳遞來(lái)的XML樹(shù)進(jìn)行處理,向用戶提供服務(wù)。此時(shí),不管是電子商務(wù),還是知識(shí)管理,都是定義XML數(shù)據(jù)結(jié)構(gòu)的技術(shù)、顯示打印XML數(shù)據(jù)的技術(shù)、XML數(shù)據(jù)結(jié)構(gòu)變更技術(shù)、XML數(shù)據(jù)聯(lián)接整合技術(shù)、用程序操作XML樹(shù)的API和其它應(yīng)用技術(shù)的組合。在XML中用戶可以自由的定義標(biāo)記名以及與標(biāo)記相關(guān)的元素及元素層次,這是XML的主要特征。但是,如果定義的都是只有自己才能理解的標(biāo)記,就無(wú)法與其他人進(jìn)行交換數(shù)據(jù)。為了在企業(yè)團(tuán)體之間進(jìn)行XML格式的數(shù)據(jù)的交換,XML數(shù)據(jù)的結(jié)構(gòu)、元素的名稱、元素的數(shù)據(jù)類(lèi)型以及元素的親子關(guān)系都需要仔細(xì)考慮,一定要設(shè)計(jì)成人和系統(tǒng)能夠理解的語(yǔ)言。這樣設(shè)計(jì)的XML數(shù)據(jù)結(jié)構(gòu)在XML領(lǐng)域稱為Schema,描述Schema的語(yǔ)言稱為Schema語(yǔ)言。DTD是最普通XML的Schema語(yǔ)言是DTD(Document Type Definition:文檔類(lèi)型定義)。DTD是遠(yuǎn)在SGML時(shí)期就一直使用的Schema語(yǔ)言,1998年制訂XML語(yǔ)法時(shí),沿用了描述Schema的DTD。XML Schema中有下述DTD中不具備的特征:多個(gè)Schema復(fù)合使用XML名字空間;用XML語(yǔ)法描述;可以詳細(xì)定義元素的內(nèi)容及屬性值的數(shù)據(jù)類(lèi)型。由于在XML Schema中的數(shù)據(jù)結(jié)構(gòu)也都是用XML數(shù)據(jù)來(lái)表現(xiàn)的,與DTD相比數(shù)據(jù)量增大很多。但是,XML Schema的表現(xiàn)力要遠(yuǎn)比DTD強(qiáng)得多,不僅支持字符串、10進(jìn)制數(shù)、浮動(dòng)小數(shù)點(diǎn)、日期等,還支持m回以上和n回以下出現(xiàn)的元素(m、n為整數(shù))的指定。例如“郵編xxxxxx”(x是字符)是郵政編碼元素的格式指定等都是DTD所不能表現(xiàn)的內(nèi)容。XML Schema于20XX年5月成為W3C的推薦規(guī)范,對(duì)XML的利用產(chǎn)生了重要的影響。 XML作為數(shù)據(jù)描述語(yǔ)言是非常優(yōu)秀的,但是并不是所有的電子數(shù)據(jù)都是轉(zhuǎn)換到XML是最有效的。例如XML的文本表現(xiàn)手法、標(biāo)記的符號(hào)化等會(huì)導(dǎo)致XML數(shù)據(jù)比二進(jìn)制表現(xiàn)方法數(shù)據(jù)量增加,尤其當(dāng)數(shù)據(jù)量很大時(shí),會(huì)成為很大的問(wèn)題。也就是說(shuō),XML的導(dǎo)入要根據(jù)具體需求,比較其優(yōu)缺點(diǎn),在充分發(fā)揮XML優(yōu)點(diǎn)的領(lǐng)域進(jìn)行。盡管XML具備了作為通用數(shù)據(jù)描述語(yǔ)言的優(yōu)秀特征,但是XML不是編程語(yǔ)言,說(shuō)到底它是一種數(shù)據(jù)描述的技術(shù)。因此XML文件的顯示、文件結(jié)構(gòu)的變更、應(yīng)用程序的操作等XML相關(guān)技術(shù)也是非常重要的。隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展深入XML技術(shù)的應(yīng)用也將不斷擴(kuò)大。該技術(shù)不僅在傳統(tǒng)的銀行之間數(shù)據(jù)交換、證券公司對(duì)上市公司情況的數(shù)據(jù)統(tǒng)計(jì)、圖書(shū)館對(duì)圖書(shū)的查詢檢索、企事業(yè)文件檔案管理等領(lǐng)域的應(yīng)用更加迫切,在電子商務(wù)、搜索引擎軟件、自動(dòng)智能翻譯、文檔發(fā)聲軟件等領(lǐng)域也將得到更大的發(fā)展,特別是近期發(fā)展起來(lái)的移動(dòng)通訊網(wǎng)絡(luò)服務(wù)的發(fā)展,將使各種各樣的信息經(jīng)過(guò)格式轉(zhuǎn)換到達(dá)PDA、甚至到達(dá)手持電話機(jī),將來(lái)我們可以通過(guò)網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換服務(wù)使小小的手機(jī)可以閱讀到大千世界的豐富信息。3文檔資料管理系統(tǒng)簡(jiǎn)介3.1 系統(tǒng)開(kāi)發(fā)背景本文檔資料管理系統(tǒng)是為個(gè)人管理自己的各種資料的一個(gè)基于Windows XP系統(tǒng)的一個(gè)應(yīng)用軟件.現(xiàn)在也有很多的資料管理系統(tǒng),其中都是一個(gè)運(yùn)用界面和邏輯接口嵌入一個(gè)數(shù)據(jù)庫(kù),這樣在編寫(xiě)軟件的時(shí)候也很方便和快速。但是對(duì)于編程人員來(lái)說(shuō),利用別的工具來(lái)實(shí)現(xiàn)自己的東西總是不好的事,尤其對(duì)于我們這種經(jīng)驗(yàn)不足的人來(lái)說(shuō),尤其是不好的事情。因此我就想自己編寫(xiě)一個(gè)儲(chǔ)存結(jié)構(gòu)來(lái)代替數(shù)據(jù)庫(kù)。因?yàn)樵谝郧皩W(xué)習(xí)過(guò)XML知道用它可以實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)功能,于是決定利用它編寫(xiě)文件存儲(chǔ)結(jié)構(gòu)來(lái)實(shí)現(xiàn)本系統(tǒng)的數(shù)據(jù)存儲(chǔ)。現(xiàn)在人們有了電腦,對(duì)于存儲(chǔ)自己需要的資料有了一個(gè)好的地方,但是如何能夠有效的把日益增多的這些各種資料管理起來(lái),能夠方便需要的時(shí)候取出來(lái),這是一個(gè)難題;對(duì)于一些以前看過(guò)的書(shū),如何在以后突然需要的時(shí)候,快速的找到它的擺放位子?這些都是開(kāi)發(fā)本資料管理系統(tǒng)的一個(gè)原因。為了管理個(gè)人的資料例如:電子資料,紙版資料等不同的資料并對(duì)所有的資料進(jìn)行歸類(lèi),如劃分為VC+資料,windows類(lèi)資料,健康類(lèi)資料等。當(dāng)這些資料經(jīng)過(guò)科學(xué)的分類(lèi),并把各種不同屬性的資料各類(lèi)管理起來(lái),這樣就實(shí)現(xiàn)了對(duì)資料的有效管理,也方便了用戶在需要的時(shí)候很快能夠找到想要的資料,節(jié)約了很多人力物力和精力。3.2系統(tǒng)開(kāi)發(fā)環(huán)境3.2.1 系統(tǒng)軟件環(huán)境本系統(tǒng)采用的軟件工具有: 操作系統(tǒng): Windows XP 開(kāi)發(fā)環(huán)境:VC+6.03.2.2工具簡(jiǎn)介 VC+6.0在提供可視化的編程方法的同時(shí),也適用于編寫(xiě)直接對(duì)系統(tǒng)進(jìn)行底層操作的程序,其生成代碼的質(zhì)量要優(yōu)于很多其他的開(kāi)發(fā)工具。VC+6.0所提供的基本類(lèi)庫(kù)MFC,對(duì)Windows所用的Win32應(yīng)用程序接口進(jìn)行了十分徹底的封裝,這使得開(kāi)發(fā)人員可以使用完全面向?qū)ο蟮姆椒▉?lái)進(jìn)行Windows編程,從而大大節(jié)省了應(yīng)用程序的開(kāi)發(fā)周期,降低了開(kāi)發(fā)成本。而且,其強(qiáng)大的調(diào)試功能也為大型復(fù)雜軟件的開(kāi)發(fā)提供了有效的排錯(cuò)手段。隨著多媒體技術(shù)和圖形圖像技術(shù)的不斷發(fā)展,可視化技術(shù)得到了廣泛的重視,愈來(lái)愈多的人開(kāi)始研究并應(yīng)用可視化技術(shù)。所謂可視化技術(shù),一般是指軟件開(kāi)發(fā)階段的可視化和對(duì)計(jì)算機(jī)圖形技術(shù)和方法的應(yīng)用。VC+是一個(gè)很好的可視化編程工具,使用VC+環(huán)境來(lái)開(kāi)發(fā)基于Windows的應(yīng)用程序,其界面更友好,便于程序員操作。開(kāi)發(fā)環(huán)境是程序員同VC+的交互界面,通過(guò)它程序員可以訪問(wèn)C+源代碼編輯器、資源編輯器,使用內(nèi)部調(diào)試器,還可以創(chuàng)建項(xiàng)目文件3.3系統(tǒng)概述軟件主要提供的功能包括:資源管理方面添加資源,刪除資源;資源瀏覽按照目錄,按照搜索。因此把軟件大體分成三個(gè)部分進(jìn)行實(shí)現(xiàn):第一部分: 用戶界面。包括整個(gè)程序的框架,以及用戶操作的接口設(shè)計(jì)等即就是實(shí)現(xiàn)用戶界面的部分.第二部分:用于處理事務(wù)的模塊.包括用戶添加,刪除,修改資源,用戶通過(guò)目錄瀏覽,通過(guò)搜索找尋,通過(guò)自己的收藏夾進(jìn)行資源管理等業(yè)務(wù)邏輯的實(shí)現(xiàn)。第三部分: 用于進(jìn)行數(shù)據(jù)物理存儲(chǔ)的模塊。使用XML文檔進(jìn)行數(shù)據(jù)的存儲(chǔ),所以在實(shí)現(xiàn)的過(guò)程中,XML的操作成為了這個(gè)模塊的主要工作。文檔資料管理系統(tǒng)是為個(gè)人管理自己的各種資料的軟件,首先將資料分為電子資料和非電子資料;電子資料主要包括自己電腦上面儲(chǔ)存的例如:電子文檔,電子書(shū)籍,影像資料等各種電子資料。非電子資料包括書(shū)籍,影碟,光碟等實(shí)物資料;對(duì)每一份資料均有命名,可以使用書(shū)名來(lái)指代這本書(shū),也對(duì)每一份資料加了關(guān)鍵字和注釋?zhuān)阌诤竺嫘枰獣r(shí)候準(zhǔn)確的找到需要的資料。對(duì)所有的資料進(jìn)行歸類(lèi),如劃分為VC+資料,windows類(lèi)資料,影像類(lèi)資料等;指明資料的存放位置,若是電子資料(如電腦上的文件),可以通過(guò)鼠標(biāo)點(diǎn)擊直接打開(kāi)文件,對(duì)于非電子資料和非本機(jī)子上的資料,在注釋內(nèi)注明其放置的位子,便于快速找到自己需要的資料;系統(tǒng)也有增加,刪除,修改等工具條:增加是在有新資料需要用本系統(tǒng)管理的時(shí)候,可以通過(guò)它來(lái)增加。刪除是對(duì)無(wú)用的資料進(jìn)行刪除。修改是需要對(duì)已有的資料增加一些說(shuō)明的。另外也有目錄,搜索和收藏夾等功能。系統(tǒng)也在最下面的窗口有一個(gè)對(duì)選中的資料有一個(gè)類(lèi)似統(tǒng)計(jì)的顯示,便于使用者,更加方便的使用本系統(tǒng)。4文檔資料管理系統(tǒng)的設(shè)計(jì)4.1系統(tǒng)需求分析及功能設(shè)計(jì)隨著信息時(shí)代的來(lái)臨,電腦用戶的資料日益增多,而這些資料可能有著不同的特點(diǎn)。比如,它可能是一本書(shū),也可能是一張光碟,也可能是個(gè)電子文檔。如果稍有疏忽,資料的存放位置失去了某些特征,例如,某些電子文檔你可能放到了一個(gè)目錄下,而另外一個(gè)文檔你卻放到了其它的目錄下。當(dāng)你需要的時(shí)候,將難于準(zhǔn)確迅速的找到,更談不上有效的查詢和管理了。總之,資料屬性的多元化和數(shù)量的增多給管理這些資料帶來(lái)了很多不便。文檔資料管理系統(tǒng)的設(shè)計(jì)目標(biāo)正是為了解決這些問(wèn)題。它將滿足用戶對(duì)資源的管理:增加,刪除,修改,搜索及查看資源。具體說(shuō)來(lái),該系統(tǒng)將具備下面的功能:(1)增加資源用戶能夠添加一個(gè)資源,該資源可以是電子資源(比如PC上某個(gè)目錄下的一張圖片)或者是非電子資源(例如書(shū)桌上的本書(shū))。添加該資源后,用戶將可以通過(guò)該系統(tǒng)直接管理和使用該資源。(2)刪除資源用戶能夠?qū)⑾到y(tǒng)中的某個(gè)資源刪除掉,從而放棄系統(tǒng)對(duì)該資源的管理。(3)修改資源當(dāng)某個(gè)資源的屬性發(fā)生變化的時(shí)候(例如存放位置發(fā)生變化),用戶能夠選中某個(gè)資源,對(duì)其屬性進(jìn)行修改,以反映這種變化。(4)搜索資源用戶能夠通過(guò)提供資源的某個(gè)特征屬性進(jìn)行查找,獲得相關(guān)的資源。(5)查看資源如果所選擇資源為電子文檔,用戶將能在系統(tǒng)中直接查看該資源。圖1 整體框架設(shè)計(jì)圖資源應(yīng)該具有以下屬性:資源的作者,資源名稱,資源的位置(若是電子資源,則是資源在電腦上的文件位置),資源添加日期,資源所屬目錄情況(一個(gè)資源可以屬于多個(gè)目錄),關(guān)鍵字(用于搜索), 資源的注釋等。 下面就系統(tǒng)中對(duì)以上屬性的定義:struct RESITEMint id; / 資源在文檔中的唯一標(biāo)志string name; /資源名稱string author; /資源的作者string path; /資源的位置(若是電子資源,則是資源在電腦上的文件位置) bool bEbook;/是否是電子資源string date; /資源添加日期string keywords; /關(guān)鍵字,用于搜索int catalogs; /資源所屬目錄情況(一個(gè)資源可以屬于多個(gè)目錄)double bytes; /資源大?。ㄖ粚?duì)電子資源有效) string note; /資源的注釋;4.2 XML存儲(chǔ)結(jié)構(gòu)的設(shè)計(jì) 本系統(tǒng)的用XML編寫(xiě)存儲(chǔ)結(jié)構(gòu),參照一般的XML編寫(xiě)方法包含以下幾個(gè)類(lèi):XmlContainer(XmlTree),XmlFile,XmlLeaf,XmlNode,XmlParser。表1 XmlFile設(shè)計(jì)表類(lèi)名:XmlFile設(shè)計(jì)用途:用于將一個(gè)磁盤(pán)上的XML文檔以字符串的方式讀入到內(nèi)存中,或者將以字符串方式存于內(nèi)存中的XML文檔輸出到磁盤(pán)。方法/屬性作用string _doc保存XML字符串的內(nèi)部成員變量。bool load(const char* file)將參數(shù)file指定的文件載入類(lèi)的成員變量doc中。bool save(const char* file)將成員變量doc的值保存到file指定的文件中。const string& getdoc()返回doc的值。bool setdoc(const string& _doc)以_doc設(shè)置doc的值。表2 Xmlparser設(shè)計(jì)表類(lèi)名:XmlParser設(shè)計(jì)用途:用于實(shí)現(xiàn)XmlTree和字符串化的XML文檔的相互轉(zhuǎn)換。方法/屬性作用static XmlTree* doc2tree(const string& doc)將doc轉(zhuǎn)換成一個(gè)XmlTree。static string tree2doc(XmlTree* pXmlTree)將一個(gè)XmlTree轉(zhuǎn)換為字符串。static int gettoken(string strDoc, string& token)從strDoc中獲取第一個(gè)標(biāo)記(或者值)說(shuō)明:正是通過(guò)這兩個(gè)類(lèi)的協(xié)作,實(shí)現(xiàn)了XML文檔的讀寫(xiě)和轉(zhuǎn)換。例如:XmlFile file;if(!file.load(Settingsitems.xml)AfxMessageBox(打開(kāi)數(shù)據(jù)文件items.xml失敗);return;XmlTree* pTree = XmlParser:doc2tree(file.getdoc();if(!pTree)AfxMessageBox(轉(zhuǎn)換數(shù)據(jù)文件items.xml失敗);return;上面的代碼段首先使用XmlFile的實(shí)例load了一個(gè)XML文檔,然后使用XmlParser:doc2tree創(chuàng)建了一個(gè)XmlTree,從而為內(nèi)存中使用XML提供了基礎(chǔ)。下面說(shuō)明一下對(duì)XML的處理方案。使用樹(shù)型結(jié)構(gòu)表達(dá)XML文檔,可以比較方便的進(jìn)行相應(yīng)的讀寫(xiě)刪改操作。因?yàn)閄ML本身就是一個(gè)數(shù)型的結(jié)構(gòu)。例如:tttttt13dxx7xx以上是一段程序中用到的XML文檔結(jié)構(gòu)。注意到整個(gè)文檔以開(kāi)始,以結(jié)尾,表示之間的都是存儲(chǔ)的數(shù)據(jù)(實(shí)際上就是資源的屬性數(shù)據(jù))。中間共有兩個(gè)item,而每個(gè)item又各有幾個(gè)屬性(如,等)。所以可以用一顆樹(shù)來(lái)表示:圖2 Xml樹(shù)型結(jié)構(gòu)圖注意到上面的樹(shù)中有些節(jié)點(diǎn)只有Name沒(méi)有Value,而有些卻都有。雖然它們都是節(jié)點(diǎn),但類(lèi)型上還是有區(qū)別的。故,采用三個(gè)類(lèi)表達(dá)這種信息:XmlNode,XmlLeaf,XmlContainer。首先定義一個(gè)接口類(lèi)XmlNode,該類(lèi)表達(dá)抽象的XML節(jié)點(diǎn)。然后使用XmlLeaf類(lèi)和XmlContainer類(lèi)來(lái)實(shí)現(xiàn)XmlNode,XmlLeaf表示葉節(jié)點(diǎn)(有Name和Value雙重屬性的節(jié)點(diǎn),但自己沒(méi)有子節(jié)點(diǎn)),XmlContainer表示容器節(jié)點(diǎn)(只有Name屬性的節(jié)點(diǎn),而且自己可以有子節(jié)點(diǎn))。下面是它們的定義:class XmlNodepublic:XmlNode()name = node;parent = NULL;virtual XmlNode();virtual bool isleaf()=0; /是否葉節(jié)點(diǎn)virtual bool iscontainer()=0;/是否容器節(jié)點(diǎn)virtual XmlNode* getparent()return parent; /返回父節(jié)點(diǎn)virtual bool setparent(XmlNode* _parent) parent=_parent; return true; /設(shè)置父節(jié)點(diǎn)virtual const string& getname()return name; /返回節(jié)點(diǎn)名稱virtual bool setname(const string& _name)name=_name; return true; /設(shè)置節(jié)點(diǎn)名稱protected:XmlNode* parent;string name; class XmlContainer : public XmlNodepublic:XmlContainer()pos = -1; name=container;XmlContainer(const string& _name)name=_name; pos = -1;XmlContainer()release();bool isleaf() return false;bool iscontainer()return true;bool addchild(XmlNode* _node); /新增一個(gè)子節(jié)點(diǎn)bool remove(XmlNode* pNode); /刪除一個(gè)子節(jié)點(diǎn)XmlNode* firstchild(); /返回第一個(gè)子節(jié)點(diǎn)XmlNode* nextchild(); /返回下一個(gè)字節(jié)點(diǎn)XmlNode* getchild(int nIndex); /返回第nIndex個(gè)子節(jié)點(diǎn)XmlNode* search(const string& name); /找到第一個(gè)以name為名的子孫節(jié)點(diǎn)XmlNode* search(const string& name, const string& value); /找到第一個(gè)以name為名,以value為值的葉節(jié)點(diǎn)void trav(ostream& out); /遍歷并輸出到out中void print(int lev);protected:void release();int pos;vector children;typedef XmlContainer XmlTree;class XmlLeaf : public XmlNodepublic:XmlLeaf()name=leaf;XmlLeaf(const string& _name) name=_name;XmlLeaf(const string& _name, const string& _value) name=_name; value=_value;XmlLeaf();bool isleaf() return true; /是葉節(jié)點(diǎn),返回truebool iscontainer()return false; /不是容器節(jié)點(diǎn),返回falseconst string& getvalue()return value; /獲取值bool setvalue(const string& _value)value=_value; return true;/設(shè)置值protected:string value;下圖為數(shù)據(jù)流的轉(zhuǎn)化圖:圖3 Xml 數(shù)據(jù)流轉(zhuǎn)換圖在讀取文件數(shù)據(jù)的時(shí)候使用XmlFile從磁盤(pán)讀取文件數(shù)據(jù),并轉(zhuǎn)化為一個(gè)String 對(duì)象,然后使用XmlParser轉(zhuǎn)化為一個(gè)XmlTree對(duì)象,這樣就可以很方便的操作數(shù)據(jù)。當(dāng)存儲(chǔ)數(shù)據(jù)的時(shí)候,使用XmlParser把一個(gè)XmlTree對(duì)象轉(zhuǎn)化為一個(gè)String 對(duì)象,然后通過(guò)XmlFile類(lèi)將這個(gè)String 對(duì)象保存到磁盤(pán)文件中。上述過(guò)程就實(shí)現(xiàn)了系統(tǒng)數(shù)據(jù)流的轉(zhuǎn)化,也在次基礎(chǔ)上變于整個(gè)系統(tǒng)調(diào)用XML來(lái)實(shí)現(xiàn)具體的功能。4.3用戶界面和事物處理4.3.1用戶界面本系統(tǒng)的用戶界面是一個(gè),類(lèi)似VC的界面,左邊、底下有兩個(gè)可浮動(dòng)、可變大小的控制窗口。具體實(shí)現(xiàn)的為:首先創(chuàng)建窗口的定義如下:先為CMainFrame增加成員變量:class CMainFrame : public CFrameWndprotected:CMainFrame();DECLARE_DYNCREATE(CMainFrame)public:CDlgInfo m_dlgInfo; /用于顯示信息,位于程序最下方CCoolTabCtrl m_TabCtrl;CCoolBarm_wndMyBar1; /我們將它作為左邊的窗口CCoolBarm_wndMyBar2;/我們將它作為右邊的窗口創(chuàng)建ControlBar即控制條和“刪除”,“修改”,“修改”按鈕: if (!m_wndMyBar1.Create(_T(我的控制條), this, CSize(230,260),TRUE,123);if (!m_wndMyBar2.Create(_T(我的控制條2), this,CSize(200,100),TRUE,124)m_wndToolBar.SetButtonText(0, 增加 );m_wndToolBar.SetButtonText(1, 刪除 );m_wndToolBar.SetButtonText(2, 修改 );創(chuàng)建TAB Control,并把它加入到ControlBar中。需要注意的是:同一個(gè)ControlBar只能加入一個(gè)一級(jí)子窗口m_TabCtrl.Create(TCS_DOWN|WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),&m_wndMyBar1,125);m_TabCtrl.AddPage(RUNTIME_CLASS(CCatalogDlg),IDD_DLG_CATALOG, 目 錄, IDI_ICON_CATALOG);m_TabCtrl.AddPage(RUNTIME_CLASS(CSearchDlg),IDD_DLG_SEARCH, 搜 索, IDI_ICON_SEARCH);m_TabCtrl.AddPage(RUNTIME_CLASS(CFavDlg), IDD_DLG_FAV, 收藏夾, IDI_ICON_FAC);停靠控制:m_wndMyBar1.SetBarStyle(m_wndMyBar1.GetBarStyle() |CBRS_TOOLTIPS | CBRS_FLYBY| CBRS_SIZE_DYNAMIC);m_wndMyBar2.SetBarStyle(m_wndMyBar2.GetBarStyle() |CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);m_wndMyBar1.EnableDocking(CBRS_ALIGN_ANY);m_wndMyBar2.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_LEFT);/??孔筮匘ockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_BOTTOM);/停靠右邊m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);此時(shí)我們已經(jīng)生成了兩個(gè)控制條窗口,但窗口中還沒(méi)有任何東西。在創(chuàng)建這些控件時(shí)將控制條窗口指針作為父窗口指針賦值給這些控件。在上面敘訴中,創(chuàng)建了“添加”“刪除”,“修改”按鈕。其他按鈕,控件在class CCoolTabCtrl : public CWnd類(lèi)中聲明和定義,在使用中調(diào)用。由于它們涉及到對(duì)具體事件的處理,在下面部分分類(lèi)說(shuō)明。其中對(duì)于風(fēng)格的使用,中沒(méi)有特別說(shuō)明,在使用中可以看出來(lái)。4.3.2事務(wù)處理事務(wù)處理這個(gè)模塊就是對(duì)具體的按鈕,控件的設(shè)置和響應(yīng),通過(guò)對(duì)它們函數(shù)的定義和調(diào)用實(shí)現(xiàn)具體的功能,主要實(shí)現(xiàn)的就是添加,刪除,搜索,和一些具體功能的實(shí)現(xiàn)。下面就是對(duì)具體事務(wù)的介紹。添加資源:通過(guò)點(diǎn)擊工具條的增加按鈕彈出添加資源對(duì)話框,用戶對(duì)資源屬性進(jìn)行逐一設(shè)置,并在點(diǎn)擊確定后保存。該功能的流程圖如下圖所示:圖4 添加功能流程圖響應(yīng)添加功能的類(lèi)為class CAddResDlg,其中具體實(shí)現(xiàn)為:void CResManView:OnBtnAddres()響應(yīng)點(diǎn)擊添加按鈕,用戶在彈出窗口按照具體資源添加其具體屬性,填寫(xiě)完畢,點(diǎn)擊“確定”按鈕,void CAddResDlg:OnOK()是確定按鈕的響應(yīng)函數(shù),然后BOOL CAddResDlg:ValidItem()判定資源的屬性填寫(xiě)是否合法,合法就添加該資源即調(diào)用XmlFile file實(shí)現(xiàn)把數(shù)據(jù)寫(xiě)入文件中,從而實(shí)現(xiàn)添加功能。在添加中也用了int CAddResDlg:GetCatalogs()來(lái)獲取資源的所屬目錄,這只是針對(duì)本機(jī)上的電子文檔。通過(guò)上述過(guò)程和具體函數(shù)實(shí)現(xiàn)了添加的功能。在列表視圖中選中某個(gè)資源的時(shí)候,在下面的窗口中會(huì)有關(guān)于該資源的具性的信息顯示出來(lái),class CDlgInfo : public CDialog。在列表視圖中雙擊某個(gè)資源的時(shí)候,若該資源是電子資源,那么它將被打開(kāi)。void CResManView:OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)刪除資源:在視圖列表中選中要?jiǎng)h除的項(xiàng)目,點(diǎn)擊工具條中的刪除,就會(huì)彈出一個(gè)詢問(wèn)對(duì)話框,若點(diǎn)擊“確定”,將刪除所選擇的項(xiàng)目。并且支持同時(shí)刪除多個(gè)資源。刪除功能的流程圖如下圖所示圖5 刪除功能流程圖實(shí)現(xiàn)刪除的具體過(guò)程為:當(dāng)用戶想要?jiǎng)h除一個(gè)或是多個(gè)資源的時(shí)候,首先選定要?jiǎng)h除的項(xiàng),然后點(diǎn)擊“刪除”按鈕,響應(yīng)該按鈕的函數(shù)為void CResManView:OnUpdateBtnDelres(CcmdUI* pCmdUI).實(shí)現(xiàn)刪除的具體函數(shù)voidCResManView:OnBtnDelres(),最后調(diào)用XmlFile file實(shí)現(xiàn)在XML文件存儲(chǔ)結(jié)構(gòu)中刪除該資源,從而實(shí)現(xiàn)了刪除的功能。 搜索功能:圖6 搜索功能流程圖該功能實(shí)現(xiàn)的過(guò)程:按照搜索瀏覽資源:通過(guò)使用關(guān)鍵字,用戶可以搜索出自己感興趣的資源。如果使用高級(jí)選項(xiàng),還可以指定資源的添
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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年中國(guó)智能電腦塑身美容儀市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)扳鉗工具數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)女式吊帶裙市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)鐵路搖控?fù)u測(cè)產(chǎn)品行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 中國(guó)葡式蛋塔粉行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告(2024-2030)
- 2021-2026年中國(guó)機(jī)油冷卻器行業(yè)市場(chǎng)調(diào)研及投資戰(zhàn)略規(guī)劃報(bào)告
- 2025年中國(guó)車(chē)床行業(yè)市場(chǎng)前景預(yù)測(cè)及投資戰(zhàn)略研究報(bào)告
- 透視高考政治真題研究山東高考政治命題特點(diǎn)
- 影視作品中的性別角色與文化變遷-洞察闡釋
- 生物多樣性保護(hù)與區(qū)域生態(tài)修復(fù)-洞察闡釋
- 飼料學(xué)全套課件
- 奇瑞入職在線測(cè)評(píng)題庫(kù)
- 智能制造中的安全與隱私問(wèn)題
- DB3307-T 119 -2021 金華地方傳統(tǒng)小吃 永康肉麥餅
- 過(guò)程校驗(yàn)儀市場(chǎng)需求分析報(bào)告
- 2017風(fēng)電功率預(yù)測(cè)系統(tǒng)測(cè)風(fēng)塔數(shù)據(jù)測(cè)量技術(shù)要求
- 樣品管理程序檢驗(yàn)科程序文件
- 橋梁基本狀況卡片(2021新版)
- 有機(jī)硅化學(xué)課件-有機(jī)硅化學(xué)基本反應(yīng)
- 《Python程序設(shè)計(jì)(第3版)》完整版PDF
- 如何根據(jù)三視圖畫(huà)軸測(cè)圖及補(bǔ)視圖缺線課件
評(píng)論
0/150
提交評(píng)論