通訊錄管理軟件系統設計方案_第1頁
通訊錄管理軟件系統設計方案_第2頁
通訊錄管理軟件系統設計方案_第3頁
通訊錄管理軟件系統設計方案_第4頁
通訊錄管理軟件系統設計方案_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、通訊錄管理軟件系統設計方案通訊錄管理軟件系統設計方案 目 錄 第一章 項目開發(fā)計劃書 1 1.1 引言 1 編寫目的 1 背景 1 1.2 項目概述 1 工作內容 1 主要參加人員 1 產品 2 服務 2 驗收標準 2 本計劃的批準者和批準日期 2 1.3 實施計劃 2 工作任務的分配與人員分工 2 進度 3 1.4 支持條件 3 計算機系統支持 3 第二章 可行性分析 4 2.1 可行性研究前提 4 2.2 對現有系統的分析 4 2.3 建議新系統 4 新系統說明 4 新系統的流程圖 5 2.4 經濟上可行性 5 2.5 技術可行性 5 2.6 開發(fā)工具的選擇 6 2.7 新系統的影響 6

2、2.8 結論 6 第三章 需求分析 7 3.1 市場需求分析 7 3.2 系統功能性需求分析 7 功能劃分 7 功能描述 7 3.3 系統非功能性需求 7 可用性 7 可靠性 8 3.4 數據字典 8 3.5 實體-聯系圖 9 第四章 系統設計 10 4.1 總體設計 10 需求概述 10 聯系人管理系統功能設計 10 4.2 功能模塊的設計與實現 11 用戶注冊模塊 11 用戶登錄模塊 11 用戶管理自己聯系人信息模塊 12 第五章 系統測試 13 5.1 測試的作用和意義 13 5.2 測試方法 13 5.3 測試內容 13 5.4 測試結果 14 注冊和登錄模塊測試 14 查詢模塊測試

3、14 聯系人信息添加、修改和刪除模塊測試 15 5.5 結論 15 第六章 總結 16 參考文獻 17 附錄:程序主要部分源代碼 17 第一章 項目開發(fā)計劃書 1.1 引言 編寫目的 通訊錄管理系統是一個專門針對存儲用戶聯系方式以及一些簡單個人信息的實用管理系統,它方便了用戶對眾多客戶、朋友、同事等個人信息的儲存和快速查閱功能,大大縮減了查找時間,方便了人們的生活。 背景 日益繁多的人際交往使得我們很難搞清楚每個人之間的聯系方式,特別是對于經常出差的人來說更難,所以,通訊錄能夠便捷的提供給我們所需要的相關信息。而隨著計算機的普及,人們的生活擺脫了傳統式的記事本、電話簿,越來越多人靠計算機來記住

4、這些事情。這就需要建立一個通訊錄管理系統,使得用戶可以方便的通過自己電腦的通訊錄管理系統,隨時查閱自己所需要的信息,而不必大費周章的去翻記事本。 1.2 項目概述 工作內容 通訊錄管理系統針對用戶是所有需要對自己通訊錄進行管理的用戶,針對對象比較廣泛。添加新通訊錄模塊、查找通訊錄模塊、刪除通訊錄模塊、修改密碼模塊。 該系統需要實現如下功能: 添加新通訊錄的功能 :主要是想讓用戶在想要保存的他人的個人信息時對他人信息進行添加。 查找通訊錄:主要是用戶在需要查找他人信息的時候可以隨時的進行查找 刪除通訊錄:用戶可以對某些不需要的信息的時候,可以對其進行刪除。 修改密碼: 用戶可以對信息進行安全化的

