当前位置:文档之家› MFC基本应用程序的建立实验报告

MFC基本应用程序的建立实验报告

MFC基本应用程序的建立实验报告
MFC基本应用程序的建立实验报告

计算机与信息技术学院综合性、设计性实验报告

专业:计算机科学与技术年级/班级:10计科一班

一、实验目的:

(1)了解Windows的基本编程特点

(2)会使用MFC AppWinzard(exe)创建单文档应用程序

(3)学会添加消息映射等简单功能

(4)掌握用项目工作区的ClassView页面添加数据成员的方法

(5)学会和掌握调试的一般步骤和过程

二、实验内容:

(1)在一个默认的单文档应用程序Ex_SDI中通过映射计时器消息实现这样的功能:无论在Ex_SDI应用程序窗口的客户区中单击鼠标左键或右键,都会弹出“消息”对话框,显示左键或右键的单击次数。

(2)使用调试器对上述程序的流程和鼠标单击次数进行调试。

三、实验步骤:

1、创建工作文件夹

打开计算机,在“G:\Visual C++程序\实验”文件夹中创建一个新的子文件夹“实验8”。

2、创建单文档应用程序Ex_SDI

创建单文档应用程序Ex_SDI的具体步骤如下:

(1)启动Visual C++

(2)选择“文件”→“新建”菜单命令,显示“新建”对话框。从列表中选中MFC AppWinzard(exe)的项目类型项。

(3)在“工程”编辑框中输入应用程序项目名称Ex_SDI,并将项目文件夹定位到“D:\Visual C++程序\实验\实验8”。

(4)单击“确定”按钮,显示“应用程序向导”对话框。选中单个文档(Single Document,简称SDI)应用程序类型。单击“完成”按钮,系统将显示向导创

建的信息,单击“确定”按钮将自动创建此应用程序。

(5)编译运行。

具体操作如下:

运行结果如下:

3、添加数据成员:

添加数据成员的的具体步骤如下:

(1)展开项目工作区窗口ClassView中的所有类结点。

(2)用鼠标右键单击CEx_SDIView类结点,从弹出的快捷菜单中选择“Add Member Variable(添加成员变量)”,弹出如图所示的“Add Member Variable”

对话框。

(3)在Variable Type框中输入成员变量类型int,在Variable Name框中输入变量名称m_nLButton。保留默认的访问方式(Acess)为Public。单击“确定”按钮,

这样,就会在CEx_SDIView中添加一个公有型成员变量m_nLButton,变量类

型为int。

(4)按相同的方法,在CEx_SDIView中添加一个公有型成员变量m_nRButton,变量类为int.

(5)在项目工作区窗口Class View中,展开CEx_SDIView的所有结点,双击构造函数CEx_SDIView()结点,在CEx_SDIView类的构造函数中添加下列成员变

量初始化代码:

CEx_SDIView::CEx_SDIView()

{

m_nLButton=m_nRButton=0;

}

4、添加消息映射:

添加消息映射的具体步骤如下:

(1)按“Ctrl+W”快捷键打开“MFC ClassWizard”对话框。

(2)在Class name组合框中,将类名选定为CEx_SDIView。此时,Object IDs和Messages列表内容会相应的改变。在Object IDs列表框中选定CEx_SDIView,

而在Messages列表框中选定WM_LBUTTOMDOWM消息。

(3)双击Messages列表中的WM_BUTTOMDOWM消息或者单击“Add Function”按钮,都会在CEx_SDIView类中添加该消息的映射函数OnLButtonDowm,同时在

Member functions列表中显示这一消息映射函数和被映射的消息。映射

WM_LBUTTOMDOWN消息的结果如下:

(4)单击“Edit Code”按钮后,ClassWizard对话框退出,并转向文档窗口,定位到OnLButtonDown函数源代码处,添加以下代码:

void CEx_SDIView::OnLButtonDown(UINT nFlags, CPoint point)

{

//计数变量m_nLButton加1,然后启动计时器

m_nLButton++;

SetTimer(1,50,NULL);

CView::OnLButtonDown(nFlags, point);

}

(5)按相同的方法为CEx_SDIView类添加WM_RBUTTOMDOWN消息映射,并在映射函数中添加下列代码:

void CEx_SDIView::OnRButtonDown(UINT nFlags, CPoint point)

{

//计数变量m_nRButton加1,然后启动计时器

m_nRButton++;

SetTimer(2,50,NULL);

CView::OnRButtonDown(nFlags, point);

}

(6)按类似的方法为CEx_SDIView类添加一个WM_TIMER消息映射,并在映射函数中添加下列代码:

void CEx_SDIView::OnTimer(UINT nIDEvent)

{

CString str; //创建一个字符串类对象

//通过判断nIDEvent的值来确定是单击鼠标左键还是右键

if(nIDEvent==1)

str.Format("你已单击鼠标左键 %d 次!",m_nLButton);

if(nIDEvent==2)

str.Format("你已单击鼠标右键 %d 次!",m_nLButton);

if((nIDEvent==1)||(nIDEvent==2))

{

KillTimer(nIDEvent); //先要关闭计时器

MessageBox(str,"报告");

}

CView::OnTimer(nIDEvent);

}

(7)编译运行并测试,结果如图:

5、设置断点

在设置断点之前,首先要保证程序中没有语法错误,所谓断点就是告诉调试器在何处暂时中断程序的进行,以便查看程序的状态以及浏览和修改变量的值等。

