当前位置:文档之家› 微震监测数据处理系统详细设计说明书

微震监测数据处理系统详细设计说明书

微量元素肥料的营销策略分析市场营销页脚内容25软件详细设计说明书学生姓名 王建旭 学号 0808140505 学生姓名 王智杰 学号 0808140512 学生姓名 汤玉杰 学号 0808140119 学生姓名 毕国兴 学号 0808140727 专 业 电子信息科学与技术 年级 08级 指导教师 劳彩莲 职称 副教授 学 院 信息与电气工程学院中国农业大学教务处制2011年 7月目录1 目的 (3)2 代码框架描述 (3)2.1 源文件说明 (3)2.2 系统配置文件说明 (3)3 系统结构关系图 (4)4 单文档多视的创建与通讯子模块详细设计说明 (4)4.1 数据结构 (5)4.2 处理流程详细说明 (5)4.3 编码设计 (7)5 OpenGL子模块详细设计说明 (8)5.1 数据结构 (9)5.2 处理流程详细说明 (11)5.3 部分重要编码设计 (11)5.3.1函数 SetGoal(float x,float y,float z,float color) (12)5.3.2函数RenderScene() (13)6 微震列表子模块详细设计说明 (13)6.1 数据结构 (14)6.2 处理流程详细说明 (14)6.3 编码设计 (19)7 SQL Server数据库详细设计说明 (20)7.1 数据结构 (22)7.1.1 数据库信息模型: (22)7.1.2数据库逻辑模型 (22)7.1.3数据库结构的详细设计 (22)7.2 数据库系统的建立 (23)7.2.1 数据库建立 (23)7.2.2表的建立和管理 (23)8 详细微震情报表子模块详细设计说明 (23)8.1 数据结构 (24)8.2 处理流程详细说明 (24)8.3 编码设计 (25)微震监测数据处理系统详细设计说明书1 目的微震监测数据处理系统详细设计说明书旨在介绍该系统的详细过程,以及技术要点等内容。

2 代码框架描述2.1 源文件说明2.2 系统配置文件说明3 系统结构关系图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) 分割窗口(2)窗口通讯4.3 编码设计(1)、分割窗口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_KEYUP afx_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 处理流程详细说明5.3 部分重要编码设计Dimand-Square算法的实现类CFractalTerrain:5.3.1函数 SetGoal(float x,float y,float z,float color)【功能】在地形图上定位微震发生的位置,震级,深度。

相关主题