《C语言课程设计报告--公交路线管理系统_2.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告--公交路线管理系统_2.docx(16页珍藏版)》请在第一文库网上搜索。
1、合肥浣行等机科学与技术系课程设计报告20102011学年第二学期课程C语言课程设计课程设计名称公交路线管理系统学生姓名杨莉莉学号1004013018专业班级计本(4)班指导教师徐静项向琴2011年6月24日一、需求分析本系统主要功能是实现对公交路线的管理和维护。我们都知道,每个城市都会有公交路线的改动,如果使用这个系统,就可以及时的对路线信息进行修改和保存,是非常方便的,而且该系统使用起来也很方便。用户只需根据显示的提示信息进行选择和输入就可以实现你要求的功能。该系统具有添加,查询,删除,修改和显示所有记录的功能。用户可以根据实际情况进行相应的功能选择。其具体功能简单描述如下:(1)保存:即将
2、信息存入指定文件中。当用户对原始数据进行相关的改动(主要是对路线信息进行增加、删除、修改)之后,用户可以根据自己的选择判断是否要保存到文件中,这样就实现了信息的记录功能,以方便用户随时进行查看。(2)添加:即添加一条新的公交路线或者是某一条路线上的站点。每次可以添加一条路线信息,若用户想添加多条路线信息的话可以重复执行该功能,同样的,添加站点的话也是每一次添加一个站点,若用户想添加多条路线信息的话也只需要重复执行该功能即可。这样,就实现了对公交路线的添加信息管理。(3)查询:即能够查找出你要的公交路线信息和总共有多少站。简单地说,就是用户先选择你要查询的公交路线号,在输入起点站和终点站名称,然
3、后系统就会自动显示出起点站和终点站之间共有多少站点,以及起点站和终点站之间所有站点的序号和名称,从而使用户一目了然的知道站点信息,而不需要像看地图那样一个站点一个站点的用肉眼进行查找,这就为用户节省了很多时间。(4)删除:即能删除掉一条你所不需要的公交路线信息和某一条路线上的站点。若要删除路线时只需要输入你要删除的公交路线号即可,若要删除站点也只需输入你要删除的站点序号,不需要输入该站点名称。(5)修改:即能修改一条你需要该的路线信息。修改内容包括:修改该条公交路线号、修改站点名称(输入新的信息时该条路线的站点长度不能改变,若要改变站点长促可以选择增加和删除功能,即可实现)。(6)显示路线信息
4、:即将路线信息显示到屏幕中,供用户查看。该功能比较简单,在这里不具体说明。二、算法设计1、设计思想:本系统的设计流程简单比较简单,原始数据全部都保存在文件中,用户就不必自己一个一个的输入信息。程序执行时从文件中读出,文件的读取操作在下文中我会详细说明,这里就不做具体说明了。创建动态链表和结构体数组对路线信息进行存储,因为使用链表时对程序的插入、删除会比较方便,那么插入和删除就相当于对链表节点的删除和插入。写无返回值的主函数voidmain。对系统的功能进行显示,每次用户选择某一功能时都可以看到路线的大致信息,以便于用户更准确的选择功能。其中利用switch条件分支语句进行子函数功能的选择和调用
5、。并且使用Whi1e循环语句进行多次循环执行,就可以实现对信息的多次删除、增加、修改,知道达到用户满意时由用户自己选择退出系统。通同时使用了清屏函数,对上一次程序运行的结果清楚只显示本次运行的相关信息,这样的话就做到了界面的友好化,简单明了,不冗杂,更方便观看。当用户对信息进行有关的改动之后,用户根据自己的选择是否保存入文件中,就可以保存他所要的信息了。其主要流程图如下:2、设计表示:下面我将对各个子模块的功能进行详细的介绍和描述:模块一:头文件,定义结构体,结构体中还嵌套了一个结构体,定义结构体成员,同时定义指向该类型的指针head,其对整个程序都有效。模块二:菜单显示。显示该系统所能完成的
6、功能,一目了然。根据用户的需求自由选择功能实现。模块三:从文件中读取信息。该功能以子函数的形式给出,因为其返回值是head,而head是指向结构体的指针,所以该函数属于指针函数。执行此程序时首先定义文件指针FI1E*fp,在打开此文件时,文本文档里应该有用户需要的数据,从而才能从文件中正确读取出来,若文件打开不成功则会显示“不能打开此文件!:创建动态链表来存储从文件中读出来的数据,每读取一组数据后文件指针后移,这是系统约定俗成的,不需要用户去考虑的,知道文件结束时停止读取。读取结束后必须要关闭文件,即fc1ose(fp),这样就完成了从文件中读取信息的功能。模块四:显示路线信息。该功能以子函数
7、的形式给出,无返回值。定义指向定义过的结构体类型的指针p,并让P指向head,当P为非空时输出结构体成员信息,在这里需要说明的是,在输出站点信息时,当最后一个站点名是end时,停止输出,因此end是作为站点信息输出的结束标志,同时P指针指向链表的下一个节点,再次读取一组数据。模块五:增加线路信息。该函数的返回的是链表的头指针head,因此是一个指针函数。该函数不仅可以增加一条路线信息,也可以增加某一条路线上的站点信息。用户根据自己的需要进行选择。本系统添加一条公交路线时,是在链表的尾部添加的,因为我考虑到公交线路号一般没什么顺序可言,所以就简单的添加在了链表的末节点。定义B1*p=head,*
8、q0重新建立一个新的节点来存储你添加的那条线路信息,判断P是否为空,若不为空的话,q指向P,P指针位置后移一个节点,直到P为空。然后q-next指向新建立的节点,新节点的下一结点赋值为空,从而完成了增加路线信息的功能。如果是添加路线站点,先确定要在哪条路线上添加,所以要先找到该条路线,并用指针指向该节点,然后找该站点将要插入的位置,找到后,将其后面的站点依次后移,把那个空的位置空间腾出来,用来置放添加的节点的信息,这样就实现了对站点的添加。模块六:删除线路信息。该函数返回的是头指针head,所以该函数是一个指针函数,也是作为子函数的形式出现。可以删除整条路线,也可以删除线路上的某一个站点,删除
9、一整条路线时,就相当于删除链表中的某一个节点,先确定你要删除的线路号,找到后,只需要将其前一个节点指向其后一个节点,所以删除时还需要考虑到删除的是首节点还是末节点还是中间节点,若删除首节点只需将head指向head的下一个节点,若删除末节点,将倒数第二个节点之后赋值为空即可,因此对线路的删除还是相对比较简单的,但是要求我们对链表的相关操作熟练掌握。删除站点时,先确定你要删除的是哪条路线上的站点,找到后一个指针会指向该节点,再确定你要删除的站序号,确定后将其后一个站名称移到当前删除节点的位置,就可以将该站名覆盖,从而实现站点的删除。模块七:修改线路信息。同上分析,该子函数也是一个指针函数,修改时
10、,先确定你要修改哪条路线,指针指向该节点,在重新输入新的信息即可,新输入的信息会覆盖原有节点信息,所以可以实现对线路进行修改,但是修改时需要注意的是,修改时新输入的站点数目不能改变。模块八:查询路线信息。该子函数是一个无返回值的函数。使用时先输入你要找的路线号,再输入你要经历的起点站和终点站,程序就会为你显示出起点站和终点站之间共有多少站,并且输出起点站和终点站之间所有站序号和站点名称。模块九:将信息保存到文件中。当用户对原始路线信息进行改动之后,或许要将修改过后的信息保存起来,此时用户就可以自己选择是否要将信息保存起来,保存的位置是本系统实现设定好的,保存之后的信息在D盘根目录下,也方便用户
11、的查看。模块十:主函数。构建无返回值的主函数,主函数用来实现对子模块的调用功能,用Whi1e循环语句来控制循环次数,用户可以根据自己的需求选择任何时候退出系统。对子模块的调用主要使用SWitCh开关控制语句,根据选择实现用户要求的功能。3、实现注释:本系统对于菜单显示表上的功能基本上都能实现,但是不是很完善,很多地方我还没有考虑到,或许是考虑的不够周全,但是有些不足的地方,是我的能力所不能达到的,还望老师体谅,不过等以后学过新的知识用新的方法或许就能将系统做进一步的改进。4、算法设计中一些新的想法:我觉得本系统很不完善,很多功能虽然能实现,但是实现的不够完美,很多细节我都没有考虑到,比如查询路
12、线时,不能大致故略出起点站和终点站需要的时间;修改路线信息时,重新输入该条路线的信息时,路线上站点的个数不能改变,要改变的话还得选择增加或删除功能;还有就是用户将改动过后的信息保存到文件中后,以后该文件中的数据用户如果要使用的话,不能从文件中读取显示到屏幕上。这些都是我的系统一些不完善的地方,希望以后有能力的时候,能进一步对系统进行修改和完善。三、用户手册用户在适用本系统时,我在这里有几点说明要解释一下。以便用户更好的使用本系统。(1)路线号整形数据,站序号是整形数据,站名时字符串。(2)输入路线信息时,站的序号是有次序的,从1开始依次往后增加。如果你要结束站点的输入,只需要在最后一个站点后在
13、输入下一个站的序号,但是本站的站名一定要是end,用来表示站点录入结束的结束标志。(3)保存信息的文本文档,一点要放入D盘根目录下,因为我在写本程序时就规定了将文本文档置于D盘根目录下,所以以后用户查看数据信息时可以从D盘根目录下查找。四、调试及测试本程序的运行结果如下所示:5235西二13蓬篥路白二-301率鹭褊京驾1着;J曦暨疳璘诙二军普爱爵史Y-六八中学-T方郢一8南艳二生羲花丽黑二皤氤瞰美军大东门一小东门一7四牌楼一7霹巴窿德二g吟霸霆鸳足-、公交咨餐三运受说代码Debug公交总浅售淫系统.exe:粟需蟹靛蹩?解薪”:鎏茄箔婴匹沽日31球上嘉酷生嬴福闲黑立言亩樱军二大东门小东门-四牌楼
14、-71SIq”H:公交踏法管理系婉代码Debug公交路戌售泛系区ee榆入公交车号:3始窗I醯站1?入鬻各K二一二一二一二一3 4 Si1畸要翱A巴西客运公司桃疣源霜.舞想再星学院6大市场U桃花源I回制入公攵军号:退,!?增删修古再情i豳线鬻出示加爵瞿路显充-纷一丸-务-里.Iz-SjS-”H:公交器贱整理系统代码。也j?合乎路法言理搴统.exe我薜二薪曙/生。晏福雨膜言百瓣娱缸二N东门-6小东门一一四牌陪i选择:五、课程小结通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,己发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知
15、识,对计算机的机体也有了一个大体的了解。这次实训是老师给了题目,经过自己的努力,实现要求。先做简单的输出,一步步的再做其它要求,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”的寓意。在此希望以后应多进行这样的实训,加长设间,培养我们独立思考问题的能力,提高实际操作水平。六、参考文献1黄明等编著C语言课程设计北京:电子工业出版社;2郭翠英编著C语言课程设计案例精编北京:中国水