(1)在项目工作区的ClassView页面中,展开CEx_SDIView下的所有结点。

(2)双击OnLButtonDown结点,会在文档窗口中打开并定位到该消息映射代码处,在

代码行“m_nLButton++;”中单击鼠标。

(3)用下列3种方式之一设置断点,会在代码行“m_nLButton++;”的最前面的窗口页

边距上有一个深红色的实心圆块,如图:

①按快捷键F9

②在Build工具栏上单击按钮

③在需要设置(或清除)断点的位置上单击鼠标右键,在弹出的快捷菜单中选择

“Insert/Remove Breakpoint”命令

6、控制程序运行

具体步骤如下:

(1)选择“组建”菜单→“开始调试”子菜单的“去”命令,或单击“编译微型条”

中的按钮,自动调试器。

(2)程序运行后在客户区单击鼠标左键,由于程序中该消息的映射函数中设置了断点,

因此程序会在该断点处停顿下来。

(3)这时可以看到有一个黄色小箭头,它指向即将执行的代码。而且,原来的“编译”

菜单会变成“Debug”)(调试)菜单,如图所示。

这是Debug菜单

其中4条命令Step Into、Step Over、Step Out和Run to Cursor是用于控制程

序运行的,其含义是:

①Step Over的功能是运行当前箭头指向的代码(只运行一条代码)

②Step Into的功能是如果当前箭头所指向的代码是一个函数的调用,则用Step

Into进入该函数进行单步执行

③Step Out的功能是如果当前箭头所指向的代码是在某一函数内,用它是程序运

行至函数返回处

④Run to Cursor的功能是是程序运行至光标所指的代码

(4)选择“Debug”菜单中的“Stop Debugging”命令或直接按快捷键Shift+F5或单

击“编译微型条中的”按钮,启动调试器。

7、查看和修改变量的值

为了更好地进行程序调试,调试器还提供了一系列的窗口,用于显示各种不同的调试信息,可借助“查看”菜单下的“调试窗口”子菜单访问它们,事实上,当启动调试器后,Visual C++的开发环境会自动显示出Watch 和Variables两个调试窗口,如图:

除了上述窗口外,调试器还提供QuickWatch、Memory、Registers、Call Stack以及Disassembly等窗口。但对于变量值的查看和修改,通常可以使用QuickWatch、Watch 和Variables这3个窗口。

以下步骤使用这三个窗口来查看、修改m_nLButton或m_nRButton值。

⑴启动调试器,程序运行后,单击鼠标左键,程序停顿下来。

⑵如上图,可以看到Variable窗口有3个页面:Auto、Locals和This。这些页面内均有“名称”和“值”两个域,调试器自动填充它们。

⑶在“调试”工具栏上,单击按钮或快捷键F10,箭头指向了下一句代码

“SetTimer(1,50,NULL);”,同时,Variable窗口中的m_nLButton值变成了1。实际上,若仅需要快速查看变量或表达式的值,则只需要将鼠标直接放在代码中该变量或表达式上,片刻后,系统会自动弹出一个小窗口显示出该变量或表达式的值。

⑷在Watch窗口中,单机左边“名称”域下的空框,输入m_nRButtoon,按Enter键,相应的值会自动出现在“值”域中,同时,又在末尾处出现新的空框,添加新的变量或表达式如图所示:

需要说明的是,Watch窗口有4个页面:Watch1、Watch2、Watch3和Watch4,在每一个页面中有一系列用户要查看的变量或表达式,用户可以将一组变量或表达式在同一个页面中。

⑸选择“调试”→“QuickWatch”命令或按快捷键Shift+F9或者在“调试”工具栏

上单击按钮,将弹出如图所示的“QuickWatch”窗口。

其中,“表达式”框可以让用户输入变量名或表达式,然后按Enter键或单击“重置”按钮,就可以在“当前值”列表中显示相应的值,若要修改其值的大小,则可按Tab键或在列表项的“Value”域中双击该值,再输入新值按Enter键就可以了。

单击“添加监视”按钮可将刚才输入的变量名或表达式及其值显示在“Watch”窗口中。

从上述过程可以看出,调试一般按照这样的步骤进行:修正语法错误→设置断点→启用调试器→控制程序运行→查看和修改变量的值。

8、退出Visual C++

9、实验总结与体会

这次试验我认识了Windows的基本编程特点并学会使用MFC AppWinzard(exe)创建简单的单文档应用程序和添加消息映射等简单功能,还会通过打开ClassView页面为程序代码添加数据成员,并进一步的熟悉和掌握了调试的一般步骤和过程,在默认的单文档应用程序Ex_SDI中通过映射计时器消息实现了实验所要求的功能,并使用调试器对流程和鼠标次数进行了调试,到达了实验目的,以后我应该更加勤于上机实验,把理论付诸实践。

教师签名:

年月日

俄罗斯方块mfc实验报告

程序设计实践 设 计 报 告 课题名称:俄罗斯方块(MFC版)学生姓名:黄嘉慧 班级:2012211113 班内序号:27 学号:2012210389 日期:2014.6.1