5、管理。 主要參加人員 組長:李亞運 。 設計: 胡雨婷、吳浩宇。 開發(fā): 李亞運、宋昕、何旭華。 產品 系統開發(fā)計劃書 系統需求說明書 系統設計說明書 測試計劃 一個能正確運行的可執(zhí)行程序 源程序清單(有注釋) 服務 安裝、維護和運行支持從使用該系統開始,維護期限為一年。 驗收標準 各個功能均能正常使用,滿足用戶的需求。 本計劃的批準者和批準日期 批準者:顏富強 批準日期:2011年6月6日 1.3 實施計劃 工作任務的分配與人員分工 組長: 任務: (1)系統總的開發(fā)計劃書 (2)每周至少組織小組討論一次,列出本周開發(fā)計劃 (3)項目開發(fā)進度的管理 (4)團隊的組織和協調 設計: 任務: (

6、1)參與小組討論 (2)進行系統的需求分析和系統設計 (3)完成系統需求說明書和系統設計說明書 (4)編寫測試計劃,參與系統測試 (5)協助文檔人員完成用戶相關文檔 開發(fā): 任務: (1)參與小組討論 (2)根據設計完成編碼,并注釋 (3)進行單元測試 進度 系統規(guī)劃階段: 項目標志性事件 開始到完成 開發(fā)階段: 項目開發(fā)計劃書的完成 6.5-6.7 需求分析階段: 系統需求說明書完成 6.8-6.10 設計階段: 系統設計說明書 6.11-6.15 編碼實現: 項目的形成 6.16-6.23 測試階段: 測試計劃 6.24-6.27 移交階段: 項目的遞交 6.28-6.30 1.4 支持條

7、件 計算機系統支持 操作系統需要: windows 2000 及以上;第二章 可行性分析 2.1 可行性研究前提 要求:滿足客戶查找、添加通訊錄的要求,并對聯系人的資料具有保密性。 目標:建立一個方便、快捷的通訊錄管理系統,CPU占用率低,但程序運行流暢。 條件、假定、限制:本軟件自開發(fā)到運行結束至少可運行5年,開發(fā)成本不超過500人民幣,開發(fā)軟件到投入使用不超過1個月。 2.2 對現有系統的分析 如今沒有一個專門用于儲存、查找通訊錄的平臺。人們想要聯系朋友、同事、親人主要是翻看記事本或是電話薄。這樣做不僅花費大量時間,而且效率不高,浪費了大量的人力、物力、財力。在生活節(jié)奏日益加快的今天,這種

8、狀況已無法滿足人們的對通訊錄效率的要求了。 2.3 建議新系統 新系統說明 新系統能夠為用戶聯系客戶、同事、親友提供一個良好的平臺。使用戶能夠快速、便捷的找到需要聯系的人,提高了工作效率。而且本系統界面友好,操作簡單,對硬件要求不高,且用戶的花費是較低,因此十分有利于推廣。 新系統的流程圖 圖1 新系統的流程圖 2.4 經濟上可行性 開發(fā)成本:500元人民幣。 效益:暫時無法具體衡量。 效益/投資比:暫時無法估算。 投資回收期:大約2個月。 2.5 技術可行性 軟件需求:操作系統WINDOWS 2000 及以上。 硬件需求:賽揚1.7G CPU、512M內存 80G硬盤的計算機。 使用語言為:

9、C+ 2.6 開發(fā)工具的選擇 這次開發(fā)以功能強大的Microsoft Visual C+ 6.0 作為開發(fā)工具;因為我們目前對數據庫知識了解不夠,因此這次開發(fā)中沒有運用數據庫,僅以文件形式保存相關數據。 2.7 新系統的影響 設備的影響:創(chuàng)建新系統需要添置一臺性能良好的服務器。 人員的影響:新系統需要一個專職維護人員。 用戶的影響:用戶可準確、高效的添加和查找信息。 2.8 結論 綜上所述,通訊錄管理系統在技術非常成熟,主客觀條件都具備,且具有良好的效益,因此開發(fā)此系統是可行的。為了方便人們的聯系,建議立即開發(fā)。 第三章 需求分析 3.1 市場需求分析 過去人們他人信息的管理主要是通過隨記,名

10、片等方式 。這些方式在查找的時候相當浪費時間,效率十分低下?,F在通過通訊錄管理系統對他人信息就行管理,不僅節(jié)約時間,同時檢索迅速、查找方便、可靠性高、存儲量大、保密性好。這樣極大的提高了通訊錄管理的效率。 3.2 系統功能性需求分析 功能劃分 本系統的目標使用人群是廣大的電腦用戶,將有助于改善通訊錄管理,對通訊錄進行系統化的管理,方便人們互相聯系。 用戶首先通過該系統注冊功能建立自己的通訊錄。其中涉及到密碼的設置,用戶在登錄的時候會用到用戶名和密碼。用戶在登錄該系統后,可以對通訊錄聯系人信息進行添加、刪除、修改、查詢等操作。其中密碼的設置是為了用戶通訊錄的安全性。 功能描述 添加聯系人:方便用

