ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:199.26KB ,
资源ID:8821841      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8821841.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构公交路线管理模拟系统.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构公交路线管理模拟系统.docx

1、数据结构公交路线管理模拟系统数 据 结 构课 程 设 计 报 告一、课程设计名称 公交线路管理模拟系统、实用工具软件Microsoft visual C+ 6.0三、课程设计内容简介1、 实践目的1 )、掌握图的概念、图的两种存储结构 (邻接矩阵和邻接表 ) 的存储思想及其存储实 现;2)、掌握上机实现图的基本方法;3)、掌握有关图的操作并用高级语言编程实现;4)、熟练掌握图的深度、广度优先遍历算法思想及其程序实现;5)、掌握图的常见应用算法的思想及其程序实现。2、 实践要求1)、掌握本章实践的算法;2)、上机运行本章的程序,保存和打印出程序的运行结果,并结合程序进行分析;3)、按照你对图的操

2、作需要,重新改写程序并运行,打印出文件清单和运行结果;4)、注意理解各算法实现时所采用的存储结构;5)、注意正、逆邻接表。3、 系统简介及设计思路 本项目是对公交车路线信息的简单模拟,以完成建立公交路线信息、修改公交路线信息和删除公交路线信息等功能本项目的实质是完成对公交路线信息的建立、查找、插入、修改、删除等功能, 可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作, 最后完成主函数以验证各个函数功能并得出运行结果。公交站点之间的关系可以是任意的,任意两个站点之间都可能相关。而在图形结 构中,结点之间的关系可以是任意的,图中任意两个数据之间都可能相关。所以可以 用图形结

3、构来表示 n 个公交站点之间及站点之间可能设置的公交路线,其中网的顶点 表示公交站点,边表示两个站点之间的路线,赋予边的权值表示相应的距离。因为公 交路线是有一定的连续关系的,如果想输出从某一个起始点开始到某一终点结束的公 交路线,就需要找到从某一点开始的第一个邻接点和下一个邻接点。因为在邻接表中 容易找到任一顶点的第一个邻接点和下一个邻接点,所以本项目使用了图的邻接表存 储结构。4、 程序设计流程为了创建公交路线,首先建立结构体载入公交车的相关信息:名称、司机、起始 站、终点站、站数以及距离。利用邻接表把站点与站点之间的信息储存起来。用文件 详细记载了路线信息,便于管理者初始化公交路线信息。

4、再构造子函数来创建、及时 修改、插入、删除公交信息、以及查询公交路线是否出错,各站点之间的距离。用主 函数来调用子函数,进入导航系统而进行操作。导航查询(initial)流程新建(newb)流程修改路线(Modifyr)流程删除汽车(delb)流程5、运行环境代码用 C语言完成,布置在 Microsoft visual C+ 6.0运行。Microsoft visual C+ 6.0 具有集成开发环境,可提供编辑 C语言,C+以及C+/CLI等编程语言。整合了便利的除 错工具,特别是整合了微软视窗程式设计( Windows API)、三维动画 DirectX API,Microsoft .NE

5、T 框架。* 欢迎使用公汽査询系统丫六输入如下公交线路信息證询汽SWb务任 查查1? 栗 旷 襄建1仝出刪 A B c D E F136191551214161路 2路 3路4路5路A10001A10002A10003A10004A10005司机1 6司机2 6司机3 6司机4 6司机5 700 1 2 3 4 515 6 7 4 8 17 1200 9 7 3 10 1230 6 13 112 14 1700 15 5 8 16 10 2 13创建示意图(1路)刨建新呑汽備输入新仝汽号=请输入撅路线发车盯间HR情输入新路线总站舍数=?晴输入必汽第丄站合名称次晴输入舍汽第H站白名称泊请输入沦汽

