数据结构课设.docx

上传人:b****4 文档编号:12048954 上传时间:2023-04-16 格式:DOCX 页数:16 大小:44.37KB
下载 相关 举报
数据结构课设.docx_第1页
第1页 / 共16页
数据结构课设.docx_第2页
第2页 / 共16页
数据结构课设.docx_第3页
第3页 / 共16页
数据结构课设.docx_第4页
第4页 / 共16页
数据结构课设.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数据结构课设.docx

《数据结构课设.docx》由会员分享,可在线阅读,更多相关《数据结构课设.docx(16页珍藏版)》请在冰豆网上搜索。

数据结构课设.docx

数据结构课设

《数据结构课程设计》任务书

班级:

计科10901-10905

课程设计题目:

图的基本操作及应用

数据结构课程设计是在学完数据结构课程之后的实践教学环节。

该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。

要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。

一.设计目的

1.能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。

2.提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

3.初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。

4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

5.培养根据选题需要选择学习书籍,查阅文献资料的自学能力。

二.设计任务

设计一个基于DOS菜单的应用程序。

要利用多级菜单实现各种功能。

内容如下:

1.无向图的基本操作及应用

1创建无向图的邻接矩阵

2创建无向图的邻接表

3无向图的深度优先遍历

4无向图的广度优先遍历

2.无向网的基本操作及应用

1创建无向网的邻接矩阵

2创建无向网的邻接表

3求最小生成树

3.有向图的基本操作及应用

1创建有向图的邻接矩阵

2创建有向图的邻接表

3拓扑排序

4.有向网的基本操作及应用

1创建有向网的邻接矩阵

2创建有向网的邻接表

3关键路径

4单源最短路径

5每对顶点之间的最短路径

三.设计指导

第一步:

根据设计任务,设计DOS菜单。

例如

选择1之后应该类似于

第二步:

设计菜单

voidShowMainMenu()

{

cout<<"\n";

cout<<"***************图的基本操作及应用******************\n";

cout<<"*1无向图的基本操作及应用*\n";

cout<<"*2无向网的基本操作及应用*\n";

cout<<"*3有向图的基本操作及应用*\n";

cout<<"*4有向网的基本操作及应用*\n";

cout<<"*5退出*\n";

cout<<"***************************************************\n";

}

voidUDG()

{

MGraphMG;

ALGraphALG;

intn;

do

{

cout<<"\n";

cout<<"***************无向图的基本操作及应用***************\n";

cout<<"*1创建无向图的邻接矩阵*\n";

cout<<"*2创建无向图的邻接表*\n";

cout<<"*3无向图的深度优先遍历*\n";

cout<<"*4无向图的广度优先遍历*\n";

cout<<"*5退出*\n";

cout<<"****************************************************\n";

cin>>n;

switch(n){

case1:

CreatUDG_M(MG);

break;

case2:

CreatUDG_ALG(ALG);

dispgraph(ALG);

break;

case3:

break;

case4:

break;

default:

if(n!

=5)

cout<<"错误,重新输入\n";

}

}while(n!

=5);

}

voidUDN()

{

MGraphMN;

ALGraphALN;

intn;

do{

cout<<"\n";

cout<<"***************无向网的基本操作及应用***************\n";

cout<<"*1创建无向网的邻接矩阵*\n";

cout<<"*2创建无向网的邻接表*\n";

cout<<"*3prim算法求最小生成树*\n";

cout<<"*4kraskal算法求最小生成树*\n";

cout<<"*5退出*\n";

cout<<"****************************************************\n";

cin>>n;

switch(n){

case1:

CreatUDN_M(MN);

break;

case2:

CreatUDN_ALG(ALN);

dispgraph_N(ALN);

break;

case3:

break;

case4:

break;

default:

if(n!

=5)

cout<<"错误,重新输入\n";

}

}while(n!

=5);

}

voidDG()

{

intn;

do

{

cout<<"\n";

cout<<"***************有向图的基本操作及应用***************\n";

cout<<"*1创建有向图的邻接矩阵*\n";

cout<<"*2创建有向图的邻接表*\n";

cout<<"*3拓扑排序*\n";

cout<<"*4退出*\n";

cout<<"****************************************************\n";

cin>>n;

switch(n){

case1:

break;

case2:

break;

case3:

break;

default:

if(n!

=4)

cout<<"错误,重新输入\n";

}

}while(n!

=4);

}

voidDN()

{

intn;

do{

cout<<"\n";

cout<<"***************有向网的基本操作及应用***************\n";

cout<<"*1创建有向网的邻接矩阵*\n";

cout<<"*2创建有向网的邻接表*\n";

cout<<"*3关键路径*\n";

cout<<"*4单源顶点最短路径问题*\n";

cout<<"*5每对顶点间最短路径问题*\n";

cout<<"*6退出*\n";

cout<<"****************************************************\n";

cin>>n;

switch(n){

case1:

break;

case2:

break;

case3:

break;

case4:

break;

case5:

break;

default:

if(n!

=6)

cout<<"错误,重新输入\n";

}

}while(n!

=6);

}

voidmain()

