《地形模型的三维可视化》程序设计

《地形模型的三维可视化》程序设计
《地形模型的三维可视化》程序设计

《地形模型的三维可视化》程序设计

一、题目

请用OpenGL图形库,编制程序实现地形模型的三维可视化,并进行地形模型的纹理设置,并可以通过键盘进行交互操作(移动和旋转)。

(注:给定的地形模型数据是已经建好的不规则三角网。)

二、提交资料

1.程序的详细步骤和所有相关数据;

步骤:①录入三角形数据

②获得地形的范围

③绘制三角网

④设置纹理坐标

⑤计算参考点的位置

⑥移动

相关数据文件:数据文件DHS.dat

三角网文件DHS.tri

图片文件TERRAIN.BMP

2. 程序清单(包括程序说明);

#include "stdafx.h"

#include

#include

#include

#include

#include

#include

void CALLBACK elbowAdd (void);

void CALLBACK elbowSubtract (void);

void CALLBACK shoulderAdd (void);

void CALLBACK shoulderSubtract (void);

//点结构定义

typedef struct

{

long id;

double x;

double y;

}POINTXYZ;

//三角形结构定义

typedef struct

{

long id; //三角形号

long p[3]; //三角形三个顶点的序号

long xl[3]; //拓扑关系

}TRIANGLE;

//顶点变量

POINTXYZ *pPt;

//三角形变量

TRIANGLE *pTri;

//顶点总数

int iTotalNum;

//三角形总数

int iTotalTriNum;

//外围结构

typedef struct vrtagBOX

{

double minx;

double miny;

double minz;

double maxx;

double maxy;

double maxz;

}vrBOX;

//外围结构

vrBOX _box;

unsigned int m_nID; //存储纹理的索引号

int m_nWidth; //纹理图片的宽度

int m_nHeight; //纹理图片的高度

float (*_ptexture)[2]; //存储三角网的纹理数据

//视点参考点的偏移量

double lookx, looky, lookz;

//移动的速度

float _speed;

//垂直方向视点和所要看实体的间的距离

//视点的位置

double _eyeposition[3];

//参考点的位置

double _referencepoint[3];

//鼠标位移与象素之比的分母,即象素数

int _Pixels;

//设置纹理坐标

void SetTextureCoord();

//读取纹理数据

bool LoadTriangleBMP( LPSTR szFileNameD);

//向前移动

void Move(bool is_forward);

//获得鼠标在x,y方向的相对位移量

bool Rotate(int dx, int dy);

//计算视点与参考点的位置

void _CalcuEyePositionAndReferencePoint(int type,float amount);

void myinit(void);

//读取点坐标、三角形数据

void ReadData();

void Render();

//获得外围

void SetBOX();

void CALLBACK myReshape(GLsizei w, GLsizei h);

void CALLBACK display(void);

//读取纹理数据

bool LoadTriangleBMP(char* szFileName)

{

AUX_RGBImageRec *pBitmap = NULL;

if(!szFileName) return false;

//装载数据并存储

pBitmap = auxDIBImageLoad(szFileName);

if(pBitmap == NULL) return false;

glGenTextures(1, &m_nID);

// 绑定纹理到纹理数组,并进行初始化。

glBindTexture(GL_TEXTURE_2D, m_nID);

//控制纹理,映射到片元(fragment)时怎样对待纹理。

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

//定义二维纹理

glTexImage2D(GL_TEXTURE_2D, 0, 3, pBitmap->sizeX, pBitmap->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, pBitmap->data);

m_nWidth = pBitmap->sizeX;

m_nHeight = pBitmap->sizeY;

if (pBitmap) delete pBitmap;

return true;

}

int main(int argc, char* argv[])

{

/* 设置双缓存和RGBA颜色模式*/

auxInitDisplayMode (AUX_DOUBLE|AUX_RGBA);

auxInitPosition (0, 0, 1600, 800);

auxInitWindow ("作业");

myinit();

auxReshapeFunc (myReshape);

auxKeyFunc (AUX_LEFT, shoulderSubtract);

auxKeyFunc (AUX_RIGHT, shoulderAdd);

auxKeyFunc (AUX_UP, elbowAdd);

auxKeyFunc (AUX_DOWN, elbowSubtract);

auxMainLoop(display);

return 0;

}

void CALLBACK elbowAdd (void)

{

Move(true);

}

void CALLBACK elbowSubtract (void)

{

Move(false);

}

void CALLBACK shoulderAdd (void)

{

Rotate(50,0);

}

void CALLBACK shoulderSubtract (void)

{

Rotate(-50,0);

}

//读取点坐标、三角形数据

void ReadData()

{

ifstream ifile("f:\\qq\\DHS.dat");

ifile >> iTotalNum;

pPt =new POINTXYZ[iTotalNum];

//循环读入定顶点坐标数据;

for (int i=0;i

{

ifile >>pPt[i].id >> pPt[i].x >>pPt[i].y >> pPt[i].z;

}

ifile.close();

ifstream ifile2("f:\\qq\\DHS.tri");

ifile2 >> iTotalTriNum;

pTri =new TRIANGLE[iTotalTriNum];

//循环读入定顶点坐标数据;

for ( i=0;i

{

ifile2 >>pTri[i].id >> pTri[i].p[0] >>pTri[i].p[1] >> pTri[i].p[2]; }

ifile2.close();

SetBOX();

}

//功能:获得地形的范围

void SetBOX()

{

_box.minx = 9900000;

_box.miny = 9900000;

_box.minz = 9900000;

_box.maxx = -9900000;

_box.maxy = -9900000;

_box.maxz = -9900000;

//对所有的顶点循环

for (int i = 0; i < iTotalNum; i++)

{

if(_box.minx > pPt[i].x) _box.minx = pPt[i].x;

if(_box.miny > pPt[i].y) _box.miny = pPt[i].y;

if(_box.minz > pPt[i].z) _box.minz = pPt[i].z;

if(_box.maxx < pPt[i].x) _box.maxx = pPt[i].x;

if(_box.maxz < pPt[i].z) _box.maxz = pPt[i].z;

}

}

void myinit(void)

{

//读取点坐标、三角形数据

ReadData();

char *_bmpfilename; //纹理图片的文件名

_bmpfilename="f:\\qq\\TERRAIN.BMP"; //terrain.bmp"; //suban_1.bmp"; //读取纹理数据

LoadTriangleBMP(_bmpfilename);

//计算纹理坐标

SetTextureCoord();

//设置视点的一些初始参数

lookx = 5.0f;

looky = 0.0f;

lookz = 0.0f;

_Pixels= 3000;

_height=2.50;

_speed= 5.0f;

_eyeposition[0] = _box.minx -300;

_eyeposition[1] = _box.miny -300;

_eyeposition[2] = _box.maxz+50;

_referencepoint[0] = _box.maxx;

_referencepoint[1] = _box.maxy;

_referencepoint[2] = _box.minz;

}

void CALLBACK myReshape(GLsizei w, GLsizei h)

{

glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 90000.0);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

}

{

glClearColor(1.0,1.0,1.0,0.0);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPushMatrix();

//投影变换

gluLookAt(_eyeposition[0] , _eyeposition[1] , _eyeposition[2],

_referencepoint[0], _referencepoint[1] , _referencepoint[2], 0,0,1);

glPushMatrix();

glTranslated (_box.maxx+300 ,_box.maxy+100 , _box.maxz+300);

glColor3f (1.0, 0.0, 0.0);

auxSolidSphere (50.0);

glPopMatrix ();

GLfloat mat_ambient[]= { 1.0, 1.0, 1.0, 1.0 };

GLfloat mat_diffuse[]= { 1.0, 1.0, 1.0, 1.0 };

GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };

GLfloat mat_shininess[] = { 50.0 };

GLfloat light0_diffuse[]= { 1.0, 1.0, 1.0, 1.0};

//定义光源的位置

GLfloat light0_position[] = { _box.maxx,_box.maxy, _box.maxz-800, 1.0 };

GLfloat light1_ambient[]= { 1.0, 0.0,0.0, 1.0 };

GLfloat light1_diffuse[]= { 1.0, 0.0, 0.0, 1.0 };

GLfloat light1_specular[] = { 1.0, 0.0, 0.0, 1.0 };

GLfloat light1_position[] = { (_box.minx +_box.maxx)/2.0 ,(_box.miny +_box.maxy)/2.0 , _box.maxz+500, 1.0 };

GLfloat spot_direction[] = { 0.0, 0.0, -1.0 };

glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);

glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);

glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);

glMaterialfv(GL_FRONT, GL_SHININESS,mat_shininess);

glLightfv(GL_LIGHT0, GL_AMBIENT, light0_diffuse);

glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);

glLightfv(GL_LIGHT0, GL_POSITION,light0_position);

glLightfv(GL_LIGHT1, GL_AMBIENT, light1_ambient);

glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);

glLightfv(GL_LIGHT1, GL_SPECULAR,light1_specular);

glLightfv(GL_LIGHT1, GL_POSITION,light1_position);

glLightf (GL_LIGHT1, GL_SPOT_CUTOFF, 10.0);

glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION,spot_direction);

glEnable(GL_LIGHT0);

glDepthFunc(GL_LESS);

glEnable(GL_DEPTH_TEST);

//启动光照

glEnable(GL_LIGHTING);

//绘制地面模型

Render();

glDisable(GL_LIGHTING);

glPopMatrix();

glFlush();

auxSwapBuffers();

}

//功能:绘制三角网

void Render()

{

glBindTexture(GL_TEXTURE_2D, m_nID);

glEnable(GL_TEXTURE_2D);

//画三角形线面

glBegin(GL_POLYGON); //GL_LINE_LOOP);//

for( int i = 0; i < iTotalTriNum; i++)

{

glTexCoord2f(_ptexture[pTri[i].p[0]][0], _ptexture[pTri[i].p[0]][1] );

glVertex3f(pPt[pTri[i].p[0]].x, pPt[pTri[i].p[0]].y, pPt[pTri[i].p[0]].z);

glTexCoord2f(_ptexture[pTri[i].p[1]][0], _ptexture[pTri[i].p[1]][1] );

glVertex3f(pPt[pTri[i].p[1]].x, pPt[pTri[i].p[1]].y, pPt[pTri[i].p[1]].z);

glTexCoord2f(_ptexture[pTri[i].p[2]][0], _ptexture[pTri[i].p[2]][1] );

glVertex3f(pPt[pTri[i].p[2]].x, pPt[pTri[i].p[2]].y, pPt[pTri[i].p[2]].z); }

glEnd();

glDisable(GL_TEXTURE_2D);

}

//设置纹理坐标

void SetTextureCoord()