11、戶添加聯系人資料,以方便互相聯系。 查找聯系人:為用戶提供方便快捷的查找,方便用戶在聯系人很多的時候,快速找到想要的聯系人資料。 刪除聯系人:保證用戶可以及時刪除已失效的聯系人資料,使得通訊錄管理更高效。 修改密碼: 確保用戶可以隨時更改自己的密碼,以防信息泄漏。 3.3 系統非功能性需求 可用性 本系統針對的對象比較廣泛,可以是學生、公司管理人員等等。因此對本系統的可操作性和易用性都提出了很高的要求。過于復雜的操作將不可避免的損失大量的用戶,本系統應能讓任何用戶都不必借助任何操作手冊或相關的系統幫助就能順利地進行各種操作。 可靠性 系統建成后預計將有大量的用戶用該系統進行通訊錄的管理,因此對

12、系統的穩(wěn)定性也有比較高的要求。一旦系統不能正常工作,會給用戶群帶來巨大的損失也將導致失去用戶對系統的信任。 3.4 數據字典 通過系統需求分析,對通訊錄管理系統編制數據字典如下: 各主要數據流的定義如表1至表3所示。 表1 表2 表 3 3.5 實體-聯系圖 根據需求分析,可以畫出系統E-R圖如下: 圖2 通訊錄管理系統E-R圖 第四章 系統設計 4.1 總體設計 需求概述 本系統的目標是建立一個操作簡單、管理高效的聯系人信息管理平臺。使得用戶可以在本系統的幫助下,可以非常方便的與他人互相聯系。因此,本系統需要實現對聯系人信息的添加、刪除、查詢和修改的功能。同時為了保證用戶的個人信息的安全,系

13、統還需要有密碼功能。在用戶使用前必須在系統注冊,登錄。即系統還需實現用戶的注冊、登錄功能。 聯系人管理系統功能設計 根據系統需求分析和系統功能模塊結構圖來看,該系統應具備如下基本功能: 用戶注冊 已注冊用戶的聯系人信息添加、修改、查詢、刪除等。 其功能模塊結構圖如下: 圖 程序功能模塊圖 圖10 快速查找聯系人界面 修改密碼模塊 系統的修改密碼功能主要是為了防止用戶密碼因為泄漏而導致個人損失,用戶可以通過點擊修改密碼按鈕進入修改密碼模塊。如下圖所示: 圖11 修改密碼界面第五章 系統測試 5.1 測試的作用和意義 系統測試是管理信息系統的開發(fā)周期中的一個十分重要環(huán)節(jié)。盡管在系統開發(fā)周期的各個階

14、段均采取了嚴格的技術審查,但依然難免會留下錯誤,如果沒有在投入運行前的系統測試階段被發(fā)現并糾正,問題遲早會在運行中暴露出來,到那時要糾正錯誤將會付出更大的代價。系統測試占用的時間、花費的人力和成本占軟件開發(fā)的很大比例。統計表明,開發(fā)較大規(guī)模的系統,系統測試的工作量大約占整個軟件開發(fā)工作量的40,50,。而對于一些特別重要的大系統,測試的工作量和成本更大,甚至超過系統開發(fā)其他各階段的總和的若干倍。因此做好系統交付前的系統測試的目的就是在系統在投入生產性運行之前,盡可能多的發(fā)現系統的潛在錯誤,這是保證系統質量的關鍵,也是減少系統后期維護投入的最佳方法。 5.2 測試方法 本次測試主要是對系統進行黑

15、盒測試。由未參與系統編程的組員參與。通過設計不同的等價輸入類對系統的各項功能進行反復運行,觀察系統的返回結果來判斷系統的各項功能的實現情況。 5.3 測試內容 軟件的正常運行、關閉及退出時保存記錄情況。 用戶界面是否友好,可操作性及安全性能是否良好。 數據庫的可維護性好,數據的錄入、刪除及更改是否能順利完成。 各模塊的共能是否能達到預期要求。 系統的穩(wěn)定性是夠良好。 5.4 測試結果 注冊和登錄模塊測試 經過測試,用戶能在本系統進行正常的注冊和登錄,并在用戶輸入不存在的用戶名或錯誤的密碼后能給出提示。說明本系統的注冊和登錄模塊的各項功能都圓滿實現了。 圖12 輸入錯誤的用戶名或密碼后系統的提示