1. 实验概述 1.1 课题目标和主要内容。 本课题的主要内容是用MFC 实现经典游戏俄罗斯方块的编写。目标是能够正常运行,并且无过于严重的问题。使用的平台为MFC (基于对话框)。 1.2 采用计分升级制来进行游戏。当一次消去一行时,得一分,一次两行得 4分,一次3行,得9分,一次4行,得16 分。每 50分为一个等 级,得分足够则升级并重新开始游戏。 2. 程序设计 2.1 系统总体框架 用一个4维数组DiamondStruct[7][4][4][4]来表示所有的方块,用一个POINT 类型的DiamondPos 来表示方块当前的位置,然后通过一个二维数组BlockPanel[][],来表示整个游戏界面,同时进行障碍的添加。游戏过程中,通过改变DiamondPos 来进行方块的下降以及

左右移动,通过DiamondStruct[7][4][4][4]中第二个参数的改变来进行方块的变换。 2.2系统详细设计 【1】模块划分图及描述 【2】类关系图及描述 CWinApp 与CDialog 为基类。其它为添加的类。 【3】程序流程图及描述

【4】存储结构,内存分配 主要存储结构为数组。同时分配内存的有,画笔,Diamond类的指针,Panel类的指针,Block类的指针,Mill类的指针,Manager类的指

针。 2.3 关键算法分析 【1】 bool Diamond::FullLine() { bool IsFull,Full=false; pManager->SeriesLine=0; for(int iy=0;iy<=pPanel->nVGridNum;iy++) { IsFull=true; for(int ix=0;ix<=pPanel->nHGridNum;ix++) { if(!pBlock->BlockPanel[ix][iy]) IsFull=false; } if(IsFull) { Full=true; pManager->SeriesLine++; for(int jy=iy;jy>0;jy--) { Sleep(10); for(int jx=0;jx<=pPanel->nHGridNum;jx++) { pBlock->BlockPanel[jx][jy]=pBlock->BlockPanel[jx][jy-1]; } } } } pManager->LineNumber+=pManager->SeriesLine; pManager->Result+=pManager->SeriesLine*pManager->SeriesLine; if(Full) return true; else return false; } 该算法实现的功能为,判断是否已经满行,并且若是满行,进行消行,加分的操作。该算法的时间复杂度为O(n)=【(nVGridNum)^2*nHGridNum.】/2

mfc绘图程序上机步骤

首先生成MFC程序空框架 空框架中的每个类的职责是什么要自己理解清楚 第一次课: 1.定义自己的数据类CLine直线类,用于绘图 点击菜单:插入—类 选择Generic class,输入类名,每个类都是分成两个文件.h 中只有类体,包含类的数据成员定义和成员函数声明,.cpp中就是成员函数的类体外实现 classCLine { int x1,y1,x2,y2; public: CLine(int a=0,int b=0,int c=0,int d=0); virtual ~CLine(); int Getx1(); int Gety1(); int Getx2(); int Gety2(); void SetPoint1(intx,int y);很多函数是在后面使用中发现问题逐渐添加的 void SetPoint2(intx,int y); }; 2.自定义的类要作为数据成员出现在Doc类中 classCSmallCADDoc : public CDocument { protected: // create from serialization only CSmallCADDoc(); DECLARE_DYNCREATE(CSmallCADDoc) // Attributes public: CLine line1; //数据成员应该是私有,但是由于文档类与视图类交换频繁,为了访问方便,直接定义成公有了。你也可以定义成私有,再定义一个Get函数间接访问,取他的值3.注意:添加了这个数据成员后,需要增加几个#include “Line.h”语句 添加的原则是,每个cpp文件都单独编译,哪里用到新的类,相应的cpp前就要增加#include “。。。”语句 此处是在CSmallCADDoc类中添加了一个CLine line1;类对象,在SmallCADDoc.h文件中。所以,凡是包含了#include “SmallCADDoc.h”的地方都要在前面添加#include “Line.h” 语句。共3处:app doc view 这3个类的cpp文件前 4.注意:初始化 CLine line1; //数据成员是文档类的,它不像dos下程序,明确能看到定义,调用构造

飞机大战MFC实验报告

实训报告 飞机大战游戏设计与开发

目录 1. 概述 (4) 2. 相关技术 (4) 2.1 透明贴图技术 (4) 2.2 CObList链表 (4) 2.3获取矩形区域函数 (4) 2.4弹出对话框函数 (5) 2.5字体的个性化输出函数 (5) 2.6设置定时器 (5) 2.7双缓冲技术 (5) 2.8 内存释放技术 (6) 2.9对话框中添加动态按钮 (6) 2.10检测方向键按下 (6) 3. 需求分析(用结构化方法或面向对象方法给出系统的主要需求模型) (6) 3.1功能需求分析 (6) 3.2 数据需求分析 (7) 3.3 行为需求分析 (7) 3.4 其他需求 (8) 4. 总体设计与详细设计 (8) 4.1 系统模块划分 (9) 4.2 主要功能模块 (10) 4.3 扩展功能设计思路 (10) 5. 编码实现 (11) 5.1游戏初始创建 (11) 5.2定时器 (11) 5.3背景及游戏开始、结束界面绘制函数 (11) 5.4键盘控制函数 (12) 5.5游戏对象进行碰撞测试和碰撞销毁 (13) 5.6创建动态按钮(开始游戏、游戏规则) (13) 5.6重新开始游戏代码 (14) 5.7设置游戏难度代码 (14) 5.8游戏结束时释放资源函数 (15) 5.9调整对话框大小函数 (15) 5.10开始界面背景绘制函数 (15) 5.11选择下一关卡以及选择完成后的执行代码 (16) 6.测试情况说明。 (17) 6.1主要模块测试情况(白盒) (17) 6.11各游戏对象碰撞检测爆炸模块测试 (17) 6.12战机导弹的方向速度模块测试 (17) 6.13文字显示,游戏结束和关卡进入模块测试 (18) 6.14设置游戏难度和重新开始模块测试 (18) 6.2 主要功能测试情况(黑盒) (18)

mfc简单绘图程序

M F C 简 单 的 绘 图 程 序 ——王帅

目录 摘要 (2) 关键字 (2) 1 引言 (2) 设计目的 ............................................................................................................ 错误!未定义书签。 2 功能说明 (2) 2.1菜单栏....................................................................................................... 错误!未定义书签。 2.1.1图形 (3) 2.1.2画笔 (4) 2.1.3画硬币 (4) 2.2工具栏 (5) 2.3状态栏 (5) 3 功能的实现 (5) 3.1 视图设计 (5) 3.2 编辑资源 (6) 3.3 编程思路及各个函数的实现 (7) (1)思路 (7) (2)代码的实现 (7)

1.为基本形状创建一个基类 (8) 2.基本形状类的创建 (8) 2.1矩形类的创建及定义 (8) 2.2圆形类的创建及定义 (10) 2.3正五边形类的创建及定义 (11) 2.4正三角形类的创建及定义 (14) 2.5椭圆类的创建及定义 (16) 2.6正四边形类的创建及的定义 (17) 2.7正六边形类的创建及定义 (18) 2.8直线类的创建及定义 (19) 3.各基本形状类在CMyDraw2_0类中的调用和绘图的实现 (20) 3.1矩形类的调用与与绘图的实现 (20) 3.2圆形类的调用 (24) 3.3正三角形类的调用 (25) 3.4基本类型调用的剩余代码 (26) 4.画笔的使用、颜色及大小的调整 (29) 5.画硬币 (35) 6.工具栏中的自定义控件 (38) 7.状态栏中的显示 (39) 4程序功能的测试 (41) 5最后总结 (42)

数据库实验报告完整

华北电力大学 实验报告 | | 实验名称数据库实验 课程名称数据库 | | 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:2015/7/9

《数据库原理课程设计》课程设计 任务书 一、目的与要求 1.本实验是为计算机各专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力 而设置的实践环节。通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。 为后继课程和毕业设计打下良好基础。 2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。 3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界 面设计和软件调试等各方面的能力。是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。 二、主要内容 针对一个具有实际应用场景的中小型系统(见题目附录)进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。大致分为如下步骤: 1. 理解系统的数据库需求,分析实体及实体间联系,画出E-R图: 1)分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。 2)设计实体之间的联系,包括联系类型和联系的属性。最后画出完整的E-R图。 2.根据设计好的E-R图及关系数据库理论知识设计数据库模式: 1)把E-R图转换为逻辑模式; 2)规范化设计。使用关系范式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。 3)设计关系模式间的参照完整性,要求实现级联删除和级联更新。 4)用SQL语言完成数据库内模式的设计。 3.数据库权限的设计: 1)根据系统分析,完成授权操作; 2)了解学习收回权限的操作。 4.完成用户界面的设计,对重要数据进行加密。

