您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 详细版C++MFC通讯录课程设计
报告题目:通讯录管理系统课程名称:C++面向对象程序设计学院信息工程学院专业班级******************学号************姓名323的锋锋联系方式****************任课教师**************2013年6月13日一、课程目的:1、使学生进一步巩固《面向对象程序设计》课程中的基本概念、理论、分析方法和实现方法;2、熟悉VC++等编译环境,掌握应用VC++开发软件的基本技能。增强学生软件开发能力;3、尝试将所学的内容解决实际工程问题,培养学生的工程实践能力。二、设计题目。1、设计一个简易的通讯录管理软件,能够维护、查询、管理通讯录的基本信息。2、具有信息维护功能:通讯录名单及相关信息的添加、删除等功能。其中通讯录名单的信息包括姓名、电话号码、工作单位、称呼、通信地址等。3、具有信息查询功能:实现按姓名、电话号码、工作单位、称呼、通信地址等信息进行查询。4、定义一个通讯类,其中包含姓名、电话号码、工作单位、称呼、通信地址等数据成员,同时包含修改,删除等成员函数。三、设计内容。1、任务概况。系统将每个学生的基本信息可以实现添加、删除、修改、查询功能。2、具备功能。(1)分类显示联系人信息(2)添加、删除、修改联系人信息(3)可以按关键字查找联系人3、整体框图。通讯录系统登录删除修改信息管理信息录入关键字查询4、主要模块代码。1,登录模块:在voidCTest_323Dlg::OnPaint()/////////添加新的代码用于美化登录////界面CPaintDCdc(this);CBitmapbitmap;bitmap.LoadBitmap(IDB_BITMAP1);//这个IDB_BITMAP1要自己添加CBrushbrush;brush.CreatePatternBrush(&bitmap);CBrush*pOldBrush=dc.SelectObject(&brush);intcx,cy;cx=GetSystemMetrics(SM_CXSCREEN);cy=GetSystemMetrics(SM_CYSCREEN);dc.Rectangle(0,0,cx,cy);//这些参数可以调整图片添加位置和大小dc.SelectObject(pOldBrush);////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////添加这个///OnCtlColor函数////////改变界面字体属性HBRUSHCTest_323Dlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor){HBRUSHhbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);if(pWnd-GetDlgCtrlID()==IDC_STATIC1){pDC-SetTextColor(RGB(255,0,0));//字体颜色pDC-SetBkColor(RGB(0,0,255));//字体背景色return(HBRUSH)::GetStockObject(WHITE_BRUSH);//设置背景色}elseif(pWnd-GetDlgCtrlID()==IDC_STATIC2||pWnd-GetDlgCtrlID()==IDC_STATIC3){pDC-SetTextColor(RGB(0,0,0));//字体颜色return(HBRUSH)::GetStockObject(WHITE_BRUSH);//设置背景色}elsereturnhbr;}///////////////////////登录按钮/////////////////////////////////////////////////////////////voidCTest_323Dlg::OnEnter(){UpdateData(TRUE);CTest_323Dlgpt;if(m_user.IsEmpty()||m_password.IsEmpty())MessageBox(用户名或密码不能为空,用户登录信息);elseif(m_user==pt.m_user1&&m_password==pt.m_password1){OnReset();UpdateData(FALSE);CDialog::OnOK();////////////调用低层OnOK()函数,销毁对话框CInterfaceinface;inface.DoModal();}elseif(m_user==pt.m_user1&&m_password!=pt.m_password1)MessageBox(密码不正确!);elseif(m_user!=pt.m_user1&&m_password!=pt.m_password1)MessageBox(用户名和密码都不正确!);elseMessageBox(用户名不正确!);}//////////////////////////置零////////////////////////////////////////////////////////voidCTest_323Dlg::OnReset()////置零按钮{m_user=;m_password=;UpdateData(FALSE);}///////////////////////////////////////////////////////////////////////////2主界面模块://///////////////各个按钮的响应函数///////////////////////////////////////////////voidCInterface::OnChangcode()//修改密码{CChangcodecode;code.DoModal();}voidCInterface::OnChangname()//修改用户名{CChangnamename;name.DoModal();}voidCInterface::OnBnClickedLogout()//注销{CDialog::OnOK();CTest_323Dlgdlg1;dlg1.DoModal();UpdateData(FALSE);}voidCInterface::OnBnClickedAddone()//响应添加新的成员{CAddNumberaddnumber;addnumber.DoModal();}voidCInterface::OnBnClickedSeekone()//查询信息{flag=0;CResearchresearch;research.DoModal();}voidCInterface::OnBnClickedChangone()//修改成员按钮的响应{flag=0;CResearchresearch;research.DoModal();}voidCInterface::OnBnClickedDelone()//删除成员的按钮响应{flag=0;CResearchresearch;research.DoModal();}//////////////////////////////////////////////////////////////////////////////////////3添加成员模块://////////////////////////添加成员函数//////////////////////////voidCAddNumber::OnBnClickedAddnewnumber()//添加新的成员{UpdateData(TRUE);if(m_address01.IsEmpty()||m_cwork01.IsEmpty()||m_name01.IsEmpty()||m_sex01.IsEmpty()||m_tellphone01.IsEmpty())MessageBox(添加的成员信息不能有空!);//判断添加的信息是否有空else{CNewsletterst;//自己定义的信息通信类intn_st=0;//联系人的个数intsize=0;inti;ints=0;CStringstr3;CFilefile;//建立一个文件类,关于其用法,请baidu。file.Open(Test_323.dat,CFile::modeReadWrite);//打开文件size=GetFileSize((void*)file.m_hFile,NULL);//读取文件大小,size==0表示是空文件if(size0)//如果文件不空,则读取文件前面4个字节(表示联系人记录数量的),为空则不读,默认为0个了。{file.SeekToBegin();file.Read(&n_st,sizeof(n_st));}if(n_st0&&n_st100)//实验中限定为0~100个联系人记录,5*20=100个字节{m_num_01=n_st;for(i=0;i(size-4)/100;i++)//去掉记录联系人的个数的字节,然后/100即是联系人编号或行数{//请注意与写入数据的顺序要保持一样,否则会读错数据。file.Read(&(m_st[i].m_name),sizeof(m_st[i].m_name));file.Read(&(m_st[i].m_sex),sizeof(m_st[i].m_sex));file.Read(&(m_st[i].m_cwork),sizeof(m_st[i].m_cwork));file.Read(&(m_st[i].m_tellphone),sizeof(m_st[i].m_tellphone));file.Read(&(m_st[i].m_address),sizeof(m_st[i].m_address));str3=m_st[i].m_name;//判断删除的if(str3==)//把后面赋值为空{n_st=i;s=i;break;}}}}//以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持联系人记录数,//后面依次保持联系人记录注意,写联系人的每个信息的顺序要与读取时的顺序一致。n_st+=1;file.SeekToBegin();file.Write(&n_st,sizeof(n_st));//写联系人记录个数memcpy(st.m_name,m_name01.GetBuffer(m_name01.GetLength()),m_name01.GetLength());st.m_name[m_name01.GetLength()]='\0';//在数组末尾加结束符号memcpy(st.m_sex,m_sex01.GetBuffer(m_sex01.GetLength()),m_sex01.GetLength());//把类CString对象的内容赋值到字符数组中st.m_sex[m_sex01.GetLength()]='\0';//在数组末尾加结束符号memcpy(st.m_cwork,m_cwork01.GetBuffer(m_cwork01.GetLength()),m_cwork01.GetLength());//把类CString对象的内容赋值到字符数组中st.m_cwork[m_cwork01.GetLength()]='\0';//在数组末尾加结束符号memcpy(st.m_tellphone,m_tellphone01.GetBuffer(m_tellphone01.GetLength()),m_tellphone01.GetLength());//把类CString对象的内容赋值到字符数组中st.m_tellphone[m_tell
本文标题:详细版C++MFC通讯录课程设计
链接地址:https://www.777doc.com/doc-5503276 .html