C语言课程设计报告--公交路线管理系统

上传人:痛*** 文档编号:163302346 上传时间:2022-10-21 格式:DOC 页数:16 大小:302KB
收藏 版权申诉 举报 下载
C语言课程设计报告--公交路线管理系统_第1页
第1页 / 共16页
C语言课程设计报告--公交路线管理系统_第2页
第2页 / 共16页
C语言课程设计报告--公交路线管理系统_第3页
第3页 / 共16页
资源描述:

《C语言课程设计报告--公交路线管理系统》由会员分享,可在线阅读,更多相关《C语言课程设计报告--公交路线管理系统(16页珍藏版)》请在装配图网上搜索。

1、合肥学院计算机科学与技术系课程设计报告20102011学年第二学期课程 C语言课程设计课程设计名称公交路线管理系统学生姓名杨莉莉 学号 专业班级计本(4)班 指导教师徐静 项向琴 2011年6月24日一、需求分析 本系统主要功能是实现对公交路线的管理和维护。我们都知道,每个城市都会有公交路线的改动,如果使用这个系统,就可以及时的对路线信息进行修改和保存,是非常方便的,而且该系统使用起来也很方便。用户只需根据显示的提示信息进行选择和输入就可以实现你要求的功能。该系统具有添加,查询,删除,修改和显示所有记录的功能。用户可以根据实际情况进行相应的功能选择。其具体功能简单描述如下: (1)保存:即将信

2、息存入指定文件中。当用户对原始数据进行相关的改动(主要是对路线信息进行增加、删除、修改)之后,用户可以根据自己的选择判断是否要保存到文件中,这样就实现了信息的记录功能,以方便用户随时进行查看。(2)添加:即添加一条新的公交路线或者是某一条路线上的站点。每次可以添加一条路线信息,若用户想添加多条路线信息的话可以重复执行该功能,同样的,添加站点的话也是每一次添加一个站点,若用户想添加多条路线信息的话也只需要重复执行该功能即可。这样,就实现了对公交路线的添加信息管理。(3)查询:即能够查找出你要的公交路线信息和总共有多少站。简单地说,就是用户先选择你要查询的公交路线号,在输入起点站和终点站名称,然后

3、系统就会自动显示出起点站和终点站之间共有多少站点,以及起点站和终点站之间所有站点的序号和名称,从而使用户一目了然的知道站点信息,而不需要像看地图那样一个站点一个站点的用肉眼进行查找,这就为用户节省了很多时间。 (4)删除:即能删除掉一条你所不需要的公交路线信息和某一条路线上的站点。若要删除路线时只需要输入你要删除的公交路线号即可,若要删除站点也只需输入你要删除的站点序号,不需要输入该站点名称。(5) 修改:即能修改一条你需要该的路线信息。修改内容包括:修改该条公交路线号、修改站点名称(输入新的信息时该条路线的站点长度不能改变,若要改变站点长促可以选择增加和删除功能,即可实现)。(6) 显示路线

4、信息:即将路线信息显示到屏幕中,供用户查看。该功能比较简单,在这里不具体说明。二、 算法设计1、 设计思想:本系统的设计流程简单比较简单,原始数据全部都保存在文件中,用户就不必自己一个一个的输入信息。程序执行时从文件中读出,文件的读取操作在下文中我会详细说明,这里就不做具体说明了。创建动态链表和结构体数组对路线信息进行存储,因为使用链表时对程序的插入、删除会比较方便,那么插入和删除就相当于对链表节点的删除和插入。写无返回值的主函数void main()对系统的功能进行显示,每次用户选择某一功能时都可以看到路线的大致信息,以便于用户更准确的选择功能。其中利用switch条件分支语句进行子函数功能

