![VC++案例教程:第8章 文件的存取_第1頁](http://file4.renrendoc.com/view/f21a682a1fdbe83f96dc64cfd4f345b7/f21a682a1fdbe83f96dc64cfd4f345b71.gif)
![VC++案例教程:第8章 文件的存取_第2頁](http://file4.renrendoc.com/view/f21a682a1fdbe83f96dc64cfd4f345b7/f21a682a1fdbe83f96dc64cfd4f345b72.gif)
![VC++案例教程:第8章 文件的存取_第3頁](http://file4.renrendoc.com/view/f21a682a1fdbe83f96dc64cfd4f345b7/f21a682a1fdbe83f96dc64cfd4f345b73.gif)
![VC++案例教程:第8章 文件的存取_第4頁](http://file4.renrendoc.com/view/f21a682a1fdbe83f96dc64cfd4f345b7/f21a682a1fdbe83f96dc64cfd4f345b74.gif)
![VC++案例教程:第8章 文件的存取_第5頁](http://file4.renrendoc.com/view/f21a682a1fdbe83f96dc64cfd4f345b7/f21a682a1fdbe83f96dc64cfd4f345b75.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第8章保存和恢復工作 -文件的存取河北經(jīng)貿(mào)大學信息技術學院2008年12月VC+案例教程VC+案例教程 北大出版社教學目標:掌握自定義類的串行化方法和過程。熟悉CFile類的使用。VC+案例教程 北大出版社案例介紹日常生活中,每個人都有一個或多個通訊錄,用來保存同學、同事、親朋好友、生意伙伴等的聯(lián)系信息。但是傳統(tǒng)的通訊錄對這些信息不方便進行管理,特別是當聯(lián)系人很多時,需要查詢某個人的信息變得很困難。所以我們需要一個電子通訊錄來存儲聯(lián)系人的信息。本章將通過兩種方法來編寫通訊錄程序,一是串行化,二是CFile類。 VC+案例教程 北大出版社教學內(nèi)容:8.1 文檔串行化8.2 CFile類 VC+案
2、例教程 北大出版社8.1 文檔串行化 用戶處理的數(shù)據(jù)往往需要存盤作永久備份。將文檔類中的成員變量的值以文件形式存儲在磁盤中,或者將文件中的數(shù)據(jù)讀取到相應的成員變量,從而恢復應用程序中的對象。這個過程稱為文檔的串行化。串行化分為兩個部分當應用程序數(shù)據(jù)以文件形式存儲在磁盤中時,叫做串行化。當從文件中恢復應用程序的狀態(tài)時,則叫做反串行化。VC+案例教程 北大出版社8.1.1 對象串行化 Visual C+應用程序中的串行化是通過Archive類來實現(xiàn)的。CArchive類不能離開它所依附的CFile類對象而孤立存在。CArchive類用于Visual C+應用程序中文檔和數(shù)據(jù)對象的 Serializ
3、e函數(shù)中。VC+案例教程 北大出版社8.1.2 使對象可串行化 要使自己定義的類對象能夠被保存或被恢復,必須做三件事:直接或間接從CObject類公有派生;添加兩個宏: DECLARE_SERIAL和 IMPLEMENT_SERIAL,定義Serialize函數(shù)。 VC+案例教程 北大出版社8.1.3 案例8.1 串行化實現(xiàn)通訊錄 【例8.1】編寫一個基于單文檔的程序,利用串行化功能實現(xiàn)對通訊錄的管理,要求能夠?qū)崿F(xiàn)對通訊錄的添加、刪除、瀏覽、查找等功能,運行效果見圖8.2。圖 8.2 串行化實現(xiàn)通訊錄程序 VC+案例教程 北大出版社8.1.3. l 創(chuàng)建項目 利用AppWizard創(chuàng)建一個單文
4、檔應用程序,取名為AddressBook_Serial。在第四步中,指定應用程序?qū)?chuàng)建和讀取的文件的擴展名為adr。在第六步,指定CFormView作為視圖類的基類,這將允許使用對話框編輯器進行應用程序的界面設計。 VC+案例教程 北大出版社8.1.3.2 應用程序界面設計 窗口布局如圖8.3所示,其中的控件及其屬性見表8-l。將表8-2中的變量關聯(lián)到指定的控件。 VC+案例教程 北大出版社8.1.3.3 創(chuàng)建新類并串行化 創(chuàng)建新類CAddressList,基類為CObject。 CPerson類的定義見教材。將類串行化 (1)添加Serialize函數(shù) (2)添加DECLARE_SERIAL
5、宏 在CAddressList類的頭文件(AddressList.h)中,加入DECLARE_SERIAL(CAddressList) (3)添加IMPLEMENT_SERIAL宏 在AddressList.cpp文件中構造函數(shù)定義之前, 加入 IMPLEMENT_SERIAL(CAddressList, CObject, 1)VC+案例教程 北大出版社8.1.3.4 在文檔類中建立支持 為了保存和處理大量CAddressList類對象,本例使用MFC中的CObArray類,在文檔類中添加兩個私有訪問權限的成員變量,如表8-3所示。 添加新的記錄 定位記錄(1)取得當前記錄 (2)取得第一條記
6、錄(3)取得下一條記錄 (4)取得上一條記錄 (5)取得最后一條記錄對象數(shù)組串行化 清除文檔內(nèi)容 打開新文檔 刪除當前記錄 取得記錄總數(shù) VC+案例教程 北大出版社8.1.3.5 為視圖類增加定位和編輯支持 l. 顯示當前記錄2. 在記錄集中定位 3. 保存編輯和更改4. 顯示新記錄集 5. 刪除記錄6. 查詢記錄7. 編譯運行程序 VC+案例教程 北大出版社8.2 CFile類 在MFC面向?qū)ο蟮木幊谭绞较拢嘘P文件的輸入和輸出都是由CFile類完成的。CFile是以二進制方式讀取和寫入文件的類,是MFC中其他所有文件類的基類,它封裝了Win32 API 用來處理文件I/O的那部分函數(shù)。 V
7、C+案例教程 北大出版社8.2.1 CFile類的操作 在Visual C+中,數(shù)據(jù)文件的操作通常按照打開(或創(chuàng)建)文件、進行讀寫操作、關閉文件的步驟進行。一個文件必須打開或創(chuàng)建之后才能使用。在文件操作中,把內(nèi)存中的數(shù)據(jù)傳送到外部存儲設備,并保存為文件的操作叫做寫文件。而把數(shù)據(jù)文件中的數(shù)據(jù)傳送到內(nèi)存中的操作叫做讀文件。在對一個文件的讀寫操作完成后,一定要將打開的文件關閉。否則,各種各樣的操作就有可能對文件造成難以預料的破壞。 VC+案例教程 北大出版社8.2.1.l 打開文件用CFile類的構造函數(shù)打開文件。CFile類提供了三個構造函數(shù):CFile( ); CFile( int hFile
8、); CFile( LPCTSTR lpszFileName, UINT nOpenFlags ); 參數(shù)nOpenFlags 指定文件的打開方式,其取值見表8-4。用CFile:Open函數(shù)打開文件。 CFile file;file.Open(MyFile.txt,CFile:modeRead ); VC+案例教程 北大出版社8.2.1.2 創(chuàng)建文件要創(chuàng)建一個新文件,并對新文件進行打開等操作,必須在CFile構造函數(shù)或CFile:Open函數(shù)的第二個參數(shù)(文件打開方式)中包含CFile:modeCreate標志,該標志與其他各標志是位或(|)關系。例如:CFile file(MyFile.t
9、xt,CFile:modeRead|CFile:modeCreate ); 或CFile file;file.Open(MyFile.txt,CFile:modeWrite|CFile:modeCreate );VC+案例教程 北大出版社8.2.1.3 關閉文件當文件操作完成后,必須關閉該文件。關閉一個已打開的文件主要用Close函數(shù)。例如:CFile file;file.Open(MyFile.txt,CFile:modeWrite|CFile:modeCreate ); /文件其它操作file.Close(); / 關閉文件VC+案例教程 北大出版社8.2.1.4 讀寫文件要在CFile類
10、中,文件的讀寫操作主要用Read函數(shù)和Write函數(shù)來完成。用Read函數(shù)所讀的文件必須以CFile:modeRead方式打開,用Write函數(shù)所寫的文件必須以File:modeWrite方式打開。VC+案例教程 北大出版社8.2.1.5 定位操作1Seek函數(shù) 2SeekToBegin函數(shù) 3SeekToEnd函數(shù) 4狀態(tài)函數(shù) 5靜態(tài)成員函數(shù) VC+案例教程 北大出版社8.2.2 案例8.2 使用CFile類實現(xiàn)通訊錄 【例8.2】使用CFile類來實現(xiàn)前面的通訊錄,我們首先將聯(lián)系人信息定義為一個結構體類型,然后通過對話框應用程序來實現(xiàn)通訊錄文件的建立、讀寫等操作。 VC+案例教程 北大出版
11、社8.2.2.l 應用程序界面設計 創(chuàng)建一個基于對話框的應用程序,項目名為 AddressBook_File 。修改對話框的窗口標題為“通訊錄(CFile類實現(xiàn))”,將確定按鈕的標題改為退出。采用列表控件來顯示數(shù)據(jù),窗口布局如圖8.4 所示。各控件屬性設置及連接變量參見表8-5。 VC+案例教程 北大出版社8.2.2.2 定義數(shù)據(jù)結構 為了保存通訊錄中的數(shù)據(jù),必須定義相應的數(shù)據(jù)結構。可以將聯(lián)系人的數(shù)據(jù)信息定義為一個結構體類型,也可以將其定義為一個類。在本例中,我們將其定義為一個結構體類型。typedef structchar Name20; / 姓名char Mobile20; / 電話char Birth20; / 生日char Email20; / E_Mail ADDRESSLIST; V
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年三軸運行業(yè)深度研究分析報告
- 精紡羊毛線項目可行性研究報告申請建議書
- 農(nóng)村代建合同范本
- 出租手表合同范本
- 別墅內(nèi)墻抹灰合同范本
- 軍訓帶隊合同范本
- 中性合同范例
- 公司所需文件合同范本
- 2025年度國際旅游保險合同標準版
- pocib出口合同范本
- 年產(chǎn)10噸功能益生菌凍干粉的工廠設計改
- 重點時段及節(jié)假日前安全檢查表
- 道路標線施工技術規(guī)程(已執(zhí)行)
- 給排水管道工程分項、分部、單位工程劃分
- 《傻子上學》臺詞
- 高中英語新課程標準解讀 (課堂PPT)
- 石灰石石膏濕法脫硫化學分析方案
- 《數(shù)學趣味活動》PPT課件.ppt
- 銅冶煉渣選銅尾礦還原焙燒—磁選回收鐵工藝研究
- 交接班制度.ppt
- 北師大版五年級數(shù)學下冊導學案全冊
評論
0/150
提交評論