最新版MFC毕业课程设计实验报告.docx

上传人:b****1 文档编号:2041488 上传时间:2023-05-02 格式:DOCX 页数:24 大小:294.15KB
下载 相关 举报
最新版MFC毕业课程设计实验报告.docx_第1页
第1页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第2页
第2页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第3页
第3页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第4页
第4页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第5页
第5页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第6页
第6页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第7页
第7页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第8页
第8页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第9页
第9页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第10页
第10页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第11页
第11页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第12页
第12页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第13页
第13页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第14页
第14页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第15页
第15页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第16页
第16页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第17页
第17页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第18页
第18页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第19页
第19页 / 共24页
最新版MFC毕业课程设计实验报告.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

最新版MFC毕业课程设计实验报告.docx

《最新版MFC毕业课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《最新版MFC毕业课程设计实验报告.docx(24页珍藏版)》请在冰点文库上搜索。

最新版MFC毕业课程设计实验报告.docx

最新版MFC毕业课程设计实验报告

课程设计任务书2

课程设计题目1:

设计一个简单的学生信息管理应用程序2

一、设计目标与内容:

2

二、设计要求:

2

三、基本思路3

四、主要步骤3

五、设计心得24

六、参考文献25

课程设计题目3:

设计一个简单的计算器应用程序25

一、设计目标与内容:

25

二、设计要求:

25

三、基本思路25

四、基本步骤26

五、设计心得31

六、参考文献32

课程设计任务书

课程设计题目1:

设计一个简单的学生信息管理应用程序

一、设计目标与内容:

1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;

2.   基本掌握面向对象程序设计的基本思路和方法;

3.    掌握用VC++开发应用程序的的一般步骤和方法;

4.     能够利用所学的基本知识,设计一个简单的学生信息管理应用程序,具有以下功能:

①实现学生信息的存储,可以用文件来实现。

②编程实现学生信息的添加、删除、修改、浏览和查询等功能(必须实现的功能)。

二、设计要求:

1.  用VC++进行编码,实现应用程序的功能。

注重编码质量,代码要有适当的注释;

2.  采用单文档多视图方式,左边为树视图,右边为列表视图,左边一级节点为中原工学院,二级节点为计算机学院和软件学院,三级节点为计算机学院的三个专业。

要求可以动态增加节点。

楼便为列表视图,包含学生的学号、性别、姓名各科成绩等。

右边也可以实现动态增加

3.当选中节点时,显示对应的学生信息。

如当选中”中原工学院”时选中所用的学生信息,选中“计算机学院”时,显示所有计算机学院学生信息

4.采用序列化方式保存和读取学生信息; 提交设计报告一份(课程设计任务书、目录、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献)。

提示:

1、读文件时动态构造右边树视图方法,先构造根节点中原工学院,

2、序列读取学生信息到一个数组,遍历数组,如果右边树视图中有该节点的信息则不增加,没有则增加该节点,如有学生姓名为张三计算机学院网络工程系学生,二右边没有计算机学院节点时,在“中原工学院”节点下构造“计算机学院”节点,以及“网络工程系

三、基本思路

建立一个当文档的应用程序,在第六步将视图的基类选择为CTreeList,然后再建立一个新的类listView,用来输出学生的基本信息,然后添加一个切分窗口的函数OnCreateClient用来切分窗口,不添加相应的控件来实现学生信息的操作,通过完善学生信息类的功能慢慢实现程序的运行,然后添加一个序列化类CStudentInfo来实现信息的读取与保存,最后添加一个新的查找的对话框用来查找、删除、查询学生信息的一个中介,通过姓名来实现学生信息的功能。

四、主要步骤

1、新建工程:

用MFCAppWizard(exe)创建一个单文档的应用程序StudentCheck。

在第六步中将视图的基类选择为。

2、1添加一个基于ListView类的新的类listView、用于显示学生信息

2、2为CMainFrame添加一个切分窗口的映射函数OnCreateClient

并添加一个切分窗口的函数成员CSplitterWndm_wndSplitter;然后添加下列代码:

CRectrect;

GetClientRect(&rect);

CSizepaneSize(rect.Width()3,rect.Height());

m_wndSplitter.CreateStatic(this,1,2);

m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CStudentCheckView),paneSize,pContext);

m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(listView),CSize(0,0),pContext);

returntrue;

2、4创建一个CstuInfoDlg对话框

2、5添加下列控件

并为上面控件添加变量

