MFC课程设计报告-一个简单的通讯录应用程序

合集下载

课程设计MFC通信录

课程设计MFC通信录

通信录MFC课程设计说明书目录设计总说明 ......................................................................................................................... I I 第1章绪论 (1)选题背景 (1)目的和意义 (1)第2章系统设计 (2)系统总设计 (2)2.1.1题目要求 (2)2.1.2系统功能结构 (2)2.1.3通信录系统流程图 (3)数据库设计 (4)2.2.1数据库需求分析和设计 (4)信息表:用于对用户的大体信息的管理。

(4)E-R图 (4)2.2.1创建数据库 (5)2.2.2创建数据表 (6)系统详细设计 (6)2.3.1创建工程 (6)2.3.2公共类设计 (7)参考文献 (13)设计总说明通信录管理系统是典型的管理系统,其开发主要包括数据库的成立和保护前端应用程序的开发两个方面。

对于前者要求成立起数据库一致性和完整性强、数据安全性好的库。

而对于后者则要求应用程序功能完备,易利用等特点。

通过度析,咱们利用MICROSOFT公司的VISUAL C++开发工具,利用其提供的各类面向对象的开发工具,尤其是MFC界面编程,运用对话框、控件等资源,实现界面化的通信录,使其不但具有美观的界面,同时方面用户的操作。

关键词:通信录;Visual C++;数据库选题背景现今时期,网络已经成为人们生活中不可缺少的一部份,世界上的第三媒体—Internet ,它打破了地域时间限制,改变了人们的工作和生活方式,,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的普遍应用,Web站点向用户提供的服务将愈来愈丰硕,愈来愈人性化.计算机在管理中应用的普及,利用计算机实现各类管理势在必行,那咱们此刻如何管理与咱们联系的人的信息呢?有多种方式,比如说,有贮存电话号码得电话上的,有记录电话等信息到本子上的,还有效名片夹寄存名片的,也有记录在WORD文档中或打印出来的,等等很多种形式。

mfc课程设计报告模板

mfc课程设计报告模板

mfc课程设计报告模板一、教学目标本课程的教学目标是使学生掌握MFC(Microsoft Foundation Class)的基本概念和编程技巧,培养学生使用MFC进行Windows应用程序开发的能力。

具体目标如下:1.知识目标:(1)理解MFC的基本概念,如窗口、消息、事件等。

(2)掌握MFC的编程步骤,如创建项目、添加类、编写代码等。

(3)熟悉MFC常用的类和函数,如CCmdTarget、CWnd、AfxMessageBox等。

2.技能目标:(1)能够使用MFC编写简单的Windows应用程序。

(2)能够使用MFC进行窗口布局和界面设计。

(3)能够使用MFC处理消息和事件,实现用户交互。

3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和热情。

(2)培养学生解决问题的能力和创新精神。

(3)培养学生团队协作和良好沟通的意识和能力。

二、教学内容本课程的教学内容主要包括MFC的基本概念、编程步骤和常用类及函数。

具体安排如下:1.MFC的基本概念:介绍MFC的起源、发展及其在Windows应用程序开发中的应用。

2.MFC的编程步骤:讲解如何创建MFC项目、添加类、编写代码等。

3.MFC的常用类及函数:介绍MFC的核心类,如CCmdTarget、CWnd等,以及常用的函数,如AfxMessageBox等。

4.窗口布局和界面设计:讲解如何使用MFC进行窗口布局、界面设计以及界面美化。

5.消息和事件处理:讲解MFC如何处理消息和事件,实现用户交互。

6.实战项目:通过实际项目案例,让学生掌握MFC的应用,提高实际编程能力。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师讲解MFC的基本概念、编程步骤和常用类及函数。

2.讨论法:教师引导学生进行问题讨论,巩固所学知识。

3.案例分析法:分析实际项目案例,让学生学会运用MFC解决实际问题。

面向对象程序设计课程设计报告同学通讯录管理程序

面向对象程序设计课程设计报告同学通讯录管理程序

