- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《测绘程序设计(VC.net)》
上机实验报告
(Visual C++.Net)
实验5 文 件
班 级:
学 号:
姓 名:
序 号:
二零一零年四月
实验5 文 件
一、实验目的
掌握文件对话框的使用方法。
掌握C++文件操作的一般步骤及实现方法。
了解MFC文件操作的特点及使用方法。
二、实验内容
1. 编制简单的Cass数据文件进行数据整理的程序。整理后的数据文件中要求无重复点数据,且数据按点号大小的升序进行排序。要求整理后的数据按与原始数据文件同样的格式保存为另外一个文件
要求:
a.用SaveFileDialog和OpenFileDialog控件获取文件打开或保存的文件名。
b.自定义一个测量点数据结构体,其元素包括:点号,编码,X,Y,H
c.用文本框显示原始数据和整理后的数据
d..按编程规范进行编码
设计思路:
自定义一个测量点数据结构体,其元素包括:点号,编码,X,Y,H
定义一个分割函数用来分割数据
打开文件,将测量点的数据值赋给点的结构体数组
通过比较结构体元素的异同删除重复点,获得新的总点数
按点号大小的升序排列
将新排好的数据输出到另一个文本框中,并保存于文件中。
界面设计:
共2个文本框、2个Group Box控件、2个命令按钮。
IDMultilineWant Return添加变量名IDC_EDITPriDataTrueTruestrPriDataIDC_EDITTidyDataTrueTruestrTidyData 具体见运行程序。
主要代码:
FileDlg.cpp
//定义点的结构体
#define POINT struct point
POINT
{
int iDotmark;
CString strCode;
double X;
double Y;
double Z;
};
void CFileDlg::OnBnClickedOpenfile()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlgFile(TRUE,_T(txt),NULL,
OFN_ALLOWMULTISELECT|OFN_EXPLORER,
_T((文本文件)|*.txt));
if(dlgFile.DoModal()==IDCANCEL) return;
CString strFileName=dlgFile.GetPathName();
setlocale(LC_ALL,);
CStdioFile sf;
if(!sf.Open(strFileName, CFile::modeRead)) return;
CString strLine;
strPriData.Empty();
BOOL bEOF=sf.ReadString(strLine);
while(bEOF)
{
strPriData+=strLine;
bEOF=sf.ReadString(strLine);
if(bEOF) strPriData+=_T(\r\n);
}
sf.Close();
//整理原始??据并在右边编辑框中输出
//UpdateData(TRUE);
int iLine;
//分行并存入字符串数组
CString *pstrLine=SplitString(strPriData,\n,iLine);
int iTotalPoint; //总点数
CString *strTmp=NULL;
int n;
iTotalPoint = _ttoi(pstrLine[0]); //第一行为总点数
if(iTotalPoint!=iLine-1)
MessageBox(_T(数据格式有误));
POINT *pPoint=new POINT[iTotalPoint]; //结构体指针,指向点结构体
//逐行用Split函数分离,给点结构体赋值
for(int i=0;iiTotalPoint;i++)
{
strTmp = SplitString(pstrLine[i+1], ,,n);
pPoint[i].iDotmark = _ttoi(strTmp[0]);
pPoint[i].strCode = strTmp[1];
pPoint[i].X = _tstof(strTmp[2]);
pPoint[i].Y = _tstof(strTmp[3]);
p
文档评论(0)