华科控制C语言课程设计交通模拟导航系统.docx
《华科控制C语言课程设计交通模拟导航系统.docx》由会员分享,可在线阅读,更多相关《华科控制C语言课程设计交通模拟导航系统.docx(152页珍藏版)》请在沃文网上搜索。
1、目 录引言31.1背景31.2参考资料3需求分析32.1需求分析32.2运行环境3系统设计33.1模块划分33.2功能简介33.3时间安排33.4程序简要流程图33.5核心算法3源代码3152多有不足 仅供参考引言1.1背景车载GPS导航仪:随着汽车的普及和道路的建设,城际间的经济往来更加频繁,活动的区域也越来越大;为了提高生活质量,大量的休闲活动、探险活动的举行使我们并不局限在自己认识的一小块区域中,不认识道路,找不到目的地的情况也屡有发生,就此,车载GPS导航仪将会以合适的价位走入车主的世界,成为车上的基本装备。车载GPS导航仪解决方案,其实是最灵活和最复杂的,车载GPS导航仪有很多种解决
2、方案可以满足车载的需要。GPS汽车导航是将GPS和地理信息系统、现代通讯技术综合在一起,研制成的一种新型汽车导航定位设备,具备监控、调度、报警、遥控熄火和遥控断油、自动存档、系统自检等功能。它可将汽车的任何动态位置随时准确无误地显示在仪器的电子地图上。导航仪的电子地图自动跟踪显示汽车当前位置及周边情况,驾驶员可随时在导航仪上查询周边一定半径地区内的地理信息。交通模拟导航系统能够简单地模拟GPS汽车导航系统。在建立一个简单的小型化城市地图的基础上,能对该城市内指定的车辆提供导航。 1.2参考资料1. 王士元. C高级实用程序设计. 北京: 清华大学出版社. 19962. 周纯杰,刘正林等. 标准
3、C语言程序及应用. 武汉: 华中科技大学出版社. 20053. 姚远. 高级C语言程序设计技巧与实例. 北京: 机械工业出版社, 19954. 陈清华, 朱红. C语言课程设计. 南京: 东南大学出版社, 20035. 潭浩强. C语言程序设计. 北京: 清华大学出版社, 20006. 刘振安 ,苏仕华 . C语言图形设计 北京:人民邮电出版社,19957. 潘建华 ,卫跃文. C语言实用软件界面设计 西安:西安电子科大出版社,19958. 鸿健编译. c语言高级程序员编程指南 北京:北京希望电脑公司公司,1991 好友指导: 彭军才 程攀 需求分析2.1需求分析由于GPS技术所具有的全天候、
4、高精度和自动测量的特点,作为先进的测量手段和新的生产力,已经融入了国民经济建设、国防建设和社会发展的各个应用领域。随着冷战结束和全球经济的蓬勃发展,美国政府宣布2000年至2006年期间,在保证美国国家安全不受威胁的前提下,取消SA政策,GPS民用信号精度在全球范围内得到改善,利用C/A码进行单点定位的精度由100米提高到20米,这将进一步推动GPS技术的应用,提高生产力、作业效率、科学水平以及人们的生活质量,刺激GPS市场的增长。据有关专家预测,在美国,单单是汽车GPS导航系统,2000年后的市场将达到30亿美元,而在我国,汽车导航的市场也将达到50亿元人民币。可见,GPS技术市场的应用前景
5、非常可观。我们用TC3.0编写的C语言程序来模拟导航栏仪的各种操作过程。GPS导航仪的常用功能大致有:1.地图查询 可以在操作终端上搜索你要去的目的地位置。 可以记录你常要去的地方的位置信息,并保留下来。2.路线规划 GPS导航系统会根据你设定的起始点和目的地,自动规划一条线路。 规划线路可以设定是否要经过某些途径点。3.自动导航 语音导航:用提前向驾驶者提供路口转向,导航系统状况等行车信息,就像一个懂路的向导告诉你如何驾车去目的地一样。导航中最重要的一个功能,使你无需观看操作终端,通过语音提示就可以安全到达目的地。 画面导航:在操作终端上,会显示地图,以及车子现在的位置,行车速度,目的地的距
6、离,规划的路线提示,路口转向提示的行车信息。 因为在DOS环境下编程模拟,所以只模拟了部分功能,如下:1. 交通模拟导航系统提供在华科校园内导航的功能;2. 进入系统后,可选择进行帮助、退出或导航;3. 选择退出,则直接退出程序。4. 选择导航,则进入导航界面:选择路径(车辆的起始点自动读取上一次所到达的目的地,选择终点,可以选择必经地),选完路线后系统将会在地图上用粗线标出路线图,选择导航开始,进入模拟导航模式,用键盘控制小车的运动。过程中现实路程和时间;5. 周边查询:选择位置,就可以显示出附近的建筑;6. 帮助,则进入帮助界面,帮助如何使用导航系统;7. 直接退出;8. 系统会提前对即将
7、经过的红绿灯进行提醒(以上为初期设计思路)2.2运行环境 交通模拟导航系统是对GPS汽车导航系统的模拟,系统的开发基于C语言, 其设计环境要求,是在DOS环境下用C语言编程实现,使用TC或BC开发软件,因此,交通模拟导航系统能够在绝大多数计算机系统上运行,包括常见的windows XP操作系统及windows 7 32位机上运行,但是由于BC在64位的windows 7下无法运行,且BC或TC在windows 7下不能较好地解决全屏问题,因而,推荐在windows XP的环境下测试运行此交通模拟导航系统。系统设计3.1模块划分1. 图形界面模块:主要包括动画,主界面,菜单和地图,标出导航路线。
8、2. 鼠标模块:包括鼠标的图形,鼠标状态。3. 汉字模块:汉字输出。4. 控制模块:控制小车运动,分为自动和手动。5. 算法模块:计算最优路径,地杰斯特拉算法。6. 文件模块:保存小车的位置路径等信息。7. 菜单模块:显示菜单8. 主界面功能实现模块3.2功能简介1. 开场动画,显示“交通模拟导航系统 欢迎使用”,附带开场动画;2. 按任意键,进入主界面,菜单栏显示“所在地”,“终点选择”,“导航开始”,“查询”,“帮助”,“退出”选项;3. 点击帮助,进入文字说明界面,双击鼠标,回到主界面;4. 点击退出,则退出程序;5. 点击“查询”,列出可选地点,选择地点后则显示选择地点的信息;6. 点
9、击“终点选择”,选择终点,确定终点选择;7. 点击导航开始,可以选择手动或者自动模式,确定模式则进入导航界面8. 进入导航界面,手动控制小车速度、方向、暂停和退出,左边菜单显示时间、速度、距离、下一站和转向等信息9. 如果是自动模式,则小车自动沿着最优路线达到终点10. 达目的地,选择继续或者退出导航。11. 回到这界面可以再次选择终点重新导航。3.3时间安排任务备注第2周系统需求分析与设计报告完成第3,4周界面模块,汉字模块完成第5,6周算法模块完成第7周鼠标模块,文件模块完成第8周编码实现、调试完成第9周调试、验收、完成报告完成3.4程序简要流程图 进入开场动画 主界面 显示所在地 选择终
10、点导航开始 查询 帮助退出 选择终点列表 单击选择终点 回到主界面 是否满足条件 选择导航模式回 主界 面查询列表选择查询地点显示地点信息 回到主界面显示帮助信息回主界 面自动 手动 键盘控制小车自动运动 到达目的地 回到主界面 N Y3.5核心算法/迪格拉斯算法void shortest_path(int beginPointNum,int finishPointNum,double distanceNN,int n,int path16)POINTSTATE stateN;/定义点的状态int i,k;double min;/最短距离for(i=0;in;i+)/初始化所有点的状态stat
11、ei.pre=-1;/前驱都先为-1statei.len=INFINITY;statei.label=0;/0表示没有确定,1表示已经求出最短路径statebeginPointNum.len=0;statebeginPointNum.label=1;k=beginPointNum;dofor(i=0;in;i+)/全部点测试if(distanceki!=0&statei.label=0) /选出不是点k本身,且还没有确定距离的点iif(statek.len+distancekistatei.len)/如果点i和点k相邻statei.len=statek.len+distanceki;/点i的l
12、en为点k的len加点i和点k的距离statei.pre=k;/点i的前驱为点kk=-1;min=INFINITY;for(i=0;in;i+)/全部检测if(statei.label=0&statei.len=0);pathi=-1;/为了后面方便判断,最后存储-1; 源代码/*head.h*/#include #include #include #include #include #include #include #include #include #include #include #include #define key_LEFT 0x4b00#define key_RIGHT 0x
13、4d00#define key_DOWN 0x5000#define key_UP 0x4800#define key_ESC 0x011b#define key_ENTER 0x1c0d#define key_A 0x1e61#define key_S 0x1f73#define key_D 0x2064#define key_W 0x1177#define key_SPACE 0x3920#define PI 3.1415#define N 32#define INFINITY 3000#define SPEED1/pcx图片显示的定义#define SCREEN_HEIGHT 200#d
14、efine SCREEN_WIDTH 320#define PALETTE_MASK 0x3c6#define PALETTE_REGISTER_RD 0x3c7#define PALETTE_REGISTER_WR 0x3c8#define PALETTE_DATA 0x3c9#define VGA256 0x13#define TEXT_MODE 0x03typedef struct RGB_color_typunsigned char red;unsigned char green;unsigned char blue;RGB_color,*RGB_color_ptr;/定义画地图的结构
15、体typedef struct POINT double x;double y;int num;char *notes;POINT;typedef struct BUILDING double x; double y; int dx; int num; char *name; char *notes; BUILDING;typedef struct CARdouble speed;double angle; /小车转过的角度CAR;typedef struct ROAD double x1; double y1; double x2; double y2; ROAD;typedef struc
16、t TREE /定义画树的结构体 double x;double y; double dx; double dist; int num; char fangxiang;TREE;typedef struct HOUSEdouble x;double y;int dx;int color;HOUSE;typedef struct POINTSTATEint pre;int len;int label;POINTSTATE;/chinesevoid out_hz(int x, int y,char *s,int flag,int part,int color);/mousevoid cursor(
17、int x, int y);int initmouse(int xmi, int xma, int ymi, int yma);int readmouse(int *mx, int *my,int *mbutt);void newmouse(int *mx, int*my, int*mbutt);/menuvoid menu_main();void menu_up();void menu_up_1();void auto_menu_left(double myCarSpeed,double *dist,int path16,POINT allPoint32,int *path_i,int *f
18、lagPath,int *flagOk);void menu_left(double myCarSpeed,double *dist,int path16,POINT allPoint32,int *path_i,int *flagPath,int *flagOk);void help_page();void zhong_dian(int *pFinishBuilding);void zhong_dian_show();void cha_xun();void cha_xun_show();void cha_xun_information(int i );void if_start(int *f
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制 语言 课程设计 交通 模拟 导航系统