基于MFC的簡易通訊錄管理系統(tǒng)設(shè)計(jì)_第1頁
基于MFC的簡易通訊錄管理系統(tǒng)設(shè)計(jì)_第2頁
基于MFC的簡易通訊錄管理系統(tǒng)設(shè)計(jì)_第3頁
基于MFC的簡易通訊錄管理系統(tǒng)設(shè)計(jì)_第4頁
基于MFC的簡易通訊錄管理系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PAGE1實(shí)用文檔基于MFC的簡易通訊錄管理系統(tǒng)設(shè)計(jì)目錄TOC\o"1-3"\h\z\u5952一、引言 121070二、需求分析 118713三、整體設(shè)計(jì) 2129351、系統(tǒng)框圖 2316792、模塊功能 2703四、代碼編寫 2113211、定義一個(gè)Cperson類 22662、定義文檔類數(shù)據(jù)成員m_StudengtList 3104443、初始化文檔類成員 4125624、建立文檔類和視圖類數(shù)據(jù)成員之間的關(guān)系 5781五、測試結(jié)果 10205811、編譯并連接源程序,執(zhí)行程序后顯示的初始界面 10213642、添加王豆豆的信息顯示的界面 11108033、刪除通訊錄中的信息 11252484、修改通訊錄中的信息 1211786六、設(shè)計(jì)小結(jié) 12PAGE1一、引言21世紀(jì)是IT普及的世界,到處都存在IT的身影,實(shí)時(shí)通訊已是占據(jù)它不可或缺的地位。一個(gè)好的、強(qiáng)大的通訊錄系統(tǒng)的好壞,不但可以直接影響到企業(yè)、個(gè)人的人際關(guān)系,而且會(huì)間接的影響到企業(yè)、個(gè)人經(jīng)濟(jì)利益和社會(huì)地位。隨著社會(huì)的發(fā)展,科技的進(jìn)步,計(jì)算機(jī)的應(yīng)用在社會(huì)各領(lǐng)域中都得到了普及,越來越多的人都感受到利用計(jì)算機(jī)進(jìn)行各類管理的科學(xué)和便捷,利用計(jì)算機(jī)進(jìn)行通訊管理已經(jīng)是一種趨勢。MFC是MicrosoftFoundationClassLibrary(微軟基礎(chǔ)類庫)的縮寫形式。它是C++的類集,提供面向?qū)ο罂蚣埽眠@個(gè)框架,程序員可以輕松的創(chuàng)建Windows應(yīng)用程序?;贛FC的通訊管理系統(tǒng)具有美觀的窗口界面、充足可靠的信息數(shù)據(jù)、簡單方便的維護(hù)手段和靈活多變的查詢方式以及快捷而準(zhǔn)確的查詢結(jié)果。二、需求分析通訊錄使我們每個(gè)人必不可少的一個(gè)工具,利用通訊錄我們可以對同學(xué)、朋友、同事等信息進(jìn)行有效的管理,包括查詢、添加、刪除和修改等。此通訊錄系統(tǒng)利用本著人性化的設(shè)計(jì),此系統(tǒng)包括了聯(lián)系人的姓名、電話、地址、E-mail、和備注等信息,利用此系統(tǒng)可以對聯(lián)系人進(jìn)行查詢、增加、修改、刪除等操作,基本上可以滿足我們對通訊錄的需要?;贛FC簡易通訊錄管理系統(tǒng)具有以下特點(diǎn):1,操作簡單,所有人不需學(xué)習(xí)就可以使用的系統(tǒng);2,輸入簡單,輸入框都有相關(guān)提示,我們可以按照提示輸入相關(guān)信息;3,界面顯示信息完整,界面上每一個(gè)編輯框顯示一條聯(lián)系人信息,很清楚地顯示了聯(lián)系人的全部信息。數(shù)據(jù)庫的操作與運(yùn)行相比文件較復(fù)雜,一般對安全性較高的大型信息管理系統(tǒng)采用數(shù)據(jù)庫方式,這里我們采用文件存取方式即可。三、整體設(shè)計(jì)1、系統(tǒng)框圖2、模塊功能(1)添加記錄:可以增加通訊錄相關(guān)信息;(2)修改記錄:可以修改通訊錄相關(guān)信息;(3)查詢記錄:可以查找通訊錄中每個(gè)人的信息;(4)刪除記錄:可以刪除通訊錄單條個(gè)人信息;(5)清除記錄:可以清除通訊錄整個(gè)組信息;四、代碼編寫1、定義一個(gè)Cperson類程序中處理的學(xué)生信息是一個(gè)數(shù)據(jù)序列,即線性表結(jié)構(gòu)。以Coject為基類,公有派生Cperson類。Person.h中的代碼:classCPerson:publicCObject{public:DECLARE_SERIAL(CPerson)//對類進(jìn)行串行化宏定義 CPerson();virtual~CPerson(); CStringm_Name;//姓名 CStringm_Phone;//電話 CStringm_Company;//公司 CStringm_Email;//Emailpublic: virtualvoidSerialize(CArchive&ar);};Person.cpp中編輯的初始化的代碼CPerson::CPerson(){ //初始化人員信息(m_Name,m_Phone,m_Company,m_Email) m_Name="";//姓名 m_Phone="";//電話 m_Company="";//公司 m_Email="";//Email}2、定義文檔類數(shù)據(jù)成員m_StudengtList在AddressBookview.h中編寫代碼:classCAddressBookView:publicCFormView{protected://createfromserializationonly CAddressBookView(); DECLARE_DYNCREATE(CAddressBookView)public: CAddressBookDoc*GetDocument();public: virtual~CAddressBookView();protected:POSITIONm_Position;//指向鏈表中當(dāng)前結(jié)點(diǎn)的指針 CObList*m_PersonViewList;//指向文檔類成員(雙向鏈表)的指針protected: DECLARE_MESSAGE_MAP()};3、初始化文檔類成員#include"stdafx.h"#include"AddressBook.h"#include"Person.h"#include"AddressBookDoc.h"#include"AddressBookView.h"voidCAddressBookView::OnInitialUpdate(){ CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); CAddressBookDoc*pDoc=GetDocument();//獲得文檔類指針 m_PersonViewList=&(pDoc->m_PersonList);//視圖類指針指向文檔類對象 m_Position=m_PersonViewList->GetHeadPosition();//獲得頭結(jié)點(diǎn)位置 CPerson*pListDoc=(CPerson*)m_PersonViewList->GetAt(m_Position);//獲得頭一個(gè)數(shù)據(jù) m_strName=pListDoc->m_Name; m_strPhone=pListDoc->m_Phone; m_strCompany=pListDoc->m_Company; m_strEmail=pListDoc->m_Email;//將表頭結(jié)點(diǎn)數(shù)據(jù)賦給視圖類成員變量 UpdateData(false);//刷新窗口 ((CDialog*)this)->GotoDlgCtrl(GetDlgItem(IDC_EDIT_NAME));//將光標(biāo)停在姓名編輯框}4、建立文檔類和視圖類數(shù)據(jù)成員之間的關(guān)系編寫命令按鈕代碼:(1)添加記錄voidCAddressBookView::OnButtonAdd(){ //界面 ((CButton*)GetDlgItem(IDC_CHECK_MODIFY))->EnableWindow(false); ((CButton*)GetDlgItem(IDC_BUTTON_CLEAR))->EnableWindow(false); ((CButton*)GetDlgItem(IDC_BUTTON_PREVIOUS))->EnableWindow(false); ((CButton*)GetDlgItem(IDC_BUTTON_NEXT))->EnableWindow(false);((CButton*)GetDlgItem(IDC_BUTTON_ADD))->SetWindowText(_T("繼續(xù)添加")); ((CButton*)GetDlgItem(IDC_BUTTON_DELETE))->SetWindowText(_T("添加完畢"));((CEdit*)GetDlgItem(IDC_EDIT_NAME))->EnableWindow(true); ((CEdit*)GetDlgItem(IDC_EDIT_EMAIL))->EnableWindow(true); ((CEdit*)GetDlgItem(IDC_EDIT_PHONE))->EnableWindow(true); ((CEdit*)GetDlgItem(IDC_EDIT_COMPANY))->EnableWindow(true); m_strName=""; m_strPhone=""; m_strCompany=""; m_strEmail="";//清空編輯框 UpdateData(false);//刷新界面 CPerson*pListDoc=newCPerson(); m_Position=m_PersonViewList->AddTail(pListDoc);//新建空人員信息添加至鏈表,并將當(dāng)前位置移至該處 CAddressBookDoc*pDoc=GetDocument();//獲得文檔指針 pDoc->SetModifiedFlag();//設(shè)置文檔被修改標(biāo)置 ((CDialog*)this)->GotoDlgCtrl(GetDlgItem(IDC_EDIT_NAME));//姓名編輯框獲得焦點(diǎn) //TODO:Addyourcontrolnotificationhandlercodehere}(2)刪除記錄voidCAddressBookView::OnButtonDelete(){ CStringstr; GetDlgItem(IDC_BUTTON_DELETE)->GetWindowText(str); if(str=="刪除記錄(&D)") { CObject*pOld;//臨時(shí)對象指針 pOld=m_PersonViewList->GetAt(m_Position);//使其指向當(dāng)前指針 m_PersonViewList->RemoveAt(m_Position);//將當(dāng)前結(jié)點(diǎn)從列表中刪除 deletepOld;//釋放空間 if(m_PersonViewList->IsEmpty())//鏈表若為空,則調(diào)用添加生成一個(gè)新結(jié)點(diǎn) { CAddressBookDoc*pDoc=GetDocument();//獲得文檔指針 pDoc->OnNewDocument(); m_Position=m_PersonViewList->GetHeadPosition(); } CAddressBookDoc*pDoc=(CAddressBookDoc*)GetDocument(); pDoc->SetModifiedFlag();//獲得文檔指針,標(biāo)志文檔已被修改 OnInitialUpdate();//顯示列表第一個(gè)結(jié)點(diǎn) } else { AfxMessageBox("添加完畢!"); ((CButton*)GetDlgItem(IDC_CHECK_MODIFY))->EnableWindow(true); ((CButton*)GetDlgItem(IDC_BUTTON_CLEAR))->EnableWindow(true); ((CButton*)GetDlgItem(IDC_BUTTON_PREVIOUS))->EnableWindow(true); ((CButton*)GetDlgItem(IDC_BUTTON_NEXT))->EnableWindow(true);((CButton*)GetDlgItem(IDC_BUTTON_ADD))->SetWindowText(_T("添加記錄(&A)")); ((CButton*)GetDlgItem(IDC_BUTTON_DELETE))->SetWindowText(_T("刪除記錄(&D)")); ((CEdit*)GetDlgItem(IDC_EDIT_NAME))->EnableWindow(false); ((CEdit*)GetDlgItem(IDC_EDIT_EMAIL))->EnableWindow(false); ((CEdit*)GetDlgItem(IDC_EDIT_PHONE))->EnableWindow(false); ((CEdit*)GetDlgItem(IDC_EDIT_COMPANY))->EnableWindow(false); } //TODO:Addyourcontrolnotificationhandlercodehere}(3)清除記錄voidCAddressBookView::OnButtonClear(){ if(m_PersonViewList->GetCount()==1)//鏈表若為空,則調(diào)用添加生成一個(gè)新結(jié)點(diǎn) { AfxMessageBox("沒有可清空的記錄!"); return; }if(MessageBox("所有的記錄將被清空!","清空警告",MB_YESNO)==IDYES) { CAddressBookDoc*pDoc=GetDocument();//獲得文檔指針 pDoc->OnNewDocument(); m_Position=m_PersonViewList->GetHeadPosition();}}(4)向前瀏覽voidCAddressBookView::OnButtonPrevious(){ POSITIONm_templeposition;//定義一個(gè)臨時(shí)位置指針 m_templeposition=m_Position;//并使其指向當(dāng)前結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn) m_PersonViewList->GetPrev(m_templeposition);//獲得當(dāng)前結(jié)點(diǎn)位置的前一個(gè) if(m_templeposition==NULL) {//若到鏈表頭結(jié)點(diǎn) AfxMessageBox(_T("已到表頭!")); } else { m_Position=m_templeposition;//當(dāng)前指針定位到前一個(gè) CPerson*pListDoc=(CPerson*)m_PersonViewList->GetAt(m_Position); //獲得前一個(gè)人員的信息 m_strName=pListDoc->m_Name; m_strPhone=pListDoc->m_Phone; m_strCompany=pListDoc->m_Company; m_strEmail=pListDoc->m_Email;//賦值給視圖類數(shù)據(jù)成員 UpdateData(false);//刷新窗口 }(5)向后瀏覽voidCAddressBookView::OnButtonNext(){ POSITIONm_templeposition;//定義一個(gè)臨時(shí)位置指針 m_templeposition=m_Position;//并使其指向當(dāng)前結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn) m_PersonViewList->GetNext(m_templeposition);//獲得當(dāng)前結(jié)點(diǎn)位置的后一個(gè) if(m_templeposition==NULL) {//若到鏈表尾結(jié)點(diǎn) AfxMessageBox(_T("已到表尾!")); } else { m_Position=m_templeposition;//當(dāng)前指針定位到后一個(gè) CPerson*pListDoc=(CPerson*)m_PersonViewList->GetAt(m_Position); //獲得前一個(gè)人員的信息 m_strName=pListDoc->m_Name; m_strPhone=pListDoc->m_Phone; m_strCompany=pListDoc->m_Company; m_strEmail=pListDoc->m_Email;//賦值給視圖類數(shù)據(jù)成員 UpdateData(false);//刷新窗口 }//TODO:Addyourcontrolnotificationhandlercodehere}(6)釋放鏈表對象空間classCAddressBookDoc:publicCDocument{protected://createfromserializationonly CAddressBookDoc(); DECLARE_DYNCREATE(CAddressBookDoc)//Attributespublic: CObListm_PersonList;//文檔類成員public: virtual~CAddressBookDoc();protected:DECLARE_MESSAGE_MAP()};五、測試結(jié)果1、編譯并連接源程序,執(zhí)行程序后顯示的初始界面2、添加王豆豆的信息顯示的界面3、刪除通訊錄中的信息4、修改通訊錄中的信息六、設(shè)計(jì)小結(jié)在做這個(gè)小課題之前,先參考一些書,對整個(gè)Windows程序內(nèi)部運(yùn)行機(jī)制先做一定的了解,整個(gè)Windows程序的運(yùn)行機(jī)制是:1,創(chuàng)建

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論