数据结构课程设计停车管理系统实验报告
- 格式:docx
- 大小:181.55 KB
- 文档页数:13
数据结构课程设计报告项目名称:停车管理系统姓名:鉏飞祥
学号:E********
专业:软件工程
2016-6-28
安徽大学
计算机科学与技术学院
1 .需求分析
1.1问题描述
停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。
1.2基本要求
(1)输入的形式和输入值的范围;
七位字符车牌号空格时间(12:30)
如:A123456 12:30
(2)输出的形式;
车牌号时间
如:A123456 12:30
(3)程序所能达到的功能。
模拟车子排队和进出车库的情况,并且根据时间计费,随时显示当前车库车辆情况。
2. 概要设计
(1) 数据结构
每个汽车的基本元素:
struct car
{
char id[8];
int h;/*时*/
int m;/*分*/
struct car *next;
};
栈的基本元素:
struct sqstack
{
struct car *base;
struct car *top;
int stacksize;
};
(2)程序模块
void intstack(struct sqstack &S)/*构造栈*/
void push_stack(struct sqstack &S,struct car *e) /*e入栈*/
void pop_stack(struct sqstack &S,struct car *e) /*出栈顶元素到e*/
void creat_q()/*创建队列*/
void push_q(struct car *p)/*车辆入队*/
struct car * pop_q()/*车辆出队*/
void come_in()/*车辆离开*/
void go_out()/*车辆进入*/
void interface()/*主菜单*/
(4)各模块之间的调用关系以及算法设计
3. 详细设计
流程图及模块调用如下:
4. 测试与分析
主界面如下:
车库中假设最多停三辆车,加入进入四辆车abcd,则d需要在便道排队:
此时若b车开走,显示费用信息,则在便道的d车进入车库:
若此时有车进入,则继续在便道排队
:
5. 附录
源程序清单:
#include
#include
#include
#include
#define MAX 3 /*宏定义车库最大车辆*/ struct car
{
char id[8];
int h;/*时*/
int m;/*分*/
struct car *next;
};
int n=0;/*当前车库内的车辆数*/
int m=0;/*当前便道的车辆数*/
struct car *p1;
struct sqstack
{
struct car *base;
struct car *top;
int stacksize;
};
struct sqstack S1,S2;
void intstack(struct sqstack &S)
{
S.base=(struct car *)malloc(MAX*sizeof(struct car)); S.top=S.base;
S.stacksize=MAX;
}
void push_stack(struct sqstack &S,struct car *e)
{
strcpy(S.top->id,e->id);
S.top->h=e->h;
S.top->m=e->m;
S.top++;
}
void pop_stack(struct sqstack &S,struct car *e)
{
S.top--;
strcpy(e->id,S.top->id);
e->h=S.top->h;
e->m=S.top->m;
}
void creat_q()
{
p1=(struct car *)malloc(sizeof(struct car));
p1->next=NULL;
}
void push_q(struct car *p)
{
struct car *p2;
p2=p1;
while(p2->next!=NULL)
{
p2=p2->next;
}
p2->next=p;
p->next=NULL;
}
struct car * pop_q()
{
struct car *p;
p=p1->next;
p1->next=p1->next->next;
return p;
}
void come_in()
{
void interface();
printf("请输入7位车辆车牌号和进入时间\n例如:\nA123456 12:30\n");
if(n==MAX)
{
struct car *p;
p=(struct car*)malloc(sizeof(struct car));
scanf("%s",p->id);
scanf("%d:%d",&p->h,&p->m);
push_q(p);
m++;
}
else
{
struct car *p;
p=(struct car*)malloc(sizeof(struct car));
scanf("%s",p->id);
scanf("%d:%d",&p->h,&p->m);
push_stack(S1,p);