测绘程序设计实习报告

测绘程序设计实习报告
测绘程序设计实习报告

测量程序设计实习报告

姓名: XX

班级: XXXX

学号: XXXX

教师评语:

实验名称:使用C#开发环境建立测量程序框架

一、实验的目的与任务:

(1)学会用C#窗体程序开发环境建立应用程序框架方法

(2)学会使用常见的Windows控件

(3)根据自身需要设计一个测量程序界面

二、实验的过程与步骤:

1、首先打开visual studio 2010,选择文件→新建→项目。在弹出的对话框中右栏一侧选择windows窗体应用。选择文件存放地址,输入项目名称,点击确定,完成。

2、拖动menuSctrip控件到主窗体,并且键入“文件”、“工具”两个选项,在“文件”下添加一个“打开”选项;在“工具”下添加“近似平差计算”、“高斯消元”两个选项。

3、选择项目→添加windows窗体,输入窗体名称“CLSJ”,点击确定。

4、在CLSJ窗体中拖入SplitContainer控件,将窗体分为左右两部分,调整大小。在拖入一个“TabControl”,新建选项卡。最后,加入“Button”、“TextBox”、“Label”控件。

5、用相同的方法,新建一个名为高斯消元的窗体,然后按照需要进行设计。

三、程序运行效果

四、本实验心得体会

这是第一次接触这种可视化开发编程,刚开始不是很熟悉,对于编程语言来说,在掌握一定语法之后,要多用,多结合实际进行一些简单编程,这样才能提高对一种编程语言的理解。

实验名称:导线计算程序设计及粗差探测

一、实验的目的与任务:

(1) 掌握方位角计算的程序设计方法

(2) 掌握符合导线、闭合导线、支导线计算的程序设计方法

(3) 理解粗差探测的程序设计方法

二、实验的设计与开发步骤:

1、考虑到在测量时所用的角度均为度分秒,而在c#计算时只是别度分秒,因此先设计两个函数,可以将度分秒和弧度制进行转化。

2、其次先写一个point 类,包含x ,y 两个成员变量,然后在设计一个方位角函数,用两个point 类当作形参传递进去,根据方位角计算公式παk x

y +??=arctan ,(根据象限角和方位角关系对k 进行调节)应该分为四种情况,但是考虑到分母不为0,因此应该在加一种情况,即导线与y 轴重合。

3、然后根据边长,根据方位角,公式

ααsin *cos *1212l y y l x x +=+=进行坐标推算。

三、程序运行及数据测试效果

四、本实验心得体会

在掌握一定的语法规则后,要多应用。另外就是在遇到问题时,

可以去网上查找,这样不断反复,就会熟练使用某种语法。

实验名称:测量数据库的建立

一、实验的目的与任务:

(1)掌握利用Access或SQLserver建立测量数据库的基本方法(2)掌握利用C#编程连接数据库,并进行数据操作的方法

二、实验的设计与开发步骤:

1、首先在窗体加载时就要链接access数据库,这样当打开窗体时数据就可以加载进去。首先就是使用OleDbConnection方法进行链接,然后用open方法打开数据库,在关闭窗体时,一定要在使用close 关闭。

2、在链接数据库并打开以后,然后就是新建一个数据集DataSet,相当于数据库的副本,在c#中对数据库进行操作均相当于对这个副本进行操作。然后写一个 OleDbDataAdapter对象,使用sql语句对要用的数据中部分或全部内容进行选择,然后用Fill方法将数据库绑定到数据集中。

3、最后就是用Command执行sql语句命令。

三、程序运行及数据测试效果

四、本实验心得体会

数据库在之前是一个完全不知道的东西,通过这次实习,对数据库有了一个新的理解,数据库在测量程序中是必不可少的东西,在刚开始链接操作数据库时有很多问题,通过网上查找,询问老师基本得以解决。

附录一:

导线计算代码:

using System;

using System.Collections.Generic;

using https://www.360docs.net/doc/0c11021523.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Collections;

using System.Windows.Forms;

namespace CLCX

