测量程序设计资料.docx
- 文档编号:12485428
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:22
- 大小:266.66KB
测量程序设计资料.docx
《测量程序设计资料.docx》由会员分享,可在线阅读,更多相关《测量程序设计资料.docx(22页珍藏版)》请在冰豆网上搜索。
测量程序设计资料
测量程序设计实习报告
姓名:
班级:
学号:
教师评语:
日期:
二零一五年十月
实验名称:
使用C#开发环境建立测量程序框架
一、实验的目的与任务:
(1)学会用C#窗体程序开发环境建立应用程序框架方法
(2)学会使用常见的Windows控件
(3)根据自身需要设计一个测量程序界面
二、实验的过程与步骤:
启动程序,选择C#开发设置
新建项目
以学号命名
进入集成开发环境:
要求掌握利用C#程序开发平台掌握windows窗体开发程序的步骤。
所有控件均有name属性,利用name属性可调用控件。
掌握以下控件的使用方法:
按钮控件
按钮(Button)是用户以交互方式控制程序运行的控件之一
主要属性:
(1)Text属性
设置显示在按钮表面上的文字,用于说明该按钮的作用。
如果Text属性值为“开始(&S)”,程序运行时当用户按下组合键Alt+S的时候,相当于鼠标单击这个按钮。
(2)Enabled属性
设置按钮是否可用;
程序运行期间Enabled属性值为False时,按钮表面将显示成暗淡字体的样式,这时按钮暂时不起作用(这样做的目的通常是为了防止误操作)
(3)Visible属性
设置按钮的可见性,
Visible属性值为True时,按钮是可见的;
Visible属性值为False时,按钮不可见。
文本控件
标签(Label)、文本框(TextBox)和富文本框(RichTextBox)
1.Label
Label控件主要用于通过其Text属性显示文本信息
程序设计时一般只使用其属性,常用属性如下:
属性
意义
默认值
Text
标签中显示的文本内容
控件名称
Font
显示文本的字体、字号和字形
父控件的Font属性
BackColor
背景颜色
Transparent(透明)
ForeColor
前景颜色,即显示文本的颜色
ControlText(控件颜色)
BorderStyle
边框样式
None(无边框)
Image
标签的背景图片
无
AutoSize
根据文字的内容多少和字号大小自动调整自身的尺寸
True
Enabled
控件是否可用
True
Visible
控件是否可见
True
例:
创建如下图所示窗体程序,程序运行时显示简单的文本信息。
2.TextBox控件
程序运行期间,通过它的Text属性既可显示文本信息,又可以让用户通过键盘、鼠标等在文本框中直接输入并修改文字信息,还可以在文本框中使用剪切、复制、粘贴等操作。
属性
意义
Text
输入到文本框中的字符
PasswordChar
用来替换在单行文本框中输入文本的密码字符(仅在Multiline为False时有效)
Multiline
若为True,则允许用户输入多行文本信息
ScrollBars
当Multiline属性为True时,指定文本框是否显示滚动条
WordWrap
当Multiline属性为True,并且一行的宽度超过文本框宽度时,是否允许自动换行
MaxLength
允许输入到文本框中的最大字符数,默认值为32767
SelectedText
文本框中被选择的文本(程序运行时设置)
SelectionLength
被选中文本的字符数(程序运行时设置)
SelectionStart
文本框中被选中文本的开始位置(程序运行时设置)
ReadOnly
设置文本框是否为只读,默认值为False
CharacterCasing
是否自动改变输入字母的大小写,默认值为Normal,其余选项有Lower和Upper
CausesValidation
若设置为True(默认值),控件获得焦点时,将会触发Validating和Validated事件
事件
意义
Enter
成为活动控件时发生
GetFocus
控件获得焦点时发生(在Enter事件之后发生)
Leave
从活动控件变化不活动控件时发生
Validating
在控件验证时发生
Validated
在成功验证控件后发生
LostFocus
控件失去焦点后发生(在Leave事件之后发生)
KeyDown
文本框获得焦点,并且有键按下时发生
KeyPress
文本框获得焦点,并且有键按下然后释放时发生(在KeyDown事件之后发生)
KeyUp
文本框获得焦点,并且有键按下然后释放时发生(在KeyPress事件之后发生)
TextChanged
文本框内的文本信息发生改变时发生
方法
意义
AppendText()
在文本框当前文本的末尾追加新的文本
Clear()
清除文本框中的全部文本
Copy()
将文本框中被选中的文本复制到剪贴板
Cut()
将文本框中被选中的文本移动到剪贴板
Paste()
将剪贴板中的文字内容复制到文本框中从当前位置开始的地方,但不清除剪贴板
Focus()
将文本框设置为获得焦点
Select()
在文本框中选择指定起点和长度的文本
SelectAll()
在文本框中选择所有的文本
DeselectAll()
取消对文本框中所有文本的选择
(1)Multiline属性和WordWrap属性
Multiline属性为False,文本框的高度无法改变,只能输入单行文本。
Multiline属性为True,文本框内可以输入多行文本,当文本长度超过文本框宽度并且WordWrap属性为True时,可以自动换行。
按Enter键可以强制换行。
(演示)
(2)ScrollBars属性(演示)
决定文本框是否带有滚动条,有4个选项:
None没有滚动条
Horizontal只有水平滚动条
Vertical只有垂直滚动条
Both同时拥有水平滚动条和垂直滚动条
(3)SelectionLength、SelectionStart、SelectedText属性
这三个属性只能程序运行期间设置,用来标识用户在文本框内选中的文字,
程序运行期间,用户可以通过在文本框内的鼠标、键盘操作,设置这三个属性的值,也可以通过赋值语句为它们赋值。
设置了SelectionStart和SelectionLength属性之后,被选中的文字就会自动地保存到SelectedText属性中。
(演示)
(4)PassWordChar属性
当文本框用来接收输入的密码时,为了避免旁观者在界面上看到密码原文,可以用PassWordChar属性来设置替代显示字符,PasswordChar属性仅当MultiLine属性为False时才有效。
(演示)
(5)TextChanged事件
用户向文本框输入新的内容,或程序对文本框的Text属性赋值,从而改变Text属性原值时,将触发TextChanged事件。
用户每输入一个字符,就会触发一次TextChanged事件。
(6)KeyPress、KeyDown、KeyUp事件
当文本框获得焦点时,用户按下并释放键盘上的某个字符键,就会触发KeyPress事件,并返回一个参数KeyPressEventArgse到该事件过程中,e.KeyChar属性即该键所代表的Unicode码。
KeyDown和KeyUp事件返回到事件过程的参数是KeyEventArgse,其中e.KeyValue属性代表的是键位置码。
键盘上的每个键都有自己的键位置码,包括那些不会产生Unicode码的键(如Shift、Alt、Ctrl等)。
(7)焦点事件
一个窗体上可以载有多个控件,但任何时刻最多只允许一个控件能够接受用户的交互操作。
这个能接受交互操作的控件称为“拥有焦点”。
鼠标单击窗体上的某个控件,可以使它获得焦点;
利用键盘上的Tab键,可以使焦点在不同对象之间按TabIndex属性指定的顺序依次转移(如果某个对象的TabStop属性设置为False,利用Tab键转移焦点时将跳过该对象)。
当文本框获得焦点时,将触发Enter事件;失去焦点时,将依次触发Leave事件、Validating事件、Validated事件和(文本框的操作中可以利用这些事件过程来对数据更新进行验证和确认)。
(演示)
(8)Copy()、Cut()、Paste()方法
复制、剪切、粘贴是文本编辑中最常用到的方法。
Copy()方法:
把文本框中被选择的文本复制到剪贴板;
Cut()方法:
把文本框中被选择的文本移动到剪贴板,文本框中原先被选择的文本被删除;
Paste()方法:
将剪贴板中的文字粘贴到文本框中;
例:
创建如下图所示的Windows窗体程序,程序运行在文本框txtSour中输入若干文字信息,然后用鼠标选择其中的一段文字,选择之后,单击“复制”按钮将被选中的文字复制到txtTarg中。
代码如下:
选择控件和分组控件
1.单选按钮(RadioButton)
(1)Checked属性
表示单选按钮是否已被选中;
选中时Checked属性值为true;
未选中时Checked属性值为False。
当一个单选按钮被选中时,同一组内的其它单选按钮均为未选中状态。
(2)Appearance属性
用来指定单选按钮的外观。
值为Normal时外观为圆形;
值为Button时外观显示成按钮的形状,被选中时显示为按下状态,未选中时为弹起状态。
(3)CheckedChanged事件
用户在一组单选按钮中改变原先选中对象时,触发该事件;
(4)Click事件
每次单击单选按钮时,都会触发Click事件。
如果连续多次单击同一个单选按钮,最多只能改变Checked属性一次。
2.复选框(CheckBox)
(1)CheckState属性
复选框有3种状态:
(选中)CheckState属性值为Checked
(未选中)CheckState属性值为Unchecked
(无效)CheckState属性值为Indeterminate
一组逻辑功能相关的复选框中,允许任意数量的复选框被选中,甚至全部选中,或者全部不选。
一个复选框被选中与否,对同一组内的其它复选框状态没有任何影响。
(2)ThreeState属性
ThreeState属性值为true时,允许复选框的CheckState属性有上述3种状态;当属性置为false时,CheckState属性就只能有Checked(选中)和Unchecked(未选中)两种状态。
(3)CheckedChanged事件
当复选框的Checked属性改变时,就会触发该事件。
但当ThreeState属性值为true时,单击复选框不会改变Checked属性。
3.群组框控件(GroupBox)的“容器”作用
窗体上绘制一个GroupBox控件,然后在它的边框线以内绘制单选按钮或其它控件,就把它们装入了同一个容器。
窗体上的空白位置创建控件,然后把它拖放到GroupBox的边框线内,也可以将其装入同一个容器。
设计阶段判断一个控件是否装入GroupBox的最简单方法,就是在窗体上拖动GroupBox。
如果线框内的控件跟随移动,则说明它确实装入了GroupBox。
装入同一个GroupBox的单选按钮,就构成了一个逻辑上独立的组,单击其中的任意一个单选按钮,使其处于选中状态,组内的其它对象均处于未选中状态,对它们的操作不会影响到当前GroupBox以外的单选按钮。
列表选择控件
列表选择控件用来实现较多个选项的交互式选择操作。
列表框(ListBox)、复选列表框(CheckedListBox)、组合框(ComboBox)
1.列表框(ListBox)
列表框以列表形式显示多个数据项,供用户选择。
用户只能从列表中选择已有的数据项,而不能直接修改其中的内容。
如果列表中的数据项较多,超过设计时给定的长度,不能一次全部显示,就会自动添加滚动条。
属性
意义
Items
列表框中所有选项的集合,利用这个集合可以增加或删除选项
SelectedIndex
列表框中被选中项的索引(从0起算)。
当多项被选中时,表示第一个被选中的项
SelectedIndices
列表框中所有被选中项的索引(从0起算)集合
SelectedItem
列表框中当前被选中的选项。
当多个选项被选中时,表示第一个被选中的项
SelectedItems
列表框中所有被选中项的集合
SelectionMode
列表框的选择模式(None、One、MultiSimple、MultiExtended)
Text
写入时,搜索并定位在与之匹配的选项位置;读出时,返回第一个被选中的项
MultiColumn
是否允许列表框以多列的形式显示(true表示允许多列)
ColumnWidth
在列表框允许多列显示的情况下,指定列的宽度
Sorted
若为true,则将列表框的所有选项按字母顺序排序;否则按加入的顺序排列
事件和方法
意义
SelectedIndexChanged事件
被选中项的索引值改变时发生
ClearSelected()方法
清除列表框中所有被选中的选项,无返回值
FindString()方法
查找列表框中第一个以指定字符开头的选项,返回该选项的索引(从0起算)
GetSelected()方法
若列表框中指定索引值的选项被选中,则返回true值,否则返回false
SetSelected()方法
设置或取消对列表框中指定索引处的选项的选择,无返回值
(1)Items属性
Items属性是一个string类型的数组,数组中的每一个元素对应着列表框中的一个选项,用下标(索引)值来区分不同的元素。
下标编号从0开始,最后一个元素的下标为Items.Count-1。
Items属性即可以在通过属性窗口再设计阶段设置,也可以在运行过程中调用Add、Remove、Insert方法修改;
(2)SelectedIndices属性
该属性是一个int类型的数组,数组中每一个元素对应列表框中被选中的一个项的下标(索引)值,只能程序运行期间设置或引用,设计阶段无效。
(3)SelectionMode属性
该属性用于设置列表框选项的选择模式:
None禁止选择列表框中的任何选项
One一次只能在列表框中选择一个选项,默认值
MultiSimple简单多项选择。
MultiExtended扩展多项选择。
按住Ctrl键,鼠标单击可以选定多个选项,再次单击则取消选择;按住Shift键,鼠标单击可选择一个连续区间内的多个选项。
(4)GetSelected()方法
该方法用于测试列表框中一个特定选项是否被用户选中,括号内的参数是选项的索引值。
当listBox1中某项被选中,GetSelected方法测试可以得到true值;当listBox1中指定项未选中,GetSelected()方法测试得到false值。
(5)SetSelected()方法
该方法用于在程序运行期间设置或取消对列表框中特定选项的选择,括号内的参数是选项的索引值。
listBox1.SetSelected(n,true)可以选中列表框中的第n个选项;listBox1.SetSelected(n,false)取消对列表框第n个选项的选择;
2.复选列表框(CheckedListBox)
CheckedListBox兼具列表框与复选框的功能,它提供一个项目列表,列表中的每一项都是一个复选框。
当窗体上需要的复选框较多,或者需要在程序运行时动态地决定有哪些选项时,使用CheckedListBox比较方便
名称
意义
CheckOnClick属性
若为true,第一次单击复选列表框中的选项时即改变其状态
CheckedItems属性
复选列表框中所有被选中项的集合
CheckedIndices属性
复选列表框中所有被选中项的索引(从0起算)的集合
SetItemChecked方法
设置或取消对复选列表框中指定索引处的选项的选中状态,无返回值
SetSelected方法
设置或取消对复选列表框中指定索引处的选项的选择,不改变复选框状态
3.组合框(ComboBox)
组合框提供一个显示多个选项的列表,供用户以交互方式选择。
在未选择状态,组合框的可见部分只有文本编辑框和按钮。
当用户单击文本编辑框右端的箭头按钮时,列表展开,用户可以在其中进行选择。
当用户完成选择后,列表就会自动收折起来。
组合框不允许在列表中选择多个选项,但可以在它的文本编辑框内输入新的选项。
(1)DropDownStyle属性
该属性用来设置组合框的样式,:
DropDown单击展开列表,用户可以在控件的文本编辑框输入文字
DropDownList单击展开列表,用户不能在控件的文本编辑框输入文字
Simple列表框的高度可以在设计阶段由程序员指定,与文本编辑框一起显示在窗体上,但不能收起或拉下。
(2)向控件的列表中添加选项的方法
Items.Add(objitem);//新添加的选项追加在列表的末尾
Items.AddRange(object[]items);//新添加的选项数组追加在列表末尾
Items.Insert(intindex,objitem);//按index指定的索引位置插入新的选项
(3)从控件的列表中移除选项的方法
Items.Remove(objitem);//将列表中指定的选项移除
Items.RemoveAt(intindex);//将列表中指定索引的项移除
三、程序运行效果
该窗口是一个简易的附合导线平差功能实现的窗口界面,界面中“未知点数”为所要求的未知点坐标的个数,“已知点输入”为附合导线平差时的已知坐标即定向坐标,“添加已知点”按钮其作用是点击添加上面输入的已知点数据到表格控件中,“开始计算”按钮其作用是点击开始进行计算。
界面内容如下图所示:
四、本实验心得体会
实验名称:
导线计算程序设计及粗差探测
一、实验的目的与任务:
(1)掌握方位角计算的程序设计方法
(2)掌握符合导线、闭合导线、支导线计算的程序设计方法
(3)理解粗差探测的程序设计方法
二、实验的设计与开发步骤:
导线测量是控制测量中常用的方法之一,符合导线是导线布设的一种形式。
在导线外业测量完成后,需要进行近似平差,以求得每个导线点的坐标值。
导线平差计算数据多,程序繁琐,采用手工计算不仅工作量大,且很容易出错,VisualC#是目前进行windows程序开发广泛应用的工具之一,它功能强大,并且具有可视性和面向对象程序设计的优点,利用VisualC#开发导线平差应用程序,界面友好,用户使用方便。
1.符合导线平差步骤
(1)计算角度闭合差,判断误差是否超限,若在允许范围则进行调整(包括计算角度改正数、改正数分配和改正后的角度);
(2)计算导线边方位角;
(3)计算坐标增量;
(4)计算导线全长闭合差,判断闭合差是否超限,若在允许范围内则进行调整
(包括计算坐标增量改正值,改正数分配和改正后的坐标增量);
(5)计算导线点坐标。
2.导线平差计算公式
角度闭合差:
方位角的推算:
坐标增量:
坐标闭合差:
各边的坐标增量改正数:
导线的精度:
3.程序界面的设计
根据平差过程中使用到的已知数据和平差的输出数据,设计相应的程序界面,界面的能满足数据的输入、输入数据的显示、计算数据的显示等要求,根据上述要求设计界面如下:
界面包括一个9个输入框、12个标签、2个命令按钮、1个表格控件。
界面中各输入框、按钮功能:
“未知点数”:
用来输入待求坐标的个数。
“已知点输入”:
用来输入已知点数据。
“添加已知点”按钮:
用来将已知点数据加入到右边表格中。
“开始计算”按钮:
点击开始进行平差计算。
三、程序运行及数据测试效果
测试数据
已知点坐标:
A(1318.8830,1009.9262)B(920.7200,1306.9706)
C(967.7081,3420.9362)D(1385.6557,3715.5052)
从图中提取的坐标:
1.(1024.5886,1883.7317)2.(908.3546,2425.8376)
3.(1234.7989,29333.2884)
计算结果如图所示:
四、本实验心得体会
实验名称:
测量数据库的建立
一、实验的目的与任务:
(1)掌握利用Access或SQLserver建立测量数据库的基本方法
(2)掌握利用C#编程连接数据库,并进行数据操作的方法
二、实验的设计与开发步骤:
1.设计数据库管理程序界面并实现添加、查询、修改、删除等功能
(1)创建窗体项目
打开“新建项目”对话框,选左边“已安装模板”栏的“其他语言\Visual C#”项,再选右边“模板”栏的“Windows应用程序”模板。
选择磁盘卷和父目录位置后,输入项目名称“测量程序数据库”按“确定”按钮关闭对话框。
(2)修改窗口属性
修改窗口的Text属性,将窗口的Text属性值改为“观测数据管理”
(3)添加控件,修改控件相应属性
往窗口中添加相应控件,并修改控件相应属性,在此窗体应用程序中用到的控件有Label控件、命名按钮、文本框和表格控件。
设计界面如下:
功能要求:
点击“添加/修改”将数据写入CLDATA数据库,GCZ表中
功能要求:
实现通过测站点,前视点,或后视点查询观测值
2.建立数据库,并向数据库添加数据
本次实验使用office办公套件Access2007建立数据库,并利用ADO数据库模型建立与数据库的连接,实现对数据库的操作。
启动Access2007新建数据库,命名为“CLDATA”,在数据库中新建表,表名称为“GCZ”,
字段有“CZ”(测站),“QS”(前视),“HS”(后视),“SPJ”(水平角),“SZJ”(竖直角),“HD”(平距),“SD”(斜距),“REM”(备注)。
建立的数据库和数据表如下图所示:
3.添加代码
在窗体中添加代码,实现上述功能。
三、程序运行及数据测试效果
测试数据
已知点坐标:
A(1318.8830,1009.9262)B(920.7200,1306.9706)
C(967.7081,3420.9362)D(1385.6557,3715.5052)
从图中提取的坐标:
1.(1024.5886,1883.7317)2.(908.3546,2425.8376)
3.(1234.7989,29333.2884)
计算结果如图所示:
四、本实验心得体会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测量 程序设计 资料