目录1.设计题目 (1)2.设计目的和内容 (1)2.1设计目的 (1)2.2设计内容 (1)3.基本功能描述 (1)4.设计思路 (1)5.软件设计 (2)5.1设计步骤 (2)5.2界面设计 (3)5.3关键功能的实现 (3)5.3.1添加记录 (3)5.3.2删除记录 (4)5.3.3选中记录 (4)5.3.4确认修改 (4)5.3.5保存记录 (4)5.3.6退出 (4)6.结论与心得体会 (4)7.参考文献 (4)8.附录 (5)8.1调试报告及测试结果 (5)8.2关键源代码 (10)8.2.1 Student类 (10)8.2.2全局 (10)8.2.3List Control初始化 (10)8.2.4添加记录 (11)8.2.5删除记录 (11)8.2.6选中记录 (12)8.2.7修改记录 (12)8.2.8保存记录 (13)8.2.9退出程序 (13)1.设计题目同学通讯录管理程序2.设计目的和内容2.1设计目的1)学习Visual C++的MFC开发程序的步骤。

.2)综合运用所学的类、继承和多态的知识。

3)进一步掌握程序的调试方法。

2.2设计内容1)利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件;2)设计通讯录的数据结构(如:以数组或者动态链表)和相应的类;3)完成对通讯录中记录的增加、修改、删除和显示;4)将通讯录存入文本文件。

3.基本功能描述可以实现学生信息(姓名、学号、系别、邮箱、电话)的添加、显示、选中修改、删除选中和保存并退出程序的功能。

4.设计思路1)创建基于对话框的MFC应用程序,添加控件:5个Edit Control、6个Button、1个List Control;2)在5个Edit Control分别输入相应信息,点击“添加记录”Button可在ListControl 中显示相应信息,同时清空五个Edit Control以便下一个学生信息的输入;3)点中List Control选中已有一组学生信息,点击“删除记录”Button可删除该组信息;4)点中List Control选中已有一组学生信息,点击“选择该列”Button将该列信息返回到5个Edit Control。

MFC课程设计(Socket通信)

MFC课程设计(Socket通信)

《VS2010-MFC课程设计》报告基于TCP的C/S设计专业:计算机科学与技术班级:计算机11303姓名:游承峰学号:1304240122指导教师:杜小勤服务器的建立1.创建一个MFC项目,修改名称为MyyouchengfengServer以及存放路径2.应用程序类型选择基于对话框3.项目配置,在向导过程中选择“基于对话框”模式,并选择“windows”套接字。

4.设计服务器界面,控件有:5个静态文本(Static Text),最后一个用于指示用户连接个数;2个按钮(Button),一个用于打开或关闭服务器,一个发送聊天内容;4个编辑框(Edit Control),一个用于输入端口号,一个只读的用于显示事件日志,另一个用于输入聊天内容。

5.编辑框2和3还要把Multiline和Vertical Scroll属性选为true,以实现多行显示并自带滚动条6.双击两个按钮自动生成函数,后面添加相关代码即可7.在类视图中添加一个新的MFC类CMyyouchengfengSocket,派生于CSocket类,8.对该类进行类向导添加三个重写的虚函数:OnAccept()、OnClose()、OnReceive() 9.修改CMyyouchengfengSocket.h#pragma once// CMyyouchengfengSocket 命令目标#include "MyyouchengfengServerDlg.h"classCMyyouchengfengServerDlg;classCMyyouchengfengSocket : public CSocket{public:CMyyouchengfengServerDlg* m_pDlg;CMyyouchengfengSocket();virtual ~CMyyouchengfengSocket();virtual void OnAccept(intnErrorCode);virtual void OnClose(intnErrorCode);virtual void OnReceive(intnErrorCode);};10.修改源文件CMyyouchengfengSocket.cppvoidCMyyouchengfengSocket::OnAccept(intnErrorCode){// TODO: 在此添加专用代码和/或调用基类m_pDlg->AddClient(); //添加上线用户CSocket::OnAccept(nErrorCode);}voidCMyyouchengfengSocket::OnClose(intnErrorCode){// TODO: 在此添加专用代码和/或调用基类m_pDlg->RemoveClient(this); // 删除下线用户CSocket::OnClose(nErrorCode);}voidCMyyouchengfengSocket::OnReceive(intnErrorCode){// TODO: 在此添加专用代码和/或调用基类m_pDlg->RecvData(this); // 接收数据CSocket::OnReceive(nErrorCode);}11.修改头文件MyyouchengfengServerDlg.h开头加上#include"MyyouchengfengSocket.h"class CMyyouchengfengSocket;12. 添加函数声明和变量定义CMyyouchengfengSocket* listenSocket; // 用于打开服务器CPtrListm_clientList; //链表用于存储用户boolm_connect; //用于标记服务器状态void AddClient(); //增加用户,响应用户请求void RemoveClient(CMyyouchengfengSocket* pSocket); //移除下线的用户void RecvData(CMyyouchengfengSocket* pSocket); //获取数据void UpdateEvent(CStringstr); //更新事件日志virtual BOOL PreTranslateMessage(MSG* pMsg); //防止ESC键意外退出void UpdateChatRecord(CStringstr); // 更新聊天记录13. 修改CMyyouchengfengServerDlg.cpp中实现的函数voidCMyyouchengfengServerDlg::OnBnClickedStartserver(){// TODO: 在此添加控件通知处理程序代码if (m_connect){deletelistenSocket;listenSocket = NULL;m_connect = false;SetDlgItemText(IDC_StartServer, _T("打开服务器"));UpdateEvent(_T("系统关闭服务器."));return;}listenSocket = new CMyyouchengfengSocket();listenSocket->m_pDlg = this;UpdateData(true);if (!listenSocket->Create(m_Port)){AfxMessageBox(_T("创建套接字错误!"));listenSocket->Close();return;}if (!listenSocket->Listen()){AfxMessageBox(_T("监听失败!"));listenSocket->Close();return;}m_connect = true;SetDlgItemText(IDC_StartServer, _T("关闭服务器"));UpdateEvent(_T("系统打开服务器."));}本函数用于打开或关闭服务器,主要用到Create函数和Listen函数用于创建服务器和监听客户端。

