1、停车场数学与计算机学院 数据结构 实验报告年级 08级 学号 姓名 成绩 专业 实验地点 主楼402 指导教师 实验项目 停车场管理系统 实验日期 12.10 一、实验题目停车场管理【问题描述】设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,
2、每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。二、需求分析.使用的相关开发工具:Microsoft Visual C+ 6.0. 输入的形式:字符类型数据输入值的范围:字符型数据输出的形式:字符型数据程序所能达到的功能实现停车场的管理,输入车牌号码,将此车停入停车站,并展示出来,在另一个编辑框中输入车牌号,将此车开出停车站。若停车站已满,则在便道中展示出来。(4) 测试数据: 停车牌号:123 车库:123 便道:(空) 1234 1234 出车牌号:1234 车库:123 便道:(空) 出车情况:1234三、程序流程图 略四、数
3、据结构及算法描述数据结构ypedef struct parting CString chepai; clock_t start; PART;typedef struct waiting CString chepai; clock_t start,finish; struct waiting *next;WAIT;typedef struct WAIT *front,*rear;Lwait;算法描述BOOL Cpart:add(CString chepai) BOOL flg=true; if(i=N) flg=false; else partingi.chepai=chepai; partin
4、gi.start=clock(); i+; return flg;void Cpart:display(CListBox *list) CString str,xs; list-ResetContent(); list-InsertString(0,车位 车牌号); for(int m=0;mInsertString(m+1,str); void Cpart:adding(CString chepai) if(q-front-next=NULL) WAIT *p=new WAIT; p-next=NULL; q-front=q-rear=p; p=new WAIT; p-next=NULL;
5、p-chepai=chepai; q-rear-next=p; q-rear=p;void Cpart:disp(CListBox *list) CString str,xs; list-ResetContent(); list-InsertString(0, 车牌号); int m=0; for(WAIT *p=q-front-next;p;p=p-next) str=; xs.Format(%s,p-chepai); str+=xs; list-InsertString(+m,str); /DEL void Cpart:del(int n)/DEL /DEL /DEL /DEL WAIT
6、* Cpart:head()/DEL /DEL /DEL /DEL WAIT * Cpart:head()/DEL /DEL /DEL void Cpart:pop() partingi.chepai=head-next-chepai; partingi.start=head-next-start; i+; WAIT *p; p=head-next; head-next=p-next; delete p;void Cpart:push() p=new WAIT; p-next=NULL; i-; p-chepai=partingi.chepai; p-start=partingi.start;
7、 p-next=head-next; head-next=p; void Cpart:out() partingi.chepai=q-front-next-chepai; partingi.start=clock(); i+; WAIT *m=q-front-next; q-front-next=m-next; delete m;void Cpart:push2() WAIT *m; m=new WAIT; m-next=NULL; i-; m-chepai=partingi.chepai; m-start=partingi.start; m-finish=clock(); p2-next=m
8、; p2=m;void Cpart:disp2(CListBox *list) CString str,xs; list-ResetContent(); list-InsertString(0,车牌号 停车时间 停车收费); int m=0; for(WAIT *mm=head2-next-next;mm;mm=mm-next) str=; xs.Format(%-s,mm-chepai); str+=xs; xs.Format(%6ds,(mm-finish-mm-start)/1000); str+= +xs; xs.Format(%6.2f元,(mm-finish-mm-start)/1
9、000)*0.003); str+= +xs; list-InsertString(+m,str); 五、调试分析出站函数难以实现,通过老师的帮助得以解决。算法时间复杂度:O(n).改进思想:导入图片,便于直观理解。经验体会:平时要多读程序,注意和老师同学交流。六、使用说明在“停车牌号”处连续输入车牌号,单击“停车”按钮,可使此车挺入停车站,若停车站已满则停入便道。在“出车牌号”处输入车牌号,单击“出车”按钮,当没有此车时,可见提示框“没有此车”,若有此车,可见“停车站”“便道”和“停车情况”列表框实现相应变化七、测试结果停车牌号:123 车库:123 便道:(空)1234 1234出车牌号:1234 车库:123 便道:(空) 出车情况:1234停车牌号:123 车库:123 便道:121234 123412345 12345 12出车牌号:1234 车库:123 便道:(空) 出车情况:1234 5s 0.01元 12345 12
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1