在WorkSpace中进入ClassView视图,为CStuInfoDlg类添加一个BOOL型的成员变量m_bMale,并在CStuInfoDlg类设置该变量的初始值,添加代码如下:

StuInfoDlg:

:

StuInfoDlg(CWnd*pParent*=NULL*)

:

CDialog(StuInfoDlg:

:

IDD,pParent)

{

m_bMale=FALSE;

{{AFX_DATA_INIT(StuInfoDlg)

m_strSpecial=_T("");

m_tBirth=0;

m_strMath=0;

m_strName=_T("");

m_strNO=_T("");

m_strAcademy=_T("");

}}AFX_DATA_INIT

}

用MFCClassWizard为CStuInfoDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:

if(!

m_bMale)

CheckRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE,IDC_RADIO_FEMALE);

else

CheckRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE,IDC_RADIO_MALE);对专业组合框进行初始化

m_comboSpecial.AddString("网络工程");

m_comboSpecial.AddString("软件工程");

m_comboSpecial.AddString("计算机科学");

m_comboSpecial.AddString("服装设计");

m_comboSpecial.AddString("服装表演");

m_comboSpecial.AddString("艺术设计");

m_strSpecial="网络工程";

m_comboAcademy.AddString("计算机学院");

m_comboAcademy.AddString("服装学院");

m_strAcademy="计算机学院";

m_tBirth=CTime(0,0);

m_strMath=80;

UpdateData(FALSE);将信息显示在控件中

2、6用MFCClassWizard为单选按钮IDC_RADIO_MALE添加BN_CLICKED的消息映射,并添加下列初始代码:

m_bMale=TRUE;

用MFCClassWizard为单选按钮IDC_RADIO_FEMALE添加BN_CLICKED的消息映射,并添加下列初始代码:

m_bMale=FALSE;

用MFCClassWizard为单选按钮IDOK添加BN_CLICKED的消息映射,并添加下列初始代码:

UpdateData();

m_strName.TrimLeft();将字符串最前面的空格修整掉

m_strNO.TrimLeft();

if(m_strName.IsEmpty())