C++实验报告(MFC简单画图程序)

VC++程序设计实验报告 一、实验目的 掌握MFC编程 二、实验内容 用MFC向导创建单文档应用程序,一个简单的画图程序。 ?使用C++语言实现 ?使用VC++6.0集成开发环境开发 ?使用MFC应用程序开发框架 三、实验步骤 ?基本功能描述 1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、 曲线、矩形及椭圆,线宽选项,有1-6可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2. 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决 定图形的大小,当鼠标弹起,此图形则绘制完毕。 ?设计思路 1. 对需要用到的变量进行初始化。 2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。 3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4. 选择图形或其它属性,可进行下一次绘制。 ?软件设计 A 设计步骤 1.创建单文档 创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。创建成功后,系统自动生成相应的类,如图3所示。

图1 创建工程 图2 创建单文档

最新数据库管理系统实验报告含答案

武汉纺织大学《最新数据 库管理系统》课程实验报告 班级: _______姓名:实验时间:年月日指导教师:_______ 一、实验目的 1、通过实验,使学生全面了解最新数据库管理系统的基本内容、基本原理。 2、牢固掌握SQL SERVER的功能操作和Transact-SQL语言。 3、紧密联系实际,学会分析,解决实际问题。学生通过小组项目设计,能够运用最新数据库管理系统于管理信息系统、企业资源计划、供应链管理系统、客户关系管理系统、电子商务系统、决策支持系统、智能信息系统中等。 二、实验内容 1.导入实验用示例数据库: f:\教学库.mdf f:\教学库_log.ldf f:\仓库库存.mdf f:\仓库库存_log.ldf 1.1 将数据库导入 在SqlServer 2005 导入已有的数据库(*.mdf)文件,在SQL Server Management Studio 里连接上数据库后,选择新建查询,然后执行语句 EXEC sp_attach_db @dbname = '教学库', @filename1 = 'f:\教学库.mdf', @filename2 = 'f:\教学库_log.ldf' go use [教学库] EXEC sp_changedbowner 'sa' go EXEC sp_attach_db @dbname = '仓库库存',