5、的选择和调用。并且使用while循环语句进行多次循环执行,就可以实现对信息的多次删除、增加、修改,知道达到用户满意时由用户自己选择退出系统。通同时使用了清屏函数,对上一次程序运行的结果清楚只显示本次运行的相关信息,这样的话就做到了界面的友好化,简单明了,不冗杂,更方便观看。当用户对信息进行有关的改动之后,用户根据自己的选择是否保存入文件中,就可以保存他所要的信息了。其主要流程图如下:NoYes开始输入选择信息n菜单保存添加查询删除修改输出退出菜单结束nnext指向新建立的节点,新节点的下一结点赋值为空,从而完成了增加路线信息的功能。如果是添加路线站点,先确定要在哪条路线上添加,所以要先找到该条

6、路线,并用指针指向该节点,然后找该站点将要插入的位置,找到后,将其后面的站点依次后移,把那个空的位置空间腾出来,用来置放添加的节点的信息,这样就实现了对站点的添加。 模块六:删除线路信息。该函数返回的是头指针head,所以该函数是一个指针函数,也是作为子函数的形式出现。可以删除整条路线,也可以删除线路上的某一个站点,删除一整条路线时,就相当于删除链表中的某一个节点,先确定你要删除的线路号,找到后,只需要将其前一个节点指向其后一个节点,所以删除时还需要考虑到删除的是首节点还是末节点还是中间节点,若删除首节点只需将head指向head的下一个节点,若删除末节点,将倒数第二个节点之后赋值为空即可,因

7、此对线路的删除还是相对比较简单的,但是要求我们对链表的相关操作熟练掌握。删除站点时,先确定你要删除的是哪条路线上的站点,找到后一个指针会指向该节点,再确定你要删除的站序号,确定后将其后一个站名称移到当前删除节点的位置,就可以将该站名覆盖,从而实现站点的删除。模块七:修改线路信息。同上分析,该子函数也是一个指针函数,修改时,先确定你要修改哪条路线,指针指向该节点,在重新输入新的信息即可,新输入的信息会覆盖原有节点信息,所以可以实现对线路进行修改,但是修改时需要注意的是,修改时新输入的站点数目不能改变。模块八:查询路线信息。该子函数是一个无返回值的函数。使用时先输入你要找的路线号,再输入你要经历的

8、起点站和终点站,程序就会为你显示出起点站和终点站之间共有多少站,并且输出起点站和终点站之间所有站序号和站点名称。模块九:将信息保存到文件中。当用户对原始路线信息进行改动之后,或许要将修改过后的信息保存起来,此时用户就可以自己选择是否要将信息保存起来,保存的位置是本系统实现设定好的,保存之后的信息在D盘根目录下,也方便用户的查看。模块十:主函数。构建无返回值的主函数,主函数用来实现对子模块的调用功能,用while循环语句来控制循环次数,用户可以根据自己的需求选择任何时候退出系统。对子模块的调用主要使用switch开关控制语句,根据选择实现用户要求的功能。3、实现注释: 本系统对于菜单显示表上的功

9、能基本上都能实现,但是不是很完善,很多地方我还没有考虑到,或许是考虑的不够周全,但是有些不足的地方,是我的能力所不能达到的,还望老师体谅,不过等以后学过新的知识用新的方法或许就能将系统做进一步的改进。4、算法设计中一些新的想法:我觉得本系统很不完善,很多功能虽然能实现,但是实现的不够完美,很多细节我都没有考虑到,比如查询路线时,不能大致故略出起点站和终点站需要的时间;修改路线信息时,重新输入该条路线的信息时,路线上站点的个数不能改变,要改变的话还得选择增加或删除功能;还有就是用户将改动过后的信息保存到文件中后,以后该文件中的数据用户如果要使用的话,不能从文件中读取显示到屏幕上。这些都是我的系统

10、一些不完善的地方,希望以后有能力的时候,能进一步对系统进行修改和完善。三、用户手册用户在适用本系统时,我在这里有几点说明要解释一下。以便用户更好的使用本系统。(1)路线号整形数据,站序号是整形数据,站名时字符串。(2)输入路线信息时,站的序号是有次序的,从1开始依次往后增加。如果你要结束站点的输入,只需要在最后一个站点后在输入下一个站的序号,但是本站的站名一定要是end,用来表示站点录入结束的结束标志。(3)保存信息的文本文档,一点要放入D盘根目录下,因为我在写本程序时就规定了将文本文档置于D盘根目录下,所以以后用户查看数据信息时可以从D盘根目录下查找。四、调试及测试 本程序的运行结果如下所示

