测绘程序设计实习报告.docx
- 文档编号:12472617
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:12
- 大小:142.42KB
测绘程序设计实习报告.docx
《测绘程序设计实习报告.docx》由会员分享,可在线阅读,更多相关《测绘程序设计实习报告.docx(12页珍藏版)》请在冰豆网上搜索。
测绘程序设计实习报告
测量程序设计实习报告
姓名:
XX
班级:
XXXX
学号:
XXXX
教师评语:
实验名称:
使用C#开发环境建立测量程序框架
一、实验的目的与任务:
(1)学会用C#窗体程序开发环境建立应用程序框架方法
(2)学会使用常见的Windows控件
(3)根据自身需要设计一个测量程序界面
二、实验的过程与步骤:
1、首先打开visualstudio2010,选择文件→新建→项目。
在弹出的对话框中右栏一侧选择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进行调节)应该分为四种情况,但是考虑到分母不为0,因此应该在加一种情况,即导线与y轴重合。
3、然后根据边长,根据方位角,公式
进行坐标推算。
三、程序运行及数据测试效果
四、本实验心得体会
在掌握一定的语法规则后,要多应用。
另外就是在遇到问题时,可以去网上查找,这样不断反复,就会熟练使用某种语法。
实验名称:
测量数据库的建立
一、实验的目的与任务:
(1)掌握利用Access或SQLserver建立测量数据库的基本方法
(2)掌握利用C#编程连接数据库,并进行数据操作的方法
二、实验的设计与开发步骤:
1、首先在窗体加载时就要链接access数据库,这样当打开窗体时数据就可以加载进去。
首先就是使用OleDbConnection方法进行链接,然后用open方法打开数据库,在关闭窗体时,一定要在使用close关闭。
2、在链接数据库并打开以后,然后就是新建一个数据集DataSet,相当于数据库的副本,在c#中对数据库进行操作均相当于对这个副本进行操作。
然后写一个OleDbDataAdapter对象,使用sql语句对要用的数据中部分或全部内容进行选择,然后用Fill方法将数据库绑定到数据集中。
3、最后就是用Command执行sql语句命令。
3、程序运行及数据测试效果
4、本实验心得体会
数据库在之前是一个完全不知道的东西,通过这次实习,对数据库有了一个新的理解,数据库在测量程序中是必不可少的东西,在刚开始链接操作数据库时有很多问题,通过网上查找,询问老师基本得以解决。
附录一:
导线计算代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Collections;
usingSystem.Windows.Forms;
namespaceCLCX
{
publicpartialclassFORM1:
Form
{
publicstaticCLSJclsj=newCLSJ();
publicstaticintcount=0;
publicFORM1()
{
InitializeComponent();
}
privatevoid打开ToolStripMenuItem_Click(objectsender,EventArgse)
{
//在关闭clsj窗口后可以再次打开
if(clsj.IsDisposed==true)
{
clsj=newCLSJ();
clsj.MdiParent=this;
clsj.Show();
}
else
{
clsj.MdiParent=this;
clsj.Show();
}
}
privatevoid近似平差计算ToolStripMenuItem_Click(objectsender,EventArgse)
{
//坐标近似推算
introw=clsj.datag1.RowCount;
//1.方位角计算。
简单起见,两个已知点坐标为置于前两行.
//每段线的方位角编号和起点编号相同.
point[]p=newpoint[2];
p[0]=newpoint(Convert.ToDouble(clsj.datag1.Rows[0].Cells[4].Value),Convert.ToDouble(clsj.datag1.Rows[0].Cells[5].Value));
p[1]=newpoint(Convert.ToDouble(clsj.datag1.Rows[1].Cells[4].Value),Convert.ToDouble(clsj.datag1.Rows[0].Cells[4].Value));
ArrayListraw=newArrayList();
raw.Add(tool.fangweijiao(p[0],p[1]));
for(inti=1;i { raw.Add(Convert.ToDouble(raw[i-1])+tool.d2r(Convert.ToDouble(clsj.datag1.Rows[i].Cells[2].Value))-Math.PI); } //2.坐标推算 for(inti=2,j=1;i { 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); } } } publicclasspoint { publicdoubleX; publicdoubleY; publicpoint(doubleX,doubleY) { this.X=X; this.Y=Y; } } publicclasstool { publicstaticdoubled2r(doubled)//"度"转弧度 { intdegree,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; } publicstaticdoublefangweijiao(pointp1,pointp2)//方位角计算,返回弧度制结果 { doubler=0; doubledx,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)); returnr; } } } 数据库操作代码: usingSystem; usingSystem.Collections; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Data.OleDb; usingSystem.Windows.Forms; namespaceCLCX { publicpartialclassCLSJ: Form { publicCLSJ() { InitializeComponent(); } OleDbConnectionconn; OleDbDataAdapteradapt; DataSetdat; OleDbCommandbuild; privatevoidCLSJ_Load(objectsender,EventArgse) { //与数据库建立连接 stringstr_con="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Application.StartupPath+"\\cldata.mdb"; stringstr_load="select*fromcldata"; conn=newOleDbConnection(str_con); conn.Open(); dat=newDataSet(); adapt=newOleDbDataAdapter(str_load,conn); adapt.Fill(dat,"cldata"); datag1.DataSource=dat.Tables[0]; conn.Close(); } privatevoidbut_save_Click_1(objectsender,EventArgse) { try { stringstr_con="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Application.StartupPath+"\\cldata.mdb"; stringstr_load="select*fromcldata"; stringcommand; conn=newOleDbConnection(str_con); conn.Open(); dat=newDataSet(); adapt=newOleDbDataAdapter(str_load,conn); adapt.Fill(dat,"cldata"); datag1.DataSource=dat.Tables[0]; inti=datag1.RowCount; command="insertintocldata(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=newOleDbCommand(command,conn); intp=build.ExecuteNonQuery(); dat.Clear();//将数据集清空,刷新datagridview控件 conn.Close(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测绘 程序设计 实习 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)