{

_ptexture = new float[iTotalNum][2];

float _min_max = fabs(_box.maxx -_box.minx);

float _min_maxy = fabs(_box.maxy-_box.miny);

for (int i = 0; i < iTotalNum; i++)

{

_ptexture[i][0] = (pPt[i].x-_box.minx)/_min_max;

}

//计算视点的位置和参考点的位置

void _CalcuEyePositionAndReferencePoint(int type,float amount) {

float a;

double _h;

switch(type)

{

//向前移动就执行这步

case 1:

_eyeposition[0] += lookx * amount;

_eyeposition[1] += looky * amount;

break;

//水平面内旋转就执行这步

case 2:

lookx = lookx*cos(amount) + looky*sin(amount);

looky = looky*cos(amount) - lookx*sin(amount);

a = 1/sqrt(lookx*lookx + looky*looky);

lookx *= a;

looky *= a;

break;

}

//计算参考点的位置

_referencepoint[0] = _eyeposition[0] + lookx;

_referencepoint[1] = _eyeposition[1] + looky;

_referencepoint[2] = _eyeposition[2] + lookz;

}

//向前移动

void Move(bool is_forward)

{

//使视点向前移动

if(is_forward)

{

_CalcuEyePositionAndReferencePoint(1, _speed);

}

else

{

_CalcuEyePositionAndReferencePoint(1, - _speed);

//获得鼠标在x,y方向的相对位移量

bool Rotate(int dx, int dy)

{

//调用_CalcuEyePositionAndReferencePoint()函数完成旋转操作_CalcuEyePositionAndReferencePoint(2, ((float)dx/ _Pixels));

return true;

}

3.程序运行结果。

VB程序设计课后习题答案(科学出版社)

同步练习1 二、选择题 01——05 CADAB 06——10 ACDAB 11——15 CBDBB 同步练习2 二、选择题 01——05 ABDCA 06——10 CACBC 11——15 DADAD 16——20 BDBBB 三、填空题 1.可视 2.LEFT、TOP、WIDTH、HEIGHT 3.按字母顺序 4.查看代码 5.工具、编辑器 6.FORM窗体、FONT 7.MULTILINE 8.在运行时设计是无效的 9.工程、工程属性、通用、FORM1.SHOW 10.TABINDEX、0 同步练习3 二、选择题 01——05 BCADB 06——10 ADBBC 11——15 DBCBA 16——20 BAABB 三、填空题 1.整型、长整型、单精度型、双精度型 2.SIN(30*3.14/180)+SQR(X+EXP(3))/ABS(X-Y)-LOG(3*X) 3.164、今天是:3-19 4.FALSE 5.-4、3、-3、3、-4、4 6.CDEF 7.(X MOD 10)*10+X\10 8.(35\20)*20=20 ( 35 \ 20 )* 20 = 20 9.X MOD 3=0 OR X MOD 5=0 10.27.6、8.2、8、1、100、397、TRUE、FALSE 同步练习4 一、选择题 01——05 DBCAD 06——10 CBBAB

11——15 D25BAC 16——20 CBACB 21——25 DAABC 二、填空题 1.正确性、有穷性、可行性、有0个或多个输入、有1个或多个输出2.1 2 3 3.X>=7 4.X

C++程序设计基础课后答案 第八章

8.1 阅读下列程序,写出执行结果 1.#include class Bclass { public: Bclass( int i, int j ) { x = i; y = j; } virtual int fun() { return 0 ; } protected: int x, y ; }; class Iclass:public Bclass { public : Iclass(int i, int j, int k):Bclass(i, j) { z = k; } int fun() { return ( x + y + z ) / 3; } private : int z ; }; void main() { Iclass obj( 2, 4, 10 ); Bclass p1 = obj; cout << p1.fun() << endl; Bclass & p2 = obj ; cout << p2.fun() << endl; cout << p2.Bclass :: fun() << endl; Bclass *p3 = &obj;

cout << p3 -> fun() << endl; } 2.#include class Base { public: virtual void getxy( int i,int j = 0 ) { x = i; y = j; } virtual void fun() = 0 ; protected: int x , y; }; class A: public Base { public: void fun() { cout<<"x = "<

《计算机程序设计基础》课后练习题参考答案

《计算机程序设计基础》课后练习题1 一.判断题 (1)(错)事件过程由某个用户事件或系统事件触发执行,但不能被其他过程调用。 (2)(错)若X=2, Y=5,则表达式 Y-2>X AND X+2>Y 的结果为:True。 (3)(错)常量是指在程序运行过程中其值可以改变的那些量。 (4)(错,timer没有)VB工具箱中的所有控件都具有宽度(Width)和高度(Height)属 性。 (5)(错)定义变量:Dim max,min as Single , 则max 和 min 的数据类型均为Single。 (6)(对)如果创建的菜单项的标题是一个减号“-”,则该菜单项显示为一条分隔线。 (7)(错)标准模块文件的扩展名是“*.VBP”。 (8)(错,都不能)定时器控件可以响应Click事件,但不能响应DbClick事件。 (9)(错)在默认情况下,数组下标下界的缺省值为1。 (10)(对)在使用字体对话框时,需要对其Flags属性先进行相应设置。 二.单选题 (11)在Visual Basic中,表示鼠标单击事件的是 C 。 A)Activate B)DoubleClick C)Click D)MouseDown (12)用于设置计时器时间间隔的属性是 A 。 A)Interval B)Name C)Left D)Top (13)函数Int(10*Rnd)是在 D 范围内的整数。 A)[1,10] B)[1,10] C) [0,9) D)[0,9] (14)Select case语句结构的结尾应使用 D 。 A)End B) End Case C) End Sub D) End Select (15)改变了容器的坐标系后,该容器的 A 属性值不会改变。 A)left B)scaleleft C)scaletop D)scalewidth (16)执行下列语句后,列表框中各表项顺序为 D List1.Clear For i=1 to 4 : List1.AddItem i-1,0 :Next i A)B)C)D) (17)输入对话框InputBox的返回值的类型是 A 。

程序设计基础课程设计

1 矩阵的操作(6人) 设有两个矩阵A=(a ij)m×n,B=(b ij)p×q 实现要求: ⑴编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的数组和对应矩阵的行数、列数。(不能使用全局变量) ⑵编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出。 ⑶求矩阵的转置,矩阵的转置A’=(a ji)n×m,转置前输出原矩阵,转置后输出转置矩阵。 ⑷求矩阵A、B的和。矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C。 C=A+B=(c ij)m×n,其中c ij=a ij+b ij ⑸求矩阵A、B的积。矩阵A和B能够相乘的条件是:p=n;矩阵A和B 如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D。 D=A×B=(d ij)m×q,其中d ij=∑a ik×b kj,k=1,2,……,n ⑹设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。

2 数据汇总 (6人) 问题描述: 在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。 假设某超级市场销售有m种商品(假设商品的编号为1,2,3,┅┅,m),有n台前台收款机(假设收款机的编号为1,2,3,┅┅,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和销售额。记录由4个域组成:收款机编号、商品编号、销售数量、销售金额。构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。实现要求: ⑴编写实现将数据记录插入到数据文件的最后的函数; ⑵编写以收款机为单位的数据分类处理函数。构造n个单链表,每个链表保存一台收款机的销售记录,这n个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪台收款机。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到n个单链表; ⑶统计每台收款机的销售总额; ⑷编写以商品为单位的数据分类处理函数。构造m个单链表,每个链表保存一种商品的销售记录,这m个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪种商品。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到m个单链表; ⑸以商品为单位,统计每种商品的销售总额。 ⑹设计一个菜单,具有插入数据记录、按收款机统计销售总额、按商品统计销售总额、退出系统等最基本的功能。

《网络应用程序设计》课程设计报告书

网络应用程序设计课程设计报告书 题目:局域网多人聊天室 班级:0991132 学号:1099113202 姓名:赵燃 指导教师:宋毅、王家宁、徐红梅、姚璐 周期:一周 成绩: 2011年12 月23 日

一、课程设计的目的与要求( (一)课程设计目的与任务 (1)课程设计的目的:《网络高级程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用vc++语言进行面向对象设计的基本方法。提高运用面向对象知识分析实际问题、解决实际问题的能力。 (2)课程设计任务:局域网多人聊天室 该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。 客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。 服务器端程序:可将消息发送到客户端和接受客户端发送来的消息。 (二)题目要求 该系统要求完成聊天室的全过程,包括客户端和服务器两大部分的编程及其连接。服务器端聊天程序负责接收和发送来自客户端的聊天信息,客户端聊天程序负责建立和维护与服务器端的连接,想服务器发送本客户的聊天内容。系统采用VISUAL C++语言程序设计编程实现。并且按要求编写程序设计报告书,能正确编写分析、设计、编码、测试等技术文档。 二、设计正文 1系统分析 (1)服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。 (2)服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。对于公共聊天室,服务器将把接受到的信息除源端外的所有客户发送过去。 (3)服务器还要监控这些连接的状态。在客户主动离开或发生故障时从列表删除相应的表项,并及时更新连接表。 2功能详细描述及框图 用户首先启动客户端,登陆服务器并向服务器发送信息,启动服务器,服务器等待客户要求并向客户反馈在线用户信息,用户向服务器发送信息,服务器处理用户的数据,然后用户开始聊天,客户端的聊天分为对群聊天和私聊的信息,该信息应通过程序控制分别进行处理。

visual_Basic程序的设计教程_课后习题答案及练习

《VB程序设计》综合复习资料 第一章 Visual Basic程序设计概述 一、填空题 1、Visual Basic是一种面向__________的可视化程序设计语言,采取了__________的编程机制。 2、在VB中工程文件的扩展名是____________,窗体文件的扩展名是____________,标准模块文件的扩展名是____________。 3、执行“工程”菜单下的__________命令,可选择并添加ActiveX控件。 4、Visual Basic 6.0用于开发__________环境下的应用程序。 二、选择题 1、下面不是VB工作模式的是() A.设计模式B.运行模式C.汇编模式D.中断模式 2、可视化编程的最大优点是() A.具有标准工具箱 B.一个工程文件由若干个窗体文件组成 C.不需要编写大量代码来描述图形对象 D.所见即所得 3、下列不能打开属性窗口的操作是() A.执行“视图”菜单中的“属性窗口”命令 B.按F4键 C.按Ctrl+T D.单击工具栏上的“属性窗口”按钮 4、下列可以打开立即窗口的操作是() A.Ctrl+D B.Ctrl+E C.Ctrl+F D.Ctrl+G

5、Visual Basic的编程机制是() A.可视化 B.面向对象 C.面向图形 D.事件驱动 三、简答题 1、代码窗口主要包括哪几部分? 2、在工程资源管理器窗口中,主要列出了哪三类文件? 3、窗体布局窗口的主要用途是什么? 4、VB的基本特点是什么? 5、怎样理解可视化设计? 6、怎要理解事件驱动编程? 第二章简单的VB程序设计 一、填空题 1、设置是否可以用Tab键来选取命令按钮,应该用______________属性。 2、一个控件在窗体的位置由_______和________属性决定,其大小由__________和_________属性决定。 3、利用对象的属性setfocus可获得焦点,对于一个对象,只有其visible属性和____________属性为true,才能接受焦点。 4、设置控件背景颜色的属性名称是______________________。 5、所有控件都具有的共同属性是__________________属性。 6、一般情况下,控件有两个属性项的缺省值是相同的,这两个属性项是_______________。 7、VB中的每个对象(控件)都有一组特征,这组特征称为__________,我们通过修改它可以控制对象的外观和操作。 8、通常情况下,VB中一个工程主要包括如下四个文件:窗体文件、工程文件、类模块文件和_____________文件,后者的扩展名为.Bas,通常由Basic语言编写,是一个可共用的子程序。 9、VB有三种工作模式,分别是设计(Design)模式、_____________和中断(Break)模式。 二、选择题 1、以下能够触发文本框Change事件的操作是()

程序设计基础练习题(全答案版)

《程序设计基础——C#.NET》练习 参考答案: 一、选择题 https://www.360docs.net/doc/d311959071.html,的目的就是将____A____作为新一代操作系统的基础,对互联网的设计思想进行扩展。A.互联网 B. Windows C. C# D. 网络操作系统 2.假设变量x的值为10,要输出x值,下列正确的语句是__C__。 A.System.Console.writeline(“x”) B. System.Cosole.WriteLine(“x”) C. System.Console.WriteLine(“x={0}”,x) D. System.Console.WriteLine(“x={x}”) 3.要退出应用程序的执行,应执行下列的_A___语句。 A. Application.Exit(); B. Application.Exit; C. Application.Close(); D. Application.Close; 4.关于C#程序的书写,下列不正确的说法是__D________。 A.区分大小写 B.一行可以写多条语句 C.一条语句可以写成多行 D.一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法 5. 在C#语言中,下列能够作为变量名的是__C__。 A.if B. 3ab C. b_3a D. a-bc 7. 能正确表示逻辑关系“a≥5或a≤0”的C#语言表达方式是__D__。 A.a>=5 or a<=0 B. a>=5|a<=0 C. a>=5&&a<=0 D. a>=5||a<=0 8. 以下程序的输出结果是___C_____。 A. 5 B. 4 C. 6 D. 不确定 9. If语句后面的表达式应该是__A___。 A.逻辑表达式 B. 条件表达式 C. 算术表达式 D. 任意表达式10.有如下程序:

《测量程序设计课程设计》指导书-2015

测量数据处理程序设计指导书 设计名称:测量数据处理程序设计 计划周数:2周 适用对象:测绘工程专业本科 先修课程:测量学,测量平差基础,大地控制测量,测量程序设计 一、设计目的 测量数据处理程序设计是学生在系统学习完大地控制测量学、测量平差基础、测量程序设计等相关课程之后,为了系统理解控制网平差的整体过程及综合运用科学工具而安排的。通过课程设计主要达到以下几个目的:掌握控制网平差课程设计具体内容、方法和步骤;通过理论联系实际,进一步巩固已学到的专业理论知识,并加深对理论的认识;培养学生对编写代码,上机调试和编写说明书等基本技能;锻炼学生阅读各类编程参考书籍及加以编程运用的能力。 二、设计内容及日程 在VB、 VC软件或matlab科学计算软件的平台上,选择的具体课程设计题目,进行程序设计与实现,共计10个工作日,工作程序如下: 三、设计的组织: 1.设计领导 (1)指导教师:由教研室指派教师、实验员兼任。

职责:全面组织设计大纲的实施,完成分管工作及相关技术指导。 (2)设计队长:学生班长兼任。 职责:协助教师做好本班学生的人员组织工作。 (3)设计组长:每组一人。 职责:组织执行下达的设计任务,安排组内各成员的工作分工。 2.设计分组 学生实习作业组由3~4人组成(含组长一人)。 四、设计内容 在VB、VC或MATLAB 软件平台上,按选择的设计题目进行相关程序开发 1、闭合导线简易平差、附合导线简易平差支导线计算 2、闭合水准网计算、附合水准网简易平差 3、地形图编号(新、旧两种方法) 4、误差椭圆的参数的计算与绘制误差椭圆 5、水准网严密平差 6、高斯正反算计算 7、高斯投影换带计算 8、七参数大地坐标转换(WGS84-bj54坐标转换、WGS84-CGCS2000坐标转换) 9、四参数坐标转换(西安80-bj54坐标转换、CGCS2000-bj54坐标转换、CGCS2000-西安80坐 标转换(平面) 10、大地高转换为正常高的计算 11、工程投影变形超限的处理 12、遥感图像数据处理 13、曲线(曲面)拟合 14、摄影测量空间后方交会 15、****管理信息系统设计与开发 五、上交成果 1) 小组利用vb、vc或matlab编写的软件包一个及测试数据一份 2)小组关于所开发程序设计说明书一份 3) 个人课程设计的心得一份 4)小组答辩PPT一份

相关文档
最新文档