测绘程序设计(vs2008)实验报告--文件操作

上传人:xins****2008 文档编号:109974781 上传时间:2019-10-28 格式:DOCX 页数:9 大小:102.93KB
返回 下载 相关 举报
测绘程序设计(vs2008)实验报告--文件操作_第1页
第1页 / 共9页
测绘程序设计(vs2008)实验报告--文件操作_第2页
第2页 / 共9页
测绘程序设计(vs2008)实验报告--文件操作_第3页
第3页 / 共9页
测绘程序设计(vs2008)实验报告--文件操作_第4页
第4页 / 共9页
测绘程序设计(vs2008)实验报告--文件操作_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《测绘程序设计(vs2008)实验报告--文件操作》由会员分享,可在线阅读,更多相关《测绘程序设计(vs2008)实验报告--文件操作(9页珍藏版)》请在金锄头文库上搜索。

1、测绘程序设计(VC.net)上机实验报告(Visual C+.Net)实验5 文 件班 级: 学 号: 姓 名: 序 号: 二零一零年四月实验5 文 件一、实验目的 掌握文件对话框的使用方法。 掌握C+文件操作的一般步骤及实现方法。 了解MFC文件操作的特点及使用方法。二、实验内容1. 编制简单的Cass数据文件进行数据整理的程序。整理后的数据文件中要求无重复点数据,且数据按点号大小的升序进行排序。要求整理后的数据按与原始数据文件同样的格式保存为另外一个文件要求: a.用SaveFileDialog和OpenFileDialog控件获取文件打开或保存的文件名。b.自定义一个测量点数据结构体,其

2、元素包括:点号,编码,X,Y,Hc.用文本框显示原始数据和整理后的数据d.按编程规范进行编码设计思路: 1) 自定义一个测量点数据结构体,其元素包括:点号,编码,X,Y,H2) 定义一个分割函数用来分割数据3) 打开文件,将测量点的数据值赋给点的结构体数组4) 通过比较结构体元素的异同删除重复点,获得新的总点数5) 按点号大小的升序排列6) 将新排好的数据输出到另一个文本框中,并保存于文件中。界面设计: 共2个文本框、2个Group Box控件、2个命令按钮。IDMultilineWant Return添加变量名IDC_EDITPriDataTrueTruestrPriDataIDC_EDIT

3、TidyDataTrueTruestrTidyData 具体见运行程序。主要代码: FileDlg.cpp /定义点的结构体#define POINT struct pointPOINTint 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(dlg

4、File.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) strPriDa

5、ta+=_T(rn);sf.Close();/整理原始数据并在右边编辑框中输出/UpdateData(TRUE);int iLine;/分行并存入字符串数组CString *pstrLine=SplitString(strPriData,n,iLine);int iTotalPoint; /总点数CString *strTmp=NULL; int n;iTotalPoint = _ttoi(pstrLine0); /第一行为总点数 if(iTotalPoint!=iLine-1)MessageBox(_T(数据格式有误);POINT *pPoint=new POINTiTotalPoint;

6、/结构体指针,指向点结构体/逐行用Split函数分离,给点结构体赋值for(int i=0;iiTotalPoint;i+)strTmp = SplitString(pstrLinei+1, ,n);pPointi.iDotmark = _ttoi(strTmp0);pPointi.strCode = strTmp1;pPointi.X = _tstof(strTmp2);pPointi.Y = _tstof(strTmp3);pPointi.Z = _tstof(strTmp4);if(strTmp!=NULL)/释放内存delete strTmp;strTmp=NULL;if(strTmp

7、!=NULL)/释放内存delete strTmp;strTmp=NULL;/删除重复点for(int i=0;iiTotalPoint;i+)for(int j=i+1;jiTotalPoint;j+)if(pPointi.iDotmark =pPointj.iDotmark)/delete pPoint;for(int k=j;kiTotalPoint-1;k+)pPointk=pPointk+1;iTotalPoint-; /按点号的升序排列/*POINT min=pPoint0;*/for(int i=0;iiTotalPoint;i+)for(int j=i+1;jpPointj.i

8、Dotmark)POINT t=pPointi;pPointi=pPointj;pPointj=t;/输出调整后的数据strTidyData.Format(_T(%drn),iTotalPoint);CString strOutput;for(int i=0;iiTotalPoint;i+)strOutput.Format(_T(%d,%s,%f,%f,%frn),pPointi);strTidyData=strTidyData+strOutput;UpdateData(FALSE);/释放内存if(pPoint!=NULL)delete pPoint;pPoint=NULL;void CFi

9、leDlg:OnBnClickedSavefile()/ TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);CFileDialog dlgFile(FALSE,_T(txt),NULL,OFN_EXPLORER,_T(文本文件)|*.txt);if(dlgFile.DoModal()=IDCANCEL) return;CString strFileName=dlgFile.GetPathName();setlocale(LC_ALL,); CStdioFile sf;if(!sf.Open(strFileName, CFile:modeCreate|CFile:mode

10、Write) return;sf.WriteString(strTidyData);sf.Close(); CString *CFileDlg:SplitString(CString str, char split, int& iSubStrs) int iPos = 0; /分割符位置 int iNums = 0; /分割符的总数 CString strTemp = str; CString strRight; /先计算子字符串的数量 while (iPos != -1) iPos = strTemp.Find(split); if (iPos = -1) break; strRight =

11、 strTemp.Mid(iPos + 1, str.GetLength(); strTemp = strRight; iNums+; if (iNums = 0) /没有找到分割符 /子字符串数就是字符串本身 iSubStrs = 1; return NULL; /子字符串数组 iSubStrs = iNums + 1; /子串的数量= 分割符数量+ 1 CString* pStrSplit; pStrSplit = new CStringiSubStrs; strTemp = str; CString strLeft; for (int i = 0; i iNums; i+) iPos =

12、 strTemp.Find(split); /左子串 strLeft = strTemp.Left(iPos); /右子串 strRight = strTemp.Mid(iPos + 1, strTemp.GetLength(); strTemp = strRight; pStrSpliti = strLeft; pStrSplitiNums = strTemp; return pStrSplit;运行结果:操作过程:单击“打开原始数据”,选择原始数据所在的文本文件,自动输出原始数据及整理后的数据,单击“保存整理后的数据”,选择保存路径,确定文件名,单击保存即可。总 结这次实验主要是文件的打开与保存,老师在这方面讲的很详细,给的相关例子也比较多,所以文件的打开和保存并不是主要的难点了,排序,删除重复点成了我们主要的难点。本次实验还是出现了很多问题,当我把程序写好,调试通过,运行时出现了如下错误:启用监视有:这两个变量我是定义过的,而且也用分割函数为其赋值了,很纳闷,请教同学才知道,关闭文件后我就调用了UpdateData(TRUE)函数,打开文

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号