VC++课程设计Word文档下载推荐.docx

上传人:b****5 文档编号:16212790 上传时间:2022-11-21 格式:DOCX 页数:19 大小:357KB
下载 相关 举报
VC++课程设计Word文档下载推荐.docx_第1页
第1页 / 共19页
VC++课程设计Word文档下载推荐.docx_第2页
第2页 / 共19页
VC++课程设计Word文档下载推荐.docx_第3页
第3页 / 共19页
VC++课程设计Word文档下载推荐.docx_第4页
第4页 / 共19页
VC++课程设计Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

VC++课程设计Word文档下载推荐.docx

《VC++课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VC++课程设计Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

VC++课程设计Word文档下载推荐.docx

1.启动VisualC++6.0

打开计算机,启动VisualC++6.0系统。

2.创建多文档应用程序Ex_MDI

用MFCAppWizard创建一个默认的多文档应用程序Ex_MDI。

3.复制“学生基本信息”和“课程信息”对话框

①将Ex_Student项目工作区切换到ResourceView页面,展开Dialog资源的所有项。

②单击开发环境标准工具栏上的“打开”按钮,打开实验3中Ex_Ctrls的资源文

件Ex_Ctrl.rc,展开Dialog资源的所有项,选定IDD_STUINFO对话框资源项,按住Ctrl

键,将其拖放到Ex_Student项目的Dialog资源处。

同样,再将IDD_COURSE对话框资源

击中。

4.复制对话框类CStuInfoDlg和CCourseDlg

①单击标准工具栏上的“打开”按钮,在“打开”文件对话框中,定位到Ex_Ctrls

项目文件夹,选中StuInfoDlg.h和StuInfoDlg.cpp以及CourseDlg.h和CourseDlg.cpp文件,

按快捷键Ctrl+C,然后将“打开”文件对话框的文件“查找范围”定位到本项目Ex_MDI

的文件夹中,按快捷键Ctrl+V、CStuInfoDlg和CCourseDlg类的源代码文件就复制过来了。

②关闭“打开”文件对话框,选择“工程”→“添加工程”→Files菜单,在弹出的

InsertFilesIntoProject对话框中选中刚才复制的源文件,单击“确定”按钮,CStuInfoDlg

和CCourseDlg类就添加到Ex_MDI项目中。

③打开StuInfoDlg.cpp文件,将文件前面的头文件包含进行修改,如下所示:

#include"

Ex_MDI.h"

//修改原来的#include"

Ex_Ctrls.h"

StuInfoDlg.h"

④打开CourseDlg.cpp文件,将文件前面的头文件包含进行修改,如下所示:

CourseDlg.h"

5.实现MFCClassWizard对CStuInfoDlg和CCourse类的支持

若此时打开MFCClassWizard对话框,在Classname组合框中有时是找不到刚添加的

CStuInfoDlg和CCourse类。

为此需要进行下列操作:

①单击标准工具栏上的“打开”按钮,在“打开”文件对话框中,将文件类型选择

为“所有文件(*.*)”,在文件列表框中,右击文件Ex_MDI.clw,从弹出的快捷菜单中选

择“删除”命令。

这里的Ex_MDI.clw是项目Ex_MDI的类向导文件。

②关闭“打开”文件对话框后,按快捷键Ctrl+W,出现一个消息对话框,询问是否

从资源中重新创建一个类向导文件,单击“是(Y)”按钮,出现如图6.3所示的对话框。

图6.3重新创建类向导文件

③单击AddAll按钮,再单击OK按钮。

6.添加一个CStudentInfo类并使该类可序列化

①选择“文件”→“新建”菜单命令,显示出“新建”对话框。

单击“文件”标签,

在左边的列表框中选择C/C++HeaderFile项,在右边的“文件”下的编辑框中输入

StudentInfo.h,单击“确定”按钮。

②在文档窗口中输入下面的代码:

classCStudentInfo:

publicCObject

{

CStringstrName;

//姓名

CStringstrNO;

//学号

BOOLbMale;

//性别,是否为男

CTimetBirth;

//出生年月

CStringstrSpecial;

//专业

DECLARE_SERIAL(CStudentInfo)//序列化声明

public:

CStudentInfo(){};

CStudentInfo(CStringname,CStringid,BOOLmale,CTimebirth,CStringspecial);

voidSerialize(CArchive&

ar);

voidDisplay(inty,CDC*pDC);

//在坐标为(0,y)处显示数据

};

③再次选择“文件”→“新建”菜单命令,显示出“新建”对话框。

单击“文件”

标签,在左边的列表框中选择C++SourceFile项,在右边的“文件”下的编辑框中输入

StudentInfo.cpp,单击“确定]按钮。

④在文档窗口中输入下面的代码:

stdafx.h"

StudentInfo.h"

CStudentInfo:

:

CStudentInfo(CStringname,CStringid,BOOLmale,CTimebirth,CStringspecial)

strName=name;

strNO=id;

bMale=male;

tBirth=birth;

strSpecial=special;

}

voidCStudentInfo:

Display(inty,CDC*pDC)

CStringstr,strSex("

女"

);

if(bMale)strSex="