MessageBox("必须要有姓名!

");

elseif(m_strNO.IsEmpty())

MessageBox("必须要有学号!

");

Else

3、1用MFCClassWizard为CStudentCheckView类添加NM_CLICK消息映射

通过映射来在列表视图显示学生信息。

并添加下列初始化代码:

CPointpoint;

UINTuFlags;

:

:

GetCursorPos(&point);该函数检取光标的位置,以屏幕坐标表示

CTreeCtrl&m_TreeCtrl=GetTreeCtrl();

m_TreeCtrl.ScreenToClient(&point);

HTREEITEM=0;n

{

CStudentInfo*stu=(CStudentInfo*)doc->m_stuObArray.GetAt(n);调取m_stuObArray中储存的第n个对象信息

CStringstr=stu->strSpecial;得到该学生的专业信息

CStringdlg=stu->strAcademy;得到该学生的学院信息

POSITIONpos=GetDocument()->GetFirstViewPosition();

GetDocument()->GetNextView(pos);

listView*list=(listView*)GetDocument()->GetNextView(pos);定义一个指向列表视图类的指针

if(n==0)

list->GetListCtrl().DeleteAllItems();删除全部列表项

if(strItem==str||strItem==dlg||strItem=="中原工学院")

{

list->Onprint(stu);把息输信入到列表中

}

}

3、2然后为CStudentCheckView添加一个void类型的成员函数CreateTree()函数,用来动态添加学生信息

并添加下列初始代码:

CTreeCtrl&m_TreeCtrl=GetTreeCtrl();

m_TreeCtrl.DeleteAllItems();

HTREEITEM=0;n

{

CStudentInfo*stu=(CStudentInfo*)doc->m_stuObArray.GetAt(n);

CStringstr1=stu->strAcademy;

CStringstr2=stu->strSpecial;

if(!

m_TreeCtrl.ItemHasChildren(((nCol,strHeader[nCol],LVCFMT_LEFT,nWidth[nCol]);

5、1建立序列化类CStudentInfo用来保存学生信息,添加CC++HeaderFile,并添加下列初始代码:

classCStudentInfo:

publicCObject

{

public:

CStringstrName;

CStringstrNO;

BOOLbMale;

CTimetBirth;

intstrMath;

CStringstrSpecial;

CStringstrAcademy;

DECLARE_SERIAL(CStudentInfo)

public:

CStudentInfo(){};

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

voidSerialize(CArchive&ar);};

5、2添加CC++SourceFile,并添加下列初始代码:

#include"stdafx.;判断学生信息是不是已经添加

CStudentInfo*pStudent=newCStudentInfo(dlg.m_strName,dlg.m_strNO,dlg.m_bMale,dlg.m_tBirth,

dlg.m_strMath,dlg.m_strAcademy,dlg.m_strSpecial);

m_stuObArray.Add(pStudent);

POSITIONpos=GetFirstViewPosition();

CStudentCheckView*stu=(CStudentCheckView*)GetNextView(pos);

stu->CreateTree();

SetModifiedFlag();设置文档更改标志

UpdateAllViews(NULL);更新视图

}

voidCStudentCheckDoc:

:

OnSTUINFODEl()删除学生信息

{

Finddlg;

if(dlg.DoModal()!

=IDOK)return;

inti=m_stuObArray.GetSize();

for(intn=0;n

{

CStudentInfo*stu=(CStudentInfo*)m_stuObArray.GetAt(n);

if(stu->strName==dlg.m_name)

{

deletem_stuObArray.GetAt(n);

m_stuObArray.RemoveAt(n,1);

}

}

SetModifiedFlag();设置文档更改标志

UpdateAllViews(NULL);更新视图

}

voidCStudentCheckDoc:

:

OnStuinfoFind()查找学生信息

{

Finddlg;

if(dlg.DoModal()!

=IDOK)return;

inti=m_stuObArray.GetSize();

if(i==0)

AfxMessageBox("无学生信息");

else

{

for(intn=0;n

{

CStudentInfo*stu=(CStudentInfo*)m_stuObArray.GetAt(n);

if(stu->strName==dlg.m_name)

{

*POSITIONpos=GetFirstViewPosition();

GetNextView(pos);

listView*list=(listView*)GetNextView(pos);

CListCtrl&m_list=list->GetListCtrl();

m_list.DeleteAllItems();

list->Onprint(stu);

flag=FALSE;*

CStringstrRes,strSex("女");

CStringstr;理解

str.Format("%d",stu->strMath);

if(stu->bMale)strSex="男";

strRes.Format("姓名:

%s,\n学号:

%s,\n性别:

%s,\n出生年月:

%s,\n学院:

%s,\n专业:

%s,\n数学成绩:

%s",

stu->strName,stu->strNO,strSex,stu->tBirth.Format("%Y-%m-%d"),stu->strAcademy,stu->strSpecial,str);

AfxMessageBox(strRes);}}

判断是否找到}}

voidCStudentCheckDoc:

:

OnStuinfoXiugai()修改学生信息

{

Finddlg;

StuInfoDlgdl;

BOOLflag=TRUE;

if(dlg.DoModal()!

=IDOK)return;

inti=m_stuObArray.GetSize();

if(i==0)

AfxMessageBox("无学生信息");

else

{

for(intn=0;n

{

CStudentInfo*stu=(CStudentInfo*)m_stuObArray.GetAt(n);

if(stu->strName==dlg.m_name)

{

dl.m_strName=stu->strName;

dl.m_strNO=stu->strNO;

dl.m_bMale=stu->bMale;

dl.m_tBirth=stu->tBirth;

dl.m_strMath=stu->strMath;

dl.m_strAcademy=stu->strAcademy;

dl.m_strSpecial=stu->strSpecial;

dl.DoModal();此成员函数用来显示一个模态对话框Dialog2

stu->strName=dl.m_strName;

stu->strNO=dl.m_strNO;

stu->bMale=dl.m_bMale;

stu->tBirth=dl.m_tBirth;

dl.m_strMath=stu->strMath;

stu->strAcademy=dl.m_strAcademy;

stu->strSpecial=dl.m_strSpecial;

flag=FALSE;

SetModifiedFlag();设置文档更改标志

UpdateAllViews(NULL);更新视图

}

}

if(flag)

AfxMessageBox("无此学生信息");}}

7、1添加一个新的对话框Find,通过调用该该对话框来实现删除、修改、浏览学生信息:

并添加下列控件:

添加Find类的映射BN_CLICKED

并为该编辑框添加控件变量

运行程序实现改程序的功能

五、设计心得

1、通过这次课程设计,是我对MFC有了更进一步的了解,对消息的机制有了更深刻的认识,对MFC中的应用结构类、菜单类、窗口以及对话框和控件有了更深刻的认识。

2、也对上学期学习的VC++进行了复习,是我对上学期学期的有了更进一步的了解和熟悉,对编程能力有了进一步的提升。

3、合理的规划和设计页面对编程者是十分重要的。

一个好的程序也学要便捷的操作和美观的界面,人性化设计需要我们更加细心的去设计和美化程序。

4、虽然在MFC课程设计是遇到了这样和那样的问题,通过我自己和同学的帮助,还有参考数的帮助,这次课程设计是我收获很多,不仅对编程有了更进一步的了解,同时也看到了我自己编程能力的不足和与班级学习MFC好的同学之间的差距,需要进一步努力、才能不被他们抛的更远。

六、参考文献

[1]VisualC++教程清华大学出版社

[2]CC++程序设计教程电子工业出版社

[3]VisualC++程序设计与实践

课程设计任务书

课程设计题目3:

设计一个简单的计算器应用程序

一、设计目标与内容:

1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;

2.基本掌握面向对象程序设计的基本思路和方法;

3.掌握用VC++开发应用程序的的一般步骤和方法;

4.能够利用所学的基本知识,设计一个简单的计算器应用程序,实现基本的加、减、乘、除、求平方根,求倒数等基本运算(必须实现的功能),实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常用对数等基本运算(这部分功能选做)。

5.在程序中注意处理数据和运算符的输入,计算结果的显示。

二、设计要求:

1.用VC++进行编码,实现应用程序的功能。

注重编码质量,代码要有适当的注释;

2.提交设计报告一份(课程设计任务书、目录、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献)。

三、基本思路

1、建立一个当文档的应用程序CSimpleCalcDlg,添加一个对话框,然后添加控件。

并添加相应的按钮,通过点击来实现相应的功能。

四、基本步骤

1.新建项目:

建立一个默认的当文档的应用程序

2.定制界面:

(1)修改MFCAppWizard自动创建的对话框项目模板。

删除模板上自动创建的三个控件。

(2)加入“请输入数据:

”、“结果”两个静态文本框和相应的2个编辑框。

(3)加入三个GroupBox,标题修改为“请选择运算符:

”、“二元运算”、“一元运算”,并向请“选择运算符”其中放入8个RadioButton将标题分别改为“+”、“-”、“*”、“”、“求倒”、“1n”、“sin”、“lg”。

(4)继续用鼠标从工具箱中向对话框添加和3个按钮控件,更改按钮的标题为“计算”、“清除”、“关闭”。

3.添加变量

本例中用到以下4个CSimpleCalcDlg类的成员变量:

变量类型

名称

float

m_N1

float

m_N2

float

m_Result

char

Operator

用ClassWizard为编辑框添加变量:

m_N1,m_N2,m_Result

变量charOperator的添加方法:

在WorkSpace中进入ClassView视图,鼠标右键单击CSimpleCalcDlg,在菜单中选择“AddMemberVariable…”然后在弹出的对话框的输入变量类型和名称:

4.添加消息映射

用ClassWizard为按钮控件添加消息映射:

继续用ClassWizard为RadioButton控件添加消息映射:

5.加入单击按钮时的事件响应代码

在实现文件(cpp文件)中加入单击按钮时的事件响应代码。

(双击一个按钮可直接进入函数编辑)

选择运算符

voidCSimpleCalcDlg:

:

OnRadio1()

{Operator='+';}

voidCSimpleCalcDlg:

:

OnRadio2()

{Operator='-';}

voidCSimpleCalcDlg:

:

OnRadio3()

{Operator='*';}

voidCSimpleCalcDlg:

:

OnRadio4()

{Operator='';}

voidCSimpleCalcDlg:

:

OnRadio5()

{Operator='^';}

voidCSimpleCalcDlg:

:

OnRadio6()

{Operator='d';}

voidCSimpleCalcDlg:

:

OnRadio7()

{Operator='s';}

voidCSimpleCalcDlg:

:

OnRadio8()

{Operator='l';}

voidCSimpleCalcDlg:

:

OnButton1()

{

UpdateData();

switch(Operator)

{

case'+':

m_Result=m_N1+m_N2;break;加法运算

case'-':

m_Result=m_N1-m_N2;break;减法运算

case'*':

m_Result=m_N1*m_N2;break;乘法运算

case'':

if(m_N2==0)

MessageBox("除数不能为零!

");除法运算

else

{

m_Result=m_N1m_N2;break;

}

case'^':

m_Result=sqrt(m_N1);break;求平方根

case'd':

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2