数据结构课程设计停车管理系统实验报告_第1页
数据结构课程设计停车管理系统实验报告_第2页
数据结构课程设计停车管理系统实验报告_第3页
数据结构课程设计停车管理系统实验报告_第4页
数据结构课程设计停车管理系统实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上数据结构课程设计报告项目名称:停车管理系统安徽大学计算机科学与技术学院 姓名:鉏飞祥 学号:E 专业:软件工程2016-6-281 .需求分析 1.1问题描述停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,

2、每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 1.2基本要求(1) 输入的形式和输入值的范围;七位字符车牌号 空格 时间(12:30)如:A 12:30(2) 输出的形式;车牌号 时间如:A 12:30(3) 程序所能达到的功能。模拟车子排队和进出车库的情况,并且根据时间计费,随时显示当前车库车辆情况。2. 概要设计 (1) 数据结构  每个汽车的基本元素:struct car char id8; int h;/*时*/ int m;/*分*/ struct car *next;栈的基本元

3、素: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

4、car * pop_q()/*车辆出队*/void come_in()/*车辆离开*/void go_out()/*车辆进入*/void interface()/*主菜单*/(4) 各模块之间的调用关系以及算法设计Interface输入:1230Intstack pushstackCreat_q pushqCome-inGo_outPop_stack pop_qPrintReturn 03. 详细设计流程图及模块调用如下:开始 创建队列,栈 结束程序主菜单0223输出车库车辆21车辆离开车辆进入是否在栈中进入队列栈是否满是否进入栈否是否在队列是元素出列显示费用否找不到4. 测试与分析

5、 主界面如下:车库中假设最多停三辆车,加入进入四辆车abcd,则d需要在便道排队:此时若b车开走,显示费用信息,则在便道的d车进入车库:若此时有车进入,则继续在便道排队:5. 附录源程序清单: #include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#define MAX 3 /*宏定义车库最大车辆*/struct car char id8; int h;/*时*/ int m;/*分*/ struct car *next;int n=0;/*当前车库内的车辆数

6、*/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

7、(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

8、 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例如:nA 12:30n"); if(n=MAX) struct ca

9、r *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_st

10、ack(S1,p); n+; interface();void go_out() struct car* pop_q(); void interface(); printf("请输入7位车牌号和离开时间n"); char b8; int h1; int m1; scanf("%s",b); scanf("%d:%d",&h1,&m1); int i; int biaozhi=0; for(i=0;i<n;i+) if(strcmp(b,(S1.base+i)->id)=0) printf("%s

11、已离开n计费信息:n进入时间%d:%d,离开时间%d:%d,(每分钟1元)n",b,(S1.base+i)->h,(S1.base+i)->m,h1,m1); printf("费用为:%d元n",(60*(h1-(S1.base+i)->h)+m1-(S1.base+i)->m)*1); int j; for(j=0;j<n-i;j+) struct car *p2; p2=(struct car *)malloc(sizeof(struct car); pop_stack(S1,p2); push_stack(S2,p2); str

12、uct car *pp; pop_stack(S2,pp); for(j=1;j<n-i;j+) pop_stack(S2,pp); push_stack(S1,pp); printf("222n"); n-; biaozhi=1; if(p1->next!=NULL) /*若便道有车,则便道的车进入车库*/ struct car *ppp; ppp=pop_q(); push_stack(S1,ppp); n+; break; if(biaozhi=0) struct car *p,*pp; pp=p1; while(pp->next!=NULL) p=

13、pp; pp=pp->next; if(strcmp(b,pp->id)=0) printf("%s 已离开n",b); printf("%s 已离开n计费信息:n进入时间%d:%d,离开时间%d:%d,(每分钟1元)n",b,pp->h,pp->m,h1,m1); printf("费用为:%d元n",(60*(h1-pp->h)+m1-pp->m)*1); p->next=pp->next; m-; biaozhi=1; break; if(biaozhi=0) printf(&quo

14、t;找不到%sn",b); interface();void print() void push_stack(struct sqstack S,struct car *e); void pop_stack(struct sqstack S,struct car *e); void interface(); if(n=0) printf("没有车辆n"); else printf("*车库现有车辆信息:n"); int i; for(i=0;i<n;i+) printf(" %s %d:%dn",(S1.base+i)-

15、>id,(S1.base+i)->h,(S1.base+i)->m); struct car *p; p=p1; if(p->next=NULL) printf("*便道无车辆n"); else printf("*便道现有车辆信息:n"); while(p->next!=NULL) p=p->next; printf(" %s %d:%dn",p->id,p->h,p->m); interface();void interface() int i; printf(" 请输入操作指令nn 1:汽车开入n 2:车辆离开n 3:显示当前车辆信息n 0:结束程序n*n"); scanf("%d",&i); switch(i) case 0:return ;break; case 1:come_in();break; case 2:go_out();break; case 3:print();break; ;int main() system("color a0"); /可以写成 red 调出颜色组 system("title 车库管理系统"); /设置cmd窗口标题 printf(&qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论