男"

;

str.Format("

%s%s%s%s%s"

strName,strNO,

strSex,tBirth.Format("

%Y-%m-%d"

),strSpecial);

pDC->

TextOut(0,y,str);

IMPLEMENT_SERIAL(CStudentInfo,CObject,1)//序列化实现

Serialize(CArchive&

ar)

if(ar.IsStoring())

ar<

<

strName<

strNO<

bMale<

tBirth<

strSpecial;

else

ar>

>

strName>

strNO>

bMale>

tBirth>

⑤编译。

7.添加一个CCourseInfo类并使该类可序列化

CourseInfo.h,单击“确定”按钮。

classCCourseInfo:

//课程号

//课课名称

//所属专业

CStringstrType;

//课程类型

BYTEnOpen;

//开课学期

BYTEnHours;

//课时数

floatfCredit;

//学分

DECLARE_SERIAL(CCourseInfo)//序列化声明

CCourseInfo(){};

CCourseInfo(CStringid,CStringname,CStringspecial,CStringtype,

BYTEterm,BYTEhours,floatcredit);

CourseInfo.cpp,单击“确定”按钮。

CourseInfo.h"

CCourseInfo:

BYTEterm,BYTEhours,floatcredit)

strType=type;

nOpen=term;

nHours=hours;

fCredit=credit;

voidCCourseInfo:

CStringstr;

%s%s%s%s%d%d%4.1f"

strNO,strName,

strSpecial,strType,nOpen,nHours,fCredit);

IMPLEMENT_SERIAL(CCourseInfo,CObject,1)//序列化实现

strSpecial<

strType<

nOpen<

nHours<

fCredit;

strSpecial>

strType>

nOpen>

nHours>

8.实现课程信息文档序列化

①在Ex_MDIDoc.h文件的classCEx_MDIDoc前面,添加包含CCourseInfo类的头

文件。

②为CEx_MDIDoc类添加下列成员变量,用来保存添加的CCourseInfo类对象数据:

CObArraym_courseObArray;

//对象集合类对象

③为CEx_MDIDoc类添加成员函数CCourseInfo*GetCourseInfoAt(intnIndex),用

来获取m_courseObArray中指定索引号的CCourseInfo类指针,其代码如下:

CCourseInfo*CEx_MDIDoc:

GetCourseInfoAt(intnIndex)

if((nIndex<

0)||nIndex>

m_courseObArray.GetUpperBound())

returnNULL;

//超界处理

return(CCourseInfo*)m_courseObArray.GetAt(nIndex);

④为CEx_MDIDoc类添加成员函数intGetCourseRecNum(void),用于获取集合类

中对象的个数其代码如下:

intCEx_MDIDoc:

GetCourseRecNum()

returnm_courseObArray.GetSize();

⑤在CEx_MDIDoc类析构函数~CEx_MDIDoc添加下列删除并释放对象的代码:

CEx_MDIDoc:

~CEx_MDIDoc()

intnIndex=GetCourseRecNum();

while(nIndex--)

deletem_courseObArray.GetAt(nIndex);

//删除并释放对象的内存空间

m_courseObArray.RemoveAll();

⑥在CEx_StudentDoc:

Serialize函数中添加下列代码:

voidCEx_MDIDoc:

Serialize(CArchive&

ar)