简单的通讯录管理系统设计与实现MFC通讯录报告

简单的通讯录管理系统设计与实现MFC通讯录报告

//将指针指向需要插入的记录处
while(curp->next && k<pos)
{
curp=curp->next;
k++;
//记录当前记录数
}
node *p=new node("","","",0);
//增加一个新节点
// 插入新节点 p->prev=curp->prev; curp->prev->next=p; p->next=curp; curp->prev=p;
(三)高级功能
(1)增加以电话号码为关键字,查找并显示该记录;
(2)在追加记录的函数中,增加:若追加记录中姓名与通讯录中已有记录同名,则不能追 加;
(3)插入记录:给出插入位置,执行插入后,查询并显示是否被插入。
二、程序运行界面截图及其说明 (一)基本功能界面
(1)开启界面
按钮仅追加和退出可使用。编辑框均为灰色,处于只读状态,当前记录为 0/0。
// 在指定位置完成插入
1、单击“追加”按钮,调用追加函数 OnBtinsert();
2、单击“追加搜索”按钮,调用 OnBtsure() 函数。
3、查找追加记录的名字是否重复(参考“按姓名查找”函数)。
将 curp 指针从头指针开始向后移,保存当前记录数 k。
4、找到姓名时,如果 (k >= 总记录数),则表明:遍历了所有记录,没有找到重复 姓名。否则,表明:未遍历完就找到相同姓名。
5、若重复姓名,删除追加的记录。
将 curp 指针移到最后,删除节点。
附:
//============== 追加查询,同名不能追加 ===============

详细版C++MFC通讯录课程设计

详细版C++MFC通讯录课程设计

报告题目:通讯录管理系统课程名称:C++面向对象程序设计学院信息工程学院专业班级 ******************学号 ************姓名 323的锋锋联系方式 ****************任课教师 **************2013 年6月13日一、课程目的:1、使学生进一步巩固《面向对象程序设计》课程中的基本概念、理论、分析方法和实现方法;2、熟悉VC++等编译环境,掌握应用VC++开发软件的基本技能。

增强学生软件开发能力;3、尝试将所学的内容解决实际工程问题,培养学生的工程实践能力。

二、设计题目。

1、设计一个简易的通讯录管理软件,能够维护、查询、管理通讯录的基本信息。

2、具有信息维护功能:通讯录名单及相关信息的添加、删除等功能。

其中通讯录名单的信息包括姓名、电话号码、工作单位、称呼、通信地址等。

3、具有信息查询功能:实现按姓名、电话号码、工作单位、称呼、通信地址等信息进行查询。

4、定义一个通讯类,其中包含姓名、电话号码、工作单位、称呼、通信地址等数据成员,同时包含修改,删除等成员函数。

三、设计内容。

1、任务概况。

系统将每个学生的基本信息可以实现添加、删除、修改、查询功能。

2、具备功能。

(1)分类显示联系人信息(2)添加、删除、修改联系人信息(3)可以按关键字查找联系人3、整体框图。

4、主要模块代码。

1,登录模块:在void CTest_323Dlg::OnPaint() /////////添加新的代码用于美化登录////界面CPaintDC dc(this);CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加CBrush brush;brush.CreatePatternBrush(&bitmap);CBrush* pOldBrush = dc.SelectObject(&brush);int cx, cy;cx = GetSystemMetrics(SM_CXSCREEN);cy = GetSystemMetrics(SM_CYSCREEN);dc.Rectangle(0,0,cx,cy); // 这些参数可以调整图片添加位置和大小dc.SelectObject(pOldBrush);////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////添加这个///OnCtlColor函数////////改变界面字体属性HBRUSH CTest_323Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = 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_STA TIC2||pWnd->GetDlgCtrlID()==IDC_STATIC3){pDC->SetTextColor(RGB(0,0,0));//字体颜色return (HBRUSH)::GetStockObject(WHITE_BRUSH);//设置背景色}elsereturn hbr;}///////////////////////登录按钮/////////////////////////////////////////////////////////////void CTest_323Dlg::OnEnter(){UpdateData(TRUE);CTest_323Dlg pt;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()函数,销毁对话框CInterface inface;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("用户名不正确!"); }//////////////////////////置零////////////////////////////////////////////////////////void CTest_323Dlg::OnReset()////置零按钮{m_user="";m_password="";UpdateData(FALSE);}/////////////////////////////////////////////////////////////////////////// 2主界面模块://///////////////各个按钮的响应函数///////////////////////////////////////////////void CInterface::OnChangcode() //修改密码{CChangcode code;code.DoModal();}void CInterface::OnChangname() //修改用户名{CChangname name;name.DoModal();}void CInterface::OnBnClickedLogout()//注销{CDialog::OnOK();CTest_323Dlg dlg1;dlg1.DoModal();UpdateData(FALSE);}void CInterface::OnBnClickedAddone()//响应添加新的成员{CAddNumber addnumber;addnumber.DoModal();}void CInterface::OnBnClickedSeekone()//查询信息{ flag=0;CResearch research;research.DoModal();}void CInterface::OnBnClickedChangone()//修改成员按钮的响应{ flag=0;CResearch research;research.DoModal();}void CInterface::OnBnClickedDelone()//删除成员的按钮响应{ flag=0;CResearch research;research.DoModal();}//////////////////////////////////////////////////////////////////////////////////////3添加成员模块://////////////////////////添加成员函数//////////////////////////void CAddNumber::OnBnClickedAddnewnumber()//添加新的成员{UpdateData(TRUE);if(m_address01.IsEmpty()||m_cwork01.IsEmpty()||m_name01.IsEmpty()||m_sex01.IsEmpty() ||m_tellphone01.IsEmpty())MessageBox("添加的成员信息不能有空!");//判断添加的信息是否有空else{CNewsletter st;//自己定义的信息通信类int n_st=0; //联系人的个数int size=0;int i;int s=0;CString str3;CFile file; // 建立一个文件类,关于其用法,请baidu。

mfc课程设计报告

mfc课程设计报告

mfc课程设计报告学习计算机知识的目的在于更加准确、快捷的解决现实生活中的各种问题。

我们只有不断的更新和完善自己的知识、在实践中积累经验,才能做出好的软件为社会服务,为使用者提供便利。

下面是mfc课程设计报告,欢迎参考阅读!篇一:MFC课程设计报告1、橡皮筋画线程序,要求:利用鼠标在视图上绘制线,能够设置线的颜色和宽度;能够用鼠标拾取绘制的某条线,被选中的线能够高亮显示,并且弹出对话框,输入线的属性保存起来;能够将绘制的线数据保存在文本文件中;打开线数据文件,可以显示出文件里面的线图形。

该题需要设计一个画线程序,在该程序中需要实现画线、设置线宽、设置线的颜色、拾取线、拾取线后的特殊属性、保存线数据、打开线数据等功能。

画线和拾取线功能都需要靠鼠标的左右键的信号来实现;设置线宽和颜色靠对话框输入,变换数值;保存和打开线数据是存储的线上各点、线宽、颜色等属性,然后在视图上重绘。