11、:五、课程小结 通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。这次实训是老师给了题目,经过自己的努力,实现要求。先做简单的输出,一步步的再做其它要求,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循

12、环有了深刻的理解。 通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”的寓意。 在此希望以后应多进行这样的实训,加长设间,培养我们独立思考问题的能力,提高实际操作水平。六、参考文献1 黄明等编著C语言课程设计北京:电子工业出版社;2 郭翠英编著C语言课程设计案例精编北京:中国水利水电出版社;3 宁正元数据结构(c语言) 南京:东南大学出版社。2000年6月第1;版;4 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版;5

13、谭浩强编著C程序设计题解与上机指导(第3版) 北京:清华大学出版社;6 谭浩强编著C程序设计(第3版) 北京:清华大学出版社;7 洪国胜 等编著 C+ Builder程序设计轻松上手北京:清华大学出版社;8 宁正元数据结构(c语言) 南京:东南大学出版社。2000年6月第1版;9 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版;10 明日科技 编著Visual C+程序开发范例宝典北京:人民邮电出版社;11 胡学钢等数据结构算法设计指导北京:清华大学出版社,1999年 第1版。七、源程序代码#include stdio.h#include malloc.h#incl

14、ude string.h#include stdlib.hstruct station /公交站int num; /站序号 char name20;/站名称stop50; typedef struct busline /公交路线int busnum; /公交车号码 struct station stop50; /线路上的站 struct busline *next;BL;BL *head;/*菜单显示*/void Menu()printf(nn); printf(tt=公交路线管理系统=n); printf(tt=功能显示=n); printf(tt0-退出-n); printf(tt1-显示