16、界面 查詢模塊測試 在本系統的搜索框中輸入不同類容進行搜索時系統都能返回準確的結果。例如下圖是在搜索輸入框中輸入“姓名”,系統返回的結果,從中可看出本系統的搜索功能可以正常運行,即說明本系統的查詢模塊的各項功能都能良好實現。 圖13 搜索結果界面 聯系人信息添加、修改和刪除模塊測試 通過在本系統添加若干個房屋信息和系統返回的結果觀察,可知本系統的信息發(fā)布、修改和刪除等各項功能均運行良好。 圖14 5.5 結論 經過反復測試,系統完成后運行用戶注冊、登錄、管理聯系人信息等功能均正常,發(fā)布1.0版。雖然此系統仍存在許多缺陷,但是通過該系統設計達到了系統設計目的意義,基本掌握了軟件開發(fā)的主要步驟,了

17、解了各環(huán)節(jié)在開發(fā)時要注意的問題,從方便用戶的角度出發(fā),去考慮開發(fā)出好的軟件。另外,在設計過程中我們也學會了團隊合作,了解了團隊精神的可貴。因此本設計雖然較粗糙,但是從學習的角度上看,非常有意義。 第六章 總結 在本系統的開發(fā)過程中,使我們更清楚的了解了 C+系統的開發(fā)流程, 但由于是第一次把 C+ 語言應用于MFC工程, 因此系統必然會存在一些缺陷和不足,特別是在功能方面不是很完善,但我們會在今后的學習過程中不斷修改,使系統更加完善。這次課程設計使我們懂得了理論和實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學到的理論知識和實際相結合,從理論中得出結論,才能真正提高自己的動手能力和獨

18、立思考能力。在本次課程設計中,我們受益匪淺,這對于我以后的工作和學習都有很大的好處。在此,感謝顏富強老師耐心的輔導。另外,在系統開發(fā)過程中通過組員之間的密切合作,大家互相幫助,勇于向實際困難挑戰(zhàn),基本完成此次設計,這極大的增強了團隊合作意識。 參考文獻 張海藩著,軟件工程導論(第五版),清華大學出版社,2008年 鄭人杰著,軟件工程,人民郵電出版社,2009年 孫鑫 余安萍著,VC+深入詳解,電子工業(yè)出版社,2007年 附錄:程序主要部分源代碼 登錄界面主要程序部分: / prj01Dlg.cpp : implementation file / #include stdafx.h #inclu

19、de prj01.h #include prj01Dlg.h #include #include Message.h #include Register.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE _FILE_; #endif / / CAboutDlg dialog used for App About class CAboutDlg : public CDialog public: CAboutDlg ; / Dialog Data / AFX_DATA CAboutDlg enu

20、m IDD IDD_ABOUTBOX ; / AFX_DATA / ClassWizard generated virtual function overrides / AFX_VIRTUAL CAboutDlg protected: virtual void DoDataExchange CDataExchange* pDX ; / DDX/DDV support / AFX_VIRTUAL / Implementation protected: / AFX_MSG CAboutDlg / AFX_MSG DECLARE_MESSAGE_MAP ; CAboutDlg:CAboutDlg :

21、 CDialog CAboutDlg:IDD / AFX_DATA_INIT CAboutDlg / AFX_DATA_INIT void CAboutDlg:DoDataExchange CDataExchange* pDX CDialog:DoDataExchange pDX ; / AFX_DATA_MAP CAboutDlg / AFX_DATA_MAP BEGIN_MESSAGE_MAP CAboutDlg, CDialog / AFX_MSG_MAP CAboutDlg / No message handlers / AFX_MSG_MAP END_MESSAGE_MAP / /

22、CPrj01Dlg dialog CPrj01Dlg:CPrj01Dlg CWnd* pParent /* NULL*/ : CDialog CPrj01Dlg:IDD, pParent / AFX_DATA_INIT CPrj01Dlg m_username _T ; m_password _T ; / AFX_DATA_INIT / Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon AfxGetApp - LoadIcon IDR_MAINFRAME ; void CPrj01Dlg:

23、DoDataExchange CDataExchange* pDX CDialog:DoDataExchange pDX ; / AFX_DATA_MAP CPrj01Dlg DDX_Control pDX, IDC_REGISTER, m_RegStatic ; DDX_Text pDX, IDC_EDIT1, m_username ; DDX_Text pDX, IDC_EDIT2, m_password ; / AFX_DATA_MAP BEGIN_MESSAGE_MAP CPrj01Dlg, CDialog / AFX_MSG_MAP CPrj01Dlg ON_WM_SYSCOMMAN

24、D ON_WM_PAINT ON_WM_QUERYDRAGICON ON_BN_CLICKED IDC_BUTTON1, OnEnter ON_BN_CLICKED IDC_BUTTON2, OnButton2 ON_BN_CLICKED IDC_REGISTER, OnRegister / AFX_MSG_MAP END_MESSAGE_MAP / / CPrj01Dlg message handlers BOOL CPrj01Dlg:OnInitDialog CDialog:OnInitDialog ; / Add About. menu item to system menu. / ID

25、M_ABOUTBOX must be in the system command range. ASSERT IDM_ABOUTBOX & 0 xFFF0 IDM_ABOUTBOX ; ASSERT IDM_ABOUTBOX 0 xF000 ; CMenu* pSysMenu GetSystemMenu FALSE ; if pSysMenu ! NULL CString strAboutMenu; strAboutMenu.LoadString IDS_ABOUTBOX ; if !strAboutMenu.IsEmpty pSysMenu- AppendMenu MF_SEPARATOR

26、; pSysMenu- AppendMenu MF_STRING, IDM_ABOUTBOX, strAboutMenu ; / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon m_hIcon, TRUE ; / Set big icon SetIcon m_hIcon, FALSE ; / Set small icon / TODO: Add extra initialization h

27、ere LoadUserData ; return TRUE; / return TRUE unless you set the focus to a control void CPrj01Dlg:OnSysCommand UINT nID, LPARAM lParam if nID & 0 xFFF0 IDM_ABOUTBOX CAboutDlg dlgAbout; dlgAbout.DoModal ; else CDialog:OnSysCommand nID, lParam ; / If you add a minimize button to your dialog, you will

28、 need the code below / to draw the icon. For MFC applications using the document/view model, / this is automatically done for you by the framework. void CPrj01Dlg:OnPaint if IsIconic CPaintDC dc this ; / device context for painting SendMessage WM_ICONERASEBKGND, WPARAM dc.GetSafeHdc , 0 ; / Center i

29、con in client rectangle int cxIcon GetSystemMetrics SM_CXICON ; int cyIcon GetSystemMetrics SM_CYICON ; CRect rect; GetClientRect &rect ; int x rect.Width - cxIcon + 1 / 2; int y rect.Height - cyIcon + 1 / 2; / Draw the icon dc.DrawIcon x, y, m_hIcon ; else CDialog:OnPaint ; / The system calls this

30、to obtain the cursor to display while the user drags / the minimized window. HCURSOR CPrj01Dlg:OnQueryDragIcon return HCURSOR m_hIcon; void CPrj01Dlg:OnEnter / TODO: Add your control notification handler code here UpdateData ; if m_username | m_password return; int ret checkUsername ; if ret 1 m_log

31、inUser m_username; m_username ; m_password ; UpdateData FALSE ; CMessage msgDlg; msgDlg.pDlg this; this- ShowWindow SW_HIDE ; msgDlg.DoModal ; PostQuitMessage 0 ; /退出函數 /CloseWindow ; else if ret 0 MessageBox 用戶名或密碼不正確,請重新輸入,錯誤 ; else if ret -1 MessageBox 用戶名不存在,錯誤 ; void CPrj01Dlg:LoadUserData ifst

32、ream fs; fs.open dataUser.dat ; while !fs.eof CUserData tmpUD; char field256; fs field; tmpUD.Name field; fs field; tmpUD.Password field; m_userdata.push_back tmpUD ; int CPrj01Dlg:checkUsername vector :iterator it; for it m_userdata.begin ; it! m_userdata.end ; it+ if m_username it- Name if m_passw

