MFC毕业课程设计实验报告Word下载.docx
- 文档编号:19450818
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:21
- 大小:294.25KB
MFC毕业课程设计实验报告Word下载.docx
《MFC毕业课程设计实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《MFC毕业课程设计实验报告Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
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_strSpecial="
;
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())
必须要有学号!
Else
3、1用MFCClassWizard为CStudentCheckView类添加NM_CLICK消息映射
通过映射来在列表视图显示学生信息。
并添加下列初始化代码:
CPointpoint;
UINTuFlags;
GetCursorPos(&
point);
该函数检取光标的位置,以屏幕坐标表示
CTreeCtrl&
m_TreeCtrl=GetTreeCtrl();
m_TreeCtrl.ScreenToClient(&
HTREEITEM=0;
n<
nIndex;
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()->
定义一个指向列表视图类的指针
if(n==0)
list->
GetListCtrl().DeleteAllItems();
删除全部列表项
if(strItem==str||strItem==dlg||strItem=="
中原工学院"
{
Onprint(stu);
把息输信入到列表中
}
}
3、2然后为CStudentCheckView添加一个void类型的成员函数CreateTree()函数,用来动态添加学生信息
并添加下列初始代码:
m_TreeCtrl.DeleteAllItems();
i;
{
CStudentInfo*stu=(CStudentInfo*)doc->
CStringstr1=stu->
CStringstr2=stu->
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)
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;
CStudentInfo*stu=(CStudentInfo*)m_stuObArray.GetAt(n);
if(stu->
strName==dlg.m_name)
deletem_stuObArray.GetAt(n);
m_stuObArray.RemoveAt(n,1);
}
OnStuinfoFind()查找学生信息
if(i==0)
AfxMessageBox("
无学生信息"
for(intn=0;
CStudentInfo*stu=(CStudentInfo*)m_stuObArray.GetAt(n);
if(stu->
*POSITIONpos=GetFirstViewPosition();
GetNextView(pos);
listView*list=(listView*)GetNextView(pos);
CListCtrl&
m_list=list->
GetListCtrl();
m_list.DeleteAllItems();
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);
}}
判断是否找到}}
OnStuinfoXiugai()修改学生信息
StuInfoDlgdl;
BOOLflag=TRUE;
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->
dl.m_strSpecial=stu->
dl.DoModal();
此成员函数用来显示一个模态对话框Dialog2
stu->
strName=dl.m_strName;
strNO=dl.m_strNO;
bMale=dl.m_bMale;
tBirth=dl.m_tBirth;
strAcademy=dl.m_strAcademy;
strSpecial=dl.m_strSpecial;
SetModifiedFlag();
更新视图
if(flag)
无此学生信息"
7、1添加一个新的对话框Find,通过调用该该对话框来实现删除、修改、浏览学生信息:
并添加下列控件:
添加Find类的映射BN_CLICKED
并为该编辑框添加控件变量
运行程序实现改程序的功能
五、设计心得
1、通过这次课程设计,是我对MFC有了更进一步的了解,对消息的机制有了更深刻的认识,对MFC中的应用结构类、菜单类、窗口以及对话框和控件有了更深刻的认识。
2、也对上学期学习的VC++进行了复习,是我对上学期学期的有了更进一步的了解和熟悉,对编程能力有了进一步的提升。
3、合理的规划和设计页面对编程者是十分重要的。
一个好的程序也学要便捷的操作和美观的界面,人性化设计需要我们更加细心的去设计和美化程序。
4、虽然在MFC课程设计是遇到了这样和那样的问题,通过我自己和同学的帮助,还有参考数的帮助,这次课程设计是我收获很多,不仅对编程有了更进一步的了解,同时也看到了我自己编程能力的不足和与班级学习MFC好的同学之间的差距,需要进一步努力、才能不被他们抛的更远。
六、参考文献
[1]VisualC++教程清华大学出版社
[2]CC++程序设计教程电子工业出版社
[3]VisualC++程序设计与实践
设计一个简单的计算器应用程序
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
m_N2
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='
+'
OnRadio2()
-'
OnRadio3()
*'
OnRadio4()
'
OnRadio5()
^'
OnRadio6()
d'
OnRadio7()
s'
OnRadio8()
l'
OnButton1()
switch(Operator)
case'
m_Result=m_N1+m_N2;
break;
加法运算
m_Result=m_N1-m_N2;
减法运算
m_Result=m_N1*m_N2;
break;
乘法运算
if(m_N2==0)
MessageBox("
除数不能为零!
除法运算
else
m_Result=m_N1m_N2;
m_Result=sqrt(m_N1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 毕业 课程设计 实验 报告