全国交通咨询模拟 - 图文(2)

2019-03-10 19:40

新增车次 删除车次 火车列次编辑 trainedit 新增航班 删除航班 飞机航班编辑 planeedit 新增城市 删除城市 键盘 初始化交通系统initgraph 城市编辑 cityedit 文档 三.详细设计

1.主程序伪代码

int main() {

界面初始化; 输入操作命令; While(“命令” != “退出”) {

接受命令(用户输入要实现功能); 进入各个处理命令函数;

} }

2. 函数和过程的调用关系图

Administer

UserDemand Main()

createcityfile createplanefile initgraph createtrainfile CreateGraph EnterVertex cityedit DeleteVertex EnterplaneArc flightedit DeleteplaneArEntertrainArc trainedit DeletetrainArc ExpenditureDispose MinExpenditure MinTime TimeDispose TimeTreeDispose InitQueue TransferDispose EnterQueue DeleteQueue

TimeTreeDispose InitQueue EnterQueue DeleteQueue CreateTimeTree CopyTimeTree

VisitTimeTree DestoryTimeTree 四.调试分析:

⑴ 调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析: 在调试的过程中碰到了一下问题: a. 引用形参应用不当;

b. 文件操作中遇到读入错误或找不到文件; 解决方案:

a. 对引用形参了解的不是很透彻,导致错误,通过查阅相关书籍如《C++ Primer》和请教编程能力较高的人,最终解决问题。

b. 通过参考谭浩强编著的《C程序设计》中的文件操作,文件格式和相关文件路径的设置,最终解决问题。

⑵ 算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想: 基本操作 时间复杂度 空间复杂度 void Administer(ALGraph *G) O(1) O(1)

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)

O(n) O(n) O(n) O(n) O(1) O(n) O(n) O(1) O(n) O(n) O(1) O(n) O(1) O(n) O(1) O(n) O(n) O(1) O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(n) O(1) O(n) O(n) O(1) O(1) O(n) O(1) O(1) O(n) O(1) O(1) O(1) O(1) O(1) O(n) O(n) O(n) O(1) O(1) O(n) O(1) O(n) O(1) O(1) O(1) O(n) O(n) O(n) O(1) O(n) O(n) O(1) O(n) O(n) O(1) O(n) O(1) O(n) O(1) O(n)

⑶ 经验和体会:

通过本次课程设计,我学到了一种程序设计方法,就是结构化程序设计方法,在程序设计过程中,我尝试按如下方法进行结构化程序设计:

(1)自顶向下;(2)逐步细化;(3)模块化设计(4)结构化编码。这种设计方法的过程是将问题求解由抽象逐步具体化的过程,而且,用这种方法便于验证算法的正确性。

本次课程设计所使用的是较为复杂的抽象数据类型——图,而且在弧的基础上增加了许多信息,如添加了时间,费用等等,这无疑给编程加大了难度,同时也是相当的具有挑战性。

在编程的过程中,我用到了全局数组,我将数组放在工程的头文件里面,编译的时候报错,说是多重定义。最终放弃了创建工程,而选择了单个文件进行编译和运行,结果顺利通过。

同时,在文件操作方面我也曾遇到问题,就是在程序对文件进行读取的时候报错,无法读取文件,最后查询有关C的工具书,原来是文件路径问题,借助工具书最终解决了文件操作方面的问题。

总之,这次课程设计是对这一个学期以来对数据结构学习成果的一个验证,同时也是理论与实践很好的结合,既对学过的数据结构进行了巩固,也对我的编程能力奠定了坚实的基础。

五.用户使用说明:

1) 打开并运行程序,按任意键进入操作主界面,按提示进行相关操作;

2) 按“1”进入管理员界面,按“2”进入用户咨询界面,按“3”显示交通系

统,按“4”则退出。

3) 进入管理员界面可键入“1”初始化交通系统,并选择文档初始化方式(如果

是第一次使用该系统建议使用文档初始化交通系统,免得自己进行繁冗的初始化操作)。其余可按提示进行相关操作,不难掌握。

4) 进入用户咨询界面,可根据用户需要进行相关的选择,或是选择“1”(最少

旅行费用);或是选择“2”(最少旅行时间),又或者是选择“3”(最少旅行中转次数)等。

5) 进入显示交通系统界面,根据用户选择则可显示城市、飞机航班、列车车次

等信息。或者返回上一级菜单。

六.测试结果:

1. 个人信息界面:

2. 操作主界面:


全国交通咨询模拟 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:贵德县双拥工作小组领导小组成员单位工作职责

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: