已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微震监测数据处理系统软件详细设计说明书学生姓名 王建旭 学号 学生姓名 王智杰 学号 学生姓名 汤玉杰 学号 学生姓名 毕国兴 学号 专 业 电子信息科学与技术 年级 08级 指导教师 劳彩莲 职称 副教授 学 院 信息与电气工程学院 中国农业大学教务处制2011年 7月微震监测数据处理系统软件详细设计说明书目录1 目的32 代码框架描述32.1 源文件说明32.2 系统配置文件说明33 系统结构关系图44 单文档多视的创建与通讯 子模块 详细设计说明44.1 数据结构54.2 处理流程详细说明54.3 编码设计65 OpenGL子模块 详细设计说明75.1 数据结构85.2 处理流程详细说明105.3 部分重要编码设计105.3.1函数 SetGoal(float x,float y,float z,float color)115.3.2函数RenderScene()126 微震列表 子模块 详细设计说明126.1 数据结构136.2 处理流程详细说明136.3 编码设计187 SQL Server数据库 详细设计说明197.1 数据结构217.1.1 数据库信息模型:217.1.2数据库逻辑模型217.1.3数据库结构的详细设计217.2 数据库系统的建立227.2.1 数据库建立227.2.2表的建立和管理228 详细微震情报表 子模块 详细设计说明228.1 数据结构238.2 处理流程详细说明238.3 编码设计24微震监测数据处理系统详细设计说明书1 目的微震监测数据处理系统详细设计说明书旨在介绍该系统的详细过程,以及技术要点等内容。2 代码框架描述2.1 源文件说明源文件名称文件描述列表 子模块MyListView.cpp关联对应的窗口,响应窗口的消息datagrid.cpp关联数据库,显示数据库的信息ado.cpp关联数据库,从数据库读取信息详细信息 子模块MyDetialView.cpp关联对应的窗口,响应窗口消息波形图 子模块MyWaveView.cpp关联对应的窗口,响应窗口的消息三维图 子模块FractalTerrainView.cpp关联对应的窗口,响应窗口的消息FractTerrainMod.cpp绘制三维立体图算法文件2.2 系统配置文件说明MainFrm.cppweizhen.cppweizhenDoc.cppStdafx.cpp3 系统结构关系图4 单文档多视的创建与通讯 子模块 详细设计说明单文档多视图的创建,我们用的是静态切分窗口的方法。用到的主要数据结构是CSplitterWnd类,该类是用于实现对窗口的分割。将窗口切分成为四个子窗口,分别用于显示不同的内容,用到的函数是CSplitterWnd类的构造函数CreateStatic,还用到CSplitterWnd类的另一个函数CreateView为静态窗口填充视图,将窗口与视图联系起来为每一个子窗口关联一个View类用于对该窗口进行操作。单文档多视图之间的通讯是通过文档中的变量进行实时传输的。在某一个窗口中,通过文类的指针对文档中的变量进行修改完成窗口向文档的数据传送,并发送UpdateAllView消息对所有的窗口进行刷新,在其他窗口中响应Update消息函数完成文档向窗口的数据传送。4.1 数据结构在分割窗口时,定义了CSplitterWnd类的三个对象 m_splitter1,m_splitter2,m_splitter3用于创建切分窗口。定义了CRect 类的对象r用于获取当前窗口大小,根据窗口大小为子窗口设定区域。定义了CSize类的几个对象 Size, Size1, Size2,Size3,Size4,设定子窗口的大小。在窗口之间通讯时,在weizhenDoc文件中定义了CString类的对象m_zhenji,m_energy,m_fanwei,m_death,m_hurt,m_economy,m_work,m_jingdu,m_weidu,m_shendu,m_name,m_path用于传输从第一个窗口中向其他窗口传输信息。4.2 处理流程详细说明(1) 分割窗口定义CSplitterWnd类的对象调用CSplitterWnd类的构造函数CreateStatic进行窗口分割,分割成两行两列四个窗口调用CSplitterWnd类的CreateView填充窗口为每一个窗口创建一个类CMyListViewCMyWaveViewCFractalTerrainViewCMyDetailView基于CFormView类,并创建对话框基于CView类基于CFormView类,并创建对话框基于CFormView类,并创建对话框第二个窗口用于显示具体信息,关联CMyWaveView类第一个窗口用于连接数据库,关联CMyListView类第三个窗口用于显示微震波形数据,关联CMyDetailView类第四个窗口用于显示三维效果图形,关联CFractalTerrainView类(2)窗口通讯调用UpdateAllViews函数对所有的窗口进行刷新在FractalTerrainView文件中响应OnDraw函数在weizhenDoc文件中创建变量用于信息传输在MyListView文件中创建weizhenDoc的指针对文档中的变量进行修改在MyDetailView文件中响应OnUpdate函数创建weizhenDoc的指针修改该窗口的信息,用UpdateData函数书信控件信息在MyWaveView文件中响应OnUpdate函数创建weizhenDoc的指针修改该窗口的信息,用Invalidate函数刷新窗口显示创建weizhenDoc的指针修改该窗口的信息,进行重新三维图的绘制4.3 编码设计(1)、分割窗口主要函数函数简要说明MainFrm.cppOnCreateClient创建Client客户区窗口CreateStatic用来创建静态切分窗口SetColumnInfo用来为切分常客划分区域CreateView为静态切分的窗口的网格填充视图(2)、窗口通讯MyListViewView.cppOnOk用于响应按键UpdateAllViews用来发送消息刷新所有的窗口MyDetailView.cppOnUpdate用于刷新窗口ResetContent用来清除列表框的内容AddString用来向列表框添加信息UpdateData用来向控件传递数据MyWaveView.cppOnUpdate用于刷新窗口InvalidateFractalTerrainView.cppOnDraw用于绘制图形ResetContent用来清除列表框的内容AddString用来向列表框添加信息5 OpenGL子模块 详细设计说明 OpenGL (即开放性图形库 Open Graphics Library)是近几年发展起来的一个性能卓越的三维图形标准。OpenGL作为一个性能优越的图形应用程序设计界面(API),具有广泛的可移植性,它独立于硬件系统、操作系统和窗口系统。由于OpenGL能实现高性能的三维图形功能,这使得科学计算可视化,仿真可视化技术发展迅速。可视化系统不仅可以帮助技术人员形象直观地查看仿真结果,而且一定程度上可以提高设计水平,减少错误的发生。这里用OpenGL进行了三维电子地形图的制作。因为线划地图和实体地形图虽然具有一定的立体效果,但信息量不租,实用性不强,而三维真实感地形图能较逼真地反映外部真实世界,可它又缺乏动态特性。通常上述三种地形图的原始数据是提前作为文件存储起来的,这不仅在存储空间的占用方面付出了不小的开销,还要对这些数据再进行大量的采样计算,直接影响了地形生成的实时性。本文提出的一种动态地形仿真方法首先给出了层次细节简化思想的本质含义,然后利用分形理论静态拼嵌高度场数组,生成逼真程度很高的静态地形。5.1 数据结构/CFractalTerrainView为基于OpenGL的一个绘图窗口类,执行绘图操作。/class CFractalTerrainView : public CView /OpenGL画图模块继承了CView类BOOL renderCloudMap (); / 渲染天空背景纹理BOOL renderTeximageMap ();/ 渲染地形纹理BOOL renderFullImage ();/渲染全部图像,包括天空背景,地面纹理void SetGoal(float x,float y,float z,float color);/地震地点定位函数virtual CFractalTerrainView();/析构函数void drawSphere(GLfloat xx, GLfloat yy, GLfloat zz, GLfloat radius, GLfloat M, GLfloat N);/画球函数BOOL RenderScene();/场景的绘制和渲染函数BOOL SetupPixelFormat(void);/设置像素格式void SetLogicalPalette(void); / 设置逻辑调色板BOOL InitializeOpenGL(CDC* pDC);/ 初始化openGL场景/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CFractalTerrainView)protected:virtual void OnDraw(CDC* pDC); / overridden to draw this view/ Generated message map functionsprotected:/AFX_MSG(CFractalTerrainView)afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);/响应WM_CREATE消息afx_msg void OnSize(UINT nType, int cx, int cy);/ 响应WM_SIZE消息afx_msg void OnDestroy();/响应WM_DESTROY消息afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);/响应按键消息WM_KEYUPafx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);/响应按键消息WM_KEYDOWNafx_msg void OnCancelMode();afx_msg void OnCaptureChanged(CWnd *pWnd);/AFX_MSGDECLARE_MESSAGE_MAP()/CFractTerrainMod为基于Diamond-Square算法的地形模型类,为CFractalTerrainView调用/class CFractTerrainMod public:CFractTerrainMod();virtual CFractTerrainMod();#ifdef DEBUGvoid dump1DFractArray (float *, int);void dump2DFractArray (float *, int);#endif /* DEBUG */void fill1DFractArray (float *, int, int, float, float);void fill2DFractArray (float *, int, int, float, float);float *alloc1DFractArray (int);float *alloc2DFractArray (int);void freeFractArray (float *);void draw1DFractArrayAsLines (float *, int);void draw2DFractArrayAsLines (float *, int);void draw2DFractArrayAsTriangles (float *, int);void draw3DTriangle (float x1, float y1, float z1,float x2, float y2, float z2,float x3, float y3, float z3,float nx, float ny, float nz);void draw3DLine (float x1, float y1, float z1,float x2, float y2, float z2);void draw2DLine (float x1, float y1,float x2, float y2);float randnum (float min, float max);float avgEndpoints (int i, int stride, float *fa);float avgDiamondVals (int i, int j, int stride, int size, int subSize, float *fa);float avgSquareVals (int i, int j, int stride, int size, float *fa);int powerOf2 (int size);void genNormal (float x1, float y1, float z1,float x2, float y2, float z2,float x3, float y3, float z3, float *normal);5.2 处理流程详细说明设置地面数据建立地形算法类对象设置渲染模式OnDraw(pDC)RenderScene()glFlush()glClearColor()renderCloudMap();renderTeximageMap();renderFullImage()Gluperspective();glortho() .CFractTerrainMod m_FractMod;m_FractMod生成地形图设置背景色5.3 部分重要编码设计 画图类:主要函数名称简要描述函数的功能renderCloudMap ();渲染天空背景纹理renderTeximageMap()渲染地形纹理renderFullImage()渲染全部图像,包括天空背景,地理纹面OpenGL相关函数使用OpenGL这种API的画图函数RenderScene()场景绘制与渲染OnDraw()CView类的绘图函数OnCreat()响应WM_CREATE消息的函数Dimand-Square算法的实现类CFractalTerrain:主要函数名称简要描述函数的功能dump1DFractArray() dump2DFractArray()丢弃1维/2维地形数组dump1DFractArray()dump2DFractArray()渲染地形纹理freeFractArray()清空地形数组draw1DFractArrayAsLines()draw2DFractArrayAsLines()draw3DFractArrayAsLines()画1 维/2维/3维地形线数组avgDiamondVals()avgSquareVals()钻石四边形生成函数5.3.1函数 SetGoal(float x,float y,float z,float color)【功 能】在地形图上定位微震发生的位置,震级,深度。【参数】Float x(经度), Float y(纬度),Float z(深度),float color(震级)【返回值】空【使用说明】在绘图函数OnDraw(pDC)里面调用前置条件:zhenji=atof(pCurrentDoc-m_zhenji)/100;shendu=atof(pCurrentDoc-m_shendu)/10;jingdu=atof(pCurrentDoc-m_jingdu)/45;weidu=atof(pCurrentDoc-m_weidu)/22.5;即数据均从单文档中载入之后,就可以调用了 SetGoal(weidu,jingdu,shendu,zhenji);5.3.2函数RenderScene()【功 能】场景绘制和渲染【参数】无【返回值】空【使用说明】在绘图函数OnDraw(pDC)里面调用该函数定义了多种场景绘制模式,包括地形纹理的绘制(),天空背景纹理的绘制、三维线框地形的绘制和三维纹理地形的绘制。调用了renderTeximageMap()函数渲染地形调用了renderCloudMap()函数渲染天空背景纹理调用renderFullimage()函数渲染全部图像,包括天空背景,地面纹理以上函数不再赘述,详见附录代码部分6 微震列表 子模块 详细设计说明微震列表模块,用于显示微震的具体数据信息,并完成对微震信息的筛选工作。该模块主要实现了数据库与应用程序的链接,DATAGRID的创建和DATAGRID当前行信息读取。具体形式如下图所示: 6.1 数据结构 变量名类型说明备注m_adoCAdodcADO data CAdod 控件IDC_ADODC1的一个元素,用来实现数据库与程序的链接m_Time1CString编辑框控件IDC_EDIT1的一个元素m_Time2CString编辑框控件IDC_EDIT2的一个元素sourceCStringCString 的一个变量,用于CMyListview中全局字符串的存放m_datagridCDataGridCDataGrid 动态创建的指针m_ptr_RecordsetPtrADO记录集指针m_Con_ConnectionPtrADO中智能指针6.2 处理流程详细说明 1、数据库与程序连接ADO技术范围数据库技术中的ADO Data 控件的方法实现程序对数据库的访问。(1)、在Visual C+控件中添加ADO Data 控件1)、在系统菜单中选择“Project”/ “Components and Controls”,打开“Component and Controls Gellery”对话框,如下图所示:2)、双击“Registered ActiveX Controls”目录,可以看到已经注册的ActiveX控件,如下图所示。3)、双击“Microsoft ADO Data Control,version 6.0”,单击“确定”按钮,打开“ConfirmClasses”窗口,如图所示:(2)、ADO Data控件实现程序对数据库访问1)、在Dialog IDD_LIST 中添加ADO Data 控件,可以看到控件ID默认为IDC_ADODC1。通常ADO Data都是不可见的。如下图所示:2)、单击“通用”选项卡,可以设置连接属性。单击“Build”按钮,打开“数据链接属性”窗口,选择“Microsoft OLE DB ProviderFor SQL Server”,并单击“下一步”按钮,打开连接界面。如下图所示3)、单击“RecordSource”选项卡,在 “Command Type”组合框中选择2adCmdTable”,让后再“Table or Stoerd Procedure Name”中选择 “ZTtable”。如下图所示:实现了程序对数据库的访问。2、Datagrid数据列表显示Datagrid数据列表创建使用动态的方法创建,具体如下图所示:创建Datagrid动态元素m_datagrid-Create()创建显示窗口大小调用m_ado、m_ptr、m_Con类函数获取数据库相关信息调用Datagrid相关函数显示数据和设置宽度3、微震信息筛选1)、在Dialog IDD_LIST 中添加两个编辑框控件,编辑框控件的ID分别为“IDC_EDIT1”和“IDC_EDIT2”,如下图所示并且在类向导中给IDC_EDIT1和IDC_EDIT2分别创建与之相关的元素“m_Time1”和“m_Time2”,便于程序对编辑框的控制。2)、调用UpdateData(true)函数实现对编辑框内容的读取。把编辑框输入的内容传递给“m_Time1”和“m_Time2”。3)、修改SQL脚本语言。select Event AS 序号,Time AS 时间,grade AS 震级,longittute AS 经度,altitude AS,FileName,FileLocation,depth AS 深度,energy,effect_rang,death_No,casualty,dalay_day,Ecomics_loss from ZTtable where where Time between m_Time1and m_Time14)、delete以前的Datagrid数据显示,重新筛选后的数据显示列。4、Datagrid当前行的数据传送单击“数据传送”就可以实现将数据显示列选中当前行的信息传递给其他窗口。1)、通过调用m_datagrid 的类函数GetItem(n)获取当前行第n列的数据。2)、通过控件OnOK数据有函数GetItem()向pCurrentDoc传输。6.3 编码设计主要函数列表格式如下:主要函数名称函数简要说明MyListVeiw.cppOnInitialUpdate()创建datagrid列表显示OnOK()“传送数据”控件响应函数,实现数据的传输OnButton1()“震源显示”控件响应函数,实现微震信息的筛选UpdateData(true)读取编辑框中的数据Adodc.cppGetRecordSource()获取ADO DATA 控件中的数据源datagrid.cppCreate()创建DataGrid列表显示的表格SetRefDataSource()DataGrid中获取数据源的函数GetItem()获取列表显示当前行指定列的数据SetWidth()设置列表显示的列宽度7 SQL Server数据库 详细设计说明SQL Server DBMS 是具有较强大功能的数据库管理功能,提供了一套功能完善且具备可视化界面的管理工具。它具有强大的网络功能,与Internet高度集成,能够轻易地将Web应用程序与企业营运程序集成在一起。支持ANSI SQL(标准SQL),并将标准SQL扩展成为了更实用的Transact-SQL。在“微震信息处理系统”中使用SQL Server中的企业管理器(如下图所示)对数据库和数据库中的表进行创建修改等操作。 7.1 数据结构 7.1.1 数据库信息模型:微震信息微震事件发生时间经度纬度文件夹名文件路径深度震级能量影响范围伤亡人数误工天数经济损失死亡人数7.1.2数据库逻辑模型微震信息(微震事件,发生时间,经度,纬度,文件夹名,文件路径,深度,震级,能量,死亡人数,影响范围,死亡人数,误工天数,经济损失)7.1.3数据库结构的详细设计表名属性名数据类型长度允许空备注微震信息EventChar20NO主码TimeChar50YESlongituteChar30YESaltitudeChar30YESFileNameChar30YESFileLocationChar99YESdepthFloat8YESgradeFloat8YESenergyFloat8YESeffect_rangeFlo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 5768.3-2025道路交通标志和标线第3部分:道路交通标线
- 初中体育活动方案
- 初中数学新课标心得体会3篇
- 铁道概论电子教案03 铁路客运工作
- 2024-2025 学年度成都市小学五年级数学期中模拟卷及参考答案
- 2025年因果关系试题及答案
- 2025年小学二年级语文下学期看图写话
- 2025年竞聘考试题及答案
- 2025年数学德育渗透试题及答案
- 2025年凿岩安全培训试题及答案
- 2025年智能配电系统行业分析报告及未来发展趋势预测
- DB37∕T 4383-2021 混凝土结构硅烷浸渍技术规程
- 2025年甘肃省冶金高级技术学院招聘事业编制工作人员15人笔试考试参考题库及答案解析
- 数据全周期管理制度
- 老年医学科老年骨折的康复训练计划
- 2025年度《危险化学品生产企业事故隐患内部报告奖励管理制度》范本+附表
- 【MOOC】数据结构与算法-北京大学 中国大学慕课MOOC答案
- 各种硬度换算表硬度
- 2023年沧州银行校园招聘笔试题库及答案解析
- 煤矿建设安全规范解读
- 西安交通大学金融学复习习题汇总
评论
0/150
提交评论