6、第3站的名称=3请输入益汽第理站自答称池谯输入必汽第5站舍名称汚悻小凹01号公汽创建成功T您想、纟鏗妻新建退出刨建细 请选择A N创建结束选择N回到主菜单,再选择A(导航查询)主菜单下选择B(公汽查询)就可以查询已有的公交信息,查询方式有公汽号查询、站 台查询两种查询方式我们以公汽号查询(查询 津A10001)为例:请输入要查询的公汽号: 公汽号 vtfi 10001 站数:5 发车时间 6: 06 ftrt司机:司机1: 路线: 1 2 3 4 5津口10胸1号公汽查询成功!您想 继续查询“ 退岀查询细 请选择A或N返回到主菜单,选择D进入系统管理务 團負序任 单r 路公公程一 粟 择 專改

7、改笛选 里 無 壬修傷删退请 管ba B c P我们以修改路线为例(修改 津A10001)请输入要修改路线的公汽号;津口丄腼血司机姓名:司机i请修改路线总站台数=23请输入公汽第1站台名称汀请输入公汽第2站台名称汁请输入公汽第M站台名称汚自动生成修改后的路线丄r-3 5律白1酮血号公汽修改成功!您想 继续修改 退岀修改他 请选择A或H最后在主菜单下选择E(清空数据)最后选择F即可退出程序四、得意与不足之处:1、得意之处:1) 、可以根据题目需要翻阅图书馆资料自学 C+程序,完成代码。2) 、完成过程中思路清晰,可以根据实际进行分析设计、编程调试,能够熟练应 用软件的分析方法和工程设计方法。3)

8、 、够按要求编写课程设计报告书,能正确阐述设计和实验结果便于管理者自 由创建公交车的相关信息2、 不足之处:1) 、程序太过繁琐,采用了一些不常用的语句2) 、不能简易地查询任意两站之间的距离3) 、不能查询任意的站点,只能查询起点和终点4) 、不能任意输入两个站点,给出最优的乘车路线五、自我感受:课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会, 有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的 实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够 使得这

9、次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的 帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!八、参考文献:数据结构实践训练教程刘光然主编南开大学出版社数据结构严蔚敏主编清华大学出版社C语言程序设计谭浩强主编清华大学出版社附录:#include #include #include #include struct buschar num30;/车号char driver50;/司机char stime30;/发车时间char start30;/起始站char end30;/终点站int z;/ 站数char *pr;/ 指向路线的首指针struct b