33、ord it- Password return 1; else return 0; return -1; void CPrj01Dlg:SaveUserData ofstream fs; fs.open dataUser.dat ; if !fs MessageBox error ; vector :iterator it; for it m_userdata.begin ;it! m_userdata.end ;it+ fs it- Name.GetBuffer it- Name.GetLength ; fs it- Password.GetBuffer it- Password.GetLe

34、ngth endl;void CPrj01Dlg:OnButton2 / TODO: Add your control notification handler code here m_username ; m_password ; UpdateData FALSE ; void CPrj01Dlg:OnRegister / TODO: Add your control notification handler code here CRegister regDlg; regDlg.pMaindlg this; regDlg.DoModal ; 系統主界面主要程序部分: / Message.cp

35、p : implementation file / #include stdafx.h #include prj01.h #include Message.h #include #include PropNormal.h #include PropOther.h #include SetPWD.h #include ADDMsg.h #include resource.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE _FILE_; #endif / / CMessage dialog CM

36、essage:CMessage CWnd* pParent /* NULL*/ : CDialog CMessage:IDD, pParent / / AFX_DATA_INIT CMessage m_LName _T ; m_addr _T ; m_birthday _T ; m_comment _T ; m_email _T ; m_postCode _T ; m_ _T ; m_tel _T ; m_Search _T 搜索聯系人 ; / AFX_DATA_INIT void CMessage:DoDataExchange CDataExchange* pDX CDialog:DoDat

37、aExchange pDX ; / AFX_DATA_MAP CMessage DDX_Control pDX, IDC_MsgDetails, m_MsgDetails ; DDX_Text pDX, IDC_NAME, m_LName ; DDX_Text pDX, IDC_LADDR, m_addr ; DDX_Text pDX, IDC_LBIRTH, m_birthday ; DDX_Text pDX, IDC_LCOMMENT, m_comment ; DDX_Text pDX, IDC_LEMAIL, m_email ; DDX_Text pDX, IDC_LPOST, m_po

38、stCode ; DDX_Text pDX, IDC_L, m_ ; DDX_Text pDX, IDC_LTEL, m_tel ; DDX_Text pDX, IDC_SEARCH, m_Search ; / AFX_DATA_MAP BEGIN_MESSAGE_MAP CMessage, CDialog ON_WM_CONTEXTMENU / AFX_MSG_MAP CMessage ON_NOTIFY NM_CLICK, IDC_MsgDetails, OnClickMsgDetails ON_NOTIFY NM_DBLCLK, IDC_MsgDetails, OnDblclkMsgDe

39、tails ON_BN_CLICKED IDC_ADD, OnAdd ON_BN_CLICKED IDC_SetPwd, OnSetPwd ON_NOTIFY NM_RCLICK, IDC_MsgDetails, OnRclickMsgDetails ON_COMMAND ID_MENUITEM32771, OnMenuitem32771 ON_COMMAND MENU_ITEM_UPDATA, OnItemUpdata ON_COMMAND MENU_ITEM_DEL, OnItemDel ON_EN_CHANGE IDC_SEARCH, OnChangeSearch ON_EN_SETFO

40、CUS IDC_SEARCH, OnSetfocusSearch ON_EN_KILLFOCUS IDC_SEARCH, OnKillfocusSearch ON_LBN_SELCHANGE IDC_SEARCH_LIST, OnSelchangeSearchList / AFX_MSG_MAP END_MESSAGE_MAP / / CMessage message handlers BOOL CMessage:OnInitDialog CDialog:OnInitDialog ; / TODO: Add extra initialization here LoadMsgData ; /載入

41、通訊錄詳情 /擴展樣式設置 DWORD dwStyle m_MsgDetails.GetExtendedStyle ; /獲取當前擴展樣式 dwStyle | LVS_EX_FULLROWSELECT; /選中某行使整行高亮(report風格時) /dwStyle | LVS_EX_GRIDLINES; /網格線(report風格時) /dwStyle | LVS_EX_CHECKBOXES; /item前生成checkbox控件 m_MsgDetails.SetExtendedStyle dwStyle ; /設置擴展風格 /插入列標題 m_MsgDetails.InsertColumn 0