@filename1 = 'f:\仓库库存.mdf', @filename2 = 'f:\仓库库存_log.ldf' go use [仓库库存] EXEC sp_changedbowner 'sa' go 1.2 可能出现问题 附加数据库出现“无法打开物理文件"X.mdf"。操作系统错误5:"5(拒绝访问。)"。(Microsoft SQL Server,错误: 5120)”。 解决:找到要附加的.mdf文件-->右键-->属性-->安全-->选择当前用户-->编辑-->完全控制。对.log文件进行相同的处理。 2.删除创建的数据库,使用T-SQL语句再次创建该数据库,主文件和日志文件的文件名同上,要求:仓库库存_data最大尺寸为无限大,增长速度为20%,日志文件初始大小为2MB,最大尺寸为5MB,增长速度为1MB。 CREATE DATABASE仓库库存 (NAME = '仓库库存_data', FILENAME = 'F:\仓库库存_data.MDF' , SIZE = 10MB, FILEGROWTH = 20%) LOG ON (NAME ='仓库库存_log', FILENAME = 'F:\仓库库存_log. LDF', SIZE = 2MB, MAXSIZE = 5MB, FILEGROWTH = 1MB) 2.1 在数据库“仓库库存”中完成下列操作。 (1)创建“商品”表,表结构如表1:

数据库应用基础-实验报告

- 1 - 电子科技大学计算机学院实验中心 实验报告 评 分: 日 期: 2019 年5月16 日

