武汉理工大学 VC++程序设计课程考核大作业题目:个人兴趣问卷调查学院:信息工程学院日期:2015年11月29日目录一设计要求: (3)二、实现步骤: (3)1、创建一个单文档应用项目 (3)2.编辑对话框 (3)3.菜单的编辑 (6)4.工具栏的编辑 (7)三、部分程序代码 (8)四、运行结果 (11)五、总结心得 (13)一设计要求:Z2、个人兴趣问卷调查(内容包括文字和数字)(1)建立一个单文档的应用项目(项目名称为学生姓名拼音首字母缩写)。
(2)在该应用项目下,建立一个对话框进行问卷调查,并更改对话框的标题。
问卷调查的内容是个人兴趣,包括喜欢的读物、喜欢的运动、每天运动的小时数、喜欢的电视栏目等。
(3)在对话框中要求采用单选按钮、复选按钮、编辑框、旋转按钮等进行选择。
(4)在应用项目主框架的菜单上设置一个菜单调用该对话框。
(5)在工具栏设置一个工具按钮,点击该工具按钮也可调用该对话框。
(6)将对话框的调查结果显示出来。
二、实现步骤:1、创建一个单文档应用项目,项目名称cq(1)打开VC++6.0,快捷键Ctrl+N,然后在工程中选择MFC AppWizard(exe),在工程名称中输入“cq”,点击确定。
(2)在弹出的MFC 应用程序向导窗口中选择“单文档”,点击完成,弹出的新建工程信息窗口点击确定。
(3)按快捷键Ctrl+R,在弹出的插入资源窗口中,资源类型选择Dialog项,然后单击新建。
(4)成功创建了一个项目名称为cq单文档应用项目。
2.编辑对话框(1)右键点击对话框,单击“属性”。
在标题中输入“个人兴趣问卷调查”。
(2)调整对话框的大小,将“确定”和“取消”按钮移至对话框的下方,并向对话框中添加4个组框控件,然后调整其大小和位置。
右击添加的组框控件,从弹出的快捷菜单中选择“属性”菜单,在属性对话框中将其标题内容依次改为“早晨起床时间”、“每天学习小时数”、“学习内容”、“睡觉时间”。
(3)在“早晨起床时间”组框中添加4个单选按钮,右键单击单选按钮,点击属性,将ID依次改成IDC_DUWU_ZZ,IDC_DUWU_BZ,IDC_DUWU_MZ,IDC_DUWU_MH。
然后将标题内容依次改为“政治”,“报纸”,“名著”,“魔幻”。
(4)在“喜欢的运动”组框中添加4个复选框,ID改为IDC_YUNDONG_DQ,IDC_YUNDONG_PB,IDC_YUNDONG_YY,IDC_YUNDONG_YZ,标题依次改为“打拳”,“跑步”,“越野”,“远足”。
(5)在“每天运动的小时数”组框中添加一个编辑框和旋转按钮,将其ID分别设为IDC_EDIT_TIME和IDC_SPIN_T。
然后按Ctrl+D,顺序点击编辑框和旋转按钮,将其关联。
图1(6)在“喜欢的栏目”组框中添加一个编辑框。
ID改为IDC_EDIT_TV。
按快捷键Ctrl+W,在弹出的对话框中点击OK,新弹出的对话框中,name中输入ccqDlg,点击ok。
图2(7)在ClassWizard的Member Variables页面中,确定Class name中已选择CcqDlg,在Control IDs中,双击,依次为下列控件增加成员变量,如下图。
图3(8)在MFC ClassWizard的Message Maps页面中,选中CcqDlg,WM_INITDIALOG 点击Add Function添加消息映射,然后点击Edit code并添加代码。
(代码见附录WM_INITDIALOG中添加的代码)(9)用MFC ClassWizard增加IDC_spinT控件的UDN_DELTAPOS消息映射,并添加代码。
(代码见附录IDC_spinT中添加的代码)3.菜单的编辑找到Resourcr View->Menu->IDR_MainFrame,双击IDR_MainFrame,弹出菜单栏。
图4双击菜单栏虚线部分弹出菜单项目属性,将标明输入为“问卷调查”,ID 项输入“IDM_cq”将“弹出”一项取消。
点击菜单栏中的查看->建立类向导或直接按Ctrl+W,在class name中选择CcqView,以将这个菜单的命令相应放在CcqView中完成。
在Object IDs中找到IDM_cq,message中选择command,点击Add Function,点击ok后选择Edit Code,编辑代码。
图54.工具栏的编辑(1)找到Resourcr View->Toolbar->IDR_MainFrame,双击IDR_MainFrame,弹出工具栏。
(2)选择工具栏的一个图标,编辑图标,然后双击图标,在ID中输入ID_cqDy。
(3)点击菜单栏中的查看->建立类向导或直接按Ctrl+W,在class name中选择CMainFrame,以将这个工具栏的命令相应放在CMainFrame中完成。
(4)在Object IDs中找到IDM_cqDy,message中选择command,点击Add Function,点击ok后选择Edit Code,编辑代码。
图6三、部分程序代码(1)WM_INITDIALOG中添加的代码:BOOL CZHLDlg::OnInitDialog(){CDialog::OnInitDialog();CheckRadioButton(IDC_DUWU_ZZ,IDC_DUWU_BZ,DC_DUWU_MZ,IDC_DUWU_MH); //给一组单选按钮中的一个指定按钮加上选中标志,并且清除组中其他按钮的选中标志m_spinT.SetRange(0,24);//设置m_spinT的范围,即从0到24CButton* pBtn=(CButton*)GetDlgItem(IDC_SUBJECT_MATH);//函数检索指定的对话框中的控件句柄// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }(2)IDC_SPIN_T中添加的代码:void CZHLDlg::OnDeltaposSpinT(NMHDR* pNMHDR, LRESULT* pResult){NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;// TODO: Add your control notification handler code here UpdateData(TRUE);m_strTIME +=(float)pNMUpDown->iDelta * 0.5f;//每点击一下旋转按钮后,编辑框数值+/-0.5if(m_strTIME<0.0)m_strTIME=0.0f;if(m_strTIME>24.0)m_strTIME=24.0f;UpdateData(FALSE);//将变量的值,输出到与其关联的EditBox中*pResult = 0;}(3)IDOK中添加的代码:void ccqDlg::OnOK(){// TODO: Add extra validation hereCString str,strCtrl;str="喜欢的读物:";UINT nID=GetCheckedRadioButton(IDC_DUWU_ZZ,IDC_DUWU_MZ);GetDlgItemText(nID,strCtrl);str=str+strCtrl;str=str+"\n喜欢的运动:";UINT nCheckIDs[4]={IDC_YUNDONG_DQ,IDC_YUNDONG_PB,IDC_YUNDONG_YY,IDC_YUNDONG_YZ}; CButton* pBtn;for(int i=0; i<4; i++){pBtn=(CButton*)GetDlgItem(nCheckIDs[i]);if(pBtn->GetCheck()){pBtn->GetWindowText(strCtrl);str=str+strCtrl;str=str+"";}}//获取第三个问题的用户选择str=str+"\n每天运动的小时数:";GetDlgItemText(IDC_EDIT_TIME,strCtrl);str=str+strCtrl;str=str+"\n喜欢的电视栏目:\n";GetDlgItem(IDC_EDIT_TV)->GetWindowText(strCtrl);str=str+strCtrl;MessageBox(str);CDialog::OnOK();}(4) ID_cq中添加的代码:void CcqView::OnZHL(){ //用菜单栏调用对话框CcqDlg dlg;dlg.DoModal();// TODO: Add your command handler code here}(5)ID_cqDy中添加的代码:void CMainFrame::OncqDy(){ //用工具栏调用对话框CcqDlg dlg;dlg.DoModal();// TODO: Add your command handler code here}四、运行结果(1)快捷键CTRL+5,程序可以正常运行图7(2)点击黑方块按钮,问卷窗口弹出。
图8(3)依次选择选项,可以将问卷内容完成。
图9(4)点击确定将对话框的调查结果显示出来图10五、总结心得通过本次实验,我学会了如何利用VC++编程,并学会了用VC++6.0软件来实现程序的创建与调试方法。
在实验的过程中,我通过与课本上的例题与讲解相结合的方法,学会了常用控件的创建与基本使用方法,并了解了一些快捷方式。
当实验的程序刚做完的时候,我的编码总存在问题,于是我与组员先查询头文件是否正确,但是在更改头文件后发现实验代码仍然错误。
在接下来的几个小时无论我们怎么改,代码均是错误的,但是我们没有放弃,终于在一遍又一遍的查找后,发现在“喜欢的运动”这组框中,其中的三个复选框的ID应写为“IDC_YUNDONG_DQ,IDC_YUNDONG_PB,IDC_YUNDONG_YY,IDC_YUNDONG_YZ”,但是我写成了“IDC_YUNDONG_DQ,IDC_YUDONG_PB,IDC_YUDONG_YY,IDC_YUDONG_YZ”,这与我后面的代码不符。