云南大学软件学院数据结构实验六实验报告——校园自动导游系统
- 格式:doc
- 大小:4.32 MB
- 文档页数:19
(本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助) 实验难度: A □ B □ C □ 序号 学号 姓名 成绩 1 2 3
指导教师 (签名)
学 期: 任课教师: 实验题目: 实验六 图及图的应用 小 组 长: 联系电话: 电子邮件: 完成提交时间:年月日
云南大学软件学院 数据结构实验报告 云南大学软件学院2010学年 秋季 学期 《数据结构实验》成绩考核表 学号: 姓名: 本人承担角色:课题分析,算法设计,程序编写,后期调试,完成实验报告 评分项目 评分指标 分值 得分
实验构思(10%) 1. 实验目的明确 5
2. 实验内容理解透彻、对实验所涉及到的知识点分析到位 5
实验设计(15%) 1. 有对基本数据结构的抽象数据类型定义 5
2. 实验方案设计完整,数据结构、算法选择合理 5
3.算法结构和程序功能模块之间逻辑清晰、有相应的流程图 5
实验实现(25%) 1. 代码编写规范、风格统一、注释清楚易读 5
2. 程序运行正常,测试结果正确 15 3. 界面友好、易于操作、有较强的容错性 5
实验报告撰写(10%) 1. 内容详实无缺漏,文字流畅、图表清楚 5
2. 实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考
5
个人工作量(30%) 1. 个人完成工作量 15 2. 个人技术水平 10 3. 团队合作精神 5 实验运作(10%) 1. 有一定用户群 5 2. 应用前景分析 5
综合得分: (满分100分) 指导教师: 年 月 日 (注:此表在难度为C时使用,每个成员一份。) 云南大学软件学院2010学年 秋季 学期 《数据结构实验》成绩考核表 学号: 姓名: 本人承担角色: 课题分析,算法设计,后期调试, 完成实验报告 评分项目 评分指标 分值 得分
实验构思(10%) 1. 实验目的明确 5
2. 实验内容理解透彻、对实验所涉及到的知识点分析到位 5
实验设计(15%) 1. 有对基本数据结构的抽象数据类型定义 5
2. 实验方案设计完整,数据结构、算法选择合理 5
3.算法结构和程序功能模块之间逻辑清晰、有相应的流程图 5
实验实现(25%) 1. 代码编写规范、风格统一、注释清楚易读 5
2. 程序运行正常,测试结果正确 15 3. 界面友好、易于操作、有较强的容错性 5
实验报告撰写(10%) 1. 内容详实无缺漏,文字流畅、图表清楚 5
2. 实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考
5
个人工作量(30%) 1. 个人完成工作量 15 2. 个人技术水平 10 3. 团队合作精神 5 实验运作(10%) 1. 有一定用户群 5 2. 应用前景分析 5
综合得分: (满分100分) 指导教师: 年 月 日 (注:此表在难度为C时使用,每个成员一份。) (下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分) 一、【实验构思(Conceive)】(10%) (本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识) 1.数据结构算法的知识: 图的定义。 图的节点和边的表示。 图的存储结构。 图的分类:有向图-无向图-带权图-无权图。 图的遍历:深度优先搜索-广度优先搜索。 2.面向对象的程序设计相关知识: C#基本语法知识。 类的定义,实例化。 对象的生成调用。 变量的传递。 3.图形处理相关技术 Adobe Photoshop CS4 相关基本操作 蒙板使用的技巧
二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 本实验创建了四个类Form类//用于窗口的初始化,控制各控件的属性和动作 Data类//用于本程序所需的数据的生成以及调用 Graph类//用于构造图以及定义图的各种操作 Vertex类//用于构造带权图的节点 抽象数据类型的功能规格说明: 窗口初始化:private void Form1_Load(object sender, EventArgs e) 开始按钮:private void button3_Click(object sender, EventArgs e) 复位按钮:private void button2_Click(object sender, EventArgs e) 查看产品信息:private void button4_Click(object sender, EventArgs e) 退出按钮:private void button3_Click(object sender, EventArgs e) 定义结构体数组:public struct member { public int fromsw;//起点的数字代号 public int tosw;//目的地的数字代号 public int distance;//保存长度 } Data的构造函数(创建带权图)public Data() HVertex类中创建节点的构造函数:public HVertex (int x , int y,int z) Graph类中定义的节点类型:public HVertex root,p,r; Graph类中的构造函数,创建一个带权图:public Graph() Graph类中的成员函数,对于指定的字符实行深度优先搜索,遍历完之后形成一个深度优先搜索树:public int Search() Graph类中的成员变量:public int Dijikstra()
主程序模块伪代码说明: 创建新的无向图:Graph = new Data(); 退出程序:this.Close()
子程序伪代码说明(Graph): 构建无向图:public Vertex; 核心程序段(生成无向图): public void Path() { int startTree = 0; vertexList[startTree].isInTree = true; nTree = 1; for (int j = 0; j <= nVerts; j++) { int tempDist = adjMat[startTree,j]; apath[j] = new Graph(startTree, tempDist); } while(nTree < nVerts) { int indexMin = GetMin(); int minDist = sPathp[indexMin].distance; currentVert = indexMin ; startToCurrent = sPath[indexMin].distance; vertexList[currentVert].isInTree = true; nTree++; AdjustShortPath(); }
返回栈中元素个数: public int count { get{ return list.Count; } } 主程序模块与各子程序模块间的调用关系: Class Form1调用Class Data初始化程序所要的各项数据。 Class Form1调用Class Graph生成无向图并且初始化Dijikstra算法。 Class Graph调用Class Vertex来初始化各个节点。 Class Graph调用Class Stack保存产生的节点编号用于回退。 三、【实现描述(Implement)】(30%) (本部分应包括:抽象数据类型具体实现的函数原型说明、 关键操作实现的伪码算法、 函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。) ①抽象数据类型具体实现的函数原型说明: 1、 节点类型; class Vertex { public string label; public bool isInTree; public Vertex(string lab) { label = lab; isInTree = false; } }2、深度优先搜索树算法 class Graph { public int distance; public int parentVert; public Graph (int pv,int d) { distance = d; parentVert = pv; } public void Path() { int startTree = 0;