VC实验报告(1,2,34).doc_第1页
VC实验报告(1,2,34).doc_第2页
VC实验报告(1,2,34).doc_第3页
VC实验报告(1,2,34).doc_第4页
VC实验报告(1,2,34).doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC+实验报告班号:学号:姓名: 实验1 VC+开发环境的熟悉和Windows编程基础一、实验目的 1. 熟悉Visual C+的开发环境2. 掌握用应用程序向导创建一个控制台应用项目的方法。3. 掌握源代码文件的新建、打开、保存和关闭等基本操作。4掌握用应用程序向导创建一个Windows应用项目的方法5. 掌握Visual C+项目的编译、连接和执行6. 掌握代码简单语法错误修正和调试的一般过程7掌握Windows程序运行基本原理。 8. 掌握使用SDK(Windows API)方式编写Windows应用程序方法。 9. 掌握用应用程序向导创建一个Windows应用项目的方法。二、实验知识点概念Visual C+是Microsoft公司推出的目前使用极为广泛的基于Windows平台的可视化编程环境。由于其功能强大、灵活性好、完全可扩展以及具有强有力的Internet支持,在各种C+语言开发工具中脱颖而出,成为目前较为流行的C+语言集成开发环境。Windows程序设计不同于DOS下的程序设计,它是一种事件驱动的程序设计模式,主要是基于消息的。Windows SDK编程主要采用C+/C语言和Windows API进行Windows应用程序设计。三、实验题目1. 控制台应用程序编写术语:“控制台应用程序”是一个在仿DOS窗口(控制台窗口)中运行的基于字符的程序,控制台窗口将成为其标准输入和输出装置。由于这种模式的应用程序比Windows程序简单,我们先选择利用Visual C+来建立这样一个应用,这样使得我们可以将精力先投入到学习使用C+编程语言,而不需要把过多的精力投入到学习复杂的Windows编程中去。创建一个控制台应用,输入以下代码:#include class Vehicle public: Vehicle(float speed,int total) speed = speed; total = total; cout”constructor is called!” endl; void ShowMember() coutspeed | totalendl; private: float speed; int total; int main() Vehicle a(120,4);a. ShowMember();Vehicle b;a. ShowMember();(1)编译该程序,修改程序错误(2)分别在创建对象,构造函数处设置断点,调试运行。(3)写出程序运行结果2.Windows SDK应用程序编写下面是一个SDK应用程序的示例,该程序的功能是构造一个编辑框控件和一个按钮。编辑框用于输入一元二次方程的系数,各系数之间用逗号分隔,当单击“计算”按钮,获取方程系数,然后将求得的根通过TextOut显示在窗口客户区中。#include #include #include / 求一元二次方程的根,函数返回根的个数int GetRoot(float a, float b, float c, double *root)double delta, deltasqrt;delta = b*b - 4.0 * a * c;if (delta0.0) return 0;/ 无根deltasqrt = sqrt(delta);if (a!=0.0) root0 = (-b + deltasqrt)/(2.0 * a);root1 = (-b - deltasqrt)/(2.0 * a); elseif (b!=0.0) root0 = root1 = -c/b;elsereturn 0;if (root0 = root1) return 1;else return 2;char str80;LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);/ 窗口过程int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) HWND hwnd ;/ 窗口句柄 MSG msg ;/ 消息 WNDCLASSwndclass ;/ 窗口类 wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = SDKWin;/ 窗口类名 if (!RegisterClass (&wndclass)/ 注册窗口 MessageBox (NULL, 窗口注册失败!, HelloWin, 0) ; return 0 ; / 创建窗口 hwnd = CreateWindow (SDKWin, / 窗口类名 实验1Windows编程基础,/ 窗口标题 WS_OVERLAPPEDWINDOW, / 窗口样式 CW_USEDEFAULT, / 窗口最初的 x 位置 CW_USEDEFAULT, / 窗口最初的 y 位置 CW_USEDEFAULT, / 窗口最初的 x 大小 CW_USEDEFAULT, / 窗口最初的 y 大小 NULL, / 父窗口句柄 NULL, / 窗口菜单句柄 hInstance, / 应用程序实例句柄 NULL) ; / 创建窗口的参数 ShowWindow (hwnd, nCmdShow) ;/ 显示窗口 UpdateWindow (hwnd) ;/ 更新窗口,包括窗口的客户区 while (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ;/ 转换某些键盘消息 DispatchMessage (&msg) ;/ 将消息发送给窗口过程,这里是WndProc return msg.wParam ;LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)HDChdc;PAINTSTRUCTps;staticHWNDhwndButton, hwndEdit;charstrEdit80, strA380, strHint80;floata3;doubleroot2;inti, j, k, m;switch (message)case WM_CREATE:/ 窗口创建产生的消息hwndEdit = CreateWindow(edit, NULL, WS_CHILD|WS_VISIBLE|WS_ BORDER,10, 60, 200, 25, hwnd, NULL, NULL, NULL );hwndButton = CreateWindow(button, 计 算,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,240, 60, 80, 25, hwnd, NULL, NULL, NULL );return 0 ; case WM_COMMAND:/ 命令消息,控件产生的通知代码在wParam的高字中if (HWND)lParam = hwndButton )&( HIWORD(wParam) = BN_CLICKED )/ 获取编辑框控件的内容,并将其转换成float数值GetWindowText( hwndEdit, strEdit, 80); / 获取编辑框内容/ 分隔字符串k = 0;m = 0;for (j=0; j80; j+)if (strEditj = ,)k+; m = 0;else strAkm = strEditj;m+;for (i=0; i3; i+)ai = (float)atof(strAi);/ 将字符串转换成float数值int n = GetRoot(a0, a1, a2, root);if (n1)strcpy(str, 方程无根!) ;else sprintf(str,方程的解为:%f, %f, root0, root1);InvalidateRect(hwnd, NULL, TRUE);case WM_PAINT:hdc = BeginPaint(hwnd, &ps);strcpy(strHint, 请输入一元二次方程的3个系数,中间用逗号分隔); TextOut(hdc, 10, 40, strHint, strlen(strHint);TextOut(hdc, 10, 90, str, strlen(str);EndPaint(hwnd, &ps);return 0 ; case WM_DESTROY:/ 当窗口关闭时产生的消息PostQuitMessage (0) ;return 0 ;return DefWindowProc (hwnd, message, wParam, lParam) ;/ 执行默认的消息处理(1)请仔细阅读该程序,写出该程序的设计思路。(2)参考上面的代码,使用SDK方式编写一窗口应用程序,能实现简单的画线功能。a.设计思想b.程序源代码(要求有详细的注释)c.调试分析&运行结果d. 用户使用说明(输入 / 输出规定)实验2 类和对象一、实验目的 1. 掌握类的定义方法,能合理指定类中成员的访问权限。 2. 学习对象的说明和使用方法。3. 灵活运用类和对象的相关知识进行综合程序设计。二、实验知识点概念类是对同一类事物的抽象描述,其数据成员用于描述该类事物的属性,成员函数完成修改、获取属性值或实现基于属性的某些操作。类不占用存储空间。对象是类的实例,对象占用存储空间。C+中类与结构体并没有本质的区别,结构体中也可以定义成员函数,也可以指定各个成员的访问权限。两者的唯一差异在于:结构中成员的缺省访问权限是公有的,而类中成员的缺省访问权限是私有的。三、实验题目 1.设计个人信息类CPerson和学生成绩类CScore。其中,CPerson类的数据成员是姓名和学号;CScore类的数据成员除了三门成绩外,还有一个CPerson类对象stu。 2.设计数据操作类CStack,它使用数组来动态存储CScore类对象,并模拟栈的操作:push(压入)与pop(弹出)。栈是一种“FILO”(先进后出)或“LIFO”(后进先出)的存储结构。如图2-1所示,它占用一块连续的内存空间,有两个端点:一个端点是固定的,称为栈底;另一个端点是活动的,称为栈顶。操作只能在栈顶进行,建立一个栈先要开辟栈空间,且为了指示栈顶位置还要设定一个指针,称为栈顶指针(图2-1中的SP)。初建栈时,栈顶指针SP指向栈底,如图2-1(a)所示。当向栈内压入一个元素d1时,先向栈顶写入d1,再将SP+,如图2-1(b)所示。再压入一个元素d2时,先向栈顶写入d2,再将SP+,如图2-1(c)所示。可见,栈顶总是用于存放下一个元素。当栈内弹出一个元素d2时,直接执行SP-,然后返回SP中的内容,如图2-1(d)所示。这样,当再次压入新元素时,d2被覆盖。SP栈底栈空间栈空间SPd1栈底 (a)空栈 (b)压入d1 图2-1 栈模型 栈空间d2d1栈底栈底栈空间d1d2SPSP(c)压入d2 (d)弹出d2 图2-1 栈模型四、程序思路五、程序源代码(要求有详细的注释)六、用户使用说明(输入 / 输出规定)七、调试分析&运行结果实验3 继承和派生一、实验目的 继承与派生是面向对象的特性,是面向对象程序设计模拟客观世界的手段之一,通过实验要求掌握:1. 掌握类的继承与派生关系及实现方法,理解类的层次结构。2. 掌握派生类构造函数初始化基类成员的方法。3. 灵活运用继承和派生的相关知识进行综合程序设计。二、实验知识点概念类的继承是新的类从已有类那里得到已有的特性。从已有的类产生新类的过程就是类的派生。在继承过程中,原有的类或已经存在的用来派生新类的类称为基类或父类,而由已经存在的类派生出的新类则称为派生类或子类。 根据派生类所拥有的基类数目不同,可以分为单继承和多继承。一个类只有一个直接基类时,称为单继承;而一个类同时有多个直接基类时,则称为多继承。三、实验题目编写一个程序实现小型公司的工资管理。该公司主要有4类人员:经理、兼职技术人员、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元,兼职技术人员按每小时100元领取月薪,销售员按该当月销售额的4%提成,销售经理即拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的5%。四、程序思路五、程序源代码(要求有详细的注释)六、用户使用说明(输入 / 输出规定)七、调试分析运行结果实验4 多态性和虚函数一、实验目的 1. 了解多态性在C+中的体现。2. 掌握虚函数的应用。3. 理解抽象类。二、实验知识点概念l 多态性n 多态是指同样的消息被不同类型的对象接收时导致不同的行为,所谓消息是指对类的成员函数调用,不同的行为是指不同的实现,也就是调用了不同的函数。n 多态性可分为四类:重载多态、强制多态、包含多态和参数多态。n 多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。编译时的多态性是在编译的过程中确定了同名操作的具体操作对象,也就是通过重载函数来实现的。运行时的多态性是在程序运行过程中才动态地确定操作所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论