{

intn;

do{

ShowMainMenu();

cin>>n;

switch(n){

case1:

UDG();

break;

case2:

UDN();

break;

case3:

DG();

break;

case4:

DN();

break;

default:

if(n!

=5)

cout<<"错误,重新输入\n";

}

}while(n!

=5);

}

无论多少级菜单,都可以用这种模式实现,并且当前菜单不用担心前面的问题,只需编写当前的功能函数。

第三步:

添加功能函数。

对于使用类来做的同学,根据实际使用,我们知道菜单类的主要功能就是显示菜单项与响应用户选项。

所以我们可以这样设计一个菜单基类:

classCMenuBase

{

public:

CMenuBase(void);

~CMenuBase(void);

virtualvoidShowMenu()=0;

virtualvoidEvent(intEvenID)=0;

protected:

CMenuBase*m_pParent;

};

在此基础上,所有菜单类都继承这个类,以此来实现“显示”与“响应事件”的多态性。

例如,主菜单类的设计为:

classCMainMenu:

publicCMenuBase

{

public:

CMainMenu(void);

~CMainMenu(void);

virtualvoidShowMenu();

virtualvoidEvent(intEvenID);

};

和基类基本没有区别。

其实现可能为

voidCMainMenu:

:

ShowMenu(){

cout<<"\n**************《数据结构课程设计》*****************\n";

cout<<"*1线性表2栈与队列3串、数组和广义表*\n";

cout<<"*4树5图6查找*\n";

cout<<"*7排序8退出*\n";

cout<<"***************************************************\n";

}

voidCMainMenu:

:

Event(intEvenID){

CMenuBase*tmp;

switch(EvenID){

caseID_LIST:

break;

caseID_STACK_QUEUE:

SUBMENU(CStackAndQueueMenu)

break;

//…………………

caseID_EXIT:

MAIN_EXIT=true;

break;

default:

InvalidateAction();

break;

}

}

注意:

这里的关键是如何进入子菜单,我们用了一个宏命令,例如SUBMENU(CListMenu),其定义为:

#defineSUBMENU(submenu)tmp=pBase;\

pBase=newsubmenu(tmp);\

pBase->ShowMenu();

通过构造函数,将当前菜单对象作为子菜单的父菜单,以后推出子菜单时,子菜单将将显示权让给其父菜单:

#defineEXIT_SUBMENUtmp=m_pParent;\

deletepBase;\

pBase=tmp;\

pBase->ShowMenu();

这样设计,无论有多少级菜单,其编程风格都是一样的,只需管理当前的菜单交接,而无需知道它是从哪儿来的。

四.成绩评定

实习报告(文字不得少于4000字)

1.课程设计目的;

2.设计任务及要求;

3.需求分析;

4.详细设计(实现过程);

5.课程设计小结(难点、收获、存在不足、改进);

程序实现

a)完成基本结构图,程序中有三级菜单,完成基本操作者及格;

b)在第一条的基础上,任务完成的越多,成绩等级越高。

c)使用面向对象实现的可以适当加分。

成绩由三部分组成:

平时考核(20%)、程序实现(50%)、实习报告(30%)

申请不在机房做的同学:

平时成绩就加入到程序实现里面也就是程序实现70%

《数据结构课程设计》安排表

时间:

11年6月13日~11年6月25日班级:

计科院09级

地点:

4号楼2号机房人数:

170

上机学时:

40学时

17周

周一

周二

周三

周四

周五

上午

10901-2

陈勇

包小军

10903-5

周云才

冯伟

刘兆良

10901-2

陈勇

包小军

10903-5

周云才

冯伟

刘兆良

10901-2

陈勇

包小军

下午

10903-5

周云才

冯伟

刘兆良

10901-2

陈勇

包小军

10901-2

陈勇

包小军

10903-5

周云才

冯伟

刘兆良

晚上

10903-5

周云才

冯伟

刘兆良

18周

周一

周二

周三

周四

周五

上午

10903-5

周云才

冯伟

刘兆良

10901-2

陈勇

包小军

10903-5

周云才

冯伟

刘兆良

10901-2

陈勇

包小军

10903-5

周云才

冯伟

刘兆良

下午

10901-2

陈勇

包小军

10903-5

周云才

冯伟

刘兆良

10903-5

周云才

冯伟

刘兆良

10901-2

陈勇

包小军

晚上

10901-2

陈勇

包小军

说明:

每一个班安排1名指导教师,负责布置任务、指导编程及编写报告、指导学生熟悉开发环境和辅导学生调试程序,并对学生进行考勤。

最后对学生完成的系统进行现场验收和评定成绩。

计科10901陈勇

计科10902包小军

计科10903冯伟

计科10904周云才

计科10905刘兆良

 

数据结构课程设计报告

 

系(院):

计算机科学学院

专业班级:

姓名:

学号:

指导教师:

设计时间:

2011.6.13-2011.6.25

设计地点:

4#2号机房

 

(此处目录根据自己情况可以调整改动)

一、课程设计目的3

二、设计任务及要求3

三、需求分析4

四、总体设计4

五、详细设计与实现[含代码和实现界面]7

六、课程设计小结

 

(最后一页要加上下面的格式)

指导老师意见:

 

成绩:

教师签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1