10、us *next;/下一辆车的结构体;struct bus *bhead=NULL;/ 放公汽信息的头指针 struct bus *bi=NULL;/ 放公汽信息的最后的指针 void initial()FILE *fp;fp=fopen(bus.txt,r);if(fp=NULL)printf(nn 无公汽信息文件 !);return; fseek(fp,0,SEEK_END);int i,n;n=ftell(fp)/sizeof(struct bus);/printf(nnnn 共有 d辆公汽!,n);rewind(fp);struct bus *p;/forfor(i=0;inext=N

11、ULL;/ 初始化时下一个指向空,都是一个个单独的p-pr=NULL;/ 让路线为空/ 路线信息存放在文件名为” 车号 “的文件中 ; 车号是唯一的FILE *fp1;fp1=fopen(p-num,r);if(!fp1) printf(n%s 号车无初始路线 !,p-num);elsechar * p1;p1=(char *)malloc(p-z*40*sizeof(char) );fread(p1,p-z*50*sizeof(char),1,fp1);/ 将路线写入内存p-pr=p1;fclose(fp1);/ printf(nnnn 初始化 %s 号车路线成功 !,p-num);/ 路线

12、信息if(bhead=NULL) bhead=bi=p;else bi-next=p; bi=p; /for 结尾/printf(nnnn 初始化 4辆车成功!,n);fclose(fp);void newb()loop1:prin tf(nnnn 创建新公汽 nn);struct bus *p;p=(struct bus *)malloc(sizeof(struct bus ); p-next=NULL;p-pr=NULL;loop2:printf(n 请输入新公汽号: nn);scanf(%s,p-num);struct bus *pj=bhead;while(pj)if(strcmp(p

13、j-num,p-num)=0)printf(nn 错误,该公汽号已经存在 !nn);goto loop2;pj=pj-next;printf(n 请输入新公汽司机姓名: n);scanf(%s,p-driver);printf(n 请输入新路线发车时间 nn);scanf(%s,p-stime);loop3:printf(nnn 请输入新路线总站台数 (=2)nn);scanf(%d,&p-z);if(p-z=2)p-pr=(char *)malloc( p-z*50*sizeof(char) ); p-pr0=0;int i;char cc40;for(i=1;iz;i+)printf(n

14、请输入公汽第4站台名称:,i);scanf(%s,cc);if(i=1)strcat(p-pr,cc);strcpy(p-start,cc);elsestrcat(p-pr, );strcat(p-pr,cc);strcpy(p-end,cc);printf(nn 自动生成公汽路线 %s,p-pr);else printf(nn 错误,该公汽站台数小于 2,请重新输入!nn); goto Ioop3;if(bhead=NULL)bi=bhead=p;elsebi-next=p;bi=p;printf(nn%s 号公汽创建成功 !,p-num);printf(nnn 您想 继续新建(A) 退出创

15、建(N) 请选择A 或N nn );char c;c=getch();if(c=a|c=A) goto loop1;else return;void modifyr()char c,b20;prin tf(nnnn 修改路线 nn);loop:printf(n 请输入要修改路线的公汽号: nn);scanf(%s,b);struct bus *p=bhead;int n=1;while(p)if(strcmp(p-num,b)=0)printf(nn 司机姓名: %s,p-driver);n=0;break; p=p-next;if(n) printf(nn 错误,公汽号不存在 !nn 重新修

16、改 (A) 退出修改 (N) 请选择 A 或 N nn );char c;c=getch();if(c=a|c=A) goto loop;else return;loop1:printf(nnn 请修改路线总站台数 (=2)nn);int nn;scanf(%d,&nn);if(nn=2)p-pr=(char *)malloc( p-z*50*sizeof(char) ); p-pr0=0; p-z=nn;int i;char cc40;for(i=1;iz;i+)printf(n 请输入公汽第4站台名称:,i);scanf(%s,cc);if(i=1)strcat(p-pr,cc);strc

17、py(p-start,cc); elsestrcat(p-pr, );strcat(p-pr,cc);strcpy(p-end,cc);printf(nn 自动生成修改后的路线 %s,p-pr);else printf(nn 错误,该公汽站台数小于 2,请重新输入 !nn); goto loop1; printf(nnn%s 号公汽修改成功 !,p-num);printf(nnn 您想 继续修改 (A) 退出修改 (N) 请选择 A 或 N nn );c=getch();if(c=a|c=A) goto loop;FILE *fp;fp=fopen(p-num,w);fwrite(p,nn*5

18、0*sizeof(char),1,fp);fclose(fp);/ 保存线路信息void modifyb()char c,b20;prin tf(nnnn 修改公汽 nn);loop:printf(n 请输入要修改路线的公汽号: nn); scanf(%s,b);struct bus *p=bhead;int n=1;while(p)if(strcmp(p-num,b)=0)printf(nn 司机姓名: %s 发车时间: %sAM,p-driver,p-stime );n=0;break;p=p-next;if(n) printf(nn 错误,公汽号不存在 !nn 重新修改 (A) 退出修改

19、 (N) 请选择 A 或 N nn ); c=getch();if(c=a|c=A) goto loop;else return;printf(n 请输入要修改 %s 公汽的新司机: nn,p-num);scanf(%s,p-driver);printf(n 请输入要修改 %s 公汽的发车时间: nn,p-num);scanf(%s,p-stime);printf(nnn%s 号公汽修改成功 !,p-num);printf(nnn 您想 继续修改 (A) 退出修改 (N) 请选择 A 或 N nn );c=getch();if(c=a|c=A) goto loop;void showb()st

20、ruct bus *p=bhead;if(!p)printf(nn 公汽线路信息数据库为空 !); return; elseprin tf(nnn 公汽信息数据库 );printf(n| |);int n=1;while(p)printf(n| 公汽号:s 站数:d 发车时间:%sAM 司机:s,p-num, p-z,p-stime,p-driver);printf(n| 路线: %s,p-pr);printf(n| |);n=0;p=p-next;if(n)printf(nn 公汽线路信息数据库为空 !);void lookb()char c,b20;/prin tf(nnnn 查询路线 n

21、n);loop:printf(n 请输入要查询的公汽号: nn); scanf(%s,b);struct bus *p=bhead;int n=1;while(p)if(strcmp(p-num,b)=0)n=0;break;p=p-next;if(n) printf(nn 错误,公汽号不存在!nn重新输入(A) 退出查询(N)请选择 A 或 N nn );c=getch();if(c=a|c=A) goto loop;else return;printf(n| |);printf(n| 公汽号:s 站数:d 发车时间:%sAM 司机:s,p-num, p-z,p-stime,p-driver

22、);printf(n| 路线: %s,p-pr);printf(n| |);printf(nnn%s 号公汽查询成功 !,p-num);printf(nnn 您想 继续查询 (A) 退出查询 (N) 请选择 A 或 N nn );c=getch();if(c=a|c=A) goto loop;void lookr()/ prin tf(nnnn 查询公汽 nn);char c,b40;loop:/printf(n 查询公汽菜单 );/printf(n| |);printf(n n n n 请选择查询方式 : );printf(n| |);printf(n| A 起始站查询 |);printf(

23、n| |);printf(n| B 终点站查询 |);printf(n| |);printf(n| C 退出 |);printf(n| |);c=getch();if(c=B|c=b)printf(n 请输入要查询的终点站: nn); scanf(%s,b);struct bus *p=bhead;int n=1;printf(n 您可以乘坐以下公汽到达 %s,p-end);printf(n| -|);while(p)if(strcmp(p-end,b)=0)n=0;printf(n| 公汽号: %s 路线: %s ,p-num,p-pr);printf(n| -|);p=p-next;if(

24、n) printf(nn 错误,终点站不存在 !nn 重新输入 (A) 退出查询(N) 请选择 A 或 N nn );c=getch();if(c=a|c=A) goto loop;printf(nn 您想 继续查询 (A) 退出查询 (N) 请选择 A 或 N nn );c=getch();if(c=a|c=A) goto loop;if(c=A|c=a)printf(n 请输入要查询的起始站: nn); scanf(%s,b);struct bus *p=bhead;int n=1; printf(n您可以乘坐以下公汽起始站为 %s,p-start);printf(n| -|);while

25、(p)if(strcmp(p-start,b)=0)n=0;printf(n| 公汽号: %s 路线: %s ,p-num,p-pr);printf(n| -|);p=p-next;if(n) printf(nn 错误,起始站不存在 !nn 重新输入 (A) 退出查询(N) 请选择 A 或 N nn );c=getch();if(c=a|c=A) goto loop;printf(nn 您想 继续查询 (A) 退出查询 (N) 请选择 A 或 N nn );c=getch();if(c=a|c=A) goto loop;void delb()char b20;prin tf(nnnn 删除公汽

26、 nn);loop:printf(n 请输入要删除路线的公汽号: nn); scanf(%s,b);struct bus *p=bhead;struct bus *p1=bhead;int n=1,y=0;while(p)if(strcmp(p-num,b)=0)n=0;break;y+;if(y1) p1=p1-next;p=p-next;char c;if(n) printf(nn 错误,公汽号不存在!nn重新输入(A) 退出删除(N)请选择 A 或 N nn );c=getch();if(c=a|c=A) goto loop;else return; if(p=bhead)bhead=bhead-next;else p1-next=p-next;printf(n 删除路线的公汽成功 !nn);printf(nn 您是 继续删除(A) 退出删除(N) 请选择A或N nn );

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

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