版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计报告项目名称:停车管理系统安徽大学计算机科学与技术学院 姓名:鉏飞祥 学号:E21414018 专业:软件工程2016-6281 。需求分析 1.1问题描述停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车
2、场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 1。2基本要求(1) 输入的形式和输入值的范围;七位字符车牌号 空格 时间(12:30)如:A123456 12:30(2) 输出的形式;车牌号 时间如:A123456 12:30(3) 程序所能达到的功能.模拟车子排队和进出车库的情况,并且根据时间计费,随时显示当前车库车辆情况。2。 概要设计 (1) 数据结构 每个汽车的基本元素:struct carchar id8;int h;/时/int m;/*分/struct car *next;栈的基本元素
3、:structsqstackstruct car base;struct car *top;intstacksize;;(2)程序模块void intstack(structsqstack S)/构造栈/voidpush_stack(structsqstack S,struct car e)/e入栈/voidpop_stack(structsqstack &S,struct car *e)/出栈顶元素到e/void creat_q()/创建队列*/void push_q(struct car *p)/*车辆入队/struct car pop_q()/*车辆出队/void come_in
4、()/车辆离开*/void go_out()/车辆进入*/void interface()/主菜单*/(4) 各模块之间的调用关系以及算法设计Interface输入:1230Intstack pushstackCreat_q pushqCome-inGo_outPop_stack pop_qPrintReturn 03。 详细设计流程图及模块调用如下:开始创建队列,栈 结束程序主菜单0223输出车库车辆21车辆离开车辆进入是否在栈中进入队列栈是否满是否进入栈否是否在队列是元素出列显示费用否找不到4. 测试与分析主界面如下:车库中假设最多停三辆车,加入进入四辆车abcd,则d需要在便道
5、排队:此时若b车开走,显示费用信息,则在便道的d车进入车库:若此时有车进入,则继续在便道排队:5。 附录源程序清单:#includestdio.h#includestdlib。h>includemalloc.hinclude<string.h>define MAX 3 /宏定义车库最大车辆/struct carchar id8;int h;/*时/int m;/分/struct car next;int n=0;/*当前车库内的车辆数/int m=0;/*当前便道的车辆数/struct car p1;structsqstackstruct car *base;struct c
6、ar top;intstacksize;structsqstack S1,S2;voidintstack(structsqstack &S)S。base=(struct car )malloc(MAX*sizeof(struct car);S。top=S。base;S.stacksize=MAX;voidpush_stack(structsqstack &S,struct car *e)strcpy(S。top>id,eid);S。top>h=e-h;S。topm=em;S。top+;voidpop_stack(structsqstack S,struct car
7、e)S。top-;strcpy(e>id,S。topid);e-h=S.top-h;em=S。topm;voidcreat_q() p1=(struct car )malloc(sizeof(struct car)); p1-next=NULL;voidpush_q(struct car *p)struct car p2; p2=p1;while(p2->next!=NULL) p2=p2next; p2>next=p;pnext=NULL;struct car pop_q()struct car p; p=p1next; p1-next=p1>next->nex
8、t;return p;voidcome_in()void interface();printf("请输入7位车辆车牌号和进入时间n例如:nA123456 12:30n”);if(n=MAX) struct car *p; p=(struct car)malloc(sizeof(struct car));scanf(”s",pid);scanf(”%d:%d”,p-h,pm);push_q(p);m+; else struct car *p; p=(struct car)malloc(sizeof(struct car));scanf("s",pid);s
9、canf(”d:d”,p>h,&p-m);push_stack(S1,p);n+; interface();voidgo_out()struct car pop_q();void interface();printf(”请输入7位车牌号和离开时间n");char b8;int h1;int m1;scanf("%s”,b);scanf(”d:%d”,h1,m1);inti;intbiaozhi=0;for(i=0;in;i+) if(strcmp(b,(S1。base+i)-id)=0) printf(”s 已离开n计费信息:n进入时间d:d,离开时间d:%d
10、,(每分钟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;jni;j+) struct car p2; p2=(struct car )malloc(sizeof(struct car);pop_stack(S1,p2);push_stack(S2,p2); struct car pp;pop_stack(S2,pp);for(j=1;jn-i;j+) pop_stack(S2,pp);push_s
11、tack(S1,pp);printf("222n"); n;biaozhi=1;if(p1next!=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=pp;pp=ppnext;if(strcmp(b,pp>id)=0) printf(”s 已离开n”,b);printf(”s 已离开n计费信息:n进入时间d:d,离开时间d:%d,(
12、每分钟1元)n”,b,pp-h,pp-m,h1,m1);printf("费用为:d元n",(60(h1pp>h)+m1-ppm)1);pnext=pp-next;m;biaozhi=1;break; if(biaozhi=0)printf(”找不到sn”,b);interface();void print()voidpush_stack(structsqstackS,struct car e);voidpop_stack(structsqstackS,struct car e);void interface();if(n=0)printf(”没有车辆n");
13、else printf(”*车库现有车辆信息:n”);inti;for(i=0;i<n;i+)printf(" s d:%dn",(S1.base+i)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=pnext;printf(" s d:dn”,pid,p>h,p>m); interface();v
14、oid interface()inti;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(" *欢迎使用停车管理系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防爆电气线路安全技术培训
- 2026中国消费电子产业链调研及市场趋势与投资机会分析报告
- 2026中国智能机器人巡检行业市场需求供给及商业投资规划发展分析研究报告
- 2026燃料电池技术研究行业竞争格局及投资规划展望
- 2026人工智能无人驾驶技术发展现状分析与发展潜力评估报告
- 2026中国叶黄素酯行业价格传导机制与成本管控最佳实践报告
- 2026圣巴托洛缪岛信息技术产业发展机遇分析与发展政策鼓励
- 2026中国印刷和包装材料行业市场现状供需分析及投资评估规划分析研究报告
- 炼钢过程中的主要危险因素培训课件
- 2026汽车装饰用品喷涂炭纤维性能拉伸确认框架工艺成本降低估值手段手册
- 《康复技术》课件-踝关节扭伤康复
- DB13-T2939-2019-电动自行车停放充电场所消防安全管理规范-河北省
- 机务非正常行车李晟方课件
- 水、电解质和酸碱平衡失调-课件
- 村基层组织建设年整改提高晋位升级方案范文(2篇)
- 丹东深基坑降水施工方案
- 人教PEP版(2024)三年级上册英语Unit 1 Making friends单元整体教学设计(共6课时)
- JTG-QB-003-2003公路桥涵标准图钢筋混凝土盖板涵
- (高清版)DZT 0295-2016 土地质量生态地球化学评价规范
- 堤防波浪壅高、爬高计算表格
- 教育统计与测量评价新编教程全套教学课件
评论
0/150
提交评论