第一篇:基于Android平台的纹理映射分析与实现论文
引言
纹理映射的本质是对三维物体进行二维参数化,即先求得三维物体表而上任一点的二维(u,v)参数值,进而得到该点的纹理值,最终生成三维图形表而上的纹理图案。在光滑曲而上添加纹理图案的核心问题是映射,因此纹理问题可以简化为从一个坐标系到另一个坐标系的变换。总的来说,纹理映射技术是一种使建立的3D模型更接近现实物体的技术。
1纹理映射基本原理
纹理生成过程实质上是将所定义的纹理映射为反映某种三维景物表面的属性(与光照明模型及表面几何有关的各种参数,如表面法向、漫/镜面反射率等),并参与后续的光照明计算。
二维纹理映射就是从二维纹理平面到三维物体表面的映射。一般二维纹理平面是有范围限制的,在这个平面区域内,每点都可用数学函数表达,从而可以离散的分离出每点的灰度值和颜色值,这个平面区域称为纹理空间,一般将纹理空间的平面区域定义在[0,1]*[0,1]。纹理映射是确定物体表面一点P在纹理空间中的对应点(u,v),从而纹理空间中的点(u,v)处的纹理值就是物体表面点P的纹理属性。建立纹理空间与景物空间及景物空间与屏幕空间之间的映射关系:
图1纹理映射
景物表面的纹理属性主要有以下几种:
表面颜色,即表面的漫反射率;镜面反射分量,即表面的镜面反射率;透明度;表面法向,即挠动表面法向来产生表面的凹凸纹理;环境的漫反射和镜面反射效果;光源强度和色彩分布。
根据纹理定义域的不同,可分为而为二维和三维纹理,由于本文是基于Android平台的,考虑到效率和资源问题,主要给出了二维纹理的模型,对三维纹理映射技术就不再讨论了。
2纹理映射的实现
本节将通过在一个立方体各个面贴上图片来介绍Android平台下基于OpenGLES的纹理映射有关的内容:定义纹理、控制滤波、说明映射方式、绘制场景,给出顶点的纹理坐标和几何坐标。
首先,我们通过Android平台的OpenGLES库来创建一个纹理,并使用图片来生成一个纹理,过程如下:
IntBufferintBuffer=IntBuffer.allocate(1);//创建纹理
gl.glGenTextures(1,intBuffer);//设置要使用的纹理
gl.glBindTexture(GL10.GL_TEXTURE_2D,texture);
函数glGenTextures(intn,intBuffertextures)用于通知OpenGL我们想生成一个纹理的名字。函数glBindTexture(inttarget,inttexture)方法用于通知OpenGL将纹理名字texture绑定到纹理目标上。
在Android中我们使用GLUtils中的一个静态方法texImage2D(inttarget,intlevel,Bitmapbitmap,intborder)来生成一个纹理。过程如下:
//生成纹理
GLUtils.texImage2D(GL10.GL_TEXTURE_2D,0,GLImage.mBitmap,0)
通过以上过程,我们便成功地创建了一个纹理。
为了能有更好的效果,我们还需要设置在OpenGL现实图像时,它放大得比原始纹理大(GL_TEXTURE_MAG_FILTER)或缩小得比原始纹理小(GL_TEXTURE_MIN_FILTER)时OpenGL所采用的滤波方式。以下过程是我们设置的线性滤波://设置线性滤波
Gl.glTexParameterx(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_MIN_FILTER,GL10.GL_LINEAR);
在android中可以使用glBindTexture(inttarget,inttexture)方法来绑定纹理。以下过程绑定了上面创建的纹理:Gl.glBindTexture(GL10.GL_TEXTURE_COORD_ARRAY);//绑定纹理
纹理需要使用glEnableClientState()方法来开启纹理:Gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
与之对应的,关闭纹理过程如下:
Gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
为了将纹理正确的映射到四边形上,必须将纹理的右上角映射到四边形的右上角,纹理的左上角映射到四边形的左上角,纹理的右下角和左下角亦是如此。因为,如果映射错误的话,图像显示时可能上下颠倒,侧向一边或者什么都没有。下面是我们对立方体的每一个面所设置的纹理映射数据:
IntBuffertexCoords=IntBuffer.wrap(newint[]
{
One,0.,0,0,0,one,one,one,0,0,0,one,one,one,one,0,One,one,one,0,0,0,0,one
0,one,one,one,one,0,0,0,0,0,0,one,one,one,one,0,One,0,0,0,0,one,one,one
});
设置好这些映射数据之后,可以通过glTexCoordPointer将纹理绑定到要绘制的物体上。过程如下:
Gl.glTextCoordPointer(2,GL10.GL_FIXED,0,texCoords);
最后,将其绘制到屏幕上即可。效果图2如图所示:
图2纹理映射效果
3结束语
本文通过对纹理映射的基本原理进行了分析,并在Android平台中利用OpenglES图形库对纹理映射技术进行了实现。
由于本文利用的是Android应用层封装后的OpenglES图形库,在效率上欠佳,以后的主要工作是通过AndroidNDK对OpenglES进行原生态开发,进而提高实现效率。
参考文献
[1]李增忠.纹理映射技术的研究[D].中国优秀硕士学位论文全文数据库,2005.[2](美)ShaneCo.comnder.Android移动应用开发从入门到精通[M].北京:人民邮电出版社,2010.[3]杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.
第二篇:MFC消息映射机制分析论文
摘 要:MFC以层次结构组织起来,比较庞杂,尤其是它的消息映射机制,更是涉及到很多底层的东西。本文通过对整个消息映射机制进行系统的 分析,可以帮助程序开发人员更好地了解MFC,进行可视化编程。
关键词:消息驱动;消息映射;MFC 程序设计引言
微软公司提供的MFC基本类库(Microsoft Foundation Classes),是进行可视化编程时使用最为流行的一个类库。MFC封装了大部分Windows ApI函数和Windows控件,使得程序的开发变得简单,极大的缩短了程序的开发周期。MFC独创的Document/View框架结构,能够将管理数据的代码和显示数据的程序代码分开,并且设计了一套方便的消息映射和命令传递机制,方便程序员的开发使用。其中消息映射机制本身比较庞大和复杂,对它的分析和了解无疑有助于我们写出更为合理的高效的程序。这里我们分析一下MFC的消息映射机制,以了解MFC是如何对Windows的消息加以封装,方便用户的开发。SDK下的消息机制实现
首先,简单回顾一下SDK下我们是如何进行Windows的程序开发的。Windows程序的运行是依靠外部发生的事件来驱动的,事件由操作系统捕捉,以消息的形式进入消息队列,然后通过消息循环从队列中不断取出消息,送到对应的窗口过程里处理。相对于DOS程序,Windows是以WinMain作为程序的入口点,以下就是一个简化的Win32程序的主体,通过while语句实现消息循环:
WinMain(…)
{
MSG msg;
RegisterClass(…);// 注册窗口类
CreateWindow(…);// 创建窗口
ShowWindow(…);// 显示窗口
UpdateWindow(…);
While(GetMessage(&msg,…)){ // 消息循环
TranslateMessage(…);
DispatchMessage(…);
}
return msg.wparam;
}
其中,msg代表消息,程序是通过GetMessage函数从和某个线程相对应的消息队列里面把消息取出来并放到消息变量msg里面。然后TranslateMessage函数用来把键盘消息转化并放到响应的消息队列里面,最后DispatchMessage函数把消息分发到相关的窗口过程去处理。窗口过程根据消息的类型对不同的消息进行相关的处理。在SDK编程过程中,用户需要在窗口过程中分析消息的类型及其参数的含义,然后做不同的处理,相对比较麻烦;而MFC把消息调用的过程给封装起来,使用户能够通过ClassWizard方便的使用和处理Windows的各种消息。MFC中的消息映射机制
在MFC的框架结构下,“消息映射”是通过巧妙的宏定义,形成一张消息映射表格来进行的。这样一旦消息发生,Framework就可以根据消息映射表格来进行消息映射和命令传递。
首先在需要进行消息处理的类的头文件(.H)里,都会含有DECLARE_MESSAGE_MAp()宏,声明该类拥有消息映射表格:
class CscribbleDoc:public Cdocument
{
…
DECLARE_MESSAGE_MAp()
};
然后在类 应用 程序文件(.Cpp)实现这一表格
BEGIN_MESSAGE_MAp(CInheritClass, CBaseClass)
//{{AFX_MSG_MAp(CInheritClass)
ON_COMMAND(ID_EDIT_COpY,OnEditCopy)
………
//}}AFX_MSG_MAp
END_MESSAGE_MAp()
----这里主要进行消息映射的实现,把它和消息处理函数联系在一起。其中出现三个宏,第一个宏是BEGIN_MESSAGE_MAp有两个参数,分别是拥有消息表格的类,及其父类。第二个宏是ON_COMMAND,指定命令消息的处理函数名称。第三个宏是END_MESSAGE_MAp()作为结尾符号。中间的奇怪符号//}}和//{{,是ClassWizard产生的,对程序无 影响。
观察DECLARE_MESSAGE_MAp的定义:
#define DECLARE_MESSAGE_MAp()
private:
static const AFX_MESSAGE_ENTRY _messageEntries[];
protected:
static AFX_DATA const AFX_MSGMAp messageMap;
virtual const AFX_MSGMAp* GetMessageMap()const;
里面又包含了MFC新定义的两个数据结构,如下:
AFX_MSGMAp_ENTRY
struct AFX_MSGMAp_ENTRY
{
UINT nMessage;// windows message
UINT nCode;// control code or WM_NOTIFY code
UINT nID;// control ID(or 0 for windows messages)
UINT nLastID;// used for entries specifying a range of control id's
UINT nSig;// signature type(action)or pointer to message #
AFX_pMSG pfn;// routine to call(or special value)
};
和AFX_MSGMAp
struct AFX_MSGMAp
{
const AFX_MSGMAp* pBaseMap;
const AFX_MSGMAp_ENTRY* lpEntries;
};
其中AFX_MSGMAp_ENTRY结构包含了一个消息的所有相关信息,而AFX_MSGMAp主要作用有两个,一是用来得到基类的消息映射入口地址。二是得到本身的消息映射入口地址。
实际上,MFC把所有的消息一条条填入到AFX_MSGMAp_ENTRY结构中去,形成一个数组,该数组存放了所有的消息和与它们相关的参数。同时通过AFX_MSGMAp能得到该数组的首地址,同时得到基类的消息映射入口地址。当本身对该消息不响应的时候,就可以上溯到基类的消息映射表寻找对应的消息响应。
现在我们来分析MFC是如何让窗口过程来处理消息的,实际上所有MFC的窗口类都通过钩子函数_AfxCbtFilterHook截获消息,并且在钩子函数_AfxCbtFilterHook中把窗口过程设定为AfxWndproc。原来的窗口过程保存在成员变量m_pfnSuper中。
在MFC框架下,一般一个消息的处理过程是这样的。
(1)函数AfxWndproc接收Windows操作系统发送的消息。
(2)函数AfxWndproc调用函数AfxCallWndproc进行消息处理,这里一个进步是把对句柄的操作转换成对CWnd对象的操作。
(3)函数AfxCallWndproc调用CWnd类的 方法 Windowproc进行消息处理。
(4)Windowproc调用OnWndMsg进行正式的消息处理,即把消息派送到相关的方法中去处理。在CWnd类中都保存了一个AFX_MSGMAp的结构,而在AFX_MSGMAp结构中保存有所有我们用ClassWizard生成的消息的数组的入口,我们把传给OnWndMsg的message和数组中的所有的message进行比较,找到匹配的那一个消息。实际上系统是通过函数AfxFindMessageEntry来实现的。找到了那个message,实际上我们就得到一个AFX_MSGMAp_ENTRY结构,而我们在上面已经提到AFX_MSGMAp_ENTRY保存了和该消息相关的所有信息,其中主要是消息的动作标识和相关的执行函数。然后我们就可以根据消息的动作标识调用相关的执行函数,而这个执行函数实际上就是通过ClassWizard在类实现中定义的一个方法。这样就把消息的处理转化到类中的一个方法的实现上。
(5)如果OnWndMsg方法没有对消息进行处理的话,就调用DefWindowproc对消息进行处理。这是实际上是调用原来的窗口过程进行缺省的消息处理。所以如果正常的消息处理的话,MFC窗口类是完全脱离了原来的窗口过程,用自己的一套体系结构实现消息的映射和处理。即先调用MFC窗口类挂上去的窗口过程,再调用原先的窗口过程。用户面对的消息参数将不再是固定的wparam和lparam,而是和消息类型具体相关的参数。比如和消息WM_LButtonDown相对应的方法OnLButtonDown的两个参数是nFlags和point。nFlags表示在按下鼠标左键的时候是否有其他虚拟键按下,point更简单,就是表示鼠标的位置。同时MFC窗口类消息传递中还提供了两个函数,分别为WalkpreTranslateTree和preTranslateMessage。我们知道利用MFC框架生成的程序,都是从CWinApp开始执行的,而CWinapp实际继承了CWinThread类。在CWinThread的运行过程中会调用窗口类中的WalkpreTranslateTree方法。而WalkpreTranslateTree方法实际上就是从当前窗口开始查找愿意进行消息翻译的类,直到找到窗口没有父类为止。在WalkpreTranslateTree方法中调用了preTranslateMessage方法。实际上preTranslateMessage最大的好处是我们在消息处理前可以在这个方法里面先做一些事情。举一个简单的例子,比如我们希望在一个CEdit对象里,把所有的输入的字母都以大写的形式出现。我们只需要在preTranslateMessage方法中判断message是否为WM_CHAR,如果是的话,把wparam(表示键值)由小写字母的值该为大写字母的值就实现了这个功能。小结
MFC通过巧妙的宏定义把消息调用的过程给封装起来,使用户能够通过ClassWizard方便的使用和处理Windows的各种消息。通过对MFC消息映射机制的分析,不仅能够使我们更好的使用MFC类库,同时,对于我们自己设计程序框架和类,无疑也有相当大的帮助。
参考 文献 :
[1] 侯俊杰 著,深入浅出MFC(第2版)[M].湖北:华中 科技 大学出版社,2001.5
[2] David J.Kruglinski著,Visual C 技术内幕(第五版)[M].北京:北京希望 电子 出版社,2001.1
第三篇:android入门教程图形架构实现分析总结
本文由麦可网http:/// 收集整理,转载请注明出处。
Android图形架构实现分析总结
1、直接FrameBuffer的访问方式,并对FrameBuffer采用双缓存技术
没有采用X-Server等方案,直接操作framebuffer,可以减少X-Server带来的通信开销。打开framebuffer, 创建两个缓冲区,(一个是on screen front buffer,另一个back buffer, 可能位于offscreen framebuffer,也可能位于系统内存)。源代码中函数swapBuffers将back buffer内容拷贝到front buffer中。双缓存技术使得可以在back buffer中进行绘制,随后拷贝到front buffer中进行合成并显示。
2、充分利用OpenGL的图形接口和硬件加速功能
通过OpenGL的API,Android能够提供高性能的3D图像。OpenGL的EGL接口,是OpenGL ES和底层Native平台视窗系统之间的接口。
3、图像显示的裁剪以及局部刷新机制
多个Layer被定义成一个层向量LayerVector,它包含了当前所有Surface对应的layer,SurfaceFlinger根据每个layer的Z-order把多个层组合为一个最终在屏幕上显示的buffer。
Z-order:Z序实际定义了窗口之间的层叠顺序。说起“Z序”这个名称,实际是相对屏幕坐标而言的。一般而言,屏幕上的所有窗口均有一个坐标系,即原点在左上角,X轴水平向右,Y轴垂直向下的坐标系。Z序就是相对于一个假想的Z轴而言的,这个Z轴从屏幕外指向屏幕内。窗口在这个Z轴上的值,就确定了其Z序。Z序值大的窗口,覆盖了Z序值小的窗口。在层向量里每个层都对应一个Z序值,同时通过给层设定优先级的方式,使得某些层可以实现前端显示,最后通过相应的裁剪算法来计算可以被显示的区域。
优化的重绘机制:采用局部刷新机制,并不是每次repaint都需要重绘整个屏幕,首先计算需要重绘的区域(mInvalidRegion),如果DisplayHardware::UPDATE_ON_DEMAND,则通过设定需要重绘的区域的边界来进行局部重绘。
4、简单易用的图形原语、事件机制和控件
android.graphics, android.view和android.widget功能和其他类似的图形库如Qt/Gtk+差不多,分别提供基本的图形原语(如画点画线,设置图形上下文等),事件机制,以及开发图形用户界面的控件等。
5、功能强大的2D图形引擎库
Skia是个2D向量图形处理函式库,包含字型、坐标转换,以及位图都有高效能且简洁的表现。它封装底层的图形硬件,为上面的图形库提供最基础的操作图形硬件的原语。不仅用于google Chrome浏览器,skia作为绘图处理,搭配OpenGL/ES与特定的硬件特征,强化显示的效果。
第四篇:教学资源共享平台设计与实现
教学资源共享平台设计与实现
摘要
随着多媒体信息技术和计算机网络技术的日益普及,网络教学作为教育的一种形式在世界范围内得到迅猛的发展,它突破传统教育过程在空间和时间上的限制,实现了教育资源在更大范围上的共享。网络教育资源建设是影响网络教育发展,保障网络教育质量的重要因素之一。怎样有效解决资源的网络共享问题,提高教学资源的可利用率,如何实现教学资源信息化的优化管理,充分发挥网络信息共享资源在高校教学中的作用等问题便成了每个高校迫切需要解决的问题。现在许多高校已经成功的搭建了自己的网络资源共享平台,有许多的成功经验,而作为新型高等本科院校,教学资源平台的建设还往往处于起步摸索阶段,因此有必要借鉴其它高校的成功经验,加快教学资源平台的建设,改善现存的资源共享访问瓶颈,为高校科研教学提供良好的资源服务。
通过创建交互式网页应用的网页开发技术手段,数据不再和页面以及网站混粘在一起,它独立了跟着用户走。在基于数据的应用中,用户需求的数据,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中。帮助用户即师生解决管理、维护、存储、分享内容,并且通过用户对资源的访问密集度来作出整个网络资源的分布调整计划,使系统网络资源平台的共享性得到充分的发挥。
[关键词] 资源共享
管理系统
存储分享系统
ABSTRACT
目录
一、前言...........................................................................................................................................4
二、需求分析.................................................................................................错误!未定义书签。
(一)、系统需求...................................................................................错误!未定义书签。
(二)、功能需求...................................................................................错误!未定义书签。
1.权限设置......................................................................................错误!未定义书签。
三、总体设计.................................................................................................错误!未定义书签。
(一)、基本设计概念和处理流程.......................................................错误!未定义书签。
(二)、系统层次模块图.......................................................................错误!未定义书签。
(三)、数据库设计...............................................................................错误!未定义书签。
1.数据库需求分析..........................................................................错误!未定义书签。
四、详细设计与设计.....................................................................................错误!未定义书签。
五、结论与体会.............................................................................................错误!未定义书签。参考文献.........................................................................................................错误!未定义书签。
教学资源共享平台设计与实现
一、前言
目前,大多数的校园网络平台是针对用户使用功能定制的,没有一个统一的校园网教学资源库的建设。教师在使用网络资源时,仍然需要到校园网以外的网上搜索资源,使得某些共享教学资源重复被搜索、下载,降低了他们的利用率。为了提高共享教学资源的利用率,建立一个规范、丰富、实用、可广泛共享的高校网络教学资源共享系统,已经成为亟待解决的问题。
第五篇:网络教学平台论文:基于WebService技术的网络教学平台的设计与实现
网络教学平台论文:基于WebService技术的网络教学平台的设计与实现
【中文摘要】目前网络远程在线教学的发展在教育领域发挥着举足轻重的作用,但是在网络远程在线教学中,仍然存在很多问题亟待解决。特别是由于各教育机构的教学特点不一样,从现有网络教学平台应用可以分为以下几种情况:一是根据具体需求,由公司开发的专用的教学平台,此类教学平台多为定制的数据库结构,软件开发多采用C/S结构,通用性差,维护成本高,不易扩展;二是采用通用底层平台与数据库,而通过具体功能扩展来应用于具体的需求,此类教学平台多采用B/S结构,开发成本较高,在运行效率和用户体验上常常达不到满意的效果;三是只开发通用的固定功能,以降低再次开发的成本,这类平台不具备很强的扩展性,随着需求的变化往往要完全更换平台。解决这些困难是突破网络教学发展瓶颈的关键。本文提出基于Web Service技术的C/S和B/S混合体系结构搭建网络教学平台,并在此体系机构指导下解决目前网络教学平台所遇到的关键问题。并通过对Web Service技术的研究,得出符合当前网络教学平台搭建的体系结构。本文重点应用三层模型的系统开发框架,表示层、数据访问层和数据库层。表示层构建动态网页或WinForm客户端,建立和部署高性能的、高可伸缩性的Web应用,搭建稳定的客户端程序;数据访问层实现系统开发过程中的业务逻辑接口,负责向上和向下提取、提供数据和数据集;数据库层主要任务是构建底层数据库,其中既包括分
类设计数据库表、数据库视图、存储过程、触发器等。本文在进行上述研究的基础上,实现了一个基于Web Service技术的C/S和B/S混合体系结构网络教学平台,该平台设计了三个部分内容,其中公共信息和辅助平台为实践教学环节服务,提供基本的信息和交流管理方式,其中包含了实践教学的各种形式。本文从软件工程的角度描述了系统开发过程中的总体设计、详细设计、数据库设计的主要内容,最后测试并进行总结,在一定成度上为当前网络教学平台面临的问题提供了一个有效的解决途径,对网络教学平台开发提供重要参考。
【英文摘要】TheCurrently, network distance online teaching plays a pivotal role in the field of education, but there are still many problems to be solved.Because of the various difference on teaching characteristics among educational institutions, some of the existing teaching platforms are difficult to promote generally.This paper aims to build network teaching platform based on Web Service technology C/S and B/S hybrid architecture, and in the guidance of this system we solve the key issues which the network teaching platform may encounter.On the basis of a comprehensive analysis and argument, this paper highlight the three-tier model of system development framework for presentation layer, data access layer and database layer.to build dynamic Web pages or WinForm clients, build and deploy high-performance, highly scalable Web
applications, to build a stable client program;data access layer system development process in the business logic interface, is responsible for upward and downward extract, to provide data and data sets;database layer main task is to build the underlying database, which includes both classified design database tables, database views, stored procedures, triggers and so on.This article based on the above study have achieved a WebServicetechnology-based C/S and B/S hybrid architecture network teaching platform, which was designed in three parts, including public information and supporting platform for practice teaching service to provide basic information and communication management, which includes various forms of practical teaching.This paper describes the main contents on system development process’s overall design, detailed design, database design in the view of software engineering.Finally, sum up the test, to some extent, it provides an effective solution means for the facing problems to network teaching platform and provide an important reference.for the development of network teaching platform.【关键词】网络教学平台 Web服务 三层模型 混合体系结构
【英文关键词】Network Teaching Platform Web Service Three-layer model Mixed Structure
【目录】基于WebService技术的网络教学平台的设计与实现摘要4-5ABSTRACT5
第一章 引言9-19
1.1 研究背景和意义9-169-1010-1516-1718-19
1.1.1 网络教学平台的起源和发展1.1.2 网络教学平台国内外研究现状1.1.3 研究的意义15-161.3 章节安排17-18
1.2 论文的主要工作1.4 章节安排
2.1 C/S 和第二章 相关技术理论分析19-31
2.1.1 C/S 和B/S 简介B/S 体系结构19-2219-202.1.2 C/S 和B/S 的比较20-212.1.3 C/S 和B/S 混合体系结构21-2222-25
2.2 WEB SERVICE 技术
2.2.2 Web 2.2.1 Web Service 概念22-23Service 关键技术23-2424
2.2.3 Web Service 技术优势
2.3 开发相关2.3.2 2.2.4 Web Service 实现原理24-25
2.3.1 Microsoft.NET25-272.3.3 SQL Server272.4.1 UML 组成28-292.5 本章小结30-31
3.1 建设目标313.3 主要功能33技术25-27IIS2727-3029-30分析31-3831-3333-3534-3535-36
2.4 UML 概述2.4.2 UML 建模机制第三章 网络教学平台需求3.2 建设原则3.4 总体需求
3.4.2 系统性能需求3.5.1 系统数据流
3.6 本章小结3.4.1 系统功能需求343.5 数据流分析35-373.5.2 用户的数据流36-37
37-38第四章 网络教学平台设计与实现38-71
4.1.1 用户功能模块设计
4.1 系统功能设计38-4539-42设计45-4847-4848-51实现55-58现56-584.1.2 角色用例图设计42-45
4.2.1 开发模式45-474.3 数据库设计48-554.3.2 数据库表设计51-55
4.4.1 数据层设计55-56
4.2 总体框架及4.2.2 体系结构
4.3.1 实体设计
4.4 数据层设计与4.4.2 数据库实
4.5.1 数4.6 表4.6.2 表4.8 本章小5.1 测试4.5 数据访问层设计与实现58-61
4.5.2 数据访问层实现58-61
4.6.1 表示层设计61据访问层设计58示层设计与实现61-64示层实现61-64结70-71目的717274-7575-7678-80
4.7 关键代码实现64-70第五章 网络教学平台的测试71-755.2 测试环境71-72
5.3 测试步骤5.6 本章小结
6.1 总结5.4 测试结果分析72-74第六章 总结与展望75-776.2 展望76-77
致谢77-78参考文献