该题需要设计一个画线程序,用不同的模块来实现不同的功能。

而这些功能主要是在视图类中实现:画线和拾取线功能都需要靠鼠标的左右键的信号来实现;设置线宽和颜色靠对话框输入,变换数值;保存和打开线数据是存储的线上各点、线宽、颜色等属性,然后在视图上重绘。

除此之外,还要设置其他的类来保存数据。

1、由于画线和提取线的功能都是靠鼠标的信息来确定的,故需设定一个成员变量来确定鼠标的状态,设定成员变量为m_Get来判断是进行画线操作还是提取线操作。

2、画线功能靠鼠标左键的down、up和mousemove 信息来传递给函数来实现画线,其各自的函数为OnLButtonDown、OnLButtonUp、OnMouseMove实质上是记录下了各点,成员变量为起点m_startPoin和终点 m_endPoint。

再增加了鼠标移动响应函数OnMouseMove后,必须是鼠标按下去之后才开始绘图,因此,添加一个变量来表示鼠标左键是否按下去这一状态。

于是,为视图类添加一个BOOL型的私有变量成员m_bPaint,当鼠标左键按下去时,此变量为真;当鼠标左键弹起来时,此变量为假;于是在视图类构造函数中,m_bPaint=FALSE;在视图类函数OnLButtonDown中,m_bPaint=TRUE;在视图类函数OnLButtonUp中,m_bPaint=FALSE。

mfc课程设计电话薄

mfc课程设计电话薄

mfc课程设计电话薄一、教学目标本课程的教学目标是使学生掌握MFC编程的基本知识和技能,能够运用MFC框架设计并实现一个简单的电话簿应用程序。

具体分为以下三个维度:1.知识目标:学生需要了解MFC的基本概念、框架结构及其在C++程序设计中的应用。

2.技能目标:学生能够熟练使用MFC提供的各种控件,掌握事件处理机制,并运用MFC进行应用程序的设计与实现。

3.情感态度价值观目标:通过课程的学习,培养学生对计算机科学和程序设计的兴趣,提高他们的问题解决能力,培养良好的编程习惯和团队协作精神。

二、教学内容本课程的教学内容主要包括MFC的基本概念、框架结构、控件使用、事件处理等。

具体安排如下:1.MFC的基本概念和框架结构:介绍MFC的概念、发展历程及其在Visual Studio中的使用方法。

2.控件的使用:讲解MFC中的各种控件,如按钮、文本框、列表框等,并演示如何使用这些控件构建用户界面。

3.事件处理:讲解MFC的事件处理机制,引导学生掌握如何为控件编写事件处理函数。

4.电话簿应用程序的设计与实现:以电话簿应用程序为例,引导学生运用所学知识进行实际项目的设计与实现。

三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:用于讲解MFC的基本概念、框架结构和相关知识点。

2.案例分析法:通过分析实际案例,使学生掌握控件的使用和事件处理方法。

3.实验法:学生在实验室进行编程实践,巩固所学知识,提高实际操作能力。

4.讨论法:学生进行小组讨论,分享学习心得,互相解答疑问,培养团队协作精神。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的MFC编程教材,为学生提供系统的学习资料。

2.参考书:提供相关的MFC编程参考书籍,方便学生课后深入研究。

3.多媒体资料:制作课件、教学视频等多媒体资料,丰富教学手段,提高教学效果。

4.实验设备:提供计算机、网络等实验设备,确保学生能够进行顺利的编程实践。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计目标与内容1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.基本掌握面向对象程序设计的基本思路和方法;3.掌握用VC++开发应用程序的的一般步骤和方法;4.能够利用所学的基本知识,设计一个简单的通讯录应用程序,具有以下功能:①用文件来保存通讯录信息(必须实现的功能)②编程实现通讯录记录的添加、删除、修改、浏览和查询(必须实现的功能)。

二、设计要求1.用VC++进行编码,实现应用程序的功能。

注重编码质量,代码要有适当的注释;2.提交设计报告一份(课程设计任务书、目录、主要的数据结构、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献)。

总体设计通讯录应用程序,是一个基于单文档单视图的应用程序。

我们在基于但文档视图开发的同时,通过对文档菜单的操作和相应函数的响应实现一个简单的通讯录功能。

