版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上成绩 环境与测绘工程学院课程论文学年学期: 2016-2017(一) 课程名称: 测量程序设计 论文题目: 附合导线平差求解 姓 名: 胡慧茹 学 号: 任课教师: 白洪伟 目录一 实训目的.3二 实训任务.3三 实训环境.43.1 硬件环境.43.2软件环境.4四 项目设计与分析.54.1软件基本界面.64.2 附合导线平差求解.74.3 高差求解.114.4 计算方位角.124.4.1 实训内容.124.4.2 实现步骤设计 .124.5 角度转换.134.5.1 实训内容.134.5.2 实现步骤设计.134.6 计算坐标.14五 调用程序.15 1.导线.15
2、 2.将度分秒转换为度.16 3.将度分秒转换为秒数.17 4.将弧度转化为度分秒.17 5.将角度转换为弧度 .17 6.给定俩坐标,坐标正y算方位角,返回的是以弧度为单位的角度.18六 实验心得.18一 实训目的(1)掌握C#窗体创建及其常用控件的选用和编程。进一步提高编程能力,掌握对C#方法的调用,同时学会并运用Microsoft Visual Studio2010软件编辑C#语言程序。 (2)实训室由学校组织,利用课堂有限的时间掌握专业知识与运用,结合课下空闲时间巩固加强。学生在实训期间,以个人为单位完成项目,通过自己的不断摸索,实训可以学到课堂上学不到的知识,可以将学到的知识灵活运用
3、起来。 (3)在实训的过程中,可以让学生树立明确的学习态度,拥有良好的职业素养,锻炼扎实的职业技能,塑造坚定的职业人生,也为选择考研深造的同学提供锻炼的机会。 (4)C#是当今社会中发展速度迅猛的一种语言,所以企业公司对于人员的要求也不断提高,与测绘相关的职业也需要具备编程知识的人员,通过实训激发自身潜力,提高自身修养,掌握编程语言,养成良好的编程习惯,为以后的求职生涯添上一块“敲门砖”。 (5)利用Microsoft Visual Studio2010软件设计窗体应用程序并完成“附合导线平差”程序设计,其中包括登录界面、主界面、角弧转换界面和距离及方位角计算等界面。 二 实训任务 (1)软件
4、基本界面软件的基本界面包登录界面和主界面,主界面里面为附合导线平差求解,在菜单栏的小工具中包高差求解、角度转换和坐标求解。(2)附合导线平差求解在一条双定向附合导线中,已知端点四点坐标,若干左角和边长,求其中各点坐标。(3)高差求解用全站仪在一点观测了另一点斜边和垂直角,求两点的高差。(4)计算方位角方位角的取值为0-360度。(5)角度转换将输入的角度转换为弧度或弧度转换为角度。(6)计算坐标已知两点中一点的坐标、距离及方位角,求另一点的坐标。三 实训环境3.1 硬件环境硬件环境是计算机及其外围设备组成的计算机物理系统,即硬件设施,是指由传播活动所需要的那些物质条件、有形条件之和构筑而成的环
5、境。硬件环境主要是由计算机的硬件组成的,而计算机硬件是指计算机系统中由电子、机械和光电元件等组成的各种物理装置的总称。这些物理装置系统按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。简而言之,计算机硬件的功能是输入并存储程序和数据,以及执行程序把数据加工成可以利用的形式。从外观上来看,微机由主机箱和外部设备组成。主机箱内主要包CPU、内存、主板、硬盘驱动器、光盘驱动器、各种扩展卡、连接线、电源;外部设备包鼠标、键盘、显示器、音箱等,这些设备通过接口和连接线与主机相连。这些都是构成硬件的主要部分。对于C#面向对象的软件来说,所需的硬件环境,要求其实不是很高,安装Visual Stu
6、dio 2010时的所需的必备条件如表1:表1 安装Visual Studio 2010所需的必备条件硬件描述处理器600MHz处理器,建议使用1GHz处理器RM192MB,建议使用256MB内存可用硬盘空间如果不安装MSDH,系统驱动器上需要1GB的可用空间,安装驱动起上需要2GB的可用空间;如果安装MSDHL,则系统驱动上需要1GB的可用空间,安装完整MSDH的安装驱动器上需要3.8GB的可用空间,默认安装MSDH的安装驱动器上需要2.8GB的可用空间。CD-ROM或DVD-ROM驱动器必须使用显示器800×600,256色,建议使用1024×768,增强色16位鼠标微
7、软鼠标或兼容的指针设备操作系统及所需补丁Windows 2000 Service Pack 4、Windows XP Service Pack 2、Windows Server 2003、Service Pack 1或更高版本 3.2软件环境 软件环境是指由传播活动所需要的那些非物质条件、无形条件之和构筑而成的环境。只要指软件的运行环境以软件运行所需要的周边软件等等,除此之外,还包括目的软件之外的应用层软件,在涉及软件交互的时候,这些应用软件往往影响很大。实训中,我们使用VS集成环境来实现对于C#程序的运行。Visual Studio是微软公司推出的开发环境,是目前最流行的Windows平台应
8、用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单和明了。Visual Studio 2010同时带来了NET Framework 4.0、Microsoft Visual Studio 2010 CTP,并且支持开发面向windows7的应用程序。Visual Studio是开发.NET应用程序的一套完整的开发工具集,集设计、编辑、运行和调试等多种功能于一体的集成开发环境(IDE)。Visual Studio支持四种内置的开发语言:Visual Basic、Visual C+、Visual C#和V
9、isual J#,他们使用相同的集成开发环境,因而有助于创建混合语言解决方案。使用Visual Studio可以高效的生成各种ASP.NET web应用程序、XML Web Services,桌面应用程序和移动应用程序。使用Visual Studio集成开发环境可以快捷高效的开发Windows窗体应用程序。Visual Studio是我们学习C#必不可少的应用环境,实训时,我们对于Visual Studio的应用更加熟练了,也对Visual Studio有了各方面的了解。四 项目设计与分析4.1软件基本界面 图1 程序设计本程序名为“程序设计”,登录界面如图1,用户名为“”,密码为“胡慧茹”。
10、双击“确定”,为了实现账户名密码登录输入一下程序: private void button1_Click(object sender, Eventrgs e) string = textBox1.Text; string b = textBox2.Text; if ( = "" && b = "胡慧茹") this.Hide(); 附合导线平差求解frm2 = new 附合导线平差求解(); frm2.Show(); 具体步骤: 文件,新建项目,windows应用窗体程序,添加两个label控件,两个textbox控件,两个button,
11、右键属性修改控件的name和text的名称。 主界面如图2,主界面是附合导线平差求解,菜单栏中包“文件(打开、另存为)”、“小工具(角度转换、高差求解、计算坐标和计算方位角)”和“帮助(示意图)”。 图2 主界面示意图4.2 附合导线平差求解 新建windows窗体命名为附和导线平差,添加五个label控件,十一个textbox控件,三个button控件,一个pictureBox控件,一个openFileDialog,一个 saveFileDialog右键属性修改控件的name和text的名称。 图3 附合导线示意图 图4 附合导线平差求解在菜单栏中选择“文件”“打开”,导入文件夹中“附合导线
12、实例数据”,点击“平差.txt”,就得出如图4的结果,点击“另存为”,可以将结果以“.txt”格式保存,命名为“附合导线输出数据实例”。 新建一个Windows应用程序命名为“附合导线平差求解”,并设计窗口,双击“平差”,编写如下代码:private void button1_Click(object sender, EventArgs e) double Mx = Convert.ToDouble(textBox1.Text); double My = Convert.ToDouble(textBox2.Text); double Ax = Convert.ToDouble(textBox3
13、.Text); double Ay = Convert.ToDouble(textBox4.Text); double Nx = Convert.ToDouble(textBox5.Text); double Ny = Convert.ToDouble(textBox6.Text); double Bx = Convert.ToDouble(textBox7.Text); double By = Convert.ToDouble(textBox8.Text); /计算M到A的方位角 double 0 = 导线.方位角(Mx, My, Ax, Ay); /计算B到N的方位角 double 1 =
14、 导线.方位角(Bx, By, Nx, Ny); List<double> 坐标增量X集合 = new List<double>(); List<double> 坐标增量Y集合 = new List<double>(); List<double> 水平距离平方集合 = new List<double>(); List<double> 方位角集合 = new List<double>(); double 坐标增量X和 = 0; double 坐标增量Y和 = 0; double 坐标增量X绝对值和 =
15、 0; double 坐标增量Y绝对值和 = 0; double 水平距离和 = 0; double 水平距离平方和 = 0; double = 0; /ArrayList pj_spj = new ArrayList(256); string st = textBox9.Text; string array = st.Split('n'); int pj; int spj; /int n; /for (n = 0; n < 10000; ) / / if (aArrayn != "") / / n+; / / else break; / for (p
16、j = 0, spj =1; spj < 6; ) string str = arraypj; double S = double.Parse(str); string sd = arrayspj; double sd1 = double.Parse(sd); double = 导线.DEG(sd1); 水平距离平方集合.Add(S * S); 水平距离平方和 += S * S; double dx, dy; = 导线.坐标(0, 0, , S, , out dx, out dy); 方位角集合.Add(); 坐标增量X集合.Add(dx); 坐标增量Y集合.Add(dy); 坐标增量X
17、和 += dx; 坐标增量Y和 += dy; 坐标增量X绝对值和 += Math.Abs(dx); 坐标增量Y绝对值和 += Math.Abs(dy); pj += 2; spj += 2; /int number = pj.Capacity; /pj.TrimtoSize(); double LJ = Convert.ToDouble(textBox13.Text); double n = 导线.DEG(LJ); /推算B到N的方位角 double BN = 导线.方位角(方位角集合方位角集合.Count - 1, n); /计算方位角闭合差 double 方位角闭合差 = BN - 1;
18、textBox10.Text = Convert.ToString(方位角闭合差); double 方位角改正数 = -方位角闭合差 / (方位角集合.Count + 1); /先对角度进行平差计算,并重新计算坐标增量 坐标增量X集合.Clear(); 坐标增量Y集合.Clear(); 坐标增量X和 = 0; 坐标增量Y和 = 0; 坐标增量X绝对值和 = 0; 坐标增量Y绝对值和 = 0; for (int j = 0; j < 方位角集合.Count; j+) 方位角集合j += 方位角改正数 * (j + 1); /计算坐标增量 double 平距 = Math.Sqrt(水平距离
19、平方集合j); double dx = 平距 * Math.Cos(方位角集合j); double dy = 平距 * Math.Sin(方位角集合j); 坐标增量X集合.Add(dx); 坐标增量Y集合.Add(dy); 坐标增量X和 += dx; 坐标增量Y和 += dy; 坐标增量X绝对值和 += Math.Abs(dx); 坐标增量Y绝对值和 += Math.Abs(dy); /计算闭合差 double 闭合差X = Ax + 坐标增量X和 - Bx; textBox11.Text = Convert.ToString(闭合差X); double 闭合差Y = Ax + 坐标增量Y和
20、- By; textBox12.Text = Convert.ToString(闭合差Y); /计算单位长度改正数 double X坐标单位长度改正数 = -闭合差X / 坐标增量X绝对值和; double Y坐标单位长度改正数 = -闭合差Y / 坐标增量Y绝对值和; /计算导线相对精度 int f = (int)(水平距离和 / Math.Sqrt(闭合差X * 闭合差X + 闭合差Y * 闭合差Y); Console.WriteLine("导线的相对精度为1/0", f); /计算每点坐标 double X = Ax; double Y = Ay; List<s
21、tring> 坐标x = new List<string>(); List<string> 坐标y = new List<string>(); for (int j = 0; j < 坐标增量X集合.Count; j+) X += 坐标增量X集合j + X坐标单位长度改正数 * Math.Abs(坐标增量X集合j); 坐标x.Add(Convert.ToString(X); Y += 坐标增量Y集合j + Y坐标单位长度改正数 * Math.Abs(坐标增量Y集合j); 坐标y.Add(Convert.ToString(Y); string JG
22、 = 坐标x0 +" "+ 坐标y0 +" "+ 坐标x1 +" "+坐标y1 +" "+ 坐标x2+" " + 坐标y2; textBox14.Text = JG; 4.3 高差求解 新建一个Windows应用程序,命令为“高差求解”,按图5布置控件。双击“确定”,输入一下程序。 图5 高差求解示意图编写如下代码:private void button1_Click(object sender, EventArgs e) double D = Convert.ToDouble(textBox1
23、.Text); double a = Convert.ToDouble(textBox2.Text); double i = Convert.ToDouble(textBox3.Text); double v = Convert.ToDouble(textBox4.Text); double h = D * Math.Sin(a) + (1 - 0.13) * D / .0 * D / .0 * Math.Cos(a) * Math.Cos(a) / 2.0 + i - v; textBox5.Text = h.ToString(); 4.4 计算方位角4.4.1 实训内容 方位角的取值为0-
24、360度。4.4.2 实现步骤设计 新建一个Windows应用程序,命名为“计算方位角”,按照如8布置控件。依次双击两个“确定”,输入以下程序: 图6 计算方位角编写如下代码: private void button1_Click(object sender, EventArgs e) double 后视边方位角 = Convert.ToDouble(textBox1.Text); double 左角 = Convert.ToDouble(textBox2.Text); double 方位角 = 后视边方位角 + 左角 + 180.0; if (方位角 >= 360.0) 方位角 -=
25、360.0; if (方位角 < 0.0) 方位角 += 360.0; textBox3.Text = Convert.ToString(方位角); 4.5 角度转换4.5.1 实训内容将输入的角度转换为弧度或弧度转换为角度。4.5.2 实现步骤设计 新建一个Windows应用程序,命名为“角度转换”,按照如8布置控件。依次双击两个“确定”,输入以下程序: 图7 角度转换编写如下代码:private void button1_Click(object sender, EventArgs e) /try catch用来捕获异常 try double jiao = double.Parse(
26、textBox1.Text.Trim();/从TextBox1框中获得值 j_h jh = new j_h();/新 建一个j_h的类 textBox2.Text = jh.JIAO_HUDU(jiao).ToString();/使用jh.JIAO_HUDU方法,在textBox2框中显示 catch MessageBox.Show("请输入数字", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); 4.6 计算坐标 建一个Windows应用程序,命名为“坐标求解”,按照如7布置控件。双击“确定”,输入
27、以下程序: 图8 计算坐标 编写如下代码:private void button1_Click(object sender, EventArgs e) double 左角 = Convert.ToDouble(textBox3.Text); double XA = Convert.ToDouble(textBox1.Text); double YA = Convert.ToDouble(textBox2.Text); double 已知方位角 = Convert.ToDouble(textBox4.Text); double 水平距 = Convert.ToDouble(textBox5.Te
28、xt); double 方位角 = 已知方位角 + 左角 + Math.PI; if (方位角 >= Math.PI * 2) 方位角 -= Math.PI; if (方位角 < 0.0) 方位角 += Math.PI; XA=XA+水平距*Math.Cos(方位角); YA = YA + 水平距 * Math.Sin(方位角); textBox6.Text = XA.ToString(); textBox7.Text = YA.ToString(); 五 调用程序在编程过程有些程序经常能用到,如果每次都重新编写,不仅费时费力而且数据冗长,本软件调用的程序如下: 1.导线class
29、 导线 /将ddd.mmss转为弧度 static public double DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang); int d = (int)ang; int m = (int)(ang * 100) - d * 100; double s = ang * 10000 - m * 100 - d * 10000; return (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; /计算方位角,返回弧度值 public s
30、tatic double 方位角(double x1, double y1, double x2, double y2) double deltX = x2 - x1; double deltY = y2 - y1; double angle = Math.PI * 0.5; if (Math.Abs(deltX) > 0.) angle = Math.tn2(deltY, deltX); if (angle < 0) angle += Math.PI; if (deltY < 0.0) angle += Math.PI; return angle; /计算坐标返回已知点到计
31、算点的方位角 public static double 坐标double x0, double y0, double 左哩角, double 水平距离, double 已知方位角, out double x, out double y) double 方位角 = 已知方位角 + 左哩角 + Math.PI; /将方位角调獭整到0到2D之间 if (方位角 >= Math.PI * 2) 方位角 -= Math.PI * 2; if (方位角 < 0.0) 方位角 += Math.PI * 2; x = x0 + 水平距离 * Math.Cos(方位角); y = y0 + 水平距离
32、 * Math.Sin(方位角); return 方位角; /根据Y后边的方位角与左角,计算前进边的方位角 public static double 方位角(double 后视边方位角, double 左角) double 方位角 = 后视边方位角 + 左角 + Math.PI; /将方位角调整到0到2D之间 if (方位角 >= Math.PI * 2) 方位角 -= Math.PI * 2; if (方位角 < 0.0) 方位角 += Math.PI * 2; return 方位角; 2.将度分秒转换为度public class cejiao_jiao public doubl
33、e cj_j(double jiao) jiao = Math.AAbs(jiao); int du = (int)(Math.Floor(jiao); jiao = (jiao - du) * 100; int fen = (int)(Math.Floor(jiao); jiao = (jiao - fen) * 100; int miao = (int)(Math.Floor(jiao); jiao = du + fen / 60 + miao / 3600; return jiao; 3.将度分秒转换为秒数public class cejiao_jiaomiao public doubl
34、e cj_j(double jiao) jiao = Math.AAbs(jiao); int du = (int)(Math.Floor(jiao); jiao = (jiao - du) * 100; int fen = (int)(Math.Floor(jiao); jiao = (jiao - fen) * 100; int miao = (int)(Math.Floor(jiao); jiao = du * 3600 + fen * 60 + miao; return jiao; 4.将弧度转化为度分秒public class h_j public double HUDU_to_JIAODU(double dd) double a = dd; a = a * 57.23; int d = (int)System.Math.Floor(a); a = a - d; a = a * 60; int f = (int)System
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 密闭空间安全责任制度
- 小学总务岗位责任制度
- 尾气污染责任制度
- 工作包干责任制度
- 工地赏罚责任制度
- 工程质量缺陷责任制度
- 化工生产现场技术员岗前评优考核试卷含答案
- 飞机桨叶型面仿形工岗前技能竞赛考核试卷含答案
- 呼吸治疗师成果评优考核试卷含答案
- 再生物资加工处理工岗前基础晋升考核试卷含答案
- 2025年全国低压电工证理论考试笔试试题(100题)附答案
- 外贸代理合同范本及模板
- 学校心理健康教育整改措施
- GB/T 15934-2024电器附件电线组件和互连电线组件
- 2019年广西桂林市中考数学试卷
- 三月的桃花心中开混声合唱谱
- 智慧路灯综合解决方案
- 《大学生心理健康》教案-自我意识课件
- 500字作文标准稿纸A4打印模板-直接打印
- 生物化学英文版课件:Chapter 6 Enzyme catalysis
- 慢性病健康管理规范
评论
0/150
提交评论