全国交通咨询模拟数据结构课程设计(2)
操作结果:对图进行广度优先遍历。在遍历过程中对每个顶点调用函
数Visit一次且仅一次。一旦visit()失败,则操作失败。
}ADT Graph
其他的抽象数据类型定义如下:
typedef struct {int number;
float expenditure; int begintime[2]; int arrivetime[2]; }Vehide; typedef struct
{Vehide stata[MAX_ROUTE_NUM]; int last; }infolist;
typedef struct ArcNode {int adjvex;
struct ArcNode *nextarc; infolist info;
全国交通咨询模拟数据结构课程设计
}ArcNode;
typedef struct VNode {char cityname[10];
ArcNode *planefirstarc,*trainfirstarc; }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct {AdjList vertices;
int vexnum,planearcnum,trainarcnum; }ALGraph;
typedef struct Node {int adjvex; int route;
struct Node *next; }Node;
typedef struct QNode {int adjvex;
struct QNode *next; }QNode; typedef struct {QNode *front; QNode *rear; }LinkQueue;
typedef struct TimeNode {int adjvex; int route;
int begintime[2]; int arrivetime[2];
struct TimeNode *child[MAX_ROUTE_NUM]; }TimeNode,*TimeTree; struct arc {int co;
char vt[10]; char vh[10]; int bt[2]; int at[2]; float mo;
}a[MAX_ARC_SIZE];
基本操作:
void Administer(ALGraph *G); void cityedit(ALGraph *G);
void CopyTimeTree(TimeTree p,TimeTree q); void createcityfile();
void CreateGraph(ALGraph *G); void createplanefile();
全国交通咨询模拟数据结构课程设计
void CreateTimeTree(TimeTree p,int i,int j,LinkQueue *Q,infolist (*arcs)[MAX_VERTEX_NUM]); void createtrainfile();
int DeleteplaneArc(ALGraph *G);
void DeleteQueue(LinkQueue *Q,int *x); int DeletetrainArc(ALGraph *G); void DeleteVertex(ALGraph *G);
void DemandDispose(int n,ALGraph G); void DestoryTimeTree(TimeTree p); void EnterplaneArc(ALGraph *G); void EnterQueue(LinkQueue *Q,int x); void EntertrainArc(ALGraph *G); void EnterVertex(ALGraph *G);
void ExpenditureDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1,float *M,int *final);
void flightedit(ALGraph *G); void initgraph(ALGraph *G); void InitQueue(LinkQueue *Q); int IsEmpty(LinkQueue *Q);
int LocateVertex(ALGraph *G,char *v);
void MinExpenditure(infolist arcs,float *expenditure,int *route); void MinTime(infolist arcs,int *time,int *route); void PrintGraph(ALGraph *G); int save(ALGraph *G);
void TimeDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1,int (*T)[2],int *final);
void TimeTreeDispose(Node *head,infolist (*arcs)[MAX_VERTEX_NUM]); void trainedit(ALGraph *G);
void TransferDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1); void UserDemand(ALGraph G); void VisitTimeTree(TimeTree p);
主程序的流程以及各程序模块之间的调用关系
全国交通咨询模拟数据结构课程设计
管理员管理 Administer
初始化交通系 统 initgraph
城市编辑 cityedit
飞机航班编辑 Administer
列车车次编辑 Administer
返回上一 级菜单
用户咨询 UserDemand
最少旅行费用 ExpenditureDispos e UserDemand
最少旅行时间 TimeDispose
最少中转次数 TransferDispos e
返回上一 级菜单
显示交通系统 PrintGraph
显示城市
显示飞机航班
显示列车车次
返回上一级菜单
初始化交通系 统 initgraph
键盘-8-
文档
全国交通咨询模拟数据结构课程设计
三.详细设计
1.主程序伪代码
int main() {
界面初始化; 输入操作命令; While(“命令” != “退出”) {
接受命令(用户输入要实现功能); 进入各个处理命令函数;
} }
2. 函数和过程的调用关系图
全国交通咨询模拟数据结构课程设计
Main()
UserDemand
InitQueue EnterQueue DeleteQueue TimeTreeDispose CreateTimeTree CopyTimeTree
VisitTimeTree DestoryTimeTree
- 10 -
全国交通咨询模拟数据结构课程设计
四.调试分析:
⑴ 调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析: 在调试的过程中碰到了一下问题: a. 引用形参应用不当;
b. 文件操作中遇到读入错误或找不到文件; 解决方案:
a. 对引用形参了解的不是很透彻,导致错误,通过查阅相关书籍如《C++ Primer》和请教编程能力较高的人,最终解决问题。
b. 通过参考谭浩强编著的《C程序设计》中的文件操作,文件格式和相关文件路径的设置,最终解决问题。
⑵ 算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分
全国交通咨询模拟数据结构课程设计
: 通过本次课程设计,我学到了一种程序设计方法,就是结构化程序设计方法,在程序设计过程中,我尝试按如下方法进行结构化程序设计:
(1)自顶向下;(2)逐步细化;(3)模块化设计(4)结构化编码。这种设计方法的过程是将问题求解由抽象逐步具体化的过程,而且,用这种方法便于验证算法的正确性。
本次课程设计所使用的是较为复杂的抽象数据类型——图,而且在弧的基础上增加了许多信息,如添加了时间,费用等等,这无疑给编程加大了难度,同时也是相当的具有挑战性。
在编程的过程中,我用到了全局数组,我将数组放在工程的头文件里面,编译的时候报错,说是多重定义。最终放弃了创建工程,而选择了单个文件进行编译和运行,结果顺利通过。
同时,在文件操作方面我也曾遇到问题,就是在程序对文件进行读取的时候报错,无法读取文件,最后查询有关C的工具书,原来是文件路径问题,借助工具书最终解决了文件操作方面的问题。
总之,这次课程设计是对这一个学期以来对数据结构学习成果的一个验证,同时也是理论与实践很好的结合,既对学过的数据结构进行了巩固,也对我的编程能力奠定了坚实的基础。
五.用户使用说明:
1) 打开并运行程序,按任意键进入操作主界面,按提示进行相关操作;
2) 按“1”进入管理员界面,按“2”进入用户咨询界面,按“3”显示交通系
统,按“4”则退出。
3) 进入管理员界面可键入“1”初始化交通系统,并选择文档初始化方式(如果
是第一次使用该系统建议使用文档初始化交通系统,免得自己进行繁冗的初始化操作)。其余可按提示进行相关操作,不难掌握。
4) 进入用户咨询界面,可根据用户需要进行相关的选择,或是选择“1”(最少
旅行费用);或是选择“2”(最少旅行时间),又或者是选择“3”(最少旅行中转次数)等。
相关推荐:
- [高中教育]电子线路高频非线性部分2.1
- [高中教育]中班美术活动——我的小手
- [高中教育]常用三极管参数大全
- [高中教育]计算机常见故障及解决办法
- [高中教育]风机基础环水平度控制方法探讨
- [高中教育]机械安全工程(专升本)阶段性作业3
- [高中教育]2009年安徽省高考语文考试说明刍议
- [高中教育]unit5 let's eat公开课教案设
- [高中教育]计算机网络原理课后习题答案
- [高中教育]2016-2022年中国新能源市场研究与投资
- [高中教育]2015-2020年中国会议行业市场评估及投
- [高中教育]经销商大会峰会主持人串词开场白
- [高中教育]2014新版北师大数学三年级上册小熊购物
- [高中教育]七年级第一学期体育与健康全套教案
- [高中教育]第三章:国际金融市场
- [高中教育]六年级下册数学单元测试-2.比例 北师大
- [高中教育]2016年上海海事大学法学院624刑法之《
- [高中教育]中国碳化钙产业竞争现状及未来五年投资
- [高中教育]网络时代,我们怎么玩
- [高中教育]圆锥曲线——高中数学基础知识与典型例
- 高集医院世界艾滋病宣传日活动方案
- 苏教版六年级英语上册期末试卷含答案
- 全民枪战生化英雄模式幽灵怎么玩 生化
- 灿烂的宋元文化一导学案
- 第2章货币资金与应收款项
- 北师大版八年级下册数学第三章《分式》
- 浅析高分子材料成型加工技术
- 华南理工大学2013年度共青团先进集体及
- 教师资格科目二小学教案模板(共合集)
- 工程扩建可研报告
- 中华人民共和国海事局2014年度招录公务
- 提高农村小学生作文能力的教学尝试
- 徒手心肺复苏术操作步骤
- 毛概试题库7-15章
- 2014-2015学年度(上)初中班主任工作计
- 企业驾驶员安全生产责任书
- 第07章 不等式测试题-2016年高考文科数
- 医疗器械经营企业工作程序
- 考研英语必背36篇_彩版_精华
- 初中9月13-15假期作业 (1)