15、线路信息-n); printf(tt2-增加线路信息-n); printf(tt3-删除线路信息-n); printf(tt4-修改线路信息-n); printf(tt5-查询路线-n); printf(tt6-将信息保存到文件中n);/*从文件读取路线信息*/BL *Creat()BL *p,*q; int j=1; char ch5=end; FILE *fp; fp=fopen(busline.txt,r+); if(fp=NULL) printf(不能打开此文件!); exit(0); p=(BL *)malloc(sizeof(BL); head=p; q=p; fscanf(fp,

16、%d,&(p-busnum); do fscanf(fp,%d %s,&(p-stopj.num),p-stopj.name); j+; while(strcmp(p-stopj-1.name,ch)=1); while(!feof(fp) j=1; p=(BL *)malloc(sizeof(BL); q-next=p; q=p; fscanf(fp,%d,&(p-busnum); do fscanf(fp,%d %s,&(p-stopj.num),p-stopj.name); j+; while(strcmp(p-stopj-1.name,ch)!=0); q-next=NULL; fcl

17、ose(fp); return head; /*显示线路信息*/void Put()BL *p=head; int j; char ch5=end; puts(线路信息为-); while(p!=NULL) printf(%dn,p-busnum); j=1; do printf(%d%s-,p-stopj.num,p-stopj.name); j+; while(strcmp(p-stopj.name,ch)!=0); p=p-next; printf(n); /*增加线路信息*/BL *Add()BL *p=head,*q,*t;char nme20; int j,choise,k,r,k

18、ey,x,c; char ch5=end; printf(您要添加公交路线还是公交站点?n); puts(1-添加公交路线 2-添加公交站点n); printf(请选择:); scanf(%d,&choise); switch(choise) case 1:j=1; t=(BL *)malloc(sizeof(BL); printf(输入你要添加的公交路线信息:n); scanf(%d,&(t-busnum); do scanf(%d%s,&(t-stopj.num),t-stopj.name); j+; while(strcmp(t-stopj-1.name,ch)!=0); while(p

19、!=NULL) q=p; p=p-next; /*在表尾插入*/ q-next=t; t-next=NULL; return head; case 2:j=1; printf(选择你要添加站点的公交路线:); scanf(%d,&key); while(p!=NULL) q=p; if(p-busnum=key) break; p=p-next; printf(输入你要添加的站序号及站名称:); scanf(%d,&x); scanf(%s,nme); while(strcmp(p-stopj.name,ch)!=0) if(x=(p-stopj.num) r=j; break; j+; r=

20、j; c=j; while(strcmp(p-stopc.name,ch)!=0)c+;for(k=c;k=r;k-) strcpy(p-stopk+1.name,p-stopk.name);strcpy(p-stopr.name,nme);return head; /*删除线路信息*/BL *Delete()BL *q,*p=head; int key,r,j=1,x,choise,k; char ch5=end; printf(您是要删除公交路线还是线路站点:n); printf(1-删除公交路线 2-删除站点n); printf(你的选择:); scanf(%d,&choise); sw

21、itch(choise) case 1:printf(请输入你要删除的公交路线号); scanf(%d,&key); while(key!=p-busnum & p!=NULL) q=p; p=p-next; if(p-busnum=key) if(p=head) head=p-next; else q-next=p-next; else printf(没有找到你要删除的公交路线!); return head; case 2:printf(选择线路:); scanf(%d,&key); while(key!=p-busnum & p!=NULL) q=p; p=p-next; printf(输

22、入你要删除的站点序号:); scanf(%d,&x); for(j=1;jstopj.num) break; j+; r=j; for(k=r;strcmp(p-stopk.name,ch)!=0;k+) strcpy(p-stopk.name,p-stopk+1.name); strcpy(p-stopk-1.name,p-stopk.name); return head; /*修改线路信息*/BL *Correct()BL *p=head,*q; int key,j=1; char ch5=end; printf(选择你要修改的路线号:); scanf(%d,&key); while(p!

23、=NULL) if(p-busnum=key) break; q=p; p=p-next; printf(重新输入该条路线信息(包括路线号、站序号、站名称,各个站的站数不变):n); scanf(%d,&p-busnum); do scanf(%d%s,&(p-stopj.num),p-stopj.name); j+; while(strcmp(p-stopj-1.name,ch)!=0); return head;/*查询路线信息*/void Search()BL *p=head,*q; int key,j=1,c,d; char str120,str220,ch5=end; printf(

24、输入公交车号:); scanf(%d,&key); printf(n输入起始站和终点站名称:); scanf(%s%s,str1,str2); while(p!=NULL) if(p-busnum=key) break; q=p; p=p-next; while(strcmp(p-stopj.name,ch)!=0) if(strcmp(p-stopj.name,str1)=0) c=j; if(strcmp(p-stopj.name,str2)=0) d=j; j+; printf(起始站和终点站之间共有%d站n,d-c-1); printf(各个站的序号及名称为:n); for(j=c;j

25、stopj.num,p-stopj.name); printf(n);/*将信息保存到文件中*/Save() FILE *fp; BL *t; int j; char ch5=end; /head=Creat(); t=head; fp=fopen(123.txt,w+); if(fp=NULL) printf(File can not open!n); exit(0); while(t!=NULL) fprintf(fp,%dt,t-busnum); j=1; do fprintf(fp,%d%s-,t-stopj.num,t-stopj.name); j+; while(strcmp(t-

26、stopj.name,ch)!=0); fprintf(fp,n); t=t-next; fclose(fp);/*主函数*/void main() int choise; head=Creat(); Put(); Menu(); while(1) printf(请选择:); scanf(%d,&choise); switch(choise) case 0:exit(0); case 1:system(cls); Put(); Menu(); break; case 2:system(cls); Put(); Menu(); Add(); break; case 3:system(cls); Put(); Menu(); Delete(); break; case 4:system(cls); Put(); Menu(); Correct(); break; case 5:system(cls); Put(); Menu(); Search(); break; case 6:Save(); break; default:printf(输入错误,请重新输入!n); break;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!