亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MFC的文件快速查找軟件開發(fā)

        2019-06-24 08:25:34李傳可
        軟件工程 2019年4期
        關(guān)鍵詞:軟件開發(fā)

        摘 ?要:在VS2010開發(fā)平臺上以MFC基于對話框為開發(fā)框架,實現(xiàn)對指定目錄路徑的自動保存,并在該路徑下根據(jù)選擇的文件類型,進行快速檢索的功能。實現(xiàn)邏輯為讀取EDIT控件上的路徑,然后調(diào)用MFC基類CFileFind的成員函數(shù),遍歷該路徑下的所有文件,并將文件名等相關(guān)數(shù)據(jù)同步到Report格式的List控件中,最后通過鼠標(biāo)雙擊響應(yīng)函數(shù)來調(diào)用系統(tǒng)API函數(shù)ShellExecute()打開指定文件。

        關(guān)鍵詞:MFC;List控件;遍歷;軟件開發(fā);文件查找

        中圖分類號:TP311.5 ? ? 文獻標(biāo)識碼:A

        Abstract:In Visual Studio 2010 platform,use dialog-based MFC as developing frame,to realize the auto-saving of the specified path to configurate file and quick search in accordance with the selected file types through such path.After reading the path of Edit Control,call member function of CFileFind Class to traverse all files under that path,then copy file names and other related data to list control in LVS_REPORT Mode.Lastly call the ShellExecute API function on the MouseEvent function with Double-Clicking to open selected file by ShellExecute().

        Keywords:MFC;List control;traversal;software development;file search

        1 ? 引言(Introduction)

        MFC(Microsoft Foundation Classes)是微軟公司開發(fā)的具有圖形界面的C/C++基礎(chǔ)類庫,封裝了大部分的Windows API函數(shù)。通過VS2010(Microsoft Visual Studio 2010)一個集成的開發(fā)環(huán)境,在該平臺上新建一個MFC的工程,會自動生成相應(yīng)的程序文件及外部庫文件等。由于該應(yīng)用程序框架提供了大量的Windows句柄封裝類,以及控件、組件的封裝類,就大大提高了軟件的開發(fā)效率,使軟件工程師可以把更多的精力放在算法及邏輯的實現(xiàn)上。同時因具備圖形化操作界面,使用戶可以快速適應(yīng)并掌握軟件的使用技巧[1]。

        2 開發(fā)該軟件的必要性(The necessity of thesoftware development)

        隨著辦公文件的不斷增加,如我校圖書館采編部由于需要整理查找大量的圖書相關(guān)數(shù)據(jù),導(dǎo)致整個桌面幾乎都被excel文件占據(jù),最終影響了用戶的正常操作。對于在工作中需處理大量文件的工作人員而言,如果能快速有效地找到并打開目標(biāo)文件將極大地提高工作效率[2]。雖然Windows系統(tǒng)自帶了文件搜索功能,但因其功能有限,實際使用中并不能很有效的解決用戶所遇到的問題,因此需要開發(fā)一款符合用戶實際操作需求,用于文件查找的專業(yè)軟件。

        3 ?Windows系統(tǒng)搜索功能的局限性(Limitations ofthe search function of Windows OS)

        3.1 ? 無法自動保存查找的路徑

        用戶一般會事先將相關(guān)文件放置在同一目錄下,而系統(tǒng)自帶的搜索功能由于無法對上次搜索的目錄進行記憶,只要系統(tǒng)重啟或者文件查找框被關(guān)閉后就需要重新輸入目錄,才能在指定目錄下進行文件的查找,即存在重復(fù)的操作,降低了用戶的使用體驗。

        3.2 ? 不能針對某種文件類型查找

        由于使用習(xí)慣或者用途的不同,目前使用最多的是Excel、Word、txt等常用類型文件,用戶往往希望能指定某種文件類型進行查找,而系統(tǒng)自帶的搜索功能卻又無法針對某種或幾種類型進行專門查找,只能盲目地將所有包含該關(guān)鍵字的文件都進行查找導(dǎo)致查找效率降低。

        3.3 ? 缺少關(guān)鍵字模糊查找功能

        目前,Windows系統(tǒng)僅支持關(guān)鍵字100%匹配度的查找法,即前后字符順序必須完全匹配才行,但實際操作過程中,用戶并非完全能保證前后順序的正確性,甚至不確定是否有這些關(guān)鍵字,這種情況下就對用戶的查找增加了難度。

        4 開發(fā)該軟件的整體框架和布局(The overallframework and layout of the software development)

        在微軟推出的VS2010開發(fā)平臺上進行MFC基于對話框的軟件開發(fā),利用自動生成的MFC類庫可快速完成整個MFC程序的軟件框架搭建,通過自帶且功能強大的控件功能,不僅快速完成桌面的布局,且由于MFC封裝的很淺,通過繼承基類,及調(diào)用外部庫文件函數(shù),可根據(jù)自身功能需求完成子類控件及功能類的二次開發(fā)。開發(fā)語言使用C++進行編寫[3],利用VS2010集成開發(fā)環(huán)境提供的調(diào)試和編譯環(huán)境,不斷進行測試和錯誤追蹤,逐步地完成所有功能的開發(fā)。在界面的布局上,利用MFC編程的可視化操作[4],對各控件的布局進行科學(xué)合理的優(yōu)化,最大限度地實現(xiàn)文件的高效查找目標(biāo)。

        4.1 ? 源文件及資源視圖設(shè)計

        源文件無疑是整個程序最重要的可執(zhí)行文件,也是軟件開發(fā)人員編寫代碼的地方。其中外部依賴庫是已經(jīng)封裝好功能強大的代碼庫,對于開發(fā)人員而已,只需包含調(diào)用即可。因此開發(fā)與設(shè)計的重點在于頭文件類成員變量與函數(shù)的聲明及源文件的邏輯設(shè)計。該軟件的頭文件主要有:FileSearchTool.h與FileSearchToolDlg.h,源文件主要有:FileSearchTool.cpp與FileSearchToolDlg.cpp,資源視圖文件主要是FileSearchTool.rc。頭文件主要用于聲明各控件類對象、成員變量及成員函數(shù)等。而源文件負(fù)責(zé)所有程序的執(zhí)行流程,主要包括文件路徑的讀寫、指定路徑下的文件查找及各個控件的響應(yīng)函數(shù)等。資源視圖界面則負(fù)責(zé)軟件整個窗口及各控件的布局,其中Edit控件主要有檢索目錄輸入框、文件名關(guān)鍵字輸入框及選定文件的完整路徑顯示框;Button控件主要是目錄選擇按鈕、查找按鈕;Check Box控件包括文件類型、模糊查找復(fù)選框;List控件則用于文件信息顯示列表框。根據(jù)用戶使用習(xí)慣調(diào)整各控件尺寸大小并進行合理布局[5]。

        4.2 ? 靜態(tài)庫文件及Unicode字符集

        為保證軟件的可移植性,以及對所有語言的支持,選擇使用靜態(tài)庫,即在程序編譯時就會被連接到目標(biāo)代碼中,程序運行時就不再需要該靜態(tài)庫,保證在其他用戶電腦中也能正常使用。而動態(tài)庫則是在程序運行時才被載入,程序運行時就一直需要動態(tài)庫文件的存在,因此不利于程序的移植。同時為保證程序的跨語言、跨平臺,實現(xiàn)對多國語言支持,選擇Unicode字符集,使字符在不同的語言系統(tǒng)環(huán)境上仍能正常顯示不出現(xiàn)亂碼,解決了傳統(tǒng)字符編碼方案的局限性[6]。

        4.3 ? 文件查找功能實現(xiàn)邏輯

        遍歷指定目錄下的所有文件,根據(jù)選定的文件類型,找到含有關(guān)鍵字的文件,并將該文件的名稱、路徑等信息全部插入到List控件中,然后根據(jù)先后順序?qū)⒎喜檎覘l件的文件名從上往下逐行排列顯示。最后用戶通過鼠標(biāo)雙擊目標(biāo)文件名的方式來快速打開文件。除此之外,為保證軟件的實用性特意增加了模糊查找等功能。

        5 各個功能模塊的編程實現(xiàn)(Programmingimplementation of each functional module)

        5.1 ? 目錄選擇按鈕

        用于用戶手動選擇所需要的檢索目錄,通過鼠標(biāo)單擊彈出瀏覽文件夾對話框,根據(jù)目錄選擇指定的文件夾。獲取的路徑信息將賦值給成員變量m_strPath,用于保存指定路徑的信息。實現(xiàn)方法為:首先定義BROWSEINFO結(jié)構(gòu)體變量,然后給該變量的各個成員變量賦值,主要是標(biāo)題、窗口樣式等,再調(diào)用::SHBrowseForFolder()函數(shù)打開文件夾選擇對話框,最后使用::SHGetPathFromIDList()函數(shù)獲取選擇的目錄路徑。

        5.2 ? 檢索目錄輸入框

        該Edit控件負(fù)責(zé)顯示要查找的目錄路徑,執(zhí)行查找功能后會將該路徑寫入到配置文件中,實現(xiàn)每次打開軟件后自動讀取配置文件中的數(shù)據(jù),通過對配置文件進行讀寫操作,節(jié)約了輸入路徑或者目錄選擇的時間。具體實現(xiàn)步驟為:首先定義CFile類對象file,接著調(diào)用該對象的文件類操作函數(shù)file.Open(_T("filepath.txt"),CFile::modeCreate|CFile::modeReadWrite)函數(shù),配置文件打開成功后再執(zhí)行寫操作:file.Write()和讀操作:file.ReadString()[7]。

        5.3 ? 文件類型判斷功能

        文件類型主要分為Excel、Wrod、txt及其他類型,通過調(diào)用Check-box控件的消息響應(yīng)函數(shù)來判斷選擇的文件類型,用戶根據(jù)目標(biāo)文件類型可進行單選或多選。如下圖所示通過只輸出選定類型的文件名信息,檢索出來的文件數(shù)量就大大減少,提高了查找效率。實現(xiàn)方法為:首先定義CFileFind 類對象find,然后獲取文件擴展名的前三個字符CString strFileType=find.GetFileName().Mid(find.GetFileName().Find(_T("."))+1,3),最后與選定的文件擴展名前三個字符進行比較:if((0==iChkBox[0]&&_T("xls")== strFileType))。

        5.4 ? 關(guān)鍵字與模糊查找功能

        關(guān)鍵字查找顧名思義,是將關(guān)鍵的字符與所有的文件名進行逐一匹配,一旦含有該關(guān)鍵字就將該文件名進行輸出。關(guān)鍵字查找是所有數(shù)據(jù)庫檢索系統(tǒng)都必備的功能,本軟件將在該功能基礎(chǔ)上再研發(fā)出模糊查找的功能,是一種不需要關(guān)鍵字前后順序必須一致,且所有字符都匹配,仍能將具有一定匹配度的文件名進行輸出的算法。實現(xiàn)邏輯為根據(jù)關(guān)鍵字的總字符數(shù),從左至右依次取一個字符循環(huán)判斷文件名中是否存在該字符,若存在就使成員變量iMatchNum自增,最后若自增值大于等于總字符數(shù)的50%以上就認(rèn)為匹配,輸出該文件名。通過使用該功能極大地提高了關(guān)鍵字查找成功率。核心代碼與效果圖,如圖6所示。

        5.5 ? 列表控件信息顯示及雙擊事件

        單擊界面查找按鈕來執(zhí)行文件查找時,通過調(diào)用函數(shù):m_list.InsertItem(iCount,strCount)與m_list.SetItemText(iCount,1,find.GetFileName()),將每個符合條件的文件信息(序號、文件名、文件路徑)逐行插入到List控件中,并以Report風(fēng)格顯示,實現(xiàn)類似于Excel表的功能,方便用戶快速瀏覽文件信息,然后通過響應(yīng)鼠標(biāo)雙擊事件,獲取目標(biāo)文件完整路徑然后調(diào)用ShellExecute(NULL,_T("open"),strSelectFile,NULL,NULL,SW_SHOWNORMAL)函數(shù)來打開。

        5.6 ? 整個窗口及控件大小可變

        為進一步提高用戶對軟件的使用體驗,實現(xiàn)通過鼠標(biāo)自由拉伸改變軟件及控件的大小,以滿足用戶特殊情況下的使用需求。與窗口一同拉伸或移動的控件有檢索目錄輸入框、完整路徑顯示框、列表控件及目錄選擇按鈕。通過響應(yīng)消息處理函數(shù)OnSize(),實時調(diào)整窗體及相關(guān)控件的大小與位置。定義CRect結(jié)構(gòu)體變量rec,以及Cwnd類的指針變量*pWnd使指向目標(biāo)控件,然后獲取目標(biāo)控件的大小pWnd->

        GetWindowRect(&rec),再轉(zhuǎn)換為在對話框中的區(qū)域坐標(biāo)ScreenToClient(rec),再根據(jù)變化后的窗體大小,實時修改rec結(jié)構(gòu)體變量的值,最后執(zhí)行pWnd->MoveWindow(rec)修改目標(biāo)控件的大小及位置。

        6 ? 結(jié)論(Conclusion)

        利用MFC基于對話框的文件查找軟件開發(fā),通過強大的類庫功能、合理的代碼邏輯設(shè)計及界面控件的布局,為廣大用戶提供了一種新的專業(yè)文件查找工具,有效地彌補了Windows系統(tǒng)自帶文件搜索功能的不足,進一步提高了查找的效率及成功率。

        為進一步滿足不同用戶使用需求,提高軟件的實用性,需要不斷完善該軟件的功能,如增加文件內(nèi)容的關(guān)鍵字查找,以及顯示查找進度等功能。

        參考文獻(References)

        [1] 譚振江,朱冰,逯洋.基于MFC的隨機點名系統(tǒng)設(shè)計與實現(xiàn)[J].吉林師范大學(xué)學(xué)報(自然科學(xué)版),2018,39(01):110-115.

        [2] 水疙瘩.善用Windows 7搜索讓查找效率更高找[J].個人電腦,2012,18(03):94-96.

        [3] 譚浩強.C++程序設(shè)計(第2版)[M].北京:清華大學(xué)出版社,2011.

        [4] 董榮偉,姚月琴,陶冶,等.基于VC++智能糧庫環(huán)境參數(shù)監(jiān)控軟件設(shè)計[J].河北農(nóng)機,2018(01):19.

        [5] 鄭阿奇,丁有和,鄭進,等.Visual C++實用教程(第3版)[M].北京:電子工業(yè)出版社,2007.

        [6] 張馳.基于C++語言的跨平臺軟件開發(fā)的設(shè)計與實現(xiàn)[D].北京:北京交通大學(xué),2010.

        [7] 陳秀川,楊云,郭琦.對VC~(++)MFC類庫中CFile類的派生類的研究和示例[J].南昌航空工業(yè)學(xué)院學(xué)報(自然科學(xué)版),2004(04):76-80;84.

        作者簡介:

        李傳可(1985-),男,碩士,助理館員.研究領(lǐng)域:軟件開發(fā),人工智能.

        猜你喜歡
        軟件開發(fā)
        基于安卓平臺的移動式教學(xué)模式研究
        嵌入式系統(tǒng)軟件開發(fā)技術(shù)探析
        淺談分層技術(shù)在軟件開發(fā)中的應(yīng)用
        Java軟件開發(fā)問題探究
        軟件開發(fā)中JAVA編程語言的應(yīng)用
        淺談程序設(shè)計的方法
        商情(2016年39期)2016-11-21 09:58:50
        信息安全環(huán)境下的計算機軟件開發(fā)研究
        計算機軟件開發(fā)中的分層技術(shù)運用
        建模技術(shù)在軟件開發(fā)中的應(yīng)用
        軟件開發(fā)中數(shù)據(jù)庫設(shè)計理論的實踐
        国产男女猛烈视频在线观看| 中文字幕午夜精品一区二区三区| 一本久道高清视频在线观看| 玩弄白嫩少妇xxxxx性| 亚洲中文字幕无码mv| 在线观看国产三级av| 国产网友自拍视频在线观看| 精品亚洲国产成人av色哟哟| 亚洲色欲色欲大片www无码| 久久国产精品二区99| 亚洲av天堂久久精品| 风韵人妻丰满熟妇老熟女视频| 麻豆人妻性色av专区0000| 成在线人av免费无码高潮喷水| 少妇人妻偷人精品视蜜桃| 国产高潮流白浆免费观看不卡 | 色婷婷五月综合亚洲小说| 无码人妻丝袜在线视频| 东京热加勒比国产精品| 国产精品国产精品国产专区不卡| 激情 人妻 制服 丝袜| 国产一区二区三区国产精品| 亚洲熟少妇一区二区三区| 超碰97人人射妻| 中文字幕影片免费在线观看| 欧美一级人与嘼视频免费播放| 在线日本高清日本免费| 国产情侣自拍一区视频| 污污内射在线观看一区二区少妇 | 欧美国产伦久久久久久久| 91九色播放在线观看| 日韩精品一区二区三区中文| 久久久久这里只有精品网| 国产成人高清精品亚洲一区| 91久久精品国产综合另类专区| 日日碰狠狠添天天爽无码| 午夜精品一区二区三区无码不卡| 亚洲情久久久精品黄色| 亚洲成av人在线观看网址| 和外国人做人爱视频| 国产精品久久1024|