文檔資料管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計論文.doc
《文檔資料管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計論文.doc》由會員分享,可在線閱讀,更多相關(guān)《文檔資料管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計論文.doc(31頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、畢業(yè)設(shè)計(論文)文檔資料管理系統(tǒng)的設(shè)計與實現(xiàn)論文作者姓名:申請學(xué)位專業(yè):申請學(xué)位類別:指導(dǎo)教師姓名(職稱):論文提交日期:文檔資料管理系統(tǒng)的設(shè)計與實現(xiàn)摘 要本系統(tǒng)使用MFC提供的文檔視圖結(jié)構(gòu)為主體框架,用XML文擋進行數(shù)據(jù)的儲存,實現(xiàn)對各種資料的管理。第一部分是實現(xiàn)對用戶界面操作的響應(yīng),這部分主要是使用MFC提供的不同的窗口類,即框架窗口,視圖窗口,對話窗口以及控件來實現(xiàn)用戶操作界面的主體框架的實現(xiàn)。第二部分為處理具體事務(wù)的模塊,實現(xiàn)用戶對資料的管理和使用。第三部分是用XML編寫儲存結(jié)構(gòu),這部分主要是設(shè)計XML樹和對其存儲和讀取的具體實現(xiàn)。利用本系統(tǒng)可以管理自己的各種資料(文本的和電子的),
2、對每一份資料均有命名,對所有的資料進行歸類,指明各資料的存放位置,可以給每一份資料指明關(guān)鍵字,便于用戶查找資料。若是電子資料(如電腦上的文件),可以通過鼠標點擊直接打開文件。整個系統(tǒng)實現(xiàn)了最初設(shè)計的各種功能,并能夠快速方便的幫助用戶查找到需要的資料信息,整個操作界面簡潔和實用。關(guān)鍵詞: MFC;XML;框架;窗口The Design and Implementation of the Documents Management SystemAbstractThe Documents Management System can manage various materials. It is imp
3、lemented by the Document-View framework provided by the MFC. In order to hold the materials data, a XML document is used. The system is composed by the user interface、the logic processing and the XML operation. The first part responds to the operation of the user. This part is implemented by the var
4、ious kinds of windows in the MFC, such as a frame window, a view window, the dialog windows, and many control windows. The second part is design to process material management operation such as adding a material, deleting materials, browsing and searching materials. The last part is the serializatio
5、n module. It uses a XML tree structure to organize the data in the memory and holds the data by a XML text document in the disk.Users can manage their own materials conveniently by this system. In the system, every material has many attributes such as a name what we can call it, a path indicates whe
6、re it is, an author who writes it, a catalogs field specifies how many catalogs it belongs to, and some keywords for searching it. If the material is a document in the computer, users can view it directly by double clicking the document. The system is enabled all the functions at design and quickly
7、and conveniently search the users need. The document is concise and pragmatic.Key words: MFC;XML;Frame;Window目 錄 論文總頁數(shù):20頁1引 言12 設(shè)計理論依據(jù)12.1 MFC簡介12.2 XML介紹23文檔資料管理系統(tǒng)簡介43.1 系統(tǒng)開發(fā)背景43.2系統(tǒng)開發(fā)環(huán)境53.2.1 系統(tǒng)軟件環(huán)境53.2.2工具簡介53.3系統(tǒng)概述54文檔資料管理系統(tǒng)的設(shè)計64.1系統(tǒng)需求分析及功能設(shè)計64.2 XML存儲結(jié)構(gòu)的設(shè)計74.3用戶界面和事物處理124.3.1用戶界面124.3.2事務(wù)處理135
8、軟件測試15結(jié) 論18參考文獻18致 謝19聲 明201引 言當今世界是飛速發(fā)展的信息時代,在各行各業(yè)中離不開信息處理,這正是計算機被廣泛用于管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進行信息管理。但是在眾多的資料中,如何規(guī)范,準確,快速,全面的管理自己的資料,如書籍,電子資料等,并且方便自己查閱。使用計算機進行信息管理控制,不僅提高了工作效率,而且大大提高了其安全性。本系統(tǒng)就是為了管理好自己的各種有用資料信息而設(shè)計的。面對各種繁多的資料,很多人是沒有進行合理的分類整理和建立一個資料管理系統(tǒng)來管理它們,有時候在手頭研究需要一些資料的時候往往是靠記憶來尋找,但是這樣做會浪費很多時間和精力。由
9、于數(shù)據(jù)繁多容易丟失,且不易查找??偟膩碚f缺乏系統(tǒng),規(guī)范的信息處理手段。盡管我們有計算機,但是尚未用于信息管理,沒有發(fā)揮它的效益,資料閑置比較突出,就是管理信息開發(fā)的基本環(huán)境?;诖祟悊栴},我認為有必要建立一個資料管理系統(tǒng),使資料管理工作規(guī)范化,程序化,避免資料管理隨意性,提高信息處理的速度和準確性,能夠及時、準確、有效的查詢和修改資料情況。本次畢業(yè)設(shè)計是在老師指導(dǎo)下自己獨立完整的進行軟件的設(shè)計,程序編寫,調(diào)試等工作。通過自己對整個流程的設(shè)計和實現(xiàn),能夠完成最初提出的要求,也對一些功能進行了擴展和加深。利用文檔資料管理系統(tǒng)能夠比較完善的管理自己的資料,也能比較快速的找到自己以前看過或是記錄下的資
10、料,使用起來也很方便,快速。2 設(shè)計理論依據(jù)2.1 MFC簡介MFC微軟基礎(chǔ)類(Microsoft Foundation Classes),實際上是微軟提供的,用于在C+環(huán)境下編寫應(yīng)用程序的一個框架和引擎。MFC就是掛在它之上的一個輸助軟件開發(fā)包,MFC作為與VC+血肉相連的部分(注意C+和VC+的區(qū)別:C+是一種程序設(shè)計語言,是一種大家都承認的軟件編制的通用規(guī)范,而VC+只是一個編譯器,或者說是一種編譯器+源程序編輯器的IDE,WS,PlatForm),MFC同BC+集成的VCL一樣是一個非外掛式的軟件包,類庫,只不過MFC類是微軟為VC+專配的. MFC是Win API與C+的結(jié)合,API
11、,即微軟提供的Winos下應(yīng)用程序的編程語言接口,是一種軟件編程的規(guī)范,但不是一種程序開發(fā)語言本身。MFC不只是一個功能單純的界面開發(fā)系統(tǒng),它提供的類絕大部分用來進行界面開發(fā),關(guān)聯(lián)一個窗口的動作,但它提供的類中有好多類不與一個窗口關(guān)聯(lián),即類的作用不是一個界面類,不實現(xiàn)對一個窗口對象的控制(如創(chuàng)建,銷毀)MFC中的各種類結(jié)合起來構(gòu)成了一個應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來建立Windows下的應(yīng)用程序。MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標準實現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個輪廓。Microsoft Visual C+提供了相應(yīng)
12、的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計用戶接口;Class Wizard用來協(xié)助添加代碼到框架文件;最后,編譯,則通過類庫實現(xiàn)了應(yīng)用程序特定的邏輯。2.2 XML介紹XML是Extensible Markup Language的縮寫,即可擴展標記語言是一種您可以用來創(chuàng)建自己標記的標記語言。它由萬維網(wǎng)協(xié)會(W3C)創(chuàng)建,用來克服 HTML(即超文本標記語言(Hypertext Markup Language),它是所有網(wǎng)頁的基礎(chǔ))的局限。和 HTML 一樣;XML 基于 SGML 標準通用標記語言(Standard Gen
13、eralized Markup Language)XML實際上是Web上表示結(jié)構(gòu)化信息的一種標準文本格式,它沒有復(fù)雜的語法和包羅萬象的數(shù)據(jù)定義。XML同HTML一樣,都來自SGML(標準通用標記語言)。SGML是一種在Web發(fā)明之前就早已存在的用標記來描述文檔資料的通用語言。但SGML十分龐大且難于學(xué)習(xí)和使用。鑒于此,人們提出了HTML語言。但近年來,隨著Web應(yīng)用的不斷深入,HTML在需求廣泛的應(yīng)用中已顯得捉襟見肘,有人建議直接使用SGML作為Web語言。但SGML太龐大了,學(xué)用兩難尚且不說,就是全面實現(xiàn)SGML的瀏覽器也非常困難。于是Web標準化組織W3C建議使用一種精簡的SGML版本XM
14、L。XML與SGML一樣,是一個用來定義其他語言的元語言。與SGML相比,XML規(guī)范不到SGML規(guī)范的1/10,簡單易懂,是一門既無標簽集也無語法的新一代標記語言。 可以說,XML的出現(xiàn)給數(shù)據(jù)交換帶來了一場革命;XML的出現(xiàn)是至今為止最聰明的一種符號化語言;XML成為下一代網(wǎng)絡(luò)發(fā)展的基石。 XML作為引人注目的核心技術(shù)應(yīng)用于BtoB、Web服務(wù)、.NET等許多系統(tǒng)中。XML可以作為電子數(shù)據(jù)交換的統(tǒng)一格式,用XML可以對數(shù)據(jù)關(guān)系進行定義形成特有的標準,因此各行各業(yè)都在建立自己的行業(yè)化標準,以應(yīng)用于網(wǎng)絡(luò)上處理電子商務(wù),把后臺系統(tǒng)通過Web站點表現(xiàn)出來。XML還可以作為數(shù)據(jù)倉儲,一個XML文件就是一
15、個小的數(shù)據(jù)庫,通過對數(shù)據(jù)關(guān)系的定義形成各種關(guān)系、屬性的數(shù)據(jù),實現(xiàn)數(shù)據(jù)交換、上下文檢索、多媒體傳輸。XML具有其他方法所不具備的數(shù)據(jù)描述特點XML是以文本形式來描述的一種文件格式 由于XML是以文本形式描述的,所以適合于各種平臺環(huán)境的數(shù)據(jù)交換。同樣由于使用文本來描述內(nèi)容,可以越過不同平臺的障礙進行正常的數(shù)據(jù)交換。但是,文本形式也會因為文字代碼的不同造成不能閱讀的問題,在這一點上XML有著非常完美的解決方案。 XML使用有意義的標記(Tag) 在XML中文件是由一個個稱之為元素(Element)的部件構(gòu)成。使用標記(Tag)來描述元素。由于使用了標記的描述方法,可以保持原數(shù)據(jù)的意思和構(gòu)造在互聯(lián)網(wǎng)上
16、進行數(shù)據(jù)交換,進而可以保持不同系統(tǒng)之間數(shù)據(jù)交換的靈活性。 可以說,XML是“定義語言的語言”,也即是一種元語言。由于XML具有元語言的功能,所以可以成為描述電子商務(wù)數(shù)據(jù)、多媒體演示數(shù)據(jù)、數(shù)學(xué)公式等各種各樣數(shù)據(jù)應(yīng)用語言的基礎(chǔ)語言。下面提供幾個以XML為基礎(chǔ)生成的數(shù)據(jù)描述語言(本文亦稱為XML應(yīng)用語言)的應(yīng)用例子,即出版媒體:Open eBook(電子書籍)、NewsML(新聞媒體);科學(xué):MathML(數(shù)學(xué)表達式)、CML(化學(xué));電子商務(wù):cXML(電子商務(wù))、FpML(金融);多媒體:SMIL(多媒體演示)、BML(衛(wèi)星數(shù)據(jù)傳送)。 XML是描述內(nèi)容的數(shù)據(jù)格式,在使用XML數(shù)據(jù)時,還需要XM
17、L數(shù)據(jù)的顯示、打印、數(shù)據(jù)結(jié)構(gòu)的變更等許多相關(guān)技術(shù)。如果這些相關(guān)技術(shù)也都標準化的話,即使在不同平臺開發(fā)應(yīng)用程序也都可以用相同的方法,使開發(fā)難度降低。 處理XML數(shù)據(jù)時,一定要使用XML Processor(也就是XML Parser),把XML數(shù)據(jù)結(jié)構(gòu)的檢查等交給XML Parser去做。應(yīng)用程序?qū)邮盏絏MLProcessor傳遞來的XML樹進行處理,向用戶提供服務(wù)。此時,不管是電子商務(wù),還是知識管理,都是定義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樹的API和其它應(yīng)用技術(shù)的組合。在XML中用戶可以自由的定義標記名以及與標
18、記相關(guān)的元素及元素層次,這是XML的主要特征。但是,如果定義的都是只有自己才能理解的標記,就無法與其他人進行交換數(shù)據(jù)。為了在企業(yè)團體之間進行XML格式的數(shù)據(jù)的交換,XML數(shù)據(jù)的結(jié)構(gòu)、元素的名稱、元素的數(shù)據(jù)類型以及元素的親子關(guān)系都需要仔細考慮,一定要設(shè)計成人和系統(tǒng)能夠理解的語言。這樣設(shè)計的XML數(shù)據(jù)結(jié)構(gòu)在XML領(lǐng)域稱為Schema,描述Schema的語言稱為Schema語言。DTD是最普通XML的Schema語言是DTD(Document Type Definition:文檔類型定義)。DTD是遠在SGML時期就一直使用的Schema語言,1998年制訂XML語法時,沿用了描述Schema的DT
19、D。XML Schema中有下述DTD中不具備的特征:多個Schema復(fù)合使用XML名字空間;用XML語法描述;可以詳細定義元素的內(nèi)容及屬性值的數(shù)據(jù)類型。由于在XML Schema中的數(shù)據(jù)結(jié)構(gòu)也都是用XML數(shù)據(jù)來表現(xiàn)的,與DTD相比數(shù)據(jù)量增大很多。但是,XML Schema的表現(xiàn)力要遠比DTD強得多,不僅支持字符串、10進制數(shù)、浮動小數(shù)點、日期等,還支持m回以上和n回以下出現(xiàn)的元素(m、n為整數(shù))的指定。例如“郵編xxxxxx”(x是字符)是郵政編碼元素的格式指定等都是DTD所不能表現(xiàn)的內(nèi)容。XML Schema于2001年5月成為W3C的推薦規(guī)范,對XML的利用產(chǎn)生了重要的影響。 XML作為
20、數(shù)據(jù)描述語言是非常優(yōu)秀的,但是并不是所有的電子數(shù)據(jù)都是轉(zhuǎn)換到XML是最有效的。例如XML的文本表現(xiàn)手法、標記的符號化等會導(dǎo)致XML數(shù)據(jù)比二進制表現(xiàn)方法數(shù)據(jù)量增加,尤其當數(shù)據(jù)量很大時,會成為很大的問題。也就是說,XML的導(dǎo)入要根據(jù)具體需求,比較其優(yōu)缺點,在充分發(fā)揮XML優(yōu)點的領(lǐng)域進行。盡管XML具備了作為通用數(shù)據(jù)描述語言的優(yōu)秀特征,但是XML不是編程語言,說到底它是一種數(shù)據(jù)描述的技術(shù)。因此XML文件的顯示、文件結(jié)構(gòu)的變更、應(yīng)用程序的操作等XML相關(guān)技術(shù)也是非常重要的。隨著計算機和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展深入XML技術(shù)的應(yīng)用也將不斷擴大。該技術(shù)不僅在傳統(tǒng)的銀行之間數(shù)據(jù)交換、證券公司對上市公司情況的數(shù)據(jù)統(tǒng)
21、計、圖書館對圖書的查詢檢索、企事業(yè)文件檔案管理等領(lǐng)域的應(yīng)用更加迫切,在電子商務(wù)、搜索引擎軟件、自動智能翻譯、文檔發(fā)聲軟件等領(lǐng)域也將得到更大的發(fā)展,特別是近期發(fā)展起來的移動通訊網(wǎng)絡(luò)服務(wù)的發(fā)展,將使各種各樣的信息經(jīng)過格式轉(zhuǎn)換到達PDA、甚至到達手持電話機,將來我們可以通過網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換服務(wù)使小小的手機可以閱讀到大千世界的豐富信息。3文檔資料管理系統(tǒng)簡介3.1 系統(tǒng)開發(fā)背景本文檔資料管理系統(tǒng)是為個人管理自己的各種資料的一個基于Windows XP系統(tǒng)的一個應(yīng)用軟件.現(xiàn)在也有很多的資料管理系統(tǒng),其中都是一個運用界面和邏輯接口嵌入一個數(shù)據(jù)庫,這樣在編寫軟件的時候也很方便和快速。但是對于編程人員來說,利
22、用別的工具來實現(xiàn)自己的東西總是不好的事,尤其對于我們這種經(jīng)驗不足的人來說,尤其是不好的事情。因此我就想自己編寫一個儲存結(jié)構(gòu)來代替數(shù)據(jù)庫。因為在以前學(xué)習(xí)過XML知道用它可以實現(xiàn)數(shù)據(jù)的存儲功能,于是決定利用它編寫文件存儲結(jié)構(gòu)來實現(xiàn)本系統(tǒng)的數(shù)據(jù)存儲?,F(xiàn)在人們有了電腦,對于存儲自己需要的資料有了一個好的地方,但是如何能夠有效的把日益增多的這些各種資料管理起來,能夠方便需要的時候取出來,這是一個難題;對于一些以前看過的書,如何在以后突然需要的時候,快速的找到它的擺放位子?這些都是開發(fā)本資料管理系統(tǒng)的一個原因。為了管理個人的資料例如:電子資料,紙版資料等不同的資料并對所有的資料進行歸類,如劃分為VC+資料
23、,windows類資料,健康類資料等。當這些資料經(jīng)過科學(xué)的分類,并把各種不同屬性的資料各類管理起來,這樣就實現(xiàn)了對資料的有效管理,也方便了用戶在需要的時候很快能夠找到想要的資料,節(jié)約了很多人力物力和精力。3.2系統(tǒng)開發(fā)環(huán)境3.2.1 系統(tǒng)軟件環(huán)境本系統(tǒng)采用的軟件工具有: 操作系統(tǒng): Windows XP 開發(fā)環(huán)境:VC+6.03.2.2工具簡介 VC+6.0在提供可視化的編程方法的同時,也適用于編寫直接對系統(tǒng)進行底層操作的程序,其生成代碼的質(zhì)量要優(yōu)于很多其他的開發(fā)工具。VC+6.0所提供的基本類庫MFC,對Windows所用的Win32應(yīng)用程序接口進行了十分徹底的封裝,這使得開發(fā)人員可以使用完
24、全面向?qū)ο蟮姆椒▉磉M行Windows編程,從而大大節(jié)省了應(yīng)用程序的開發(fā)周期,降低了開發(fā)成本。而且,其強大的調(diào)試功能也為大型復(fù)雜軟件的開發(fā)提供了有效的排錯手段。隨著多媒體技術(shù)和圖形圖像技術(shù)的不斷發(fā)展,可視化技術(shù)得到了廣泛的重視,愈來愈多的人開始研究并應(yīng)用可視化技術(shù)。所謂可視化技術(shù),一般是指軟件開發(fā)階段的可視化和對計算機圖形技術(shù)和方法的應(yīng)用。VC+是一個很好的可視化編程工具,使用VC+環(huán)境來開發(fā)基于Windows的應(yīng)用程序,其界面更友好,便于程序員操作。開發(fā)環(huán)境是程序員同VC+的交互界面,通過它程序員可以訪問C+源代碼編輯器、資源編輯器,使用內(nèi)部調(diào)試器,還可以創(chuàng)建項目文件3.3系統(tǒng)概述軟件主要提供
25、的功能包括:資源管理方面添加資源,刪除資源;資源瀏覽按照目錄,按照搜索。因此把軟件大體分成三個部分進行實現(xiàn):第一部分: 用戶界面。包括整個程序的框架,以及用戶操作的接口設(shè)計等即就是實現(xiàn)用戶界面的部分.第二部分:用于處理事務(wù)的模塊.包括用戶添加,刪除,修改資源,用戶通過目錄瀏覽,通過搜索找尋,通過自己的收藏夾進行資源管理等業(yè)務(wù)邏輯的實現(xiàn)。第三部分: 用于進行數(shù)據(jù)物理存儲的模塊。使用XML文檔進行數(shù)據(jù)的存儲,所以在實現(xiàn)的過程中,XML的操作成為了這個模塊的主要工作。文檔資料管理系統(tǒng)是為個人管理自己的各種資料的軟件,首先將資料分為電子資料和非電子資料;電子資料主要包括自己電腦上面儲存的例如:電子文檔
26、,電子書籍,影像資料等各種電子資料。非電子資料包括書籍,影碟,光碟等實物資料;對每一份資料均有命名,可以使用書名來指代這本書,也對每一份資料加了關(guān)鍵字和注釋,便于后面需要時候準確的找到需要的資料。對所有的資料進行歸類,如劃分為VC+資料,windows類資料,影像類資料等;指明資料的存放位置,若是電子資料(如電腦上的文件),可以通過鼠標點擊直接打開文件,對于非電子資料和非本機子上的資料,在注釋內(nèi)注明其放置的位子,便于快速找到自己需要的資料;系統(tǒng)也有增加,刪除,修改等工具條:增加是在有新資料需要用本系統(tǒng)管理的時候,可以通過它來增加。刪除是對無用的資料進行刪除。修改是需要對已有的資料增加一些說明的
27、。另外也有目錄,搜索和收藏夾等功能。系統(tǒng)也在最下面的窗口有一個對選中的資料有一個類似統(tǒng)計的顯示,便于使用者,更加方便的使用本系統(tǒng)。4文檔資料管理系統(tǒng)的設(shè)計4.1系統(tǒng)需求分析及功能設(shè)計隨著信息時代的來臨,電腦用戶的資料日益增多,而這些資料可能有著不同的特點。比如,它可能是一本書,也可能是一張光碟,也可能是個電子文檔。如果稍有疏忽,資料的存放位置失去了某些特征,例如,某些電子文檔你可能放到了一個目錄下,而另外一個文檔你卻放到了其它的目錄下。當你需要的時候,將難于準確迅速的找到,更談不上有效的查詢和管理了。總之,資料屬性的多元化和數(shù)量的增多給管理這些資料帶來了很多不便。文檔資料管理系統(tǒng)的設(shè)計目標正是
28、為了解決這些問題。它將滿足用戶對資源的管理:增加,刪除,修改,搜索及查看資源。具體說來,該系統(tǒng)將具備下面的功能:(1)增加資源用戶能夠添加一個資源,該資源可以是電子資源(比如PC上某個目錄下的一張圖片)或者是非電子資源(例如書桌上的本書)。添加該資源后,用戶將可以通過該系統(tǒng)直接管理和使用該資源。(2)刪除資源用戶能夠?qū)⑾到y(tǒng)中的某個資源刪除掉,從而放棄系統(tǒng)對該資源的管理。(3)修改資源當某個資源的屬性發(fā)生變化的時候(例如存放位置發(fā)生變化),用戶能夠選中某個資源,對其屬性進行修改,以反映這種變化。(4)搜索資源用戶能夠通過提供資源的某個特征屬性進行查找,獲得相關(guān)的資源。(5)查看資源如果所選擇資源
29、為電子文檔,用戶將能在系統(tǒng)中直接查看該資源。圖1 整體框架設(shè)計圖資源應(yīng)該具有以下屬性:資源的作者,資源名稱,資源的位置(若是電子資源,則是資源在電腦上的文件位置),資源添加日期,資源所屬目錄情況(一個資源可以屬于多個目錄),關(guān)鍵字(用于搜索), 資源的注釋等。 下面就系統(tǒng)中對以上屬性的定義:struct RESITEMint id; / 資源在文檔中的唯一標志string name; /資源名稱string author; /資源的作者string path; /資源的位置(若是電子資源,則是資源在電腦上的文件位置) bool bEbook;/是否是電子資源string date; /資源添加
30、日期string keywords; /關(guān)鍵字,用于搜索int catalogs; /資源所屬目錄情況(一個資源可以屬于多個目錄)double bytes; /資源大?。ㄖ粚﹄娮淤Y源有效) string note; /資源的注釋;4.2 XML存儲結(jié)構(gòu)的設(shè)計 本系統(tǒng)的用XML編寫存儲結(jié)構(gòu),參照一般的XML編寫方法包含以下幾個類:XmlContainer(XmlTree),XmlFile,XmlLeaf,XmlNode,XmlParser。表1 XmlFile設(shè)計表類名:XmlFile設(shè)計用途:用于將一個磁盤上的XML文檔以字符串的方式讀入到內(nèi)存中,或者將以字符串方式存于內(nèi)存中的XML文檔輸出到
31、磁盤。方法/屬性作用string _doc保存XML字符串的內(nèi)部成員變量。bool load(const char* file)將參數(shù)file指定的文件載入類的成員變量doc中。bool save(const char* file)將成員變量doc的值保存到file指定的文件中。const string& getdoc()返回doc的值。bool setdoc(const string& _doc)以_doc設(shè)置doc的值。表2 Xmlparser設(shè)計表類名:XmlParser設(shè)計用途:用于實現(xiàn)XmlTree和字符串化的XML文檔的相互轉(zhuǎn)換。方法/屬性作用static XmlTree* doc
32、2tree(const string& doc)將doc轉(zhuǎn)換成一個XmlTree。static string tree2doc(XmlTree* pXmlTree)將一個XmlTree轉(zhuǎn)換為字符串。static int gettoken(string strDoc, string& token)從strDoc中獲取第一個標記(或者值)說明:正是通過這兩個類的協(xié)作,實現(xiàn)了XML文檔的讀寫和轉(zhuǎn)換。例如:XmlFile file;if(!file.load(Settingsitems.xml)AfxMessageBox(打開數(shù)據(jù)文件items.xml失敗);return;XmlTree* pTree
33、 = XmlParser:doc2tree(file.getdoc();if(!pTree)AfxMessageBox(轉(zhuǎn)換數(shù)據(jù)文件items.xml失敗);return;上面的代碼段首先使用XmlFile的實例load了一個XML文檔,然后使用XmlParser:doc2tree創(chuàng)建了一個XmlTree,從而為內(nèi)存中使用XML提供了基礎(chǔ)。下面說明一下對XML的處理方案。使用樹型結(jié)構(gòu)表達XML文檔,可以比較方便的進行相應(yīng)的讀寫刪改操作。因為XML本身就是一個數(shù)型的結(jié)構(gòu)。例如:tttttt13dxx7xx以上是一段程序中用到的XML文檔結(jié)構(gòu)。注意到整個文檔以開始,以結(jié)尾,表示之間的都是存儲的數(shù)據(jù)
34、(實際上就是資源的屬性數(shù)據(jù))。中間共有兩個item,而每個item又各有幾個屬性(如,等)。所以可以用一顆樹來表示:圖2 Xml樹型結(jié)構(gòu)圖注意到上面的樹中有些節(jié)點只有Name沒有Value,而有些卻都有。雖然它們都是節(jié)點,但類型上還是有區(qū)別的。故,采用三個類表達這種信息:XmlNode,XmlLeaf,XmlContainer。首先定義一個接口類XmlNode,該類表達抽象的XML節(jié)點。然后使用XmlLeaf類和XmlContainer類來實現(xiàn)XmlNode,XmlLeaf表示葉節(jié)點(有Name和Value雙重屬性的節(jié)點,但自己沒有子節(jié)點),XmlContainer表示容器節(jié)點(只有Name屬
35、性的節(jié)點,而且自己可以有子節(jié)點)。下面是它們的定義:class XmlNodepublic:XmlNode()name = node;parent = NULL;virtual XmlNode();virtual bool isleaf()=0; /是否葉節(jié)點virtual bool iscontainer()=0;/是否容器節(jié)點virtual XmlNode* getparent()return parent; /返回父節(jié)點virtual bool setparent(XmlNode* _parent) parent=_parent; return true; /設(shè)置父節(jié)點virtual c
36、onst string& getname()return name; /返回節(jié)點名稱virtual bool setname(const string& _name)name=_name; return true; /設(shè)置節(jié)點名稱protected:XmlNode* parent;string name; class XmlContainer : public XmlNodepublic:XmlContainer()pos = -1; name=container;XmlContainer(const string& _name)name=_name; pos = -1;XmlContaine
37、r()release();bool isleaf() return false;bool iscontainer()return true;bool addchild(XmlNode* _node); /新增一個子節(jié)點bool remove(XmlNode* pNode); /刪除一個子節(jié)點XmlNode* firstchild(); /返回第一個子節(jié)點XmlNode* nextchild(); /返回下一個字節(jié)點XmlNode* getchild(int nIndex); /返回第nIndex個子節(jié)點XmlNode* search(const string& name); /找到第一個以na
38、me為名的子孫節(jié)點XmlNode* search(const string& name, const string& value); /找到第一個以name為名,以value為值的葉節(jié)點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 str
39、ing& _name) name=_name;XmlLeaf(const string& _name, const string& _value) name=_name; value=_value;XmlLeaf();bool isleaf() return true; /是葉節(jié)點,返回truebool iscontainer()return false; /不是容器節(jié)點,返回falseconst string& getvalue()return value; /獲取值bool setvalue(const string& _value)value=_value; return true;/設(shè)
40、置值protected:string value;下圖為數(shù)據(jù)流的轉(zhuǎn)化圖:圖3 Xml 數(shù)據(jù)流轉(zhuǎn)換圖在讀取文件數(shù)據(jù)的時候使用XmlFile從磁盤讀取文件數(shù)據(jù),并轉(zhuǎn)化為一個String 對象,然后使用XmlParser轉(zhuǎn)化為一個XmlTree對象,這樣就可以很方便的操作數(shù)據(jù)。當存儲數(shù)據(jù)的時候,使用XmlParser把一個XmlTree對象轉(zhuǎn)化為一個String 對象,然后通過XmlFile類將這個String 對象保存到磁盤文件中。上述過程就實現(xiàn)了系統(tǒng)數(shù)據(jù)流的轉(zhuǎn)化,也在次基礎(chǔ)上變于整個系統(tǒng)調(diào)用XML來實現(xiàn)具體的功能。4.3用戶界面和事物處理4.3.1用戶界面本系統(tǒng)的用戶界面是一個,類似VC的界面,
41、左邊、底下有兩個可浮動、可變大小的控制窗口。具體實現(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即控制條和“刪除”,“
42、修改”,“修改”按鈕: 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中。需要注意的是:同一個ControlBar
43、只能加入一個一級子窗口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), I
44、DD_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.EnableDockin
45、g(CBRS_ALIGN_ANY);m_wndMyBar2.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_LEFT);/停靠左邊DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_BOTTOM);/??坑疫卪_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIG
46、N_ANY);DockControlBar(&m_wndToolBar);此時我們已經(jīng)生成了兩個控制條窗口,但窗口中還沒有任何東西。在創(chuàng)建這些控件時將控制條窗口指針作為父窗口指針賦值給這些控件。在上面敘訴中,創(chuàng)建了“添加”“刪除”,“修改”按鈕。其他按鈕,控件在class CCoolTabCtrl : public CWnd類中聲明和定義,在使用中調(diào)用。由于它們涉及到對具體事件的處理,在下面部分分類說明。其中對于風(fēng)格的使用,論文中沒有特別說明,在使用中可以看出來。4.3.2事務(wù)處理事務(wù)處理這個模塊就是對具體的按鈕,控件的設(shè)置和響應(yīng),通過對它們函數(shù)的定義和調(diào)用實現(xiàn)具體的功能,主要實現(xiàn)的就是添加,
47、刪除,搜索,和一些具體功能的實現(xiàn)。下面就是對具體事務(wù)的介紹。添加資源:通過點擊工具條的增加按鈕彈出添加資源對話框,用戶對資源屬性進行逐一設(shè)置,并在點擊確定后保存。該功能的流程圖如下圖所示:圖4 添加功能流程圖響應(yīng)添加功能的類為class CAddResDlg,其中具體實現(xiàn)為:void CResManView:OnBtnAddres()響應(yīng)點擊添加按鈕,用戶在彈出窗口按照具體資源添加其具體屬性,填寫完畢,點擊“確定”按鈕,void CAddResDlg:OnOK()是確定按鈕的響應(yīng)函數(shù),然后BOOL CAddResDlg:ValidItem()判定資源的屬性填寫是否合法,合法就添加該資源即調(diào)用X
48、mlFile file實現(xiàn)把數(shù)據(jù)寫入文件中,從而實現(xiàn)添加功能。在添加中也用了int CAddResDlg:GetCatalogs()來獲取資源的所屬目錄,這只是針對本機上的電子文檔。通過上述過程和具體函數(shù)實現(xiàn)了添加的功能。在列表視圖中選中某個資源的時候,在下面的窗口中會有關(guān)于該資源的具性的信息顯示出來,class CDlgInfo : public CDialog。在列表視圖中雙擊某個資源的時候,若該資源是電子資源,那么它將被打開。void CResManView:OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)刪除資源:在視圖列表中選中要刪除的項目,點擊工具
49、條中的刪除,就會彈出一個詢問對話框,若點擊“確定”,將刪除所選擇的項目。并且支持同時刪除多個資源。刪除功能的流程圖如下圖所示圖5 刪除功能流程圖實現(xiàn)刪除的具體過程為:當用戶想要刪除一個或是多個資源的時候,首先選定要刪除的項,然后點擊“刪除”按鈕,響應(yīng)該按鈕的函數(shù)為void CResManView:OnUpdateBtnDelres(CcmdUI* pCmdUI).實現(xiàn)刪除的具體函數(shù)voidCResManView:OnBtnDelres(),最后調(diào)用XmlFile file實現(xiàn)在XML文件存儲結(jié)構(gòu)中刪除該資源,從而實現(xiàn)了刪除的功能。 搜索功能:圖6 搜索功能流程圖該功能實現(xiàn)的過程:按照搜索瀏覽資
50、源:通過使用關(guān)鍵字,用戶可以搜索出自己感興趣的資源。如果使用高級選項,還可以指定資源的添加日期的范圍,也可以在資源作者和資源注釋等屬性中進行查找。實現(xiàn)的函數(shù)為:void CSearchDlg:OnBtnSearch()5軟件測試整個測試過程是一個,“測試修改再測試再修改”的過程,直到整個系統(tǒng)能正常運行,所有功能都能正常實現(xiàn)。在測試過程中,出現(xiàn)過一些不符合標準的情況,經(jīng)過修改,都基本與設(shè)計書的標準符合,能夠完成正常的功能。下面就是對本系統(tǒng)的各種功能的測試:增加功能的測試:圖7 添加功能測試顯示圖用戶點擊增加按鈕,彈出上圖的對話框,用戶輸入資源的信息,點擊確定按鈕,如果添加成功在系統(tǒng)文件的sett
51、ings文件夾的items.xml文件中會有如下記錄:item13vc資料教程110E:vc資料教程vc 教程-12007-05-31 17:05:04vc資料教程 光碟這就說明添加成功。刪除功能的測試:如下圖所示:圖8 刪除功能測試截圖實現(xiàn)刪除的具體過程為:當用戶想要刪除一個或是多個資源的時候,首先選定要刪除的項,然后點擊“刪除”按鈕,響應(yīng)該按鈕的函數(shù)為void CResManView:OnUpdateBtnDelres(CcmdUI* pCmdUI).實現(xiàn)刪除的具體函數(shù)voidCResManView:OnBtnDelres(),最后調(diào)用XmlFile file實現(xiàn)在XML文件存儲結(jié)構(gòu)中刪除
52、該資源,從而實現(xiàn)了刪除的功能。刪除成功的話在系統(tǒng)文件的settings文件夾的items.xml文件中就沒有該資源的記錄。搜索功能的測試:如下圖所示:圖9 搜索功能測試截圖該功能實現(xiàn)的過程:按照搜索瀏覽資源:通過使用關(guān)鍵字,用戶可以搜索出自己感興趣的資源。如果使用高級選項,還可以指定資源的添加日期的范圍,也可以在資源作者和資源注釋等屬性中進行查找。按照搜索條件可以實現(xiàn)快速尋找自己需要的資料,成功后會在右邊的顯示框中顯示符合搜索條件的資料資源,并在下面有一個統(tǒng)計的顯示。由于經(jīng)驗欠缺或其它某些原因,本次完成的軟件不可能是完美無缺的。測試只能盡量避免錯誤的產(chǎn)生和消除已經(jīng)產(chǎn)生的錯誤,使程序中的錯誤密度
53、達到盡可能低的程度,減少錯誤的引入,但是不可能完全杜絕軟件中的錯誤。經(jīng)過測試,能實現(xiàn)各功能。結(jié) 論 完成了系統(tǒng)的基本功能,基本滿足用戶需求,能夠通過本系統(tǒng)能夠比較方便的管理自己的資料,也可以快速準確的找到需要的資料。自己編寫了XML文件存儲結(jié)構(gòu),并利用它作為本系統(tǒng)的數(shù)據(jù)轉(zhuǎn)化工具。本系統(tǒng)操作方便,系統(tǒng)性能良好,具有快速,可擴展性。當然,由于我們經(jīng)驗欠缺或者是其他方面的一些原因,這次的項目開發(fā)也存在一些不足,如程序員邏輯比較混亂,一些簡單的問題要通過一堆無用代碼才能實現(xiàn),不能以簡潔有效的方式解決。由于是一個人獨立的完成一個項目。從設(shè)計到開發(fā),再到調(diào)試都是自己的思路,其中不免有考慮不周,實現(xiàn)不完善之
54、處。修改和收藏夾功能還沒有實現(xiàn)。另外XML編寫的時候也沒有使用標準的XML編寫方法,雖然其能夠完成本系統(tǒng)的要求,但是也不免有些瑕疵。由于是用XML文件存儲結(jié)構(gòu),不是用單獨的數(shù)據(jù)庫,因此在使用系統(tǒng)的時候,數(shù)據(jù)都在內(nèi)存中,因此對于內(nèi)存消耗比較大,但是在存入文件后,此問題消失。我想,在以后的項目開發(fā)過程中,我們會逐漸解決這些不足之處。 參考文獻1 鄭阿奇,丁有和,鄭進.Visual C+實用教程M.北京:電子工業(yè)出版社,2000. 2 美David Simon,周瑜萍.Visual C+6編程寶典M.北京:電子工業(yè)出版社,2005. 3 姚領(lǐng)田.精通MFC程序設(shè)計M.北京:人民郵電出版社,2006.
55、 4 Sandra,E.Eddy.XML精要:語法詳解與編程指南M.北京:清華大學(xué)出版社,2001. 5 吳揚揚,顏毛智. XML基礎(chǔ)M.北京:高等教育出版社,2005. 6 張海藩.軟件工程導(dǎo)論M.北京:清華大學(xué)出版社,2003.致 謝本論文的工作是2007年2月至2007年6月在成都信息工程學(xué)院網(wǎng)絡(luò)工程系完成的。文中除了特別加以標注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機構(gòu)的學(xué)位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。本文是在劉云本老師的熱情關(guān)心和指導(dǎo)下完成的,他淵博的知識和嚴謹?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對順利完成本課題起到
56、了極大的作用。在此特向他表示忠心的感謝!在論文完成過程中,本人還得到了蔣和平同學(xué)的熱心幫助,本人向他們表示深深的謝意!最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝!作者簡介:姓 名: 黃鵬 性別: 男出生年月: 1983年9月 民族: 漢E-mail: 聲 明關(guān)于學(xué)位論文使用權(quán)和研究成果知識產(chǎn)權(quán)的說明本人完全了解成都信息工程學(xué)院有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括:(1)學(xué)校有權(quán)保管并向有關(guān)部門遞交學(xué)位論文的原件與復(fù)印件。(2)學(xué)校可以采用影印、縮印或其他復(fù)制方式保存學(xué)位論文。(3)學(xué)??梢詫W(xué)術(shù)交流為目的復(fù)制、贈送和交換學(xué)位論文。(4)學(xué)??稍试S學(xué)位論文被查閱或借閱。(5)學(xué)??梢怨?/p>
57、布學(xué)位論文的全部或部分內(nèi)容(保密學(xué)位論文在解密后遵守此規(guī)定)。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學(xué)院。特此聲明! 作者簽名: 2007 年 月 日Are you hungry now?No, I am tired and lazy now; if I pursue you I will not catch you, and if I catch you-through your own slowness and clumsiness-I will not kill you, and if I kill you I will not eat you.Nicho
58、las had begun to back away, and at the last; words, realizing that they were a signal, he turned andbegan to run, splashing through the shallow water. Ignacio ran after him, much helped by his longer legs, his hair flying behind his dark young face, his square teeth-each white as a bone and as big a
59、s Nicholass thumbnail-showing like spectators who lined the railings of his lips.Dont run, Nicholas, Dr. Island said with the voice of a wave. It only makes him angry that you run. Nicholas did not answer, but cut to his left, up the beach and among the trunks of the palms, sprinting all the way bec
60、ause he had no way of knowing Ignacio was not right behind him, about to grab him by the neck. When he stopped it was in the thick jungle, among the boles of the hardwoods, where he leaned,.; out of breath, the thumping of his own heart the only.sound in an atmosphere silent and unwaked as Earths long, prehuman da
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇教版五上《小數(shù)乘整數(shù)》ppt課件
- 蘇教版一年級數(shù)學(xué)上冊《數(shù)一數(shù)》ppt課件
- 江南1優(yōu)秀課件
- 提高印字質(zhì)量課件
- 服務(wù)分銷策略課件
- 數(shù)學(xué)必修蘇教版互斥事件課件3(共32張PPT)
- 第三章要素費用的核算PPT優(yōu)秀資料
- 元素的質(zhì)量分數(shù)計算答案
- 圖形的欣賞與設(shè)計
- 八年級下期Uuit10SectionA課件
- 部編七年級語文下冊4孫權(quán)勸學(xué)課件
- 部編一年級語文下冊端午粽課件
- 超市防損的技能課件
- 表彰班會教學(xué)課件教學(xué)課件
- 第17講中考數(shù)學(xué)專題復(fù)習(xí) 函數(shù)的綜合應(yīng)用中考數(shù)學(xué)專題復(fù)習(xí)課件課件各版通用