42、,姓名,LVCFMT_LEFT,80 ; m_MsgDetails.InsertColumn 1,電話,LVCFMT_LEFT,120 ; m_MsgDetails.InsertColumn 2,郵箱,LVCFMT_LEFT,160 ; put2List ; /添加聯系人詳情到聯系人列表 m_index -1; /獲取 搜索結果列表框 m_pResultList CListBox* this- GetDlgItem IDC_SEARCH_LIST ; return TRUE; / return TRUE unless you set the focus to a control / EXCEP

43、TION: OCX Property Pages should return FALSE void CMessage:LoadMsgData ifstream fs; fs.open dataMsgDetails.dat ; if !fs MessageBox error ; while !fs.eof CMsgData tmpMsg; char str256; fs str; tmpMsg.UserId str; fs str; tmpMsg.Name str; fs str; tmpMsg.Tel str; fs str; tmpMsg. str; fs str; tmpMsg.Email

44、 str; fs str; tmpMsgment str; fs str; tmpMsg.Birth str; fs str; tmpMsg.Addr str; fs str; tmpMsg.Post str; m_msgdata.push_back tmpMsg ; void CMessage:put2List vector :iterator it; int index 0; for it m_msgdata.begin ; it! m_msgdata.end ; it+, index+ if it- UserId pDlg- m_loginUser /MessageBox it- Use

45、rId ; int nRow m_MsgDetails.InsertItem m_MsgDetails.GetItemCount ,it- Name ; m_MsgDetails.SetItemText nRow,1,it- Tel ; m_MsgDetails.SetItemText nRow,2,it- Email ; /記錄在整個文件中的索引號 m_MsgDetails.SetItemData nRow, DWORD index ; void CMessage:OnClickMsgDetails NMHDR* pNMHDR, LRESULT* pResult / TODO: Add yo

46、ur control notification handler code here LPNMITEMACTIVATE pData LPNMITEMACTIVATE pNMHDR; /pData- iItem is the selected one int index pData- iItem; /獲取當前選擇項 if index -1 return; /當前沒有選擇項 setFriendInfo index ; *pResult 0; NMHDR g_pNMHDR; void CMessage:OnDblclkMsgDetails NMHDR* pNMHDR, LRESULT* pResult

47、 int index m_index; m_index -1; if index -1 LPNMITEMACTIVATE pData LPNMITEMACTIVATE pNMHDR; /pData- iItem is the selected one index pData- iItem; /獲取當前選擇項 if index 0 return; /當前沒有選擇項 /*CString str; str.Format %d,index ; MessageBox str ; */ Noindex m_MsgDetails.GetItemData index ; / 當前選擇項在vector中的編號

48、CADDMsg changeMsg 修改聯系人信息 ; / 創(chuàng)建修改聯系人信息對話框 changeMsg.pDlg this; if IDOK changeMsg.DoModal CMsgData tmpData; CPropNormal *pNormal &changeMsg.m_pNormal; CPropOther *pOther &changeMsg.m_pOther; UpdateData TRUE ; CString t1 10 ,enter 13 ; enter+ t1; pNormal- m_WName.Replace , ; pNormal- m_WComment.Repla

49、ce , ; pNormal- m_WComment.Replace enter, ; pOther- m_WAddr.Replace , ; pOther- m_WAddr.Replace enter, ; if pNormal- m_WName! tmpData.Name pNormal- m_WName; if pNormal- m_WTelphone ! tmpData.Tel pNormal- m_WTelphone; if pNormal- m_W ! tmpData. pNormal- m_W; if pNormal- m_WComment ! tmpDatament pNorm

50、al- m_WComment; if pNormal- m_WEmail ! tmpData.Email pNormal- m_WEmail + + strEmailSuffix; if pOther- m_WAddr ! tmpData.Addr pOther- m_WAddr; if pOther- m_WPostcode ! tmpData.Post pOther- m_WPostcode; tmpData.Birth strYear+strMonth+strDay; tmpData.UserId pDlg- m_loginUser; m_msgdataNoindex tmpData;

