1、上面2里的内容组卷,出卷,自动评分 2.2. 运行环境硬件:Intel P4 1.2G以上、32M显存以上显卡软件:Windows 2000 以上2.3. 基本设计概念基于Windows系统,Visual C+2005,OpenGL1.2开发快速的定制、添加各种教学页面快速的定制、添加各种题目页面多种车型发布控制;素材库、题材库可自定义组织内容2.4. 结构主模块: 页面的创建管理;远程的控制基础模块: 一些基础类;资源管理系统界面控件: 定制的界面控件仪表: 测量仪表的实现电路: 电路数据与逻辑界面实现: 各种界面的实现及对页面编辑、添加的支持三维模块: 三维对象的创建、数据的管理拆装模块:
2、 支持拆装题的编辑、添加2.4.1. 主框架A主框架主要负责实现页面的创建与管理以及程序运行模式的控制。B由代表应用程序的“ArApp”负责程序运行模式的控制。普通模式下,不做任何处理;教师授课模式下,启动定时器,记录当前数据并通过远程模块发送出去;学生受控模式下,过滤鼠标键盘的操作,接收远程模块发送来的数据,保持与教师控制端一致。C由代表主框架窗口的“ArMainFrame”负责页面的创建与切换管理。由页面工厂统一管理并提供各种页面的创建参数类;“ArMainFrame”根据创建参数类创建出新页面,并负责新旧页面的切换;页面池负责记录创建参数类及页面快照,用以实现返回上一个页面及页面状态的恢
3、复;页面创建管理2.4.2. 一般界面架构A不同种类的界面有不同的实现。具体的设计在详细设计里体现。B基本思路都是:多种视图元素通过控制器访问数据对象,数据的变化通过观察者接口更新相关视图元素。C几种基础的经常使用的页面提供编辑器,以供外部扩充。简单页面2.4.3. 基础资源管理A” ArCarResManagerCL”封装对底层文件的访问,使得程序对普通文件、流文件、甚至压缩文件都能用一种方式访问。这样在调试的时候,可以使用易于查看的文本文件,软件发布的时候可以根据需要,将某些文件进行打包甚至压缩。这时不需要改动代码,只要配置抽象文档系统即可。B老的调用方式:调用GetResPackM(co
4、nst CString& sPackPath)得到一个ArIResourceCL接口,然后将实现了ArIResPersistCL接口的客户类传给ArIResourceCL,底层的ArPackedResLibCL反调LoadFromStreamM(IStream *pStm)函数,将数据流交给客户类使用。C考虑新的调用方式:直接从ArCarResManagerCL上获取数据流IStreamPtr使用。详细接口函数声明class CarBase_DllExp CrCarResManagerCL : public CrIResManagerCLpublic: / 根据包路径获取数据包接口。sPack
5、Path是资源包路径,不限制必须是DLL名 ArIResourceCL* GetResPackM( const CString& sPackPath ); / 给目标对象加载数据。sResName是安装目录内的路径,更灵活(无需关心属于哪个DLL数据包) BOOL LoadResM( ArIResPersistCL * pResObj , const CString& sResFile ) ; / (新做法) 直接获取资源数据流。sResName:安装目录内的路径(无需关心属于哪个数据包) / 然后直接调用IStream:Read()读取数据。*注意:不能用写入类的函数* IStreamPtr
6、 GetResStreamM( const CString& sResFile); Void SetCurDIrM( const CString& sResName ); CString GetCurDIrM();外部文件组织我们软件的首页会将所有的页面(结构/原理、题目、知识点)都列出来,用户点击后进入相应的窗口。因此有页面类型与页面ID两个概念:如:电路页面,知识点页面,拆装页面都是页面类型。 点火系电路页面,起动系电路页面则是页面ID。具体到数据组织的时候:1. 页面类型的数据放在“softframe”下:如“拆装窗口”类型相关的数据,如底图、按钮、列表框图等,统一放在“softfram
7、ebackoutPG”下:如“电路窗口”类型相关的数据,如底图、按钮、列表框图等,统一放在“softframecircuitPG”下:2. 具体页面(结构/原理、题目、知识点)的数据,放在相应“车型系统xxx”下如“气缸盖拆装”这道题相关的数据,如拆装脚本、模型列表等则放在相应“santanasimuenginexxx”下。至于多道题目共用的数据,如模型(模型理想情况是可以与零部件库 Santanamediapart里共用),如不能就放在车型下(santanasimusbjModel)。再如“氧传感器的检测”是一道电路题,此题目的初始化文件放在“Santanasimugasoxxx”下,但电路
8、数据、电路图是共用的,那就放在“Santanasimucircuit”下“xxx”一般是题号,也可几道题上再建一个文件夹。3. 电路数据库不再是唯一的: 从现在的情况看,有多个车型,并且电路的需求也不一样,所以电路数据库不是一个,软件里的电路数据类也不能是全局对象,而是要根据电路题目初始化不同的电路数据。4. 如何确定外部文件位置: 页面工厂根据页面ID(题目ID)创建页面的时候,首先确定使用的页面类,然后根据需要传入配置文件,配置文件里记录要用的其他数据文件,用相对位置或绝对位置(bin之下)都可以。当用“资源管理程序”打开某个文件的时候,资源管理程序的“当前目录”就设置为此文件的目录;也可
9、以外部设置当前目录。在此之后就可以用相对路径打开文件。使用相对路径时候前面可以加“.”,来指向共用的数据。2.4.4. 电路与仪表A 先使用以前的做法和实现。B C 2.4.5. 三维模块A 公司产品的主要思路是虚拟仿真,三维功能是每一个软件都必不可少的。个人觉得可以考虑做一个比较通用的、灵活的三维模块,在不同的软件里都可以拿来用,应该可以提高整个公司的开发效率。B 考虑将三维模块分成3部分:“场景组织”、“资源管理”、“三维渲染”C “场景管理”,描述了三维空间中有哪些内容,以及它们是如何组织在一起的;D “资源管理”,不管模型、纹理还是字体等一切对象,绘制它们都需要不同的资源。“资源管理”
10、负责加载、重用、卸载这些资源。E “三维渲染”,三维空间中的东西最后将被渲染到屏幕上,这涉及到渲染管线、指定的渲染系统、渲染状态等API对象等底层对象。“三维渲染系统”提供对底层三维API的抽象,可以根据需要支持OpenGL或Direct3D。实际的零件结构A 横线上是抽象结构,横线下是具体例子。B 部件相当于树列表上的节点,有名称,可以被单独选取、隐藏;组合部件相当于父节点,可以展开,也可以收缩当作一个整体来选取、隐藏;子部件相当于子节点。C 子部件包含1n个零件,可单独运动但不能被单独选取;D 不同的零件可能使用同一个模型数据。如汽缸盖紧固螺栓下有8个,每一个都能被单独的拆装,但它们都是由
11、一个模型数据创建。设计的数据结构A 横线上的节点与实体由“场景管理”负责创建并管理;B 节点表示一个包或容器的概念,可以包含其他的子节点或实体;C 实体表示空间中的一个实实在在的物体,可以移动、旋转改变位置;D 横线下的模型及相关数据由“资源管理”负责创建并管理;E 一个模型对应一个数据文件,包含三角片、材质等用于绘制的数据,实现渲染、主结构1根据配置文件初始化渲染系统,可以选择Direct3D或OpenGL;2创建场景并在场景中架设摄像机;通过资源管理器创建物体并放置在场景中;3创建窗口、视口并与摄像机关联,一个视口上显示一个摄像机能“看”到的物体;4控制器接收消息和命令,将其转换成对场景和
12、摄像机的控制;5刷新时:窗口要求场景绘制它能看见的部分;场景将能见的物体交给渲染系统绘制;初始序列图资源管理A 模型对象由ModelManager负责创建、管理及重用。例如多个位置的螺栓用一个螺栓模型数据。B 材质由MaterialManager负责创建、管理及重用。例如不同的子网格使用同一种材质。C 纹理贴图由TextureManager负责创建、管理及重用。例如不同的零件使用同一种金属纹理贴图。D 主要的想法是Model、Texture等对象只负责使用数据,而将从文件读取解析数据职责交给Manager负责,这样可以容易的支持多种数据格式,以及数据格式的装换。E 结合前面的文档管理系统,xxxManager可以实现自动的从磁盘文件、数据包、压缩文档等读取数据。2.4.6. 拆装模块2.4.7. 题目与数据库2.5. 功能与程序的关系2.6. 人工处理任务3. 接口设计4. 运行设计5. 数据结构设计
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1