数据结构课程设计论文内容.docx
- 文档编号:2537662
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:25
- 大小:284.51KB
数据结构课程设计论文内容.docx
《数据结构课程设计论文内容.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计论文内容.docx(25页珍藏版)》请在冰点文库上搜索。
数据结构课程设计论文内容
目录
第1章停车场管理问题概述-1-
1.1背景分析-1-
1.2问题重述-1-
第2章需求分析-2-
2.1对模块的功能简述-2-
2.2对模块的功能要求-2-
第3章概要设计-2-
3.1设计思想-3-
3.2储存结构-3-
3.3算法设计说明-4-
第4章详细设计-6-
4.1定义头文件-6-
4.2主函数-6-
4.3车辆进入-7-
4.4存车操作-8-
第5章调试与分析-9-
5.1菜单的测试-9-
5.2分析与改进-10-
第6章校园导游问题概述-12-
6.1背景分析-12-
6.2问题重述-12-
I
第7章需求分析-13-
7.1模块的功能要求-13-
7.2算法说明-13-
第8章概要设计-14-
8.1程序的模块图-14-
8.2主函数的概要设计-15-
8.3查找介绍函数的概要设计-15-
8.4查找最短路径函数的概要设计-15-
第9章详细设计-16-
9.1程序的流程图-16-
9.2主函数的详细设计-17-
9.3查找介绍函数的详细设计-18-
9.4查找最短路径函数的详细设计-18-
9.5退出函数的详细设计-20-
第10章调试分析-21-
10.1菜单的测试-21-
10.2查找景点简介的测试-21-
10.3退出的测试-22-
10.4程序分析-23-
10.5思考-23-
第11章总结-24-
第12章参考文献-25-
第1章停车场管理问题概述
1.1背景分析
随着我国经济的不断发展,人均拥有车辆不断增减,而且城市化逐渐加快,这就造成了城市中的很多车辆无处停放,停车场紧张等问题。
由于停车场紧张,车辆乱停乱放,在一定程度上有影响了城市交通,还有滋生了一定的偷车事件。
经过调查发现,很多停车场还在运用人工管理。
像一些停车场,布局不合理,停车乱放,用人工计时,这就造成了资源的很大浪费,使得本来就不足的停车场在一定程度上更加紧张。
在这样一个飞速发展的信息时代,信息处理被广泛的运用到各行各业中。
使用信息处理可以加大对信息的控制,不仅能提高工作效率,而且大大的增加了其安全性。
由此,我想编写一个程序来管理停车场,使得停车场的管理更加合理,减少资源的浪费,缓解交通的压力,在一定程度上遏制偷车犯罪。
当然,我处理的这个仅仅是个简化的停车场。
1.2问题重述
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间。
汽车的模拟输入信息格式可以是:
(到达/离去,汽车牌照号码,到达/离去的时刻)。
例如,(‘A’,1,5)表示1号牌照车在5这个时刻到达,而(‘D’,5,20)表示5号牌照车在20这个时刻离去。
整个程序可以在输入信息为(‘E’,0,0)时结束。
本题可用栈和队列来实现。
第2章需求分析
2.1对模块的功能简述
对于此停车场管理系统的实现,就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点。
至于通道上车辆的停放则用一个链队列来实现,此时,通道上车辆的离开或者进入停车场只需改变此链队列上的结点而已。
对于要对停车场内的车辆根据其停放时间收取相应的停车费用,可以记录下车辆进入以及离开停车场的时间,再用时间差乘以相应的单价并且打印出最后的费用就可以实现了。
2.2对模块的功能要求
我的程序主要是由头文件和后续程序组成:
1.在头文件中先定义了停车场的停车信息,然后用一个堆栈模拟停车场,接着用一个类表示出辅助便道,最后把便道的停车状态和管理方式模拟成一个队列。
2.在后续程序中主要对车辆信息,车辆进出过程,停车场和便道上的状态变化,以及主函数。
第3章概要设计
3.1设计思想
由于这个停车场只有一个大门,当停车场内某车要离开时,在它之后进入的车辆必须想退出停车场为它让路,先进停车场的后退出,后进停车场的先退出来,符合栈的“后进先出,先进后出”的思想。
因此,可以用一个栈来模拟停车场。
而当停车场满后,继续来到的其他车辆只能停在便道上,根据便道停车的特点,先排队的车辆先离开便道进入停车场,符合队列的“先进先出,后进后出”的操作特点,因此,可以用一个队列来模拟便道。
排在停车场中间的车辆可以提出离开停车场,并且停车场内在要离开的车辆之后到达的车辆都必须先离开停车场为它让路。
然后,这些车辆依原来的到达停车场的次序进入停车场。
因此,在前面已经设一个栈和一个队列的基础之上,还需要有一个地方来保存为了让路而离开停车场的车辆,由于先退出停车场的后进入停车场,所以很显然应该用一个栈来模拟。
3.2储存结构
这个程序我主要用类作为储存结构。
例如,描述停车场信息
Classparking_Space
{
friendclasspark;
friendclassassistant;
friendclasspavement;
friendvoidstorage(park&l,pavement&m);
friendvoidtake_out(park&l,assistant&n,pavement&m);
public:
intstation;
stringcar_num;
time_tparktime;
parking_space*next;
parking_space()
{
station=0;
car_num='?
'
next=NULL;
}
}
此外,模拟便道的队列
classpavement//模拟便道队列
{
friendvoidstorage(park&l,pavement&m);
friendvoidtake_out(park&l,assistant&n,pavement&m);
friendvoidoperate(park&l,assistant&n,pavement&m);
public:
staticvoidprint(pavement&l);
staticboolempty(pavement&L);
staticparking_space*pop(pavement&l);
staticvoidput_in(pavement&l,parking_space*p);
pavement()
{
head=NULL;
}
private:
parking_space*head;
}
3.3算法设计图
算法是程序的必须部分,通过算法设计图,我们可以更清楚了解程序的思想,更好的指导程序的编写。
第4章详细设计
4.1定义头文件
在前面,对停车场内的停车信息已经定义过了。
接下来我开始模拟停车场。
我要用堆栈来模拟。
因为堆栈存放的信息量大,结构清晰明显,易于对信息进行整理。
classpark//模拟停车场的堆栈
{
friendvoidoperata(park&l,assistant&n,pavement&m);
friendvoidstorage(park&l,pavement&m);
friendvoidtake_out(park&l,assistant&n,pavement&m);
public:
staticvoidprint(park&l);
staticparking_space*pop(park&k);
staticvoidput_in(park&l,parking_space*p);
staticboolfull(park&l);
staticintlength(park&l);
park()
{
gate=NULL;
}
private:
parking_space*gate;
};
4.2主函数
这个主函数主要是递归调用operate()操作选择函数
voidmain()
{
parkl;
pavementm;
assistantn;
cout<<"\n**欢迎使用张威的停车场管理系统**"< cout<<"======================================="< cout<<"**a---汽车进车场**"< cout<<"**b---汽车出车**"< cout<<"****"< cout<<"**e---退出**"< cout<<"======================================="< cout<<"请选择: (a,d,e): "; operate(l,n,m); } 4.3车辆进入 首先,判断车场内是否车满。 如果车场内车满则输入false。 之后车便进入辅助便道等待停车场内的车离开。 如果,停车场内有车离开,则便道上的车先离开便道。 等停车场内的车离开后,等在便道上的车便依次进入停车场。 if(park: : length(l)==10) returnture; else returnfalse;//判断是否停车场内车满 p->next=l.top; l.top=p;//车辆进入便道 parking_space*p=l.top; l.top=p->next; returnp;//车离开便道 parking_space*p=l.gate; l.gate=p->next; returnp;//车离开停车场 p->station=park: : length(l)+1; p->next=l.gate; l.gate=p;//车进入停车场 4.4存车操作 在这个程序中,有两部非常重要的操作,那就是存车和取车操作。 我已存车操作为例 voidstorage(park&l,pavement&m) { parking_space*p=newparking_space; cout<<"请输入要存储的车牌号: "; stringcar_num; cin>>car_num; p->car_num=car_num; if(! park: : full(l)){ park: : put_in(l,p); cout<<"车牌号为"< cout<<"此时停车场内的汽车有: "<<'\n'; park: : print(l); } else{ cout<<"停车场已满,此车将进入便道进行等候! "<<'\n'; pavement: : put_in(m,p); cout<<"此时停车场内的汽车有: "<<'\n'; park: : print(l); pavement: : print(m); } } 第5章调试与分析 5.1菜单的测试 对于菜单函数的测试,首先菜单是一个可示化的界面,它能够提示游客依据显示屏上出现的提示来进行相关的操作,查看所有的景点从而方便游客进行相关的操作,因而我们在运行程序的时候首先就会进入到菜单函数当中,经过测试其能够实现我们所要实现得基本功能,其效果图如图5-1所示 图5-1输入程序的初步结果 这张图是我刚把程序放在编译器里运行时的结果,还没有输入任何的数值。 图5-2输入数值后的结果 这张图是输入几个数值之后得到的结果。 5.2分析与改进 本课程设计中的停车道上的某辆车离开时,在它之后开进的车辆必须先退出停车场为它让路,待该车辆开出大门后,为它让路的车辆在按照原次序进入停车场。 在现实中,在停车场中没有离开的车辆的车主可能不在停车场,这时的工作人员无法移动这些车辆,所以本课程设计只是对现实的一个假设。 还有一点,在本题中,车辆停在便道上是不交钱的,但如果这样的话,很多车辆可能选择不进停车场了,所以改成按照不同的价格进行收费,当然这仅仅是我的一个想法。 本程序的时间复杂度约为O(n2)。 这个程序可以完成题目中各项要求。 但是还有一些值得改进的地方。 ,例如,在计费时,我是以一个时刻为单位,我想应该精确到小时以及分钟的。 还有一个很重要的问题,对于停车场内可以停放的最多车辆数,为了测试数据的方便,我在程序中,定为了2,在实际使用中,可以改变程度开头的宏定义以增加停车场的容量。 第6章校园导游问题概述 6.1背景分析 现代快节奏的生活使得都市人越来越渴望亲近自然,因此外出旅游现在被越来越多的都市人所看中,所以如何快速方便的找到我们想要的旅游景点的信息和最短路径就成了一个很重要的问题。 而对于我们这些大学生来说,大学校园就如同我们身边的花园一样,是我们休闲的好地方,我们对于校园的每一处都非常的熟悉。 但是,对于外来游客来说,就很难对校园做到了如指掌了,因此,我想他们应该需要一个电子版的校园导游系统。 6.2问题重述 设计你的学校的校园平面图,所含景点十个左右。 以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。 为来访客人提供图中任意景点相关信息的查询。 为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条最短路径。 实现提示: 一般情况下,校园的道路是双向通行的,可设计校园平面图是一个无向网。 顶点和边均含有关信息。 第7章需求分析 7.1模块的功能要求 依据课程设计的要求,利用一个无向图的结构,将景点当作图的顶点,将景点之间的距离当作权值来储存,然后根据游客自己的需求,按照显示屏上的提示来进行查找景点介绍,查找两个景点之间的最短距离,退出程序等基本操作。 7.2算法说明 本程序需要满足七个要求,分别是查看所有信息,查看指定景点信息,添加景点信息,两景点之间所有路径,两点之间最短路径,初始化景点信息,退出系统。 第8章概要设计 8.1程序的模块图 本软件的算法依据无向图的操作通过查找函数查找景点的信息,通过迪杰斯特拉函数来查找最短距离,开始时首先从文件当中读取景点的编号、名称、介绍和两个景点之间的距离即权值,然后将其加入到图当中,再调用查找函数查找景点的信息,调用迪杰斯特拉函数来查找最短距离,调用退出函数实现退出功能,其模块图如图8-1所示: 图8-1模块图 8.2主函数的概要设计 基于程序的操作要求,对于主函数的设计首先是显示一个可视化的操作界面提醒游客进行相关的操作和提示游客其可供选择的景点的名称,便于其在后面的操作过程当中能够快速方便的找到其需要查找的景点的名称。 而后就是一个switch();的选择函数,提供查找景点信息,查找两个景点之间的最短距离和退出的相关的选择操作而后进入到每一个操作界面当中,从而实现所需要的功能。 8.3查找介绍函数的概要设计 当游客选择了要查找景点的信息的介绍这一项功能的时候,就会进入到查找的界面,对于查找景点信息就是利用scanf()函数,当游客输入景点的名称的时候看其是否与文件当中的数据相匹配,如果有则输出它的介绍,如果没有则输出错误的提示提醒游客进行相关的操作来进入到正确的操作过程当中。 8.4查找最短路径函数的概要设计 对于查找最短路径的这一项功能,则是利用佛洛依德算法求最短路径。 第9章详细设计 9.1程序的流程图 当我们想要更加实际的了解一个程序的算法过程的时候,我们就要依据程序的流程图来给我们一个比较实际的过程,从流程图当中能够更加清楚整个程序实现的过程是怎样的。 其流程图如图9-1所示: 图9-1流程图 9.2主函数的详细设计 主函数是一个程序的主体,当我们要进行我们所需要的操作的时候我们就要根据主函数中的显示信息和它给我们的相关的提示信息来进行所需要的操作。 voidmain() { graphGH; intx,y; charselect[10]; Touristmapsmap; while (1) { cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"< cout<<"欢迎使用东北电力大学校园导游系统"< cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"< cout<<""< cout<<"1.查看所有信息2.查某景点信息"< cout<<""< cout<<"3.添加景点信息4.两点间所有路径"< cout<<""< cout<<"5.两点间最短路径6.初始化景点信息"< cout<<""< cout<<"0.退出导游系统"< cout<<"******************************************"< cout<<"学校景点概括"< cout< ifstreaminfile("graph.txt",ios: : in); infile>>GH.vnum; for(inti=0;i { infile>>GH.v[i].serial>>GH.v[i].name>>GH.v[i].intro; cout< } infile.close(); cout<<"********************************************"< cout<<"请输入你需要的选项: "; intchoose; cin>>choose; } } 9.3查找介绍函数的详细设计 当游客选择了要查找景点的信息的介绍这一项功能的时候,程序就会调用scanf(graph,char*)函数进入到查找景点的介绍的界面,当游客输入了需要查找的景点的名称的时候,程序利用for();循环语句来查找是否有这个景点 for(inti=0;i { infile>>gh.v[i].serial>>gh.v[i].name>>gh.v[i].intro; if(strcmp(gh.v[i].name,select)==0||strcmp(gh.v[i].serial,select)==0) { obj=i;exist=1; } } 找到将它的编号返回,并输出它的介绍,没有找到这输出错误提示,提醒游客进行相关的操作进入正确的操作过程当中。 9.4查找最短路径函数的详细设计 当游客选择了要查找两个景点之间的最短距离这一项功能的时候,程序就会调用佛洛依德算法;函数因此进入到查找两个景点之间的最短距离的操作界面当中。 voidTouristmaps: : print(inti,intj) { inta,b; a=i; b=j; cout<<"要查询的两景点间最短路径是: \n\n"; cout<<"逆序输出所经过的景点的路径: "; if(shortest[i][j]! =MAX_INT) { if(i { cout< while(path[i][j]>=0) { cout<<"<--"< if(i j=path[i][j]; else i=path[j][i]; } cout<<"<--"<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 论文 内容
![提示](https://static.bingdoc.com/images/bang_tan.gif)