if(ar.IsStoring()){

m_courseObArray.Serialize(ar);

}else{

⑦在Ex_MDIDoc.cpp文件的开始处,添加包含CCourseDlg类的头文件包含:

Ex_MDIDoc.h"

⑧在菜单资源IDR_EX_MDITYPE中添加顶层菜单项“课程信息(&

S)”,在该顶层

菜单项中添加子菜单“添加(&

A)”(ID_COURSEINFO_ADD)。

⑨用MFCClassWizard为CEx_MDIDoc类添加处理菜单项ID_COURSEINFO_ADD

的COMMAND消息,并添加下列代码:

OnCourseinfoAdd()

CCourseDlgdlg;

if(dlg.DoModal()!

=IDOK)return;

//添加记录

CCourseInfo*pCourse=newCCourseInfo(dlg.m_strNO,dlg.m_strName,

dlg.m_strSpecial,dlg.m_strType,dlg.m_nOpen,dlg.m_nHours,dlg.m_fCredit);

m_courseObArray.Add(pCourse);

SetModifiedFlag();

//设置文档更改标志

UpdateAllViews(NULL);

//更新视图

⑩修改CEx_MDIView:

OnDraw代码,用来将所有的课程信息记录显示在视图中:

voidCEx_MDIView:

OnDraw(CDC*pDC)

CEx_MDIDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

inty=0;

for(intnIndex=0;

nIndex<

pDoc->

GetCourseRecNum();

nIndex++){

pDoc->

GetCourseInfoAt(nIndex)->

Display(y,pDC);

y+=16;

打开文档的字串资源IDR_EX_MDITYPE,将其内容修改为:

\nCourseRec\nEx_MDI\n课程信息文件(*.cou)\n.cou\nExMDI.Document\nEx_MDIDocument

编译并运行。

9.第一次测试

①运行后,选择“课程基本信息”→“添加”菜单命令,弹出“课程信息”对话框,

输入相关信息后,单击“确定”按钮。

重复刚才的操作,添加两个课程信息记录,结果如

图6.1所示。

②选择“文件”→“保存”菜单命令,弹出保存文件对话框,指定要保存的文件名1.cou,

单击“保存”按钮,这样就将添加的记录保存到1.cou文件中。

③关闭应用程序,然后重新运行。

选择“文件”→“打开”菜单命令,从弹出的打

开文件对话框中指定刚才保存的1.cou文件,单击“打开”按钮,该文件中的课程信息记

录被保存到m_courseObArray中,并在视图中显示出来。

④再添加一个课程信息记录,保存后再打开,结果如何?

10.添加另一个文档模板类型

①打开项目工作区窗口中StringTable的资源项,双击该项下的StringTable,打开字

符串表资源,拖动字符串表编辑器右边的滚动块,直到出现最后一个字符串项,双击最后

的空行,在字符串属性对话框中将ID设为IDR_STUDENT,值为130,标题内容设为:

\nStuRec\nEx_Student\n学生基本信息文件(*.stu)\n.stu\nExMDI.Document\nEx_MDIDocument

②按快捷键Ctrl+W,打开MFCClassWizard,单击AddClass按钮,从弹出的菜单中

选择New,出现NewClass对话框,在Name框中输入类名CEx_StudentDoc,在Baseclass

组合框中选择基类CDocument。

单击OK按钮,新的文档类COtherDoc就添加到Ex_MDI

项目中。

③类似地再添加一个新的视图类CEx_StudentView,基类为CView。

单击“确定”按

钮,关闭MFCClassWizard对话框。

④修改CEx_MDIApp:

InitInstance函数代码,如下所示:

BOOLCEx_MDIApp:

InitInstance()

CMultiDocTemplate*pDocTemplate;

pDocTemplate=newCMultiDocTemplate(

IDR_EX_MDITYPE,

RUNTIME_CLASS(CEx_MDIDoc),

RUNTIME_CLASS(CChildFrame),//customMDIchildframe

RUNTIME_CLASS(CEx_MDIView));

AddDocTemplate(pDocTemplate);

IDR_STUDENT,//指定新的资源

RUNTIME_CLASS(CEx_StudentDoc),//指定新的文档类

RUNTIME_CLASS(CChildFrame),

RUNTIME_CLASS(CEx_StudentView));

//指定新的视图类

⑤在文件Ex_MDI.cpp的开始处,添加包含前面创建的两个派生类的头文件包含:

Ex_MDIView.h"

Ex_StudentDoc.h"

Ex_StudentView.h"

⑥编译并运行。

11.实现学生基本信息文档序列化

①在Ex_StudentDoc.cpp文件的开始处,添加包含CStuInfoDlg类的头文件包含。

②将项目工作区切换到ResourceView页面,展开Menu所有节点,选中

IDR_EX_MDITYPE,然后按住Ctrl键,将其拖放到Menu节点上,将IDR_EX_MDITYPE1

标识改为IDR_STUDENT。

③保留“文件”和“帮助”菜单,其他删除。

添加顶层菜单项“学生基本信息(&

S)”,

在该顶层菜单项中添加子菜单“添加(&

A)”(ID_STUINFO_ADD)。

④用MFCClassWizard为CEx_StudentDoc类添加处理菜单项ID_STUINFO_ADD的

COMMAND消息,并添加下列代码:

voidCEx_StudentDoc:

OnStuinfoAdd()

CStuInfoDlgdlg;

CStudentInfo*pStudent=newCStudentInfo(dlg.m_strName,

dlg.m_strNo,dlg.m_bMale,dlg.m_tBirth,dlg.m_strSpecial);

m_stuObArray.Add(pStudent);

⑤修改CEx_StudentDoc类代码(与教材文档序列化示例Ex_Student相同)。

⑥在CEx_StudentView:

OnDraw中添加下列代码:

voidCEx_StudentView:

CEx_StudentDoc*pDoc=(CEx_StudentDoc*)GetDocument();

GetAllRecNum();

GetStudentInfoAt(nIndex)->

⑦在Ex_StudentView.cpp文件的前面添加CEx_StudentDoc类的头文件包含:

⑧编译运行。

在文档类型“新建”对话框中,选中Ex_Student,单击“确定”按钮,

出现程序主界面,然后进行测试,测试的内容与教材文档序列化示例Ex_Student相同。

果如图6.2所示。

实验环境

硬件环境:

软件环境:

程序测试及结果分析

实验总结

(1)通过这次课程设计,可以说我粗略的掌握了MFC程序设计,对vc的关键技术之一的消息机制有了很深刻的认识,对MFC的的常用控件,列表,树控件,菜单,工具栏,状态栏,框架窗口,文本窗口以及切分窗口,图形,文本,打印有了理解.

(2)我还理解到程序的界面设计十分的重要,一个好的程序必须有便捷的操作和美观的界面.人性化的设计是程序的翅膀,长了翅膀的程序才能飞得更远更高。

(3)更重要的是此次课程设计让我从实践的角度了解了编

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1