51、m_MsgDetails.SetItemText index,0,tmpData.Name ; m_MsgDetails.SetItemText index,1,tmpData.Tel ; m_MsgDetails.SetItemText index,2,tmpData.Email ; /更新聯系人文件 SaveMsgData ; /MessageBox ok ; setFriendInfo index ; *pResult 0; void CMessage:OnAdd / TODO: Add your control notification handler code here CADDMs

52、g addMsg 添加聯系人 ; addMsg.pDlg this; if IDOK addMsg.DoModal CMsgData tmpData; CPropNormal *pNormal &addMsg.m_pNormal; CPropOther *pOther &addMsg.m_pOther; UpdateData TRUE ; if pNormal- m_WName ! | pNormal- m_WTelphone ! | pNormal- m_W ! | pNormal- m_WEmail ! | pNormal- m_WComment ! | pOther- m_WAddr !

53、 | pOther- m_WPostcode ! pNormal- m_WName.Replace , ; pNormal- m_WComment.Replace , ; CString t1 10 ,enter 13 ; enter+ t1; pNormal- m_WComment.Replace enter, ; pOther- m_WAddr.Replace , ; pOther- m_WAddr.Replace enter, ; if pNormal- m_WName! tmpData.Name pNormal- m_WName; if pNormal- m_WTelphone ! t

54、mpData.Tel pNormal- m_WTelphone; if pNormal- m_W ! tmpData. pNormal- m_W; if pNormal- m_WComment ! tmpDatament pNormal- m_WComment; if pNormal- m_WEmail ! tmpData.Email pNormal- m_WEmail + + strEmailSuffix; if pOther- m_WAddr ! tmpData.Addr pOther- m_WAddr; if pOther- m_WPostcode ! tmpData.Post pOth

55、er- m_WPostcode; tmpData.Birth strYear+strMonth+strDay; tmpData.UserId pDlg- m_loginUser; m_msgdata.push_back tmpData ; int nRow m_MsgDetails.InsertItem m_MsgDetails.GetItemCount ,tmpData.Name ; m_MsgDetails.SetItemText nRow,1,tmpData.Tel ; m_MsgDetails.SetItemText nRow,2,tmpData.Email ; /記錄在整個文件中的索

56、引號 m_MsgDetails.SetItemData nRow, DWORD m_msgdata.size -1 ; /更新聯系人文件 SaveMsgData ; void CMessage:setFriendInfo int i int index m_MsgDetails.GetItemData i ; CMsgData *pData &m_msgdataindex; m_LName pData- Name; m_addr ; if pData- Addr! none m_addr pData- Addr; m_birthday ; if pData- Birth! none m_bir

57、thday pData- Birth; m_comment ; if pData- Comment! none m_comment pData- Comment; m_email ; if pData- Email! none m_email pData- Email; m_postCode ; if pData- Post! none m_postCode pData- Post; m_ ; if pData- ! none m_ pData- ; m_tel ; if pData- Tel! none m_tel pData- Tel; UpdateData FALSE ; void CM

58、essage:SaveMsgData ofstream fs; fs.open dataMsgDetails.dat ; if !fs MessageBox error ; vector :iterator it; for it m_msgdata.begin ;it! m_msgdata.end ;it+ if it- UserId _VX#&*$ continue; fs it- UserId.GetBuffer it- UserId.GetLength ; fs it- Name.GetBuffer it- Name.GetLength ; /MessageBox it- Name ;

59、fs it- Tel.GetBuffer it- Tel.GetLength ; fs it- .GetBuffer it- .GetLength ; fs it- Email.GetBuffer it- Email.GetLength ; fs it- Comment.GetBuffer it- Comment.GetLength ; fs it- Birth.GetBuffer it- Birth.GetLength ; fs it- Addr.GetBuffer it- Addr.GetLength ; fs it- Post.GetBuffer it- Post.GetLength n

60、; void CMessage:OnSetPwd / TODO: Add your control notification handler code here CSetPWD dlg; dlg.pDlg this- pDlg; dlg.DoModal ; void CMessage:OnRclickMsgDetails NMHDR* pNMHDR, LRESULT* pResult / TODO: Add your control notification handler code here LPNMITEMACTIVATE pData LPNMITEMACTIVATE pNMHDR; /p

溫馨提示

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

最新文檔

評論

0/150

提交評論