{

public partial class FORM1 : Form

{

public static CLSJ clsj = new CLSJ();

public static int count = 0;

public FORM1()

{

InitializeComponent();

}

private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) {

//在关闭clsj窗口后可以再次打开

if (clsj.IsDisposed==true)

{

clsj = new CLSJ();

clsj.MdiParent = this;

clsj.Show();

}

else

{

clsj.MdiParent = this;

clsj.Show();

}

}

private void 近似平差计算ToolStripMenuItem_Click(object sender, EventArgs e) {

//坐标近似推算

int row = clsj.datag1.RowCount;

//1.方位角计算。简单起见,两个已知点坐标为置于前两行.

//每段线的方位角编号和起点编号相同.

point[] p = new point[2];

p[0] = new point(Convert.ToDouble(clsj.datag1.Rows[0].Cells[4].Value), Convert.ToDouble(clsj.datag1.Rows[0].Cells[5].Value));

p[1] = new point(Convert.ToDouble(clsj.datag1.Rows[1].Cells[4].Value), Convert.ToDouble(clsj.datag1.Rows[0].Cells[4].Value));

ArrayList raw = new ArrayList();

raw.Add(tool.fangweijiao(p[0], p[1]));

for (int i = 1; i < row - 1; i++)

{

raw.Add(Convert.ToDouble(raw[i - 1]) +

tool.d2r(Convert.ToDouble(clsj.datag1.Rows[i].Cells[2].Value)) - Math.PI);

}

//2.坐标推算

for (int i = 2, j = 1; i < row - 1; i++,j++)

{

clsj.datag1.Rows[i].Cells[4].Value =

Convert.ToDouble(clsj.datag1.Rows[i - 1].Cells[4].Value) +

Convert.ToDouble(clsj.datag1.Rows[i].Cells[3].Value) *

Math.Cos(Convert.ToDouble(raw[j]));

clsj.datag1.Rows[i].Cells[5].Value =

Convert.ToDouble(clsj.datag1.Rows[i - 1].Cells[5].Value) +

Convert.ToDouble(clsj.datag1.Rows[i].Cells[3].Value) *

Math.Sin(Convert.ToDouble(raw[j]));

clsj.datag1.Rows[i].Cells[4].Value =

Math.Round(Convert.ToDouble(clsj.datag1.Rows[i].Cells[4].Value), 4);

clsj.datag1.Rows[i].Cells[5].Value =

Math.Round(Convert.ToDouble(clsj.datag1.Rows[i].Cells[5].Value), 4);

}

}

}

public class point

{

public double X;

public double Y;

public point(double X,double Y)

{

this.X = X;

this.Y = Y;

}

}

public class tool

{

public static double d2r(double d) //"度"转弧度

{

int degree, min, sec;

degree = (int)d;

min = (int)((d - degree) * 100);

sec = (int)((d - degree - min/100) * 10000);

return (degree + min/ 60 + sec/3600) * Math.PI/180;

}

public static double fangweijiao(point p1, point p2) //方位角计算,返回弧度制结果

{

double r = 0;

double dx, dy;

dx = p2.X - p1.X;

dy = p2.X - p1.Y;

if (dx == 0)

{

if (dy > 0)

r = Math.PI / 2;

if (dy < 0)

r = Math.PI * 2 / 3;

}

if (dx > 0 && dy > 0)

r = Math.Atan(Math.Abs(dy) / Math.Abs(dx));

if (dx > 0 && dy < 0)

r = 2 * Math.PI - Math.Atan(Math.Abs(dy) / Math.Abs(dx));

if (dx < 0 && dy > 0)

r = Math.PI - Math.Atan(Math.Abs(dy) / Math.Abs(dx));

if (dx < 0 && dy < 0)

r = Math.PI + Math.Atan(Math.Abs(dy) / Math.Abs(dx));

return r;

}

}

}

数据库操作代码:

using System;

using System.Collections;

using System.Collections.Generic;

using https://www.360docs.net/doc/0c11021523.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Data.OleDb;

using System.Windows.Forms;

namespace CLCX

