版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计实训实验指导书上机班级:12级信息,数学与应数课程类别:专业选修课课程总时数:48学时上机时数:48学时上机人数: 92人.II.实验环境 Microsoft Visual C+6.0实验报告的书写要求1) 明确实验的目的及要求;2)记录实验的输入数据和输出结果;3)说明实验中出现的问题和解决过程;4)写出实验的体会和实验过程中没能解决的问题;第一部分 文档应用实验一 文本和图形 文本图形显示和特色绘制1. 实验目的(1) 熟悉CDC使用(2) 掌握GDI特色绘制2 实验基本要求(1) 熟悉基本显示:文字,图形和填充(2) 掌握字体,画笔和画刷使用3 实验例题例1: 当前设备环
2、境建立一个设备环境对象或指针。 CDC *pCDC=GetDC(); ReleaseDC(pCDC); 例2: 输出文本和图形利用一个CDC指针,可在屏幕上显示文字 CDC *pCDC=GetDC(); pCDC->TextOut(20,20,"文本图形显示");利用一个CDC指针,可在屏幕上绘直线: pCDC->MoveTo(1,2); pCDC->LineTo(100,200); ReleaseDC(pCDC); 例3 字体和背景颜色 CClientDC dc(this); char str1 ="This is VC+" dc.T
3、extOut(0,80,str1); dc.SetTextColor(RGB(200,10,0); dc.TextOut(0,120,str1);例4 颜色对话框使用CClientDC dc(this); char str1 ="This is VC+" dc.TextOut(0,80,str1); CColorDialog dlg; if(IDOK=dlg.DoModal() dc.SetBkColor(dlg.m_cc.rgbResult); dc.TextOut(0,120,str1);例5 定义和创建画笔定义一个画笔对象, 创建画笔 CPen penBlack; p
4、enBlack.CreatePen( PS_SOLID, 2, RGB(0,0,0); 定义一个画刷变量, 创建画刷对象 CBrush blkBrush; blkBrush.CreateSolidBrush(RGB(100,0,0); 或 CBrush newbrush(RGB(0,0,255);例6 定义和创建字体定义一个字体变量, 创建字体对象 CFont newfont;newfont.CreateFont(40,0,1,0,800,0,0,0,ANSI_CHARSET,3,3,3,2,"aa");使用GDI对象步骤在选择GDI对象进行绘图时,往往遵循着下列的步骤:(
5、1) 定义和创建一个GDI对象;(2) 将构造的GDI对象选入当前设备环境中,但不要忘记将原来的GDI对象保存起来。(3) 绘图结束后,恢复当前设备环境中原来的GDI对象。例7 GDI对象使用 画笔用法: CPen penBlack; penBlack.CreatePen( PS_SOLID, 2, RGB(0,0,0); CDC* pDC=GetDC();CPen* pOldPen = pDC->SelectObject( &penBlack );pDC->MoveTo(1,1);pDC->LineTo(100,100); pDC->SelectObject(
6、 pOldPen ); 例8 画笔CPen和CBrush对象使用画笔CPen使用CPen penBlack;penBlack.CreatePen( PS_SOLID, 2, RGB(0,0,0); CPen* pOldPen = pDC->SelectObject( &penBlack );pDC->MoveTo(1,1);pDC->LineTo(100,100); pDC->SelectObject( pOldPen ); 画刷CBrush使用 CClientDC dc(this); CBrush newbrush(RGB(0,0,255); CBrush *
7、oldbrush=dc.SelectObject(&newbrush); dc.Ellipse(180,60,300,200); dc.SelectObject(oldbrush);4 实验内容1. 编写一个程序,它能进行文本和图形显示和特色绘制.5.实验二 文件读写 文本文件和二进制文件读写1. 实验目的(1) 熟悉文本文件读写(2) 熟悉一般二进制文件读写2. 实验基本要求(1) 熟悉CFile使用(2) 掌握CStdioFile使用3. 实验例题例1 二进制文件读写 CFile类对文件进行写操作double dData;dData=1024.5;CFile mFile(_T(&q
8、uot;user.dat"),CFile:modeWrite|CFile:modeCreate);mFile.Write(&dData,sizeof(dData);mFile.Close();例2 二进制文件读写 对文件进行读操作 double dData;CFile mFile(_T("user.dat"),CFile:modeRead);mFile.Read(&dData,sizeof(double);mFile.Close();CClientDC dc(this);CString str;str.Format("%f",d
9、Data); dc.TextOut(0,0,str);例3 文本文件读写 对文件进行写操作 CStdioFile mFile; mFile.Open( "test1.txt", CFile:modeWrite|CFile:modeCreate); CString str="This is Visual C+." mFile.WriteString(str); mFile.Close(); 例4 文本文件读写 读并显示一个文本文件内容:CClientDC dc(this); CString str;CStdioFile file ;file.Open(&q
10、uot;test1.txt",CFile:modeRead);int nCount,nLine=0;nCount=file.ReadString(str);while (nCount) dc.TextOut(0,nLine*20,str); nLine+; nCount=file.ReadString(str);file.Close();例5 CFileDialog使用 用户选择文件对话框 CString strFilename;CFileDialog dlg(TRUE, NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "
11、;Text Files (*.txt)|*.txt|All Files (*.*)|*.*", NULL); if( dlg.DoModal() = IDOK ) strFilename=dlg.GetFileName(); 4. 实验内容(1) 编写程序,它创建一个文件,写入当前时间信息。 (2) 创建一个点名程序。 实验三 文件操作和信息 文件操作和信息查询程序1. 实验目的(1) 熟悉文件复制删除重命名函数(2) 掌握信息查询获取函数2. 实验基本要求(1) 熟悉CFile操作和信息获取函数使用(2) 掌握文件状态结构体使用3. 实验例题例1 CFile函数使用 CFile类删
12、除函数操作void CP2Dlg:OnButtonDelete() UpdateData(true); CFile:Remove(m_strSFilename); MessageBox("Remove is done."); CFile类重命名函数使用void CP2Dlg:OnButtonRename() UpdateData(true); CFile:Rename(m_strSFilename,m_strTFilename); MessageBox("Rename is done.");例2 文件拷贝拷贝函数BOOL Copy(CString str
13、Source, CString strTarget)CFile fSource, fTarget;charc4096; /定义4k字节的缓冲区intnCount; /打开文件if (!fSource.Open(strSource, CFile:modeRead) AfxMessageBox("Open Source File Fail!");return false;if (!fTarget.Open(strTarget, CFile:modeCreate | CFile:modeWrite)AfxMessageBox("Create Target File Fa
14、il!");fSource.Close();return false;/读文件到缓冲区cnCount = fSource.Read(c, 4096);while (nCount)fTarget.Write(c, nCount);nCount = fSource.Read(c, 4096);fSource.Close();fTarget.Close();例3 文件相关信息文件信息获取相关函数文件名称 GetFileName()文件标签 GetFileTitle()文件路径 GetFilePath()文件长度 GetLength()文件状态 GetStatus例4 文件状态及其获取方法文
15、件状态获取方法GetStatus(fs);CFile f;f.Open(strSFilename,CFile:modeRead);CFileStatusfs;f.GetStatus(fs);4. 实验任务创建一个文件操作和信息获取应用程序。 实验四 文件查找 字符搜索和文件查找1.实验目的(1) 熟悉文件查找(2) 掌握字符查询2.实验基本要求(3) 熟悉CString类操作(4) 熟悉CFileFind类(5) 掌握FindFile和FindNextFile使用3.实验例题例1. FindFile和FindNextFile函数的使用 /参数为空 CString str;CStdioFile
16、mFile; mFile.Open( "D:temptest1.txt", CFile:modeWrite|CFile:modeCreate); CFileFindff; /定义一个CFileFind对象if (!ff.FindFile() /以当前目录的文件查询,并检查调用是否成功return;while (ff.FindNextFile() /查找下个文件str=ff.GetFilePath(); str=str+"n" mFile.WriteString(str); ff.Close();mFile.Close();例2 参数为指定路径 /参数为指
17、定路径CString str;CStdioFile mFile; mFile.Open( "D:temptest1.txt", CFile:modeWrite|CFile:modeCreate); CString path;path= "D:temp*" CFileFindff; /定义一个CFileFind对象if (!ff.FindFile(path) /以当前目录的文件查询,并检查调用是否成功return; while (ff.FindNextFile() /查找下个文件str=ff.GetFilePath(); str=str+"n&q
18、uot; mFile.WriteString(str); ff.Close(); mFile.Close();例3 一个都不能少 /列出指定路径中的所有文件夹,检查文件夹个数 CString str;CStdioFile mFile; mFile.Open( "D:temptest2.txt", CFile:modeWrite|CFile:modeCreate); CString path;path= "D:temp*" CFileFindff; /定义一个CFileFind对象if (!ff.FindFile(path) /以当前目录的文件查询,并检查
19、调用是否成功return; while (ff.FindNextFile() /查找下个文件if (ff.IsDots()continue;if (ff.IsDirectory() / 子目录.str=ff.GetFilePath(); str=str+"n"mFile.WriteString(str); ; ff.Close(); mFile.Close();例4 列出指定路径中的所有子目录 /列出指定路径中的所有文件夹 CString str;CStdioFile mFile; mFile.Open( "D:temptest2.txt", CFile
20、:modeWrite|CFile:modeCreate); CString path;path= "D:temp*" CFileFindff; /定义一个CFileFind对象if (!ff.FindFile(path) /以当前目录的文件查询,并检查调用是否成功return; while (ff.FindNextFile() /查找下个文件if (ff.IsDots()continue;if (ff.IsDirectory() / 子目录.str=ff.GetFilePath(); str=str+"n"mFile.WriteString(str);
21、; if (!ff.IsDots() if (ff.IsDirectory() / 子目录.str=ff.GetFilePath(); str=str+"n"mFile.WriteString(str); ff.Close(); mFile.Close();例5 查找字符串CString m_str1="abcdef"CString m_str2="deq"int index=m_str1.Find(m_str2);if(index>=0)CString s; s.Format("匹配字符的下标为%d",in
22、dex);MessageBox(s);else MessageBox("没有匹配字符");5. 实验任务1.编写一个查找一个指定路径中的所有文件名并保存为一个列表文件的应用程序。 2. 思考题 上面文件夹中,存储的是所有同学学号命名的照片文件,如03120110*.jpg。1) 程序如何过滤出该路径中所有照片(.jpg)文件2) 程序如何过滤出所有二班学生学号的照片文件*2*.jpg3) 程序指定路径改为用户指定路径实验五 程序个性化 1.实验目的(1) 熟悉程序基本结构(2) 掌握程序个性化2.实验基本要求(1) 熟悉图标标题设置(2) 熟悉菜单的创建和使用(3) 掌握工
23、具栏设置3.实验例题例1. 修改应用程序图标/基于对话框应用程序1)添加图标IDC_ICON12)在对话框构造函数中,将 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);替换为m_hIcon = AfxGetApp()->LoadIcon(IDC_ICON1);/单文档应用程序: 1.利用资源工具,新建一个自己的图标IDI_ICON1 2. 在APP类InitInstance(),添加代码: HICON hIcon=LoadIcon(IDI_ICON1); m_pMainWnd->SetIcon(hIcon,false); 或在C
24、MainFrm的OnCreate函数中,加入 SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1),0); 例2 应用修改标题 /单文档应用修改标题方法 在APP类InitInstance()函数中,添加: m_pMainWnd->SetWindowText(""); /基于对话框应用程序方法在对话框的OnInitDialog()函数中,加入: SetWindowText("MyApp"); 例3 创建自己的菜单 /创建自己的菜单在基于单文档应用中的方法 1.在资源编辑器中,创建一个自己的菜单,其ID设为IDR_M
25、ENU1; 2.在应用程序类的InitInstance()函数中的CSingleDocTemplate参数IDR_MAINFRAME,修改为: IDR_MENU1 例5 创建自己的工具栏/创建自己的工具栏1. 创建新工具栏,ID为IDR_TOOLBAR1;2. 显示自建工具栏 在CMainFrame类OnCreate函数中代码IDR_MAINFRAME 改为 IDR_TOOLBAR1 : if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TO
26、OLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) | !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1) TRACE0("Failed to create toolbarn"); return -1; / fail to create 4. 实验任务1.个性化自己的应用程序。 实验六 资源开发和使用(一)常用控件及其使用 1.实验目的(1) 知道控件知识,其相关的类和方法(2) 掌握常用控件使用方法(3) 了解ActiveX控件2.实验基本要求(1) 熟悉单选钮和多选框控件使用(2) 掌握列表框和组合框使用(3)
27、知道Window Media Player控件3.实验例题例1. 建立一个个人信息对话框应用程序/建立一个个人信息对话框应用程序1.建立单文档应用程序2.添加控件,如图 3. 复选框和单选框的用法 单选框: 1)选group属性2)建立相关数据型变量m_iSex 3)建立OnTest函数中,添加代码: UpdateData(true); CString strMess ; if(0 = m_iSex) strMess = "你是帅哥n" else if(1 = m_iSex) strMess = "你是美女n" else strMess = "
28、性别未知n" 复选框:也可以使用控件关联变量,但是各个控件独立的,非group。如果关联的变量值为true,表示被选中。此处用另外一种方法: strMess += "-n你的受好n" CButton * pBtn = NULL ; pBtn = (CButton * )GetDlgItem(IDC_CHECK1); if(NULL != pBtn && pBtn->GetCheck() strMess += "中国象棋n" pBtn = (CButton * )GetDlgItem(IDC_CHECK2); if(NULL
29、 != pBtn && pBtn->GetCheck() strMess += "上网聊天n" pBtn = (CButton * )GetDlgItem(IDC_CHECK3); if(NULL != pBtn && pBtn->GetCheck() strMess += "电脑游戏n" AfxMessageBox(strMess);4. 列表框使用 1)添加控件相关变量 m_nameListBox; 2)修改代码OnInitDialog函数 BOOL CEx01Dlg:OnInitDialog() / in
30、t nItem = m_nameListBox.AddString("张三"); m_nameListBox.SetItemData(nItem,3); nItem = m_nameListBox.AddString("李四"); m_nameListBox.SetItemData(nItem,5); nItem = m_nameListBox.AddString("王五"); m_nameListBox.SetItemData(nItem,7); return TRUE; 3) 在OnTest函数中,添加代码: int nSel =
31、 m_nameListBox.GetCurSel(); if(-1 != nSel) CString strName ; m_nameListBox.GetText(nSel,strName); UINT uID = m_nameListBox.GetItemData(nSel); CString strMess2 ; strMess2.Format("姓名:%s, ID%un",strName,uID); strMess = strMess2+strMess; MessageBox(strMess,"消息",MB_OK); 5. 组合框的用法 1)在组
32、合框的Data属性中增加数据,可以按Ctrl + Enter键使数据分行排列2)在OnTest函数中,添加代码:CString strMess3 ; GetDlgItem(IDC_COMBO1)->GetWindowText(strMess3); strMess3 = "国籍 "+strMess3 ; strMess += strMess3; MessageBox(strMess,"消息",MB_OK);例2 多媒体播放器 /多媒体播放器1.插入一个ActiveX框架Windows Media Player,然后再添加CWMPPlayer4类 2.
33、建立一个控件类关联变量m_cPlayer;3.在按钮响应函数中添加代码:char BASED_CODE szFilter = "Play Files(*.mpg)|*.mpg|Play Files(*.avi)|*.avi|All Files (*.*)|*.*|"CFileDialog fDlg(TRUE,"","",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL);if(fDlg.DoModal() = IDOK) CString path = fDlg.GetPathNa
34、me();/获取播放文件的全路径 m_cPlayer.SetUrl(path);/在添加播放文件 注:1)对CWMPPlayer2 类播放器,代码应修改,如: CFileDialog opendlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, NULL, NULL);if(opendlg.DoModal()=IDOK) m_cPlayer.SetFileName(opendlg.GetFileName(); m_cPlayer.Open(opendlg.GetFileName(); m_cPlayer.Play();2)如
35、果没有将控件的属性设置为自动播放的话,需要利用CWMPControls的play()来进行播放,有类似pause、stop、next等等。 如: 声明变量: CWMPControls m_control; 添加: #include "wmpcontrols.h"void CD14Dlg:OnStop() m_control=m_cPlayer.GetControls(); m_control.stop();4.实验任务创建一个应用程序,使用常用控件或ActiveX控件。 .22.实验七 资源开发和使用(二)对话框及其
36、使用 1.目的(1) 创建和编辑对话框(2) 对话框类(3) 对话框调用; 2.要求(1) 利用对话框获取信息或数据(2) 掌握利用对话框进行数据计算,更新和显示;(3) 通过例题掌握对话框应用3.实验例题例1. 创建一个基于单文档的应用。通过菜单采,用有模式方法调用一个音乐播放器利用基于单文档的应用程序实现(通过一个菜单命令调用对话框) 制作一个音乐播放器,播放*.wav类型音乐建立和使用对话框步骤:l 创建对话框和控件,编辑它们的属性;l 创建对话框类,编辑代码;l 在程序中调用对话框。1创建对话框和控件,编辑它们的属性(如图)2. 创建对话框类,编辑代码1) 根据上面对话框,创建相应的类
37、CMusicPlayer类。2) 在CMusicPlayer类中,定义一个变量成员:TCHAR szFilenameMAX_PATH; 用于保存用户选择的音乐文件名。3)利用类向导,在CMusicPlayer类中定义一个编辑控件相应的CString型变量成员m_strFilename,用于在编辑控件中显示用户选择的文件名;4)在CMusicPlayer类实现文件中,加入: #include "mmsystem.h"#pragma comment(lib,"winmm.lib")以便播放音乐5) 在该类中,定义一个按钮相应的消息响应成员函数OnButton
38、Play() 和OnButtonOpen(),加入代码:void CMusicButtonPlayer:OnPlay() :PlaySound(szFilename,NULL,SND_FILENAME|SND_ASYNC);void CMusicPlayer:OnButtonOpen() CFileDialog dlg(TRUE, NULL, "a1.wav", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Files(*.wav)|*.wav|", NULL); if( dlg.DoModal() = IDOK )
39、lstrcpy(szFilename, (LPCTSTR)dlg.GetFileName(); m_strFilename=dlg.GetFileName(); UpdateData(false);3. 在程序中调用对话框。1) 在视类实现文件前部(已有的#include语句后面添加)添加: #include "MusicPlayer.h"2) 建立一个菜单项,并添加它的消息响应函数:void CMyView:OnTestPlayer() / TODO: Add your command handler code hereCMusicPlayer *pDlg = new C
40、MusicPlayer; pDlg->Create( IDD_DIALOG_PLAYER);/ 创建无模式对话框pDlg->ShowWindow( SW_NORMAL );/ 显示无模式对话框例2 制作基于单文档的应用,通过菜单采用无模式方法调用一个计算器Project:制作基于单文档的应用,并生成一个计算器,它能进行常用算术运算。对话框实现步骤:l 插入并编辑对话框l 创建并编写对话框类代码l 调用对话框1. 插入并编辑对话框1)打开对话框资源编辑。a) 选择中间的编辑框,按DEL键删除之。选择“确定”按钮,把它拖动到对话框下部。选择“取消”按钮,把它拖动到对话框下部。b) 选择
41、工具栏里的编辑控制,拖动到对话框左上角。c) 选择工具栏里的框架控制,拖动到对话框中间,调整它的大小。d) 选择工具栏里的圆按钮控制,拖动到框架里,修改其Caption属性为“加”,GROUP属性为真。e) 选择工具栏里的圆按钮控制,拖动到框架里,修改其Caption属性为“减”。f) 选择工具栏里的圆按钮控制,拖动到框架里,修改其Caption属性为“乘”。g) 选择工具栏里的圆按钮控制,拖动到框架里,修改其Caption属性“除”。h) 选择工具栏里的编辑控制,拖动到框架右上角。i) 选择工具栏里的静态文本控制,框架左下角,设计该控制,修改其Caption属性为“=”。j) 选择工具栏里的
42、编辑控制,拖动到框架下边。k) 在“取消”按钮上点击鼠标右键,选择Properties按钮,弹出属性对话框,修改其ID为IDC_COMPUTE,Caption属性为“计算”,按回车退出属性对话框。表1 各个控制的类型和ID说明类型ID左编辑框编辑IDC_EDIT1加按钮IDC_RADIO1减按钮IDC_RADIO2乘按钮IDC_RADIO3除按钮IDC_RADIO4右编辑框按钮IDC_EDIT2结果框只读编辑IDC_EDIT3计算按钮ID_COMPUTE退出按钮IDOKl) 打开下边的编辑控件的属性对话框,设置IDC_EDIT3的Tab Stop属性为假。m) 打开“计算”按钮的属性对话框,设
43、置IDC_COMPUTE按钮的Styles属性页的Default button属性为真。2. 创建对话框类,编辑代码1) 根据上面对话框,创建相应的CMyCalculator:类。2) 编写对话框代码选择VIEW/ClassWizard命令,打开ClassWizard对话框,为对话框类增加成员变量,单击Member Variables标签。单击IDC_EDIT1项目,单击Add Variables按钮,弹出增加成员变量对话框。在变量名编辑框输入m_d1,在Variable type列表框选择Double类型,单击OK按钮,完成变量增加。单击IDC_EDIT2项目,单击Add Variables按钮,弹出增加成员变量对话框。在变量名编辑框输入m_d2,在Variable type列表框选择dou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽国防科技职业学院单招职业适应性测试题库及答案详解(名师系列)
- 2026年娄底幼儿师范高等专科学校单招综合素质考试题库附参考答案详解(达标题)
- 2026年安徽中澳科技职业学院单招职业技能考试题库附答案详解(黄金题型)
- 2026年大连航运职业技术学院单招职业适应性考试题库及答案详解(基础+提升)
- 2026年宁德职业技术学院单招综合素质考试题库含答案详解(预热题)
- 2026年天门职业学院单招职业适应性测试题库及答案详解一套
- 115万平方米CMP抛光垫材料项目可行性研究报告模板-立项备案
- 新闻传播学媒体集团媒体策划实习报告
- 农业工程农业企业实习报告
- 询价报告-模板
- 法律职业伦理试题及答案
- 盐田安全培训证书课件
- 2025年甘肃省委党校在职研究生招生考试(中共党史党建)综合试题及答案
- 索尼微单相机A7 II(ILCE-7M2)使用说明书
- 俄语专业四级考试试题及答案
- 国际业务审计课件
- 小型酒厂扩产项目商业计划书范文
- 泉州美食课件
- 2024人教版八年级英语上册单词表(附默写版)
- GB/T 311.11-2025绝缘配合第11部分:高压直流系统绝缘配合的定义、原则和规则
- 2026届广东省深圳市南山区中考数学仿真试卷含解析
评论
0/150
提交评论