seo最好的网站,常州在线制作网站,地方门户网站搭建系统,在本地做的网站上传到空间之后_刷新就跳到本地的网址怎么办一、设计内容
设计有一个可以停放n辆汽车的狭长停车场#xff0c;它只有一个大门可以供车辆进出#xff0c;车辆按照到达停车场时间的先后次序依次从停车场最里面向大门口出停放#xff08;即最先到达的第一辆车停放在停车场最里面#xff09;#xff0c;如果停车场已放满…一、设计内容
设计有一个可以停放n辆汽车的狭长停车场它只有一个大门可以供车辆进出车辆按照到达停车场时间的先后次序依次从停车场最里面向大门口出停放即最先到达的第一辆车停放在停车场最里面如果停车场已放满n辆车则以后到达的车辆只能在停车场大门外的便道上等待一旦停车场内有车离开则排在便道上的第一辆车可以进入停车场停车场内如有某辆车要开走则在它之后进入停车场的车都要先退出停车场为它让路待其开出停车场后这些车辆再按照原来的次序进场。
二、设计分析
1.实现停车场的结构 因为停车场它只有一个大门可以供车辆进出车辆按照到达停车场时间的先后次序依次从停车场最里面向大门口出停放即最先到达的第一辆车停放在停车场最里面很容易让人联想的栈所以我们停车场内部用栈来实现。如果停车场已放满n辆车则以后到达的车辆只能在停车场大门外的便道上等待一旦停车场内有车离开则排在便道上的第一辆车可以进入停车场那么很明显停车场外的便道是一个队列的结构先进先出也就是先到先进。这样就确定了停车场的基本机构即停车场内用栈来贮存停车场外便道用队列来贮存。
2停车场的功能 个人认为一个停车场该有的功能
1.车辆开进停车场
2.车辆开出停车场
3.查询停车场内车的数量
4.查询停车场内车的编号
5.查询停车场外车的数量
6.查询停车场外车的编号
7.查询停车场内是否有空余
8.查询停车场外一辆车需等待几辆车 第一个功能是车辆开进停车场这是一个停车场最基本的功能实现对车辆的停放。第二个功能是车辆开出停车场这个功能值得注意的是开出停车场的车辆可以是停在停车场的任意一辆并且车辆开出去后所有在这辆车开进之后的车辆均要向前移位最后还需要判断停车场外即便道内是否有车可以停进停车场内。第三个功能是查询停车场内车的数量这个功能其实在功能4—查询停车场车的编号就可以看出来但假如数字过大人为计数就会显得复杂所以增加这个功能能让停车场车的数量很清晰呈现在我们面前。第四个功能是查询停车场内车的编号首先这个编号顺序应该是车辆停入的先后时间确定其次我们有了这个功能我们实现车辆开出停车场时能很明显感受到车辆的变化。第五个功能是查询停车场外车的编号因为停车场外并没有规定能容纳多少车辆所以这个功能是作为一个参考。第六个功能是查询停车场外车的编号是由进入停车场的优先顺序进行输出这样我们就可以清楚的观察当有停车场外车进入停车场时停车场外车辆的变化。第七个功能是查询停车场内是否有空余这样就可以给开入停车场的车辆提示是否它们能开进停车场。第八个功能是查询停车场外一辆车需等待几辆车停车场外的车辆时任意的没有要求的我们只需要你给出车的编号我们就可以查询车辆前方需等带几辆车这样就可以给暂时不能停入停车场的车辆一个时间预期。
3.停车场代码的实现 一构建停车场内栈结构和停车场内队结构一开始我想用结构体动态模拟一个栈和队列但是两个结构的动态构建会让代码很复杂而且所需的空间和时间复杂度都很高所以我换用数组静态模拟栈和队列不仅节省了大量空间也提高了时间效率增加了代码的简洁性和可读性。 构建停车场内栈结构我用静态数组模拟栈的实现首先定义一个stk[]数组里面贮存的值是车辆的编号再定义int tttt类似于栈的头指针当有元素进栈栈栈顶指针往后移并将元素值赋予stk[tt]简化可以写为stk[tt]m,这样我们就实现了栈的功能比如栈内元素个数就等于ttstk[tt]就是最后一辆车的编号。构建停车场外的队列结构我也是用数组静态模拟来实现队列结构。首先定义数组q[]int hh0int gg-1数组q里面贮存的也是车辆的编号hh类似于头指针gg类似于尾指针这样我就构建了一个队列结构。比如队内的元素个数为gg-hh1q[hh]代表队头元素hh--表示出队。
二实现停车场功能的结构我选择采用主菜单的格式呈现再页面上然后你无论如何都要进行一次操作我就采用了do-while循环循环内部使用switch-case结构一一对应每种操作并且加入default来判断是否正确输入操作编号。
三实现停车场的功能 车辆开进停车场:首先我们应该判断停车场内是否有空位有的话车辆停入停车场内否侧车辆停入停车场外侧便道内所以我们可以将功能1和功能7结合在一起实现因为tt代表栈中元素个数如果ttn的话即停车场内有空余可以停进停车场否侧停进外侧便道我们每停入一辆车就相当与进栈即stk[tt]m再让tt与n进行判断。车辆开出停车场:首先要判断你想要开出的车辆是否再停车场内如果在就将车开出停车场否侧提示重新输入。其次车辆开出停车场需要在它之后开进停车场的车让路我的做法是将我需要开出的那辆车进行移位将它移入栈头在tt—将它出栈它后面的车都前进一位。最后我们还要将队列中的车进栈停车场开出一辆车有一个空余我先判断队列中是否有车即队列是否为空(hhgg)队列空就就不需要出队反之需要将对头元素进入栈头stk[tt]q[hh]。这样我就完成了整个车辆开出停车场的过程。查询停车场内车的数量这个很简单直接输出tt即可。查询停车场内车的编号对我的栈进行一次循环遍历即可。查询停车场外车的数量这个也很简单直接输出gg-hh1即可。查询停车场外车的编号也是对队列进行一次循环遍历即可。查询停车场内是否有空余结合功能i实现。查询停车场外一辆车需等待几辆车首先判断停车场外是否有车即队不为空再进一步查询车辆编码是否存在我用一个变量flag1进行判断对队列进行一次循环遍历如果能查找到相同的编号就让flag0最后通过flag判断是否存在最后一定要回溯让flag再次等于1不然下次判断的时候会判断失误。查询车辆编码时我再用变量count进行计数从队头开始查找如果没找到count找到直接就break结束循环。
四、代码展示
#include iostreamusing namespace std;int stk[100000],q[100000],tt0,hh0,gg-1;int main()
{int n,x,m,k,flag 1;;cout 请输入停车场的容量 endl;cin n;do{cout ---------------------------------------------- endl;cout ---***课程设计-停车场管理系******************--- endl;cout ---***请输入你的操作***********************--- endl;cout ---***1.车辆开进停车场*********************--- endl;cout ---***2.车辆开出停车场*********************--- endl;cout ---***3.查询停车场内车的数量***************--- endl;cout ---***4.查询停车场内车的编号***************--- endl;cout ---***5.查询停车场外车的数量***************--- endl;cout ---***6.查询停车场外车的编号***************--- endl;cout ---***7.查询停车场外一辆车需等待几辆车*****--- endl;cout ---***0.结束操作***************************--- endl; cout ---------------------------------------------- endl;cin x;switch(x){case 1:cout 请输入开进车的编号 endl;cin m;if(ttn){cout 停车场内有空余车辆可以开进停车场 endl;stk[tt] m;}else {cout 停车场内没有空余车辆请开进便道等待 endl;q[gg] m; } break;case 2:cout 请输入第几辆车开出停车场 endl;cin k;if(tt0) cout 停车场目前没有车无法开出停车场 endl;else{if(ktt) {cout 停车场内有车可以开出停车场编号为 stk[tt] endl;tt--;}else{int j;cout 停车场内有车可以开出停车场编号为 stk[k] endl;for(int ik;itt;i) {j stk[i];stk[i] stk[i1];stk[i1] j;}tt--;} } if(hhggttn) {cout 便道内有车可以开进停车场 endl;cout 开进停车场的车编号为 q[hh] endl; stk[tt] q[hh];}else cout 便道内无车车辆可以直接开进停车场 endl;break;case 3:if(ttn) {cout 目前停车场内车编号为: tt endl;cout 车未停满可以在开进车辆 endl;}else {cout 目前停车场内车有: tt endl;cout 车已停满请开进便道 endl;}break;case 4:cout 停车场内的车编号为(按开进时间快慢) endl; for(int i1;itt;i)cout stk[i] ;cout endl; break;case 5:if(hhgg)cout 便道内有车数量为 gg-hh1 endl;elsecout 便道内无车可以直接开进停车场 endl; break;case 6:cout 停车场外车的编号为:(按先进停车场的顺序) endl;for(int ihh;igg;i)cout q[i] ;cout endl;break;case 7:cout 请输入停车场外任意一个车的编号 endl;cin m; if(hhgg) cout 便道内没有车无法查询. endl;else {for(int ihh;igg;i)if(q[i]m) flag0; if(flag) cout 便道内没有该车,请重新输入 endl;else {cout 便道内有该车 endl; int count 0;for(int ihh;igg;i){if(q[i]m) break;else count;}if(count0) cout 下一辆进停车场的车就是你 endl;else cout 你还需要等待 count 车 endl;}flag 1;} break;case 0: break;default: cout 输入错误请重新输入 endl;break;}}while(x);return 0;
}