{

public partial class CLSJ : Form

{

public CLSJ()

{

InitializeComponent();

}

OleDbConnection conn;

OleDbDataAdapter adapt;

DataSet dat;

OleDbCommand build;

private void CLSJ_Load(object sender, EventArgs e)

{

//与数据库建立连接

string str_con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\cldata.mdb";

string str_load = "select * from cldata";

conn = new OleDbConnection(str_con);

conn.Open();

dat = new DataSet();

adapt = new OleDbDataAdapter(str_load, conn);

adapt.Fill(dat,"cldata");

datag1.DataSource = dat.Tables[0];

conn.Close();

}

private void but_save_Click_1(object sender, EventArgs e)

{

try

{

string str_con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\cldata.mdb";

string str_load = "select * from cldata";

string command;

conn = new OleDbConnection(str_con);

conn.Open();

dat = new DataSet();

adapt = new OleDbDataAdapter(str_load, conn);

adapt.Fill(dat, "cldata");

datag1.DataSource = dat.Tables[0];

int i = datag1.RowCount;

command = "insert into cldata (ID,测站,水平角,平距,X,Y,备注) values (" + i + ","

+ "'" + tex_CZ.Text + "'" + ","

+

Convert.ToDouble(tex_SPJ.Text) + ","

+

Convert.ToDouble(tex_PJ.Text) + ","

+

Convert.ToDouble(tex_X.Text) + ","

+

Convert.ToDouble(tex_Y.Text) + ","

+ "'" + tex_NT.Text + "'"

+ ")";

build = new OleDbCommand(command, conn);

int p = build.ExecuteNonQuery();

dat.Clear(); //将数据集清空,刷新datagridview控件

conn.Close();

}

VB解析算法及程序实现

3.1解析算法及程序实现 1.计算长方体体积的算法描述如下:(h) (z)、宽(w)、高①输入长方体的长 v = z * w * h ②计算长方形体积③输出结果④结束()上述算法属于 A. 枚举算法 B. 排序算法 C. 解析算法 D. 递归算法 2.下列问题适合用解析算法求解的是() A.将十三张纸牌按从小到大进行排列 B.统计100内偶数的各位数字之和恰好为10的个数 C.计算一辆车行驶100公里的油耗 D.寻找本年级身高最高的同学 3.有如下问题: 12求出此圆锥体的体积。 V=πr ①已知圆锥的半径和高度h,使用公式hr3②已知班级每位同学的其中成绩总分s,按照s的值从大到小进行成绩排名。 ③已知圆的周长s,利用公式r=s/(2*3.14)求出圆的半径。 ④已知“水仙花数”的定义,找出1~10000范围内所有的水仙花数。 用计算机解决上述问题时,适合用解析算法的是() A.①② B.①③ C.③④ D.②④ 4.出租车计价规则:3公里以内,10元;超出3公里每公里增加2元。假定公里数为x,金额为y.解决此问题的公式和流程图如下图所示: 流程图加框处部分的算法属于:() A.解析算法 B.排序算法 C.枚举算法 D.递归算法

程序实现如下功能:分别现要求编写VB5.中输入Text3、和Text1、Text2在文本框Command1单击三条线段的长度,“判断”按钮中显示判断结果。程序后,在标签Label1 运行界面如图:按此要求编写的程序如下:Private Sub Command1_Click() Dim a As Single ,b As Single Dim c As Single ,st As String a=Val(Text1.Text) b=Val(Text2.Text) c=Val(Text3.Text) If Not (a + b > c And b + c > a And c + a > b) Then st = “这三条线不能构成一个三角形” ElseIf a * a + b * b = c * c Or a * a + c * c = b * b Or b * b + c * c = a * a Then “可以构成一个直角三角形” st = Then ① ElseIf “可以构成一个等边三角形” st = Else st = “可以构成一个不等边的斜三角形” End If Label1.Caption = ② End Sub 划线处应填写正确的语句是: (1)划线处① (2)划线处② 6.下列VB程序段实现计算s=1+1/2+2/3+3/4+…+99/100的值。请将下面划线处代码补充完整。 Private Sub Command1_Click() Dim i As Integer Dim s As Double s=1 For i=2 To 100 s= Next i

VB程序的三种基本结构复习课教学案例

《VB程序的三种基本控制结构》 复习课教案 平桂高级中学陀君一、案例背景信息 模块:算法与程序设计 年级:高一年级 所用教材版本:粤教版《算法与程序设计》 学时数:1课时(40分钟) 二、教学设计: 1、教学目标: 知识与技能:能根据流程图正确区分VB程序的三种基本结构,并记住相关语句格式,能编写出简单明了的程序关键代码; 过程与方法:充分认识VB程序中三种基本结构的实用性,体会生活中算法的存在和精彩。 情感态度与价值观:培养学生在学习过程中积极思考、自我探究的能力和学以致用的意识。 2、教学重点:顺序、选择(分支)和循环三种基本结构的区分及其对应的VB 语句的使用。 教学难点:for循环结构,各类语句关键代码的编写。 三、教学实录 1.复习引入 师:我们之前学过VB的基本结构,通常程序有三种最基本的结构,是哪三种结构? 大部分学生在底下小声回答,师让某生回答,说:顺序模式、分支模式、循环模式。

师:分支模式也可称为? 部分学生:选择模式。 师:非常好,接下来看下这三种结构的流程图,然后分别指出这三个流程图是什么结构。(出示三种流程图结构) 2.正题 (1)顺序结构P38: 执行第一条语句后,必然从第二条语句继续,顺序执行所有的语句,直到执行完最后一条语句为止。 例1:例1、 a=1 b=2 c=a+b a=c-a b=c-a

最后,变量b的值是( 1 ) (2)选择结构(分支结构):P42 根据条件判断其是否成立,如果成立执行成立的分支;否则执行另一分支。其一般形式为: If 条件Then 语句序列1 Else 语句序列2 End If 单行形式为: If 条件Then 语句组1 Else 语句组2 例2、a =10 If a>=10 Then a=a+1 Else a=a-1 End If 该程序段运行后,变量a的值是( D ) A. 8 B. 9 C. 10 D. 11 【师读题,学生思考。请同学回答,让同学们思考a=5结果是多少】 (3)循环结构:P51 根据条件判断其是否成立,如果条件成立则重复执行循环体(循环结构中某语句序列),直到条件不成立,退出循环结构为止。 循环结构的常用形式为: for 循环变量= 初值to 终值[step 步长] [循环体] next [循环变量]

VB解析算法及程序实现

3.1解析算法及程序实现 1. 计算长方体体积的算法描述如下: ①输入长方体的长⑵、宽(w)、高(h) ②计算长方形体积v = z * w *h ③输出结果 ④结束 上述算法届丁 () A. 枚举算法 B. 排序算法 C. 解析算法 D. 递归算法 2. 下列问题适合用解析算法求解的是( ) A. 将十三张纸牌按从小到大进行排列 B. 统计100内偶数的各位数字之和恰好为10的个数 C. 计算一辆车行驶100公里的油耗 D. 寻找本年级身高最高的同学 3. 有如下问题: ①已知圆锥的半径r和高度h,使用公式V=1兀r2h求出此圆锥体的体积。 3 ②已知班级每位同学的其中成绩总分s,按照s的值从大到小进行成绩排名。 ③已知圆的周长s,利用公式r=s/(2*3.14)求出圆的半径。 ④已知“水仙花数”的定义,找出1?10000范围内所有的水仙花数。 用计算机解决上述问题时,适合用解析算法的是( ) A.①② B. ①③ C. ③④ D. ②④ 4. 出租车计价规则:3公里以内,10元;超出3公里每公里增加2元。假定公 里数为x,金额为y.解决此问题的公式和流程图如下图所示: J[10+2*(x-3X(x>3) _________ I -- --- --- 1 ---- --- --- 之/ 输曲 I ~『了、 [结虽] 流程图加框处部分的算法届丁:( ) A.解析算法 B. 排序算法 C. 枚举算法 D. 递归算法

5. 现要求编写VB 程序实现如下功能:分别 在文本框 Textl 、Text2、和Text3中输入 三条线段的长度,单击“判断”按钮Comman 后,在标签Labell 中显示判断结果。程序 运行界面如图: 按此要求编写的程序如下: Private Sub Command1_Click() Dim a As Single ,b As Single Dim c As Single ,st As String a=Val(Text1.Text) b=Val(Text2.Text) c=Val(Text3.Text) If Not (a + b > c And b + c > a And c + a > b) Then st ="这三条线不能构成一个三角形" ElseIf a * a + b * b = c * c Or a * a + c * c = b * b Or b * b + c * c = a * a Then st = ElseIf st = Else st = End If Label1.Caption = End Sub 划线处应填写正确的语句是: (1) 划线处① __________ (2) 划线 处② 6. 下列VB 程序段实 现计算s=1+1/2+2/3+3/4+…+99/100的值。请将下面划线处 代码补充完整。 Private Sub Command1_Click() Dim i As Integer Dim s As Double s=1 For i=2 To 100 s= ________________________ Next i Text1.Text=Str(s) End Sub 程序划线处应填入的内容是 ______________________________ “可以构成一个直角三角形” ① Then “可以构成一个等边三角形” “可以构成一个不等边的斜三角形”

VB程序的基本结构——循环结构之For-Next语句

课题:程序的基本结构——循环结构之For-Next语句第课时课型:新授备课教师授课时间 教学目标 知识与技能 1、了解循环的概念,理解循环结构的基本思想 2、掌握For-Next语句的基本结构的写法循环变量,初值,终值和步长。 3、理解For-Next语句的执行过程 过程与方法 1.通过分析问题,能准确找出循环变量、确定循环结束条件。 2.能利用For-Next语句解决简单的问题。 情感态度与价值观 1.通过编写循环结构的程序,体会循环结构的执行过程。 2.通过利用循环思想解决问题,体会循环思想的重要性。 教学重点1、理解循环结构的基本思想 2、理解For-Next语句的执行过程 教学难点根据需要采用循环结构解决实际问题,并提炼出for语句的基本结构学生理解For-Next语句的执行过程 教学 准备 几个以For-Next语句组成的不同功能的程序 教学过程设计教学 内容师生教学活动设计 备注栏 (学生笔记栏) 一、设疑导入 同学们,请先看这个图形(在窗体左边输出显示 竖行排列的1,2,3,4,5),如果用以前学过的程 序设计语言怎样来编写它的程序呢? 生(稍做思考,然后回答):使用Print语句 P rint“1” Print“2” Print“3” Print“4” Print“5” 师:同学们做得很好,,如果想要显示1-10,或是1-100的数字呢?怎么做,难道就这样顺序写下去吗?这样编写是不是太繁琐了。如果能让计算机去完成这部分重复的内容,而我们只要告诉计算机重复操作的次数就可以了,这个愿望能否实现呢? 通过我们今天学习的FOR—NEXT循环语句,就可以很容易的实现这个想法。

VB程序设计——选择结构.

VB程序设计——选择结构 南京市九龙中学李李 ■教材分析 选择控制结构是程序的三个基本结构中的一个重要结构,计算机的逻辑判断能力就是通过选择结构来完成的。条件语句中的“条件”是用关系表达式、逻辑表达式来描述的。程序中能否实现正确的“选择”决定于关系表达式或逻辑表达式的正确描述。关系表达式与逻辑表达式是本节中教学的重点与难点。 用选择结构编写简单的程序解决具体问题是在学生已经掌握了程序设计数据的表示与处理的基础上,理解了顺序结构的前提后提出的。通过本课的学习,可以促进学生对问题解决方法和思想的理解与掌握,从而提升学生的问题解决能力,让学生在按照一定的流程解决问题的过程中,去体会和理解程序设计的思想。 ■学情分析 学生在前面的课上对vb程序设计已经有了一定的基础,学生的分析、综合能力及独立思考能力、分析解决问题的能力都有了一定的水平,在教师的有效引导下,有能力进行自我探究,如果用一种学生比较感兴趣的,能够贴近学生日常生活的例子来分析选择结构的话,那么学生会比较感兴趣。 ■教学目标 1.知识与技能 1.了解选择结构的基本概念。 2.了解关系表达式与逻辑表达式的概念。 3.能利用VB中的条件语句实现简单的选择结构。 2.过程与方法 经历实践、分析、归纳,掌握IF语句的格式和功能。 3.情感态度与价值观 运用半成品加工策略,完善程序,发展学生思维的逻辑性及严谨的学习态度。 4.行为与创新 培养学生利用计算机的反馈作用进行探究学习的能力。 ■课时安排 安排1课时。 ■教学重点与难点 1.教学重点 让学生学会使用VB语言的If分支语句,掌握分支判断程序结构,来解决实际问题,

并且培养学生的探索、创新能力。 2.教学难点 对解决问题的方法和步骤的理解,并能根据实际问题写出程序代码。■教学方法与手段 讲述与讨论、实验与验证。 ■课前准备 教学课件、实例程序 ■教学过程

相关文档
最新文档