实验一:(名称) 实验学时: 一、实验内容和目的: 使用SQL语言对数据库进行操作,从而理解数据库的增删改查的过程。 二、实验原理: 数据库库的完整性、约束条件、结构化查询语言。 三、实验器材(设备、元器件) Microsoft SQL server Management Studio 四、实验步骤: (1)恢复数据库mydb,备份文件为mydb.bak; (2)完成数据操纵和查询,给出操作代码和执行结果截图; ①添加数据库约束条件,要求学生的成绩的取值范围为“0”到“100”之间; ②将你的学生信息添加到学生表中,要求学号姓名为真实数据,其它字段随意; ③你要选修全部课程,使用一条SQL语句实现该功能; ④使用update命令登记你的全部课程分数,分数取值随意; ⑤查询你的选课记录,返回课程号、课程名、分数; ⑥将学号为“101”学生的学号改为“020060101”,且同时更改该所有的选课信息; ⑦查询年龄在指定区间(比如20—28之间)的学生姓名(通过出生日期和当前日期计算年龄year(getdate())-year(stud.birthd); ⑧查询姓“张”的学生的学号、姓名、邮件地址; ⑨统计每个学生的选课情况,返回:学号、姓名、选课门数、总学分数; ⑩统计每门课程的选课情况,返回:课程号、最高分、最低分、平均分; 11查询每门课程获得最高分的学生信息,返回课程号、课程名、最高分、学号、姓名; 12查询既选修了1号课程,又选修了2号课程的学生学号和姓名。 13查询选修了全部课程的学生学号及姓名; ------------------------------------------------------ 五、实验数据及结果分析: (1)恢复数据库mydb,备份文件为mydb.bak; 代码: ?create database STUD; Restore database mydb from disk ‘d:\mydb.bak’ with replace; Use mydb;

《MFC》实验报告模板

贵州大学实验报告 学院:梁玉涛专业:计算机科学与技术班级:计科职091 姓名梁玉涛学号0920020217 实验组 1 实验时间2011.10.25 指导教师曾劼成绩 实验项目名称使用计算数据画直方图 实 验目的1.了解图形设备接口GDI编程; 2.学会应用GDI编写应用程序; 3.实现使用计算数据画直方图。 实 验要求1.了解有关GDI的相关知识及使用; 2.根据实验指导书完成实验内容。 实 验原理 图形设备接口GDI(Graphics Device Interface)是一个系统库,允许对系统的硬件进行独立于设备的访问。GDI的核心是设备上下文类DC(Device Contex):设置绘图属性和驱动设备绘图的方法。封装了Windows API中的画图函数,设备上下文是内存中的一个对象,设备可以是屏幕或打印机。 实 验 仪 器 计算机、VC++ 6.0 实验步骤1.使用AppWixard生成单文档工程Plot 2.在PlotDoc.h中类CPlotDoc的定义之前加入类Max的定义 3.在PlotDoc.cpp的文件尾部加入类Max的实现部分 4.为CPlotDoc类增加一个公有的void类型的成员函数Find和一个公有int数据成员数组m_num[5],使用类产生对象并计算它们的最大值,将它们转换成int,存入整数数组m_num。 5.为CPlotDoc类的成员函数OnNewDocument增加调用语句准备数据。 6.在视类中画图写字; 7.运行程序,并观察结果。 1

实 验 使用计算数据画直方图 内 容 实 验 数 据 实 验 总 结 指 导 教 师 意 见签名:年月日

mfc简单绘图程序报告

简单绘图程序 1 需求说明 1.1 问题描述 设计一个简单的绘图应用程序,可以绘制图形或自由绘制线段,可以更改颜色、画笔粗细、保存文件。 1.2功能说明 1.图形绘制功能:直线、椭圆、矩形。 在菜单栏中选择需要的图形(也可以通过工具栏中选择)用鼠标便能在视图中绘出相应的图形。 2.可以绘制自由线段 3.对图形的操作:能通过菜单栏弹出对话框选择线宽、自定义颜色,也可以擦除绘制的线段。 4.可以保存绘图文件,保存后打开可以继续绘制。 2.1.3 数据说明 在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。在CDzyView类中添加一个私有变量xz;用来保存用户的选择(直线、矩形、椭圆、自由绘图)在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标停止移动时得到另外一个点。为视图类CDzyView分别捕获鼠标左键按下和弹起这两个消息。当鼠标左键按下时,需要将鼠标当前按下点保存至sx、sy,在鼠标移动停止后,将当前坐标保存至ex,ey.

其他主要数据说明: int fd 判断是否为自由绘图模式int w 线宽 int R RGB中的R int G RGB中的G int B RGB中的B CGraph类中 int m_nType:保存后重绘时用户的选择int qdx; 重绘起点x int qdy; 重绘起点y int zdx; 重绘终点x int zdy; 重绘终点y CLine类中 int cx; 重绘线宽 int sx; 重绘起点x int sy; 重绘起点y int zx; 重绘终点x int zy; 重绘终点y int w; 重绘线宽 自定义颜色对话框关联变量: IDC_EDIT_RED int m_Red IDC_EDIT_GREEN int m_Green IDC_EDIT_BLUE int m_Blue IDC_SCROLL_RED CScrollBar m_Sred IDC_SLIDER_GREEN CSliderCtrl m_Sgreen IDC_SPIN_BLUE CSpinButtonCtrl m_Sblue 2 分析、设计与实现 2.1 主要功能设计与实现

数据库数据查询实验报告和答案.doc

数据库数据查询实验报告和答案 韶关学院学生实验报告册实验课程名称:数据库技术与应用实验项目名称:数据库的数据查询实验类型(打√):(基础?、综合、设计)院系:专业班级:姓名学号:指导老师:韶关学院教务处编制一、实验预习报告内容预习日期:10月10月22日(星期二第七八节)实验同组人:如有实验数据表格,学生在实验预习时应画好实验数据表格,供实验时填写数据(本页如不够,可另附相同规格的纸张)。 指导教师批阅及签名签名:年月日三、实验报告内容9月24日实验报告内容原则上应包含主要实验步骤、实验数据计算(实验操作)结果、实验结果(疑问)分析等项目。 实施内容:一、根据实验要求完成实验:(写明步骤和截图)1、在数据库studentsdb中,新建表studentdb_info,curriculum,grade。 并输入相应的数据,如图1、2和3所示。 图1图2图32、在studentsdb数据库中,使用下列SQL语句将输出什么?(1)selectcount(*)fromgrade结果如图4所示:图4(2)selectsubstring(学生姓名,1,2)fromstudent_info结果如图5所示:图5(3)selectupper(kelly)结果如图6所示:图6(4)selectreplicate(kelly,3)结果如图7所示:图7(5)selectsqrt(分数)fromgradewhere分数>=85结果如图8所示:图8(6)select2,3,power(2,3)结果如图9所示:图9(7)selectyear(getdate()),month(getdate()),day(getdate())结果如图10所示:图102、在studentsdb数据库中使用select语句近基本查询。 (1)在student_info表中,查询每个学生的学号、姓名、出生日

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

MFC实现简单画图形程序(学习相关)

《MFC编程及应用》课程设计报告题目:简单画图形程序 学号:姓名: 指导老师: 时间: 评语:

程序设计步骤: 一、建立基于对话框的应用程序框架; 二、CMy0910200155Dlg类中关键新增变量的作用: CPtrArray pta; //用于保存已绘图形的相关信息。 CMemoryNode *pmN; //指向CMemoryNode类的指针,程序运行过 程中动态保存对象信息。 CMemoryNode *pmn; //指向CMemoryNode类的指针,从文件中读 取信息时动态创建类的对象。 COLORREF m_CurrentBrushColor; //用于存放当前画刷的颜色。 COLORREF m_CurrentPenColor; //用于存放当前画笔的颜色。 int num; //用于存放从"Index.txt"文件中读取的数字。 int flag=0; //用于标识:当为1时,表示按下了”画图”按钮;当为2时, 表示按下了”撤消”按钮;当为3时,表示按下了”加载历史” 按钮,则从文件中读取信息。 int mark; //用于标识:当为0时,表示刚画过矩形;当为1时,表示 刚画过圆角矩形;当为2时,表示刚画过椭圆。 int index; //用于存放pta数组的容量。 int flag1=0; //用于标识,和flag搭配,用来处理多种情况下的窗口重绘 问题。 int ButtonState=0; //用于标识,是类CShow和类CMy0910200155Dlg 的一个接口,通过其值在1和0之间转换,来处理弹出式对 话框的初次绘制和移动时的重绘问题。

数据库试验答案

计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 2012 ~2013 学年第二学期

实验1 使用向导创建和删除数据库 一、实验目的 1.熟悉SQL Server 中SQL Server Management Studio的环境 2.了解SQL Server 数据库的逻辑结构和物理结构 3.掌握使用向导创建和删除数据库的方法 二、实验要求 1.熟练使用SSMS进行数据库的创建和删除操作。 2.完成实验报告。 三、实验内容 设有一学籍管理系统,其数据库名为“EDUC”。 初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长; 日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。 日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。 四、实验步骤

1.使用SQL Server Management Studio(简称SSMS)创建数据库。 (1)启动SSMS 在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。 (2)建立数据库 在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。

MFC计算器实验报告

实验报告一——计算器 一实验名称 简易计算器 二实验目的 在Visual C++.EXE开发环境中,通过编写计算器程序,掌握创建对话框的方法,并向其中添加控件,并设置属性,使之满足程序的要求。 三编程思路 计算器要实现各种运算,在编写中主要分为两大块的编写,一是对1、2、3等数字按钮的响应函数编写,二是对加减乘除等运算符按钮的响应函数的编写。 给Dlg添加变量int m_operator; //运算符 double m_result; //结果(含中间变量) 另外添加编辑框的变量m_res 1.对数字按钮的响应函数的编写 1)由于每个按钮的响应函数相差不大,故用一个函数将其封装 在每次输入时要先判断数据开头是否为0 void CMy0710210202CalculateDlg::button(CString c) { UpdateData(TRUE); m_res+=c; if(m_res.GetAt(0)=='0'&&m_res.Find(".")==-1){ m_res.Empty(); m_res+=c; } UpdateData(FALSE); } 2)小数点按钮的响应函数。 首先要判断输入数据中是否已有小数点,数据是否为0,以及是否还没输入数据。 void CMy0710210202CalculateDlg::OnDian() { // TODO: Add your control notification handler code here UpdateData(TRUE); int n=m_res.Find("."); if(n==-1&&m_res.GetLength()!=0) m_res+="."; else if(m_res.GetLength()==0)m_res+="0."; UpdateData(FALSE); } 2.运算符按钮的响应函数的编写 用m_operator指代要进行的运算,由于每次的运算结果m_result 都传入了编辑框的变量m_res里,故此程序可以实现连续运算。 代码为 void CMy0710210202CalculateDlg::Result() { UpdateData(TRUE);

数据库实验报告1 (3500字)

河北科技大学 实验报告 级专业班学号年月日姓名同组人指导教师实验名称数据定义/数据操纵语言成绩实验类型批阅教师 一、实验目的 熟悉sql server 上机环境以及sql server 客户端的配置;熟练掌握和使用ddl 语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用dml 语言,对数据进行增加、修改和删除操作。二、实验内容 sql 数据定义语句,sql 数据操纵语句。三、实验要求 1.熟悉sql server 上机环境; 2.建立数据库表,修改数据库表结构,建立、删除索引。 教学管理数据库各表的数据结构和数据如下:cs:计算机系ma:数学系is:信息系 学生情况表student 主关键字:sno 非空字段:sname,sdept,sclass 课程名称表course 主关键字:cno (1)sql 数据定义语句: 1-1:(建立数据库表) 建立教学数据库的四个数据库表,其中student 表中不包含ssex(c,2) 字段,sname字段为sname(c,8)且可为空。 --创建表 create table student ( sno char(5) not null, sname varchar(8) not null, sdept char(2) not null, sclass char(2) not null, sage numeric(2,0), primary key (sno) ) create table course ( cno char(3) not null, cname varchar(16), ctime numeric(3,0), primary key (cno) ) create table teach ( tname varchar(8) not null, tsex char(2), cno char(3) not null, tdate datetime default(getdate()), tdept char(2) not null, primary key (tname, cno, tdept), foreign key (cno) references course(cno) ) create table score ( sno char(5) not null, cno char(3) not null, score numeric(5,2), primary key (sno, cno), foreign key (sno) references student(sno), foreign key (cno) references course(cno), ); 创建表之后的结果,如图一: (图一)

《数据库原理与应用》实验报告书修改版(1)答案

《数据库原理与应用》 实验报告书 (2011—2012学年第二学期) 班级: 学号: 姓名: 教师:郑先容 医药信息工程学院·数据决策 2012年2月

目录 实验一利用ACCESS创建数据库及熟悉SQL Server开发环境 (2) 实验三数据库、表的创建 (6) 实验五连接查询和嵌套查询 (12) 实验七数据的插入、修改、删除 (18) 实验九SQL Server数据库的安全性控制 (21) 实验十一熟悉Power Designer数据库设计软件 (24) 实验十三Transact-SQL编程 (27) 实验十五存储过程的使用 (30) 第十章数据库的恢复技术作业 (33)

实验一利用ACCESS创建数据库及熟悉SQL Server开发环境 一、实验目的 1、熟知机房用机安全规则和实验报告的书写。 2、掌握SQL Server 2005的安装,卸载以及相关服务的启动、退出。 3、熟悉SQL Server Management Studio环境。 4、掌握创建服务器组合注册服务器。 5、初步了解数据库的概念; 6、初步了解SQL Server联机丛书的使用。 7、用ACCESS创建数据库,体会数据库的功能。 注意:每次实验的指导视频,上课所需要的软件、数据库还有ppt。都可以在ftp://10.81.40.222的“数 据决策”->“数据库”->“2011-2012(2)”文件夹下找到,以后每次实验相关的文件和数据库,老师上课的课 件,sql2005安装环境,都可以在这个ftp上寻找。 二、实验内容 1、上网搜索能够正常安装的SQL Server2005的软件。或者在ftp上下载,有条件的同学,课后可在个人电脑上安装SQL Server2005,建议XP操作系统安装个人版,Server操作系统安装企业版。SQL Server2005的安装说明见《SQL Server 2005精简版的安装》或上网搜索相应电子教程。安装过程请参看实验指导或者相关视频。 2、观看视频“数据库概念.swf”,了解数据库的相关概念。 3、参看实验指导或者视频“使用SQL Server Management Studio.swf”,通过实践初步了解使用SQL Server Management的使用。 4、观看视频“SQL Server联机丛书.swf”,了解如何通过系统本身来学习使用SQL Server。 请根据联机丛书查询如何“创建数据库”,查询内容包括创建数据库前的准备工作,创建数据库的命令,以及数据库文件的组成。请把你的结果写在下面。

MFC贪吃蛇实验报告

贪吃蛇实验报告201221143049 信计1212 许圣

1.概述 此次课程设计我利用MFC制作了一个贪吃蛇游戏,用户可以通过上下左右控制蛇的移动方向,游戏会根据贪吃蛇身体的长度自动增加难度。在游戏过程中,会记录运行时间和所得分数,我还添加了bmp格式的图片作为游戏背景。 2.功能描述 2.1设计思路 本软件主要由三个模块构成,它们分别是蛇运行模块,初始化处理模块和显示模块。它们的作用分别是,初始化处理:初始化蛇头位置与第一个点位置;蛇运行模块:控制蛇的上下左右运行,并对蛇的运行状态进行判断,根据(吃点、未吃点、死亡等)状态进行不同的子程序模块处理以及游戏者是否能晋级的判断;显示模块:根据对蛇和点子的当前状态进行动画显示。主要有以下步骤: 1.定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的 初始位置,长度,以及蛇的行走方向。食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。 2.用数组初始化长度为4的贪吃蛇,并且默认出现一个食物。 3.在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer() 函数让系统提供一个时钟节拍,更新游戏 4.具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中 还包括根据蛇的长度来进行游戏难度的改变。 5.具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown() 来响应玩家的实际操作。 6.添加了bmp格式的图片作为游戏背景。 整体流程图如下图1。

图1:系统流程图

2.2功能介绍 ⑴运行程序,出现围墙界面,一条蛇在密闭的围墙内,在围墙内随机出现一个食 物,出现bmp格式图片的背景。 ⑵点击“游戏->游戏开始”,游戏开始。还可暂停游戏继续 ⑶游戏开始后,界面右下角会同步游戏得分。 ⑷通过四个方向键控制蛇的运动方向,吃掉随机出现的豆子,若不小心碰到墙 壁或者与自身相交,则该轮游戏结束。 ⑸游戏会根据蛇身的长度自动调节难易程度。 3.详细设计 3.1主要函数 ●void CSnakeView::OnDraw(CDC* pDC)//显示背景图片 ●void CSnakeView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)//按照用户的按键来控制蛇的移动 ●void CSnakeView::OnTimer(UINT nIDEvent)//根据蛇的长度来进行 SetTimer()函数的定义,可以根据长度来进行游戏难度的设定。//撞 界判断//蛇身相撞判断//抹掉蛇行走的痕迹//判断吃豆的条件,撞到就 吃//如果食物被吃了就生成 ●void CSnakeView::oninit()//进行贪吃蛇外观的初始化 ●void CSnakeView:: OnGameStart ()//开始游戏 ●void CSnakeView:: IniAim ()//初始化目标的位置 ●void CSnakeView::IniGame()//初始化游戏 ●void CSnakeView::ReDisplay(CPoint pPoint) ●bool CSnakeView::ReadBmp(char *bmpName)

基于MFC的OpenGL绘图

基于MFC的OpenGL绘图 本文更新版本请点击 [置顶]《基于MFC的OpenGL编程》系列文章 一、简介 GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC")。每一个GDI命令需要传给它一个DC,但与GDI不同,OpenGL使用当前绘制环境(RC)。一旦在一个线程中指定了一个当前RC,在此线程中其后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个RC,但在单一线程中只有一个当前RC。下面我将首先产生一个OpenGL RC并使之成为当前RC,这将分为三个步骤:设置窗口像素格式;产生RC;设置为当前RC。 二、MFC中的OpenGL基本框架 1、首先创建工程 用AppWizard产生一个MFC EXE项目,其他默认即可。 2、将此工程所需的OpenGL文件和库加入到工程中 在工程菜单中,选择"Build"下的"Settings"项。单击"Link"标签,选择"General"目录,在Object/Library Modules的编辑框中输入"opengl32.lib glu32.lib glut.lib glaux.lib"(注意,输入双引号中的内容,各个库用空格分开;否则会出现链接错误),选择"OK"结束。然后打开文件"stdafx.h",加入下列头文件: #include #include 3、改写OnPreCreate函数并给视图类添加成员函数和成员变量

OpenGL需要窗口加上WS_CLIPCHILDREN(创建父窗口使用的Windows风格,用于重绘时裁剪子窗口所覆盖的区域)和WS_CLIPSIBLINGS(创建子窗口使用的Windows风格,用于重绘时剪裁其他子窗口所覆盖的区域)风格。把OnPreCreate改写成如下所示:BOOL COpenGLDemoView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS); return CView::PreCreateWindow(cs); } 产生一个RC的第一步是定义窗口的像素格式。像素格式决定窗口着所显示的图形在内存中是如何表示的。由像素格式控制的参数包括:颜色深度、缓冲模式和所支持的绘画接口。在下面将有对这些参数的设置。我们先在COpenGLDemoView的类中添加一个保护型的成员函数BOOL SetWindowPixelFormat(HDC hDC)(用鼠标右键添加)和保护型的成员变量:int m_GLPixelIndex;并编辑其中的代码如下: BOOL COpenGLDemoView::SetWindowPixelFormat(HDC hDC) {//定义窗口的像素格式 PIXELFORMATDESCRIPTOR pixelDesc= { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL| PFD_DOUBLEBUFFER|PFD_SUPPORT_GDI, PFD_TYPE_RGBA, 24, 0,0,0,0,0,0, 0, 0,

相关主题
文本预览
相关文档 最新文档