个人通讯录管理系统_第1页
个人通讯录管理系统_第2页
个人通讯录管理系统_第3页
个人通讯录管理系统_第4页
个人通讯录管理系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

个人通讯录管理系统(MFC版)专业班级:学号:姓名:成绩:目录引言通讯录管理系统分析1、通讯录管理系统的意义2、预期目的通讯录管理系统设计1、MFC介绍2、系统整体框架图3、多个功效的实现运行与测试1、插入统计的测试2、删除统计的测试3、修改统计的测试4、导入的测试5、保存统计和退出的测试设计总结附录1.插入信息对话框代码2.通讯录窗口代码引言21世纪是IT普及的世界,到处都存在IT的身影,实时通讯已是占据它不可或缺的地位。一种好的、强大的通讯录系统的好坏,不仅能够直接影响到公司、个人的人际关系,并且会间接的影响到公司、个人经济利益和社会地位。随着社会的发展,科技的进步,计算机的应用在社会各领域中都得到了普及,越来越多的人都感受到运用计算机进行各类管理的科学和便捷,运用计算机进行通讯管理已经是一种趋势。MFC是MicrosoftFoundationClassLibrary(微软基础类库)的缩写形式。它是C++的类集,提供面对对象框架,运用这个框架,程序员能够轻松的创立Windows应用程序。基于MFC的通讯管理系统含有美观的窗口界面、充足可靠的信息数据、简朴方便的维护手段和灵活多变的查询方式以及快捷而精确的查询成果。因此,对于通讯录管理系统的设计重要涉及数据库的建立、维护以及应用程序的开发两个方面。对于前者而言规定建立起数据一致性及完整性强、数据安全性好的数据库。对于后者而言则规定含有应用程序功效全,易使用等,运行稳定等特点。因此,拟选用的开发软件是Microsoft公司出品的VisualC++6.0MFC平台进行系统的开发。通讯录管理系统的分析1、通讯录管理系统的意义管理信息系统(ManagementInformationSystem,下列简称为MIS),是一种将公司生产和经营中的多个内、外部信息进行收集、加工、整顿、传递,并有序地存储,以用于管理和决策,是公司增效的信息系统。它能够使公司更加及时、精确、全方面、详实的理解所需的信息数据。同时管理信息系统对多个信息数据的进一步加工,能使公司领导层的生产、经营、管理决策根据更加充足,更含有合理性、科学性;从而为社会发明出更多的价值,为公司的发展发明出更多的机会。对于企、事业单位的通讯录管理系统来说,不需要大型的数据库系统。只需要一种操作方便,功效实用,能满足本中心对数据的管理及需求的系统,能够提高通讯录管理的效率。预期目的我们的目的就是使用C++输入/输出流设计一种基于对话框的通讯录,用于编辑和保存顾客的姓名、电话和E-mail信息,开发出一种功效比较实用、操作非常方便、简朴的通讯录管理系统。并在功效上实现插入统计、删除统计、修改统计、保存统计、导入与退出等基本功效,满足我们通讯录日常所需。通讯录管理系统的设计1、MFC介绍MFC是MicrosoftFoundationClassLibrary(微软基础类库)的缩写形式。它是C++的类集,提供面对对象框架,运用这个框架,程序员能够轻松地创立Windows应用程序。MFC还提供应用程序开发模型。用MFCAppwizard来创立一种基于对话框的应用程序,过程以下从“文献”菜单中单击“新建”,显示“新建”对话框的Projects(项目)选项卡,其中列出了VisualC++中的向导。选择标有MFCAppWizard(exe)的图标,如图1所示,为项目输入一种名字。在位置文本框中指定一种途径。直到选择列表中的一种图标,并输入一种项目名后,OK按钮才干用。单击OK。图1单击“拟定”之后,在出现的界面中选择“基于对话框”如图2所示,即MFC应用程序向导环节一图2点击“下一步”,进入图3界面,即MFC应用程序向导环节二图3点击“下一步”,进入图4界面,即MFC应用程序向导环节三图4点击“下一步”,进入图5界面,再点击“完毕”,即完毕应用程序的建立图5系统整体框架图通讯录管理系统通讯录管理系统删除统计修改统计保存统计插入统计通讯录管理系统设计重要进行四个功效:插入统计、删除统计、修改统计、保存统计,在此基础上增加两个高级功效:导入与退出。多个功效的实现在“查看”菜单中选择ClassWizard命令,在打开的对话框中切换到MemberVariable选项卡。选中列表控件的IDC_LIST1,单击【AddVariable】按钮,添加组员变量的名称为m_list,类型为CListCtrl,其设计成果如图6.1所示,选中列表控件的IDC_EDIT1选项,添加Membervariablename为m_name,类型为CString,单击【OK】按钮返回,依次解决IDC_EDIT2、IDC_EDIT3,最后设计成果如图6.2图6.1图6.2(2)在文献视图FileView中单击SourceFiles目录,双击1111Dlg.cpp选项打开该文献。在文献中找到OnInitDialog()函数,在//TODO:Addextrainitializationhere的提示下,添加下列代码:m_list.ModifyStyle(0,LVS_REPORT); //修改显示风格 m_list.InsertColumn(0,"姓名",LVCFMT_CENTER,70,NULL); //添加“姓名”列 m_list.InsertColumn(1,"电话",LVCFMT_CENTER,100,NULL); //添加“电话”列 m_list.InsertColumn(2,"Email",LVCFMT_CENTER,150,NULL); //添加“Email”列输入信息对话框的设计:添加对话框,双击该对话框,创立一种新类,添加类名为Inputdlg,其设计如图7.1,整体效果设计图为7.2图7.1图7.2在“通讯录”对话框中,双击【插入统计】按钮,弹出对话框,如图8所示,保持函数名默认值为OnBUTTONinsert(),单击【OK】按钮进行代码编辑。依这类推,解决其它按钮。图8(5)【插入统计】按钮的组员函数为:voidCMy1111Dlg::OnBUTTONinsert()对应代码:Inputdlgdlg; if(IDOK==dlg.DoModal()) {m_list.InsertItem(0,dlg.m_name); m_list.SetItemText(0,1,dlg.m_phone); m_list.SetItemText(0,2,dlg.m_email); } k=0;【删除统计】按钮的组员函数为:voidCMy1111Dlg::OnBUTTONdelete()对应代码:if(!m_list.GetItemCount()){ MessageBox("没有统计能够删除","Error",MB_ICONERROR|MB_OKCANCEL); return;}intindex=0;index=m_list.GetNextItem(0,LVNI_SELECTED);if(-1==index){if(IDOK==MessageBox("拟定删除?","Information",MB_OKCANCEL)){ m_list.DeleteItem(0);}}else{if(IDOK==MessageBox("拟定删除?","Information",MB_OKCANCEL)){ m_list.DeleteItem(index);}}}【修改统计】按钮的组员函数为:voidCMy1111Dlg::OnBUTTONmodify()对应代码:if(!m_list.GetItemCount()){MessageBox("没有统计能够修改");return;}Inputdlgdlg;dlg.m_name=m_list.GetItemText(0,0);dlg.m_phone=m_list.GetItemText(0,1);dlg.m_email=m_list.GetItemText(0,2);intindex=0;index=m_list.GetNextItem(0,LVNI_SELECTED);if(-1==index){dlg.m_name=m_list.GetItemText(0,0);dlg.m_phone=m_list.GetItemText(0,1);dlg.m_email=m_list.GetItemText(0,2);if(dlg.DoModal()){m_list.SetItemText(0,0,dlg.m_name); m_list.SetItemText(0,1,dlg.m_phone); m_list.SetItemText(0,2,dlg.m_email);}}else{dlg.m_name=m_list.GetItemText(index,0);dlg.m_phone=m_list.GetItemText(index,1);dlg.m_email=m_list.GetItemText(index,2);if(dlg.DoModal()){m_list.SetItemText(index,0,dlg.m_name);m_list.SetItemText(index,1,dlg.m_phone);m_list.SetItemText(index,2,dlg.m_email);}}}【保存统计】按钮的组员函数为:voidCMy1111Dlg::OnBUTTONsave()对应代码:CStringstr; fstreamoutfile("book.txt",ios::out); intCount=m_list.GetItemCount(); for(inti=Count-1;i>=0;i--) { for(intj=0;j<3;j++) { str=m_list.GetItemText(i,j); str+=''; outfile<<str; } outfile<<endl; } outfile.close(); k=1;【导入】按钮的组员函数为:voidCMy1111Dlg::OnBUTTONload()对应代码:BOOLend=FALSE; charp[100]; introw=0,column=0; fstreaminfile("book.txt",ios::in|ios::nocreate); if(!infile) {MessageBox("您没有保存过信息!"); return; } while(1) {m_list.InsertItem(m_list.GetItemCount(),NULL,NULL);for(column=0;column<3;column++) {if(!(infile>>p)) {end=TRUE; break; } m_list.SetItemText(row,column,p); } row++; if(TRUE==end) {break; } } infile.close();}【退出】按钮的组员函数为:voidCMy1111Dlg::OnButton6()对应代码:if(k==0)MessageBox("您输入的数据未保存,请保存后再继续!"); elseDestroyWindow();(6)“通讯录”对话框的设计从控件列表框中选择按钮控件和列表控件置于对话框上,修改按钮控件的属性,达成如图9的设计效果图9运行与测试插入统计的测试如图10.1我将自己信息插入,特别是在输入Email的时候,如果输入没有“@”为不正当格式,将会出现如图10.2所示状况。图10.1图10.2删除统计的测试刚开始我保存了三个人的联系方式如图11.1所示,删除时出现图11.2的界面,之后如图11.3的界面。图11.1图11.2图11.3修改统计的测试如果我先现我姐姐的电话输入错了,对的的号码是90909090,那么在图12的界面下修改电话号码,然后点击拟定即可图12导入的测试如图13.1,我在我和姐姐的信息基础上增加了我父亲妈妈的个人通信信息,然后运行程序“导入”,之后出现如图13.2的界面。图13.1图13.2保存统计和退出的测试程序在设计时考虑文献的保存问题,因此当碰到东西没有保存状况下选择了退出系统,系统会出现警告,那么会出现图14的界面。图14设计总结在本次基于MFC的简易通讯录管理系统设计中,该系统拥有插入统计。删除统计、修改统计、保存统计、导入和退出功效。输入信息涉及姓名、电话号码、Email。其中导入txt文本信息和退出时检查与否保存数据为较高级功效。系统运行很正常,算较成功的程序设计。但是这只是对MFC的简朴的应用,通过它,我对MFC的工作机制有了初步的理解,对MFC的进一步理解还需要更多的时间和更多的实践,设计中所设计功效都是最简朴的功效,有待提高。我后来会尝试把数据库MicrosoftSQLServer或Access等软件学习好,然后再和MFC相结合做出功效更强大的应用程序来。附录1.插入信息对话框代码:voidInputdlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(Inputdlg) DDX_Text(pDX,IDC_EDIT1,m_name); DDX_Text(pDX,IDC_EDIT2,m_phone); DDX_Text(pDX,IDC_EDIT3,m_email); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(Inputdlg,CDialog) //{{AFX_MSG_MAP(Inputdlg) ON_WM_SHOWWINDOW() //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////InputdlgmessagehandlersvoidInputdlg::OnOK()//确认按钮的代码{ //TODO:Addextravalidationhere UpdateData(TRUE); GetDlgItem(IDC_EDIT1)->SetFocus(); if(m_email.Find('@',0)<0)//检测邮箱与否符合格式(有@) {MessageBox("Email不对的,请重新输入"); GetDlgItem(IDC_EDIT3)->SetFocus(); return; } CDialog::OnOK();}voidInputdlg::OnShowWindow(BOOLbShow,UINTnStatus){ CDialog::OnShowWindow(bShow,nStatus); GetDlgItem(IDC_EDIT1)->SetFocus(); //TODO:Addyourmessagehandlercodehere }2.通讯录窗口代码:#include"stdafx.h"#include"1111.h"#include"1111Dlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif#include"inputdlg.h"#include"fstream.h"intk=1;//k值拟定与否保存///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public: CAboutDlg();//DialogData //{{AFX_DATA(CAboutDlg) enum{IDD=IDD_ABOUTBOX}; //}}AFX_DATA //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport //}}AFX_VIRTUAL//Implementationprotected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD)//有关{ //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog) //{{AFX_MSG_MAP(CAboutDlg) //Nomessagehandlers //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMy1111DlgdialogCMy1111Dlg::CMy1111Dlg(CWnd*pParent/*=NULL*/) :CDialog(CMy1111Dlg::IDD,pParent){ //{{AFX_DATA_INIT(CMy1111Dlg) //NOTE:theClassWizardwilladdmemberinitializationhere //}}AFX_DATA_INIT //NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32 m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCMy1111Dlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMy1111Dlg) DDX_Control(pDX,IDC_LIST1,m_list); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMy1111Dlg,CDialog) //{{AFX_MSG_MAP(CMy1111Dlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1,OnBUTTONinsert) ON_BN_CLICKED(IDC_BUTTON2,OnBUTTONdelete) ON_BN_CLICKED(IDC_BUTTON3,OnBUTTONmodify) ON_BN_CLICKED(IDC_BUTTON4,OnBUTTONsave) ON_BN_CLICKED(IDC_BUTTON5,OnBUTTONload) ON_BN_CLICKED(IDC_BUTTON6,OnButton6) //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMy1111DlgmessagehandlersBOOLCMy1111Dlg::OnInitDialog()//初始化对话框{ CDialog::OnInitDialog(); //Add"About..."menuitemtosystemmenu. //IDM_ABOUTBOXmustbeinthesystemcomm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论