在通讯录中,我们能够添加学生信息、修改学生信息、删除学生信息、预览学生信息和保存学生信息。

进行一系列简单的操作。

详细设计新建工程COM_book2新建工程COM_kook2,默认选择单文档应用程序,完成。

在COM_book2View.cpp中初始化文档视图界面添加函数如下:void CCOM_book2View::OnInitialUpdate(){CListView::OnInitialUpdate();CListCtrl &m_ListCtrl=GetListCtrl();CString strHeader[5]={"姓名","专业","电话","QQ","生日"};int nLong[]={150,200,250,200,200};for(int nCol=0;nCol<5;nCol++)m_ListCtrl.InsertColumn(nCol,strHeader[nCol],LVCFMT_LEFT,nLong[nC ol]);UpdateData(FALSE);}程序运行后,界面如下程序运行主界面图1-1在这里,我们可以看到通过我们单文档视图中菜单“通讯录操作”可以进行相应的学生信息的添加、删除、修改、查询、浏览、保存和打开。

而这里,下来菜单中的每一个选项我们将通过对话框的形式进行呈现。

为了便于对学生信息进行操作和保存,我们这里用到了数组集合类。

先给工程添加一个学生信息类,用来保存学生的信息。

类定义如下:学生信息添加对话框图1-2给工程添加一个对话框,然后给该对话框建立类向导添加CStudentInfoDlg类然后为菜单选项中“添加”选项添加响应函数OnStuinfoAdd() 。

