减少了不必要的麻烦。
2.2 系统需求分析
软件的需求分析是从用户的业务中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出我们的软件产品。这个步骤是对用户业务需求的一个升华,是一个把用户业务优化,转化为软件产品,从而提升管理并产生质的飞跃。这一步是否成功,直接关系到开发出来的软件产品能否得到用户的认可,顺利交付给客户,客户能否真正运用我们的产品来帮助他(她)解决业务或管理问题。按照软件工程对软件开发过程的描述,需求阶段我们可以细分为需求调研和需求分析两个阶段。需求调研需要充分细致地了解客户目标,用户业务内容、流程等。这是一个对需求的采集过程,是进行需求分析的基础准备
[8]
。需求是开发者和用户交互的一个过程,任何一方的不投入都会导致项目的失
败。当然,由于用户不是专业人士,开发者有权利告诉用户应该采用何种态度来对待项目的需求。 2.2.1 用户需求分析
《数据结构》作为信息类专业的一门核心专业课,对《编译原理》等后续课程的学习极其重要。但该课程涉及大量的概念、定义、模型和算法,尤其是图的算法显得很抽象和深奥。用传统的“粉笔+黑板”形式很难将算法的执行过程动态地演示出来,影响了教学效果。因此有必要对图的算法的动态演示进行研究,设计《数据结构》算法演示系统,,帮助学生更快地掌握算法的精髓与实质。
传统的《数据结构》算法是基于以TurboC为代表的DOS开发坏境,可视化效果很差。而这种坏境给学习者的理解和深入探讨带来很大的问题。后来,随着多媒体技术的发展,《数据结构》的教学开始运用教学幻灯片的形式来讲授,这些教学幻灯片大多数都是静态的图片或者是一些基本的算法。这种教学模式弥补了传统的黑板板书的不足,较大地提高了教学质量。不过这种教学模式在可视性和交互性方面都存在较大的不足。目前,还有一种教学模式是采用flash动画演示并配加一定的文字说明的方式,这种方式可以在很大程度上揭示算法原理,唯一的遗憾就是这种动画演示的内容不是很全面,而且在与学习者的交互性方面存在不足,不能让学习者自己输入相关的参数。因此,急需一款可视性,交互性极强的动态演示系统,使得老师能过形象生动的向学生演示,大大改善传统教学的弊端,使复杂的难以理解的数据结构算法通过教师的课堂演示和学习者的不断
自我交互式操作试验变得通俗明朗,有效地提高教学的质量和效果。
2.3 开发工具及类库的选择
根据系统需求确定开发平台为Windows XP(SP2)、Visual Studio
2010。
主要开发工具为 Microsoft Visual C++。
Visual Studio 2008 提供了高级开发工具、调试功能、数据库功能和
创新功能,帮助在各种平台上快速创建当前最先进的应用程序。
Visual Studio 2008 包括各种增强功能,例如可视化设计器(使
用 .NET Framework 3.5 加速开发)、对 Web 开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。Visual Studio 2008 为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持 AJAX 的 Web 应用程序。
2.4 系统总体方案设计
本系统共分为两个对话框:初始化对话框、演示对话框。初始化对话框:用于对数据的初始化,创建结点、创建弧,然后显示图,重新排列结点位置,使之具有简洁美观。最后创建完成。初始化对话框也可以有退出,保证程序设计的合理性。和思维的严密性。
演示对话框:该对话框有五部分,分别是:图的搜索顺序演示、程序调用的堆栈模拟、示例源程序代码显示、当前变量值显示、其它按钮(用于控制对话框显示)。按结构化程序设计思想和实际的分析,分析得出图2.1系统功能模块图:
深度优先搜索 初 始化对话框 创创显完退 建建示出 成 结弧 图 点 图2.1 系统功能模块图
演示对话框 退 出自单终 动步止演演演示 示 示
第三章 系统实现
3.1 DFSearch.cpp和DFSearch.h的实现
// DFSearch.cpp : Defines the class behaviors for the application. //
#include \#include \#include \#ifdef _DEBUG
#define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif CDFSearchApp
BEGIN_MESSAGE_MAP(CDFSearchApp, CWinApp)
//{{AFX_MSG_MAP(CDFSearchApp)
// NOTE - the ClassWizard will add and remove mapping macros // DO NOT EDIT what you see in these blocks of generated
here. code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP() // CDFSearchApp construction CDFSearchApp::CDFSearchApp() { }
// The one and only CDFSearchApp object CDFSearchApp theApp;
// TODO: add construction code here,
// Place all significant initialization in InitInstance