代码如下:void CCOM_book2Doc::OnStuinfoAdd(){CStudentInfoDlg dlg;BOOL flag=true;if(dlg.DoModal()!=IDOK) return;for(int i=0;i<m_stuObArray.GetSize();i++){CStudentInfo *p=(CStudentInfo *)m_stuObArray.GetAt(i);if(p->strName==dlg.m_add_name){flag=false;AfxMessageBox("该学生已存在!");}}if(flag){CStudentInfo* pStudent=new CStudentInfo(dlg.m_add_name,dlg.m_add_special,dlg.m_add_phone,dlg.m_ add_qq,dlg.m_add_birth);m_stuObArray.Add(pStudent);// SetModifiedFlag();this->UpdateAllViews(NULL,1,pStudent);}}学生信息删除对话框由于删除学生信息前要查询这个学生是否存在,所以这里我们要添加一个对话框类Del_StudentInfoDlg运行时对话框如图图1-3根据学生姓名来查询看学生是否存在,若存在则进行删除,若不存在则提示该学生不存在为菜单选项中的“删除”添加相应函数OnStuinfoDel()代码如下:void CCOM_book2Doc::OnStuinfoDel(){CDel_StudentInfoDlg dlg1;BOOL flag=true;if(dlg1.DoModal()!=IDOK) return;for(int i=0;i<m_stuObArray.GetSize();i++){CStudentInfo *p=(CStudentInfo *)m_stuObArray.GetAt(i);if(p->strName==dlg1.m_stu_del){delete m_stuObArray.GetAt(i);flag=false;}}if(flag)AfxMessageBox("学生不存在,不能进行删除!");if(flag==false){for(int i=0;i<m_stuObArray.GetSize();i++){CStudentInfo *p=(CStudentInfo *)m_stuObArray.GetAt(i);p->k=i+1;this->UpdateAllViews(NULL,2,p);}}}学生信息修改由于在修改学生信息之前我们要先查询学生是否存在,若存在我们对其信息进行修改,这时候要重新调用另一个对话框来对学生信息进行修改。

这是需添加两个对话框对话框对话框MOD_StudentInfoDlg1和MOD_StudentInfoDlg2并为它们建立相应的类CMOD_StudentInfoDlg1和CMOD_StudentInfoDlg2添加菜单选项中“修改”的响应函数OnStuinfoMod() ,先调用对话框MOD_StudentInfoDlg1来判断该学生是否存在,若存在则调用对话框MOD_StudentInfoDlg2对学生信息进行修改若不存在则提示该学生不存在。

代码如下:void CCOM_book2Doc::OnStuinfoMod(){CMOD_StudentInfoDlg1 dlg2;CMOD_StudentImfoDlg2 dlg3;BOOL flag=true;CStudentInfo *p1,*p2;if(dlg2.DoModal()!=IDOK) return;for(int i=0;i<m_stuObArray.GetSize();i++){p1=(CStudentInfo *)m_stuObArray.GetAt(i);if(p1->strName==dlg2.m_mod_name1){if(dlg3.DoModal()!=IDOK) return;p1->strName=dlg3.m_name2;p1->strSpecial=dlg3.m_spe2;p1->strQQ=dlg3.m_qq2;p1->strPhone=dlg3.m_phone2;p1->strBirth=dlg3.m_birth2;p2=p1;flag=false;}}if(flag)AfxMessageBox("学生不存在!");if(flag==false){this->UpdateAllViews(NULL,3,p2);AfxMessageBox("修改成功!");}}学生信息查询对话框学生信息查询对话框和删除学生信息对话框基本上是一样的,都是通过查询学生是否存在,若存在则显示该学生的信息,若不存在则提示学生不存在。

为菜单选项中的“查询”添加相应函数OnStuinfoSer()代码如下:void CCOM_book2Doc::OnStuinfoSer(){CSER_StudentInfoDlg dlg4;BOOL flag=true;CStudentInfo *p3;if(dlg4.DoModal()!=IDOK) return;for(int i=0;i<m_stuObArray.GetSize();i++){CStudentInfo *p=(CStudentInfo *)m_stuObArray.GetAt(i);if(p->strName==dlg4.m_ser_name){p3=(CStudentInfo *)m_stuObArray.GetAt(i);flag=false;}}if(flag==false)this->UpdateAllViews(NULL,3,p3);elseAfxMessageBox("学生不存在!");}◆学生信息查预览学生信息预览,顾名思义就是显示现有全部学生的信息。

这里添加菜单选项中“预览”的函数响应OnStuinfoLook()代码如下:void CCOM_book2Doc::OnStuinfoLook(){for(int i=0;i<m_stuObArray.GetSize();i++){CStudentInfo *p=(CStudentInfo *)m_stuObArray.GetAt(i);p->k=i+1;this->UpdateAllViews(NULL,2,p);}}◆学生信息查保存和打开虽然我们使用了数组集合类,系统能够自动的为我们保存添加过的学生信息,但是他本村的时候是乱码,所以这里我又重新写了函数进行学生信息的保存为菜单选项中的“保存”和“打开”添加相应的函数响应OnStuinfoSave1() 和OnStuinfoOpen1()代码如下:void CCOM_book2Doc::OnStuinfoSave1(){//设置保存的文件,后缀名txtCFileDialogdlg(FALSE,"txt",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"(*.TXT)|* .txt|All Files|*.*||",NULL);//如果公共类对话框为确定if(dlg.DoModal()==IDOK)//获取文件名dlg.GetFileName();//否则,退出elsereturn;CStdioFile file;//如果有问题,退出if(file.Open(dlg.GetFileName(),CFile::modeCreate|CFile::modeWrite |CFile::typeText)==0){AfxMessageBox("save error!");return;}for(int i=0;i<m_stuObArray.GetSize();i++){CStudentInfo *p=(CStudentInfo *)m_stuObArray.GetAt(i);file.WriteString(p->strName);file.WriteString(p->strSpecial);file.WriteString(p->strPhone);file.WriteString(p->strQQ);file.WriteString(p->strBirth);file.WriteString("\n");}file.Close();}void CCOM_book2Doc::OnStuinfoOpen1(){CFileDialogdlg(TRUE,"txt",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"(*.TXT)|*. wzq|All Files|*.*||",NULL);if(dlg.DoModal()==IDOK)dlg.GetFileName();elsereturn;CStdioFile file;CStudentInfo *P;int i,j;CString str;if(file.Open(dlg.GetFileName(),CFile::modeRead)==0) {AfxMessageBox("open error!");return;}CArchive ar(&file,CArchive::load);for(i=0;i<10;i++){for(j=0;j<5;j++){ar.ReadString(str);if (j==0) {P->strName=str;}if (j==1) {P->strSpecial=str;}if (j==2) {P->strPhone=str;}if (j==3) {P->strQQ=str;}if (j==4) {P->strBirth=str;}}this->UpdateAllViews(NULL,1,P);}file.Close();ar.Close();}文档和在视图的关联在Windows程序设计中,文档和视图的关联是很重要的,所以我们要弄明白他们之间互动的机制。

相关文档
最新文档