停车场程序设计[1]

合集下载

c语言停车场课程设计

c语言停车场课程设计

c语言停车场 课程设计一、课程目标知识目标:1. 理解C语言中数组、函数和指针的基本概念,并能运用这些知识解决实际问题。

2. 学会使用C语言编写简单的停车场管理系统,掌握基本的编程技巧和逻辑思维能力。

3. 了解停车场管理系统的基本功能,如车位分配、查询、车辆进出等。

技能目标:1. 能够运用数组、函数和指针等C语言知识,设计并实现一个简单的停车场管理系统。

2. 培养学生分析问题、解决问题的能力,以及编程实践和调试技巧。

3. 提高学生的团队协作能力和沟通能力,通过小组合作共同完成课程项目。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学生主动探索新知识的精神。

2. 引导学生认识到编程在实际生活中的应用价值,提高学生对信息技术的重视程度。

3. 培养学生的责任感和使命感,使他们认识到停车场管理系统在现代社会中的重要性。

课程性质:本课程为实践性较强的学科,结合实际生活中的停车场管理系统,培养学生运用C语言编程解决问题的能力。

学生特点:考虑到学生所在年级,已具备一定的C语言基础,对数组、函数和指针等概念有初步了解,但实际应用能力有待提高。

教学要求:注重理论与实践相结合,强调动手实践,培养学生实际编程能力。

通过小组合作,提高学生的团队协作能力和沟通能力。

在教学过程中,关注学生的个体差异,因材施教,确保每个学生都能在课程中学有所获。

二、教学内容1. C语言基础知识回顾:数组、函数和指针的基本概念及其应用。

2. 停车场管理系统需求分析:介绍停车场管理系统的基本功能,如车位分配、查询、车辆进出等。

3. 系统设计:- 数据结构设计:数组、结构体等。

- 函数设计:功能模块划分,如车位分配、查询、车辆进出等。

- 指针应用:动态内存分配、函数指针等。

4. 编程实践:- 编写主程序框架,实现系统初始化。

- 编写功能模块,如车位分配、查询、车辆进出等。

- 整合各功能模块,形成完整的停车场管理系统。

5. 调试与优化:分析程序运行过程中可能出现的错误,进行调试和优化。

自-停车场管理系统程序设计

自-停车场管理系统程序设计

程序停车场管理系统( 2013 /2014 学年第1学期)题目:停车场管理系统专业网络工程组长学号姓名组员学号姓名李洬翊B12070319指导教师周剑指导单位软件教学中心日期2013年11月20日停车场管理系统一、课题内容和要求(1) 管理人员根据口令进入系统;(2) 管理车位信息(车位编号,状态)和每分钟的收费费率;(3)停车时录入汽车停泊信息(车牌号,车型,停泊位置,停泊开始时间);如果车位已满要给出提示;(4)取车时,根据车牌取,如果没有给出提示;需要根据车辆停泊时间自动计算费用并显示在屏幕上。

二、需求分析停车场管理系统的功能框架图如图1所示。

图1停车场管理系统功能框架图(1)管理员登陆:其实现是在设计程序时定义一个字符串数组作为密码,在管理员想通过主菜单界面登陆到管理系统的时候,系统要求管理员输入密码,将保存的密码和管理员输入的密码进行比较,如果一致则跳出密码登陆函数进入管理界面。

(2)车位信息:可查询当前时间车库的基本停车情况。

(3)车辆驶入:进入此系统后,输入当前时间和车牌号码,若有空位则停车成功,否则显示车库已满,自动返回上一层操作系统。

(4)车辆驶离:进入此系统后,依次输入车牌号码,停车时间,当前时间,若查找到所输入的车牌信息,则显示本次停车应付金额,并显示取车成功。

若无输入的车牌号码信息,则显示取车错误并返回上层操作系统。

(5)退出系统:当程序使用结束的时候,通过该项功能即可终止程序。

............三、概要设计1.用户登录ﻩYﻩﻩN2.信息查询3.主体程序四、源程序代码#include <iostream> ﻫ#include<stdio.h> ﻫ#include<string> ﻫ#include <time.h >ﻫ#include<fstream>ﻫusing namespace std; ﻫclass car{ﻫpublic:charno[9];int pos;double fee;ﻫvoid putcar();void takecar();};class Timeﻫ{public: ﻫint hour; ﻫint min;void getime();ﻫ};inti,poi; ﻫintposition[100]={0};//全局变量car carin[100]; ﻫTime catime[100];ﻫint juge();int comp();voidsearch_no();void search_pos();ﻫvoidmain(){/////////////////////////////////////////////用户登录const charha[10]="hahaha";//管理员用户名const charhb[10]="1234";//////管理员密码char cn[10],cm[10];ﻫint ci=0; ﻫwhile(1){cout<<"请输入管理员用户名:"; ﻫcin>>cn;ﻫif(strcmp(ha,cn)) ﻫ{cout<<"输入错误!\n";ﻫci++; ﻫif(ci==3)return;continue;} ﻫelse ﻫ{cout<<"请输入密码:"; ﻫcin>>cm;}if(!strcmp(hb,cm))ﻫbreak;else ﻫ{cout<<"密码错误!\n";ﻫci++;if(ci==3)return;ﻫcontinue;}ﻫ}ﻫ////////////////////////////////////////////////主程序ﻫint k;ﻫcout<<"请选择:" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎"<<"\n\n\t◇1.停车操作◇"ﻫ<<"\n\n\t◇ 2.取车操作◇" ﻫ<<"\n\n\t◇ 3.查询信息◇" ﻫ<<"\n\n\t◇4. 退出◇" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎\n\n";ofstream outfile("车辆信息.txt",ios::app);ﻫif(! outfile)ﻫ{cerr<<"openerror!"<<endl;exit(1);//ifstream infile("车辆信息.txt",ios::in);ﻫ//if(! outfile)//{cerr<<"open error!"<<endl;ﻫ//exit(1);}ﻫwhile(cin>>k) ﻫ{if(k==1) ﻫ{i=juge();cout<<"\t车牌号:"; ﻫcin>>carin[i].no; ﻫcarin[i].putcar();cout<<"请选择:"<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎" ﻫ<<"\n\n\t◇1.停车操作◇" ﻫ<<"\n\n\t◇2.取车操作◇"<<"\n\n\t◇ 3.查询信息◇" ﻫ<<"\n\n\t◇4.退出◇" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎\n\n";string time1;ﻫtime_t t; ﻫtime(&t);time1=ctime(&t);cout<<time1;////////////////////////////////////导入系统时间outfile<<carin[i].no<<""<<time1<<endl;/////////保存车辆信息。

停车场管理系统程序设计书

停车场管理系统程序设计书

停车场管理系统程序设计书一、程序设计目标1、通过本次课设进一步的了解栈和队列等有关概念。

掌握栈和队列的建立,掌握栈和队列的基本操作,深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。

2、复习巩固C语言知识。

通过C语言课程设计,使我们了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,更加了解C语言的好处和其可用性。

进一步加深对C语言、数据结构、离散数学等基础技能的理解和掌握。

3、掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

为后续各门计算机课程的学习和毕业设计打下坚实基础。

4、掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!让我们有一个既动手又动脑,独立实践的机会,锻炼我们的分析解决实际问题的能力。

同时增加了同学之间的团队合作精神!更加体会到工作中团队合作的重要性和必要性!二、问题描述※按照题目要求,我们把程序分为三个模块a.车辆到达模块:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待。

b.车辆离开模块:一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。

停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。

每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

c.显示模块:当需要列表显示时,系统判断输入值(1-3),如果输入1,则调用显示车场列表,如果输入2,则调用显示便道信息,如果输入3,则返回主菜单。

三、需求分析这个程序的关键是车辆的进站和出站操作,以及车辆的通道之间的相互关系。

停车场系统程序设计总结1(样例5)

停车场系统程序设计总结1(样例5)

停车场系统程序设计总结1(样例5)第一篇:停车场系统程序设计总结1总结c 语言程序设计是一门重要的专业基础课,通过这次课程设计使我了解了c语言程序设计的思想,并且掌握了程序设计的基本方法,为后续课程打下了坚实的基础。

同时,这次课程设计又是一次实践性较强的知识应用,在对我进行程序设计基础理论与技术技巧能力训练的同时,更加培养了我解决实际问题的编程能力。

在设计过程中,首先要解决的是与同学的合作,接下来分工与协商,共同探讨,大家取长补短,认清自己的不足之处和薄弱环节,加以弥补和加强,要做出一个好的程序就要有不懈追求的精神和对理想崇高的追求,有一种不完成不罢休的精神。

c 语言作为一种高级编程语言具有方便灵活的特点,适合各种类型的软件开发,为我们以后学习单片机非常有用。

在设计初期,根据题目的要求和所学的知识,车库中的车辆是先进后出的,是栈结构,便道上的车辆是先进先出的,是一个队列,结构很明显,但是现阶段我所学的基础知识不够,掌握的不多,对应用栈和队列来解决这个问题有一定的困难,因此我在整个设计中使用了结构体数组,运用一个结构体数组来同时记录车库和便道中车辆的信息,这样也可以起到一个连续记录数据的功能,完成设计要求的任务。

课程设计为我提供了一个既动手又动脑,独立实践的机会,将课本上的知识与实践相结合起来,提高了我适应实际,实践编程的能力。

在这一系统中用到了结构体,它让我更加巩固了结构体的特点和用法,本设计最好使用的结构是栈和队列,但是我们现阶段还未作学习,使用起来不是很流畅,因此我在这个设计中使用了结构体,使用了新的思路。

总之,这次课程设计挖掘了我潜在的能力,是我更加自信,也对编程更加有兴趣,为以后的学习打下了良好的基础。

第二篇:停车场信息上传系统停车场信息上传系统索威尔停车场车辆信息采集报送系统索威尔停车场车辆信息采集报送系统是深圳市索威尔科技发展有限公司针对《深圳市经营性停车场设施管理办法》要求,结合深圳市停车场的现状和特情,为满足深圳停车场信息报送需求而专门研发的一整套可完成车辆信息数据实时采集报送应用系统。

停车场模拟管理程序设计报告(附源代码)

停车场模拟管理程序设计报告(附源代码)

停车场模拟管理程序的设计与实现一、简介1.设计目的:理解线性表的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。

2.问题的描述:设停车场只有一个可停放几辆汽车的狭长通道,只有一个大门可供汽车进出。

汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车辆开走,则排在便道上的第一辆汽车即可进入;当停车场内某辆汽车要开走时,由于停车场是狭长的通道,在它之后开入的车辆必须先推出车场为他让路,待车辆开出大门,为他让路的车辆再按原次序进入车场。

试设计这样一个停车场模拟管理程序。

二、数据结构的设计:(1)为了便于区分每辆汽车并了解每辆车当前所处的位置,需要记录汽车的牌照号码和汽车当前的状态。

(2)为了便于停车场的管理,要为每个车位分配一个固定的编号。

(3)当停车场的停车位上都已停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的先后顺序顺次序放在便道上,为便道上的每个位置分配一个固定的编号。

当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某个车位。

(4)当某辆车离开停车场的时候,比他后进停车位的车要为他让路,而且当他开走之后让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为完成这项功能,定义一个结构体。

三、功能(函数)设计:本程序从总体上分为四个功能模块,分别为:(1)程序功能介绍和操作提示模块(2)汽车进入停车位的管理模块(3)汽车离开停车位的管理模块(4)查看停车场状态的查询模块四、界面设计:本程序界面本着易于操作简单整洁而不失美观的理念,采用数字对应功能选项,结合详细的操作提示,使得操作方便快捷,界面清晰明朗。

五、程序设计: 1车辆进入停车场模块:Arrive 函数Enter->top<MAX?执行语句实现进入便道执行语句实现进入车站Y N·Arrive 函数:有车进入停车厂;·Enter->top<MAX :对栈进行判满,Y 表示栈满,进入便道;N 表示栈不满,进入车站;2车辆离开停车场模块:·Leave函数:有车的话就要离开车位。

停车场模拟管理程序的设计与实现

停车场模拟管理程序的设计与实现

试验三停车场模拟管理程序的设计与实现本实验的目的是进一步理解线性表的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。

一、问题描述设停车场只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达的先后顺序依次排列,若车场内停满几辆车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长通道,在它之后开入的车辆必须先退出停车场为它让路,待该车辆开出大门,计算其停放时间并收费,为他让路的车辆再按原次序进入车场。

在这里假设汽车不能从便道上开走,试设计一个这样的停车场模拟管理程序。

为了以下描述的方便,停车场用“停车位”进行叙述,停车场的便道用“便道”进行叙述。

二、数据结构设计1、为了便于区分每辆汽车,需要记录汽车的车牌号和历史编号,并且记录其入场、出场时间,所以为汽车定义一个新的类型CAR,具体定义如下:typedef struct{ //汽车信息string license_plate;//车牌号码int h;time_t timei;time_t timeo;}CAR;2、由于车位是一个狭长通道,所以不允许两辆汽车同时出入停车位,当有车来到要进入停车位时也要顺次停放,当某辆车要离开时,比他后到的车要暂时离开停车位,而且越后到的车越先离开停车位,显然这和栈的“先出后进”特点吻合,所以可以使用一个栈来描述停车位。

由于停车位只能停放有限的几辆车,而且为了便于停车场的管理,要为每个车分配一个固定的编号,不妨设1、2、3、4和5(可利用数组下标),分别表示停车位的1车位、2车位、3车位、4车位和5车位,针对这种使用一个顺序栈比较方便,具体定义如下:typedef struct{ //停车位int STOP[MAX_STOP]; //每个停车位汽车的信息int top; //用来指示栈顶空间的静态指针}STOPPING;3、当停车场的停车位上都已经停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的顺序顺次存放在便道上,为便道上的每一个位置也分配一个固定的编号,当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某一个车位,由于问题描述中限制了便道上的汽车不能从便道上开走,即便道上的汽车只有在停车位上停放过之后才能离开停车场,这样越早进入便道的汽车越早进入停车位,而且每次进入停车位的汽车都是处于便道“最前面”的汽车,显然,这和队列的“先进先出”的特点相吻合,所以,这里使用一个顺序队列来描述便道,可以利用数组的下标表示便道的位置,具体定义如下:typedef struct{ //便道int PAVE[MAX_PAVE];//各个汽车信息的村存储int front,rear;//头指针和尾指针}PAVEMENT;4、当某辆车要离开停车场的时候,比他后进停车场的车要为它让路,而且当它开走之后让路的车还要按照原来的的停放顺序再次进入停车位的某个车位上,为了完成这项功能,再定义一个辅助栈,停车位中让路的车依次“压入”辅助栈,待提出开走请求的车开走后再从辅助栈的栈顶依次“弹出”到停车位中。

停车场车辆出入管理plc梯形图控制程序设计

停车场车辆出入管理plc梯形图控制程序设计

停车场车辆出入管理plc梯形图控制程序设计
停车场车辆出入管理的PLC梯形图控制程序设计可以按照以下步骤进行设计:
1. 确定输入信号:
- 车辆入场信号:检测到车辆进入停车场的信号。

- 车辆出场信号:检测到车辆离开停车场的信号。

2. 确定输出信号:
- 车位占用信号:指示停车场车位是否被占用。

- 道闸控制信号:控制道闸的开关动作。

3. 设计PLC梯形图程序:
- 输入信号处理部分:
- 当车辆入场信号触发时,设置车位占用信号为占用状态。

- 当车辆出场信号触发时,设置车位占用信号为空闲状态。

- 输出信号处理部分:
- 当车位占用信号为占用状态时,控制道闸关闭,阻止车辆出场。

- 当车位占用信号为空闲状态时,控制道闸打开,允许车辆出场。

4. 添加安全保护机制:
- 考虑添加一定的延时控制,避免车辆进出时的信号抖动导致错误操作。

- 考虑添加传感器故障检测机制,及时发现故障并报警。

请注意,以上仅为概括性的设计思路,具体的PLC梯形图控制程序设计还需要根据实际的停车场环境和设备来进行具体设计。

C程序设计-停车场管理系统(流程设计图)

C程序设计-停车场管理系统(流程设计图)

3 2
N
Y
是否继续
N
退出程序 退出程序
主菜单
主菜单
Y
退出程
主菜单 出站模块流程图
停车场管理 1
主菜单
浏览、显示信息
入站
出站
退站
系统功能模块图
主函数
主菜单
主函数流程图
显示一系列功能选项
输入 n 判断 n 是否为 0~4
N
Y 根据 n 的值调用其他功能模块函数 主菜单模块流程图
浏览、显示模块
从文件中读取站内车辆信息
显示所读信息
从文件中读取便道停车信
显示所读信息
是否继续
N
Y
返回主菜单
退出程序
查询、显示模块程图
入站模块
从文件中读出站内停车信息
Y
记录空位信息
查询站内是否有空位
N
从文件中读出便道停车信息
车辆入站,记录信息
查询便道是否有空位
将信息存入文件
记录空位信息
是否继续
Y
是否继续
N
N
车辆入站,记录信息
主菜单
Y
主菜单 Y
退出 退出程序
将信息存入文件
程序
是否继续
N
Y
主菜单 入站模块流程图
退出程序
出站模块
输入车辆车牌
从文件中读取站内车辆信息
查询该车所在的位
Y
输出该车的信息,安排出站
该车是否在站内
N
从文件中读取便道停车信息
安排该车出站,更新站内信息
查询该车所在的位
从文件中读取便道停车信息 该车是否在便道内
N
便道内是否有 车
输出该车的信息,安排出站

停车场系统程序设计总结1

停车场系统程序设计总结1

停车场系统程序设计总结1在停车场系统的设计过程中,我们首先需要明确需求,然后进行系统设计和编码实现。

本文将围绕停车场入场、停车和出场的流程展开讨论,分别介绍每个环节的设计和实现细节。

1. 入场流程设计在车辆进入停车场时,需要进行车辆信息登记,为车辆分配合适的停车位,并记录入场时间。

在系统设计中,我们可以创建一个类似车辆信息管理系统的模块,用于登记车辆信息并生成唯一的入场编号。

在编码实现中,可以使用数据库存储车辆信息,并为每个车辆分配一个唯一的入场编号。

同时,可以设计一个算法用于寻找合适的停车位,例如最先进入、距离出口最近等。

2. 停车流程设计一旦车辆进入停车场,车辆需要停放在合适的停车位上。

停车位可以使用数组或链表等数据结构进行管理,每个停车位可以设置一个布尔值来表示是否已经停车。

在编码实现中,可以使用数组来表示停车位状态,每个数组元素表示一个停车位的状态。

当有车辆入场时,可以遍历数组找到一个空闲的停车位,并将其状态设置为已占用。

然后,将车辆信息和停车位信息关联起来,以便出场时可以根据车牌号快速找到对应的停车位。

3. 出场流程设计当车辆需要出场时,需要进行费用计算,并记录出场时间。

在系统设计中,可以设计一个收费模块,根据停车时间和收费标准计算出应收费用。

在编码实现中,可以通过车牌号快速找到对应的停车位和入场时间,并计算停车时长。

然后,根据收费标准计算应收费用。

为了提高系统的效率,可以将收费标准预先存储在数据库中,并在需要计算费用时从数据库中读取。

4. 系统优化为了提高系统的性能,可以考虑一些系统优化措施。

例如,可以使用缓存技术提高数据查询的效率,将常用的数据存储在内存中,减少对数据库的访问次数。

另外,可以使用多线程技术处理并发请求,提高系统的并发能力。

此外,还可以增加一些额外的功能,如停车位实时监控、车辆定位等。

停车位实时监控可以通过传感器或摄像头等设备实现,用于实时监测停车位的占用情况。

车辆定位可以使用GPS等技术,方便车主快速找到自己停放的位置。

实验三 停车场模拟管理程序的设计与实现

实验三  停车场模拟管理程序的设计与实现

实验三停车场模拟管理程序的设计与实现一、问题描述设停车场只有一个可停放几辆汽车的狭长通道,只能停放五辆车,另外还有一个便道,可停放无数辆车,停车场只能单向进出,设计一个管理停车场的系统。

二、数据结构实现停车位栈:typedef struct{char name[10];}carname;typedef struct{carname car[6];int top;}seqstackcar;便道队列typedef struct node{carname car[100];int front,rear;int num;}queuenode;三、功能设计1.车进入函数void arrive(seqstackcar *stop,queuenode *lq,carname x)2.车离开函数int leave(seqstackcar *s1,seqstackcar *s2,queuenode *p,carname x)3.查询车函数void chaxun(seqstackcar *s1)四、界面设计可以为用户提供采用多选择式管理停车位使用户使用本系统方便快捷。

五、运行与调试1.汽车进入时的场景2.离开和查询时的场景3.容错检测#include<iostream.h>#include<stdlib.h>#include<string.h>#define maxsize 5typedef struct{char name[10];}carname;carname name1;typedef struct{carname car[6];int top;}seqstackcar;typedef struct node{carname car[100];int front,rear;int num;}queuenode;seqstackcar *init_car(){seqstackcar *s;s=new seqstackcar;if(!s)return NULL;else{s->top=0;return s;}}int push(seqstackcar *s,carname x) {if(s->top==maxsize)return 0;else{s->top++;s->car[s->top]=x;return 1;}carname pop(seqstackcar *s){if(s->top==0){return name1;}else{s->top--;return s->car[s->top+1];}}queuenode *initqueue(){queuenode *q;q=new queuenode;q->front=q->rear=0;q->num=0;return q;}int inqueue(queuenode *q,carname x){if(q->num==100)return 0;else{q->rear=q->rear+1;q->car[q->rear]=x;q->num++;return 1;}}carname outqueue(queuenode *q){if(q->num==0){cout<<"候车处已经没车了"<<endl;return name1;}else{q->front++;q->num--;return q->car[q->front];}}void arrive(seqstackcar *stop,queuenode *lq,carname x){int f;f=push(stop,x);if(f==1)cout<<<<"车在"<<stop->top<<"车位上"<<endl;else{inqueue(lq,x);cout<<<<"车在候车处"<<lq->rear-lq->front<<"车位上"<<endl;}}int leave(seqstackcar *s1,seqstackcar *s2,queuenode *p,carname x){char *b=;int n,f=0;carname y;char *a=;while(s1->top>0&&f!=-1){y=pop(s1);a=;if(strcmp(a,b)!=0&&[0]!='\0')n=push(s2,y);else{f=-1;break;}}if(strcmp(a,b)==0&&[0]!='\0'){cout<<<<"车已经离开停车位"<<endl;while(s2->top!=0){y=pop(s2);push(s1,y);}if(p->rear-p->front>0){y=outqueue(p);push(s1,y);}elsecout<<"候车处没有车"<<endl;}else{cout<<"没有此车"<<endl;while(s2->top!=0){push(s1,y);y=pop(s2);}}return 0;}void chaxun(seqstackcar *s1){if(s1->top==0)cout<<"停车位没有车"<<endl;else{for(int i=1;i<=s1->top;i++)cout<<s1->car[i].name<<"在"<<i<<"车位"<<endl;}}int main(){char ch;seqstackcar *s1,*s2;queuenode *p;int flag;s1=init_car();s2=init_car();p=initqueue();flag=1;while(1){cout<<"请输入字母,A:车进入,L:车退出,E:退出,P:查询"<<endl;cin>>ch;switch(ch){case 'A':{carname q;cout<<"请输入车的名字"<<endl;cin>>;arrive(s1,p,q);}break;case 'L':{carname q1;cin>>;leave(s1,s2,p,q1);}break;case 'E':{cout<<"exit"<<endl;flag=0;}break;case 'P':chaxun(s1);break;default:cout<<"输入错误请重新输入!"<<endl;if(flag==0)break;}}return 0;}。

停车场管理课程设计

停车场管理课程设计

一、绪论数据结构是计算机程序设计的重要理论技术基础,也是计算机学科的核心课程,而课程设计则是考察我们学生对数据结构的熟悉程度及掌握程度。

此次的课程设计是关于停车场管理系统的编程,需要考查的是对栈和队列的熟练使用,以及对基础知识的掌握。

这次的课程设计主要是用栈和队列实现模拟停车场的基本原理,栈的顺序存储结构和队列的链式存储结构的定义和算法描述,同时也学会了编写停车场问题的程序。

二、程序设计2.1、需求分析(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。

进入主菜单前需要输入收费标准以及停车场所能容纳的车辆数目。

(2)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。

实现停车场的调度功能。

(3)用顺序栈来表示停车场,链队表示停车场外的便道。

(4)显示停车场信息和便道信息。

(5)程序执行的命令为:○1车辆进入停车场○2车辆离开停车场○3显示停车场的信息。

2.2、概要设计抽象数据类型定义(1)栈的抽象数据类型定义AST Stack{数据对象:D={ai|ai∈ElemSet,i=1,2,...,n, n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}约定an端为栈顶,a1端为栈底。

基本操作:InitStack(&S)操作结果:构造一个空栈S。

DestroyStack(&S)初始条件:栈S已存在。

操作结果:栈S被销毁。

ClearStack(&S)初始条件:栈S已存在。

操作结果:将栈S清为空栈。

StackEmpty(S)初始条件:栈S已存在。

操作结果:若栈S为空栈,则返回TRUE,否则FALSE。

StackLength(s)初始条件:栈S已存在。

操作结果:返回S的元素个数,既栈的长度。

GetTop(S,&e)初始条件:栈S已存在且非空。

操作结果:用e返回S的栈顶元素。

Push(&S,e)初始条件:栈S已存在。

程序设计_停车场管理系统汇总

程序设计_停车场管理系统汇总

程序设计报告( 2014 / 2015 学年第 1学期)题目:停车场管理系统专业组长学号姓名组员学号姓名指导教师指导单位日期分工停车场管理系统一、课题内容和要求停车场管理是一个计时收费系统,同时也是一个能对车位进行管理的系统,最基本的功能是实现停车、取车、查询以及修改停车费费率等功能。

同时,为了使用的方便和安全的考虑设计了管理员能对密码进行修改的功能。

在停车的功能中采用了文件流的形式,对车位、车牌号、车型都进行了保存,以便于查询功能的实现,除此之外,也是为了能够实现在取车模块中利用输入的车牌号自动计算出停车的费用。

停车位第一个为空的位置,由程序查询自动给出车位号,如果车位已满要给出提示。

取车时,需要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小时不足一小时按一小时计算)并显示在屏幕上,可以随时根据车牌查询是否入库。

可以随时根据车位查询该位置上的相关信息。

本系统对不同车型的费率给出了默认值,管理员可以根据实际需要对费率进行修改。

功能要求:用C/C++设计一个程序实现停车场管理系统,要求如下:(1)管理人员根据口令进入系统;(2)管理人员有权限对登陆账号和密码进行修改;(3)管理车位信息(车位编号,状态)和每小时的收费费率;(4)停车时录入汽车停泊信息(车牌号,车型,停泊位置,停泊开始时间);如果车位已满要给出提示;(5)取车时,根据车牌取,如果没有给出提示;需要根据车辆停泊时间自动计算费用并显示在屏幕上。

(6)管理人员可以根据需要随时更改每小时的收费费率。

二、需求分析停车场管理系统的功能框架图如图1所示。

图1 功能框架图(1)系统主要包括了管理员登陆、停车操作、取车操作、信息查询、费率修改这五大模块,每个模块都用用相应的函数来实现这些功能。

(2)在管理员登陆模块中,设置了三次输入机会,用户名和密码事先用文档存储,供使用者进入系统;若管理员连续输入密码错误超过提示,则系统给出修改密码或者退出系统的提示,这些功能在函数名为loadin()的函数中实现。

程序设计停车场管理系统汇总

程序设计停车场管理系统汇总

程序设计停车场管理系统汇总Final approval draft on November 22, 2020程序设计报告( 2014 / 2015 学年第 1学期)题目:停车场管理系统专业组长学号姓名组员学号姓名指导教师指导单位日期停车场管理系统一、课题内容和要求停车场管理是一个计时收费系统,同时也是一个能对车位进行管理的系统,最基本的功能是实现停车、取车、查询以及修改停车费费率等功能。

同时,为了使用的方便和安全的考虑设计了管理员能对密码进行修改的功能。

在停车的功能中采用了文件流的形式,对车位、车牌号、车型都进行了保存,以便于查询功能的实现,除此之外,也是为了能够实现在取车模块中利用输入的车牌号自动计算出停车的费用。

停车位第一个为空的位置,由程序查询自动给出车位号,如果车位已满要给出提示。

取车时,需要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小时不足一小时按一小时计算)并显示在屏幕上,可以随时根据车牌查询是否入库。

可以随时根据车位查询该位置上的相关信息。

本系统对不同车型的费率给出了默认值,管理员可以根据实际需要对费率进行修改。

功能要求:用C/C++设计一个程序实现停车场管理系统,要求如下:(1)管理人员根据口令进入系统;(2)管理人员有权限对登陆账号和密码进行修改;(3)管理车位信息(车位编号,状态)和每小时的收费费率;(4)停车时录入汽车停泊信息(车牌号,车型,停泊位置,停泊开始时间);如果车位已满要给出提示;(5)取车时,根据车牌取,如果没有给出提示;需要根据车辆停泊时间自动计算费用并显示在屏幕上。

(6)管理人员可以根据需要随时更改每小时的收费费率。

二、需求分析停车场管理系统的功能框架图如图1所示。

图1 功能框架图(1)系统主要包括了管理员登陆、停车操作、取车操作、信息查询、费率修改这五大模块,每个模块都用用相应的函数来实现这些功能。

(2)在管理员登陆模块中,设置了三次输入机会,用户名和密码事先用文档存储,供使用者进入系统;若管理员连续输入密码错误超过提示,则系统给出修改密码或者退出系统的提示,这些功能在函数名为loadin()的函数中实现。

大学C语言停车场管理系统设计c语言课程设计含调试图

大学C语言停车场管理系统设计c语言课程设计含调试图

Xxxxx大学xxxxxxxxxxx系20xx-20xx学年第一学期《C程序设计》课程设计题目名称:停车场管理系统设计姓名:学号:班级:指导教师:编写日期:20 年1月5日—20 年1月31日成绩:目录(一)需求分析 (3)1-1停车 (3)1-2取车 (3)1-3功能的选择 (3)(二)总体设计(程序设计组成框图) (3)2-1停车模块 (3)2-2取车模块 (4)2-3车辆信息浏览模块 (4)2-4程序设计组成框图 (4)(三)详细设计 (5)3-1停车场分析 (5)3-2停车操作 (5)3-3收费管理(取车) (5)3-4车辆信息 (6)3-5退出系统 (6)(四)程序运行结果测试与分析 (6)(五)结论与心得 (8)(六)参考文献 (9)(七)致谢 (9)附录: (9)(一)需求分析1-1停车车辆信息要用文件存储,因而要提供文件的输入输出操作。

1-2取车当车离开时,要删除文件中该车的信息,因而要提供文件的删除操作。

1-3功能的选择提供现实操作和用键盘式菜单实现功能选择。

(二)总体设计(程序设计组成框图)2-1停车模块对车辆信息赋值,分配前检查车位使用情况(按行查找park 数组,元素为0 表示车位为空,则允许分配)。

把新添加的车辆信息以追加的方式写入汽车信息文件,并更改汽车信息文件中其他汽车信息的停车时间(停车时间加5)。

2-2取车模块计算费用(停车费用=停车时间*0.2 元),从文件中删除该车信息。

并将该车位对应的二位数组变量设为0,表示该车位可用。

输出提示信息:是否输出停车费用总计?(Y/N)如果选择Y,则输出停车费用,否则回到上级菜单。

2-3车辆信息浏览模块输出车辆信息文件中的记录。

另外,用户按Esc 键退出系统。

2-4程序设计组成框图(三)详细设计3-1停车场分析有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层。

( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号)假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5 . 即先将这四辆车的信息存入文件”car.dat”中。

java课程设计停车场管理系统

java课程设计停车场管理系统

java课程设计停车场管理系统停车场管理系统是一种方便车主停放和管理车辆的软件系统。

它可以帮助停车场实现车辆的有序停放、计时计费、车辆信息管理等功能。

本文将以Java课程设计停车场管理系统为题,从人类视角进行创作,以使文章富有情感,并给读者一种仿佛真人在叙述的感觉。

第一部分:引言停车场是城市交通管理中不可缺少的一部分,随着汽车数量的不断增加,停车难题也日益突出。

为了解决这一问题,我们设计了一款停车场管理系统。

该系统基于Java语言开发,旨在提供便捷的停车服务,使车主能够轻松管理自己的车辆。

第二部分:系统功能我们的停车场管理系统具有以下主要功能:1. 车辆进入管理:车主通过系统的入口处,将车辆信息录入系统,包括车牌号、车辆类型等。

系统会自动分配一个停车位给该车辆,并记录进入时间。

2. 车辆离开管理:当车主准备离开停车场时,系统会根据车辆信息自动计算停车费用,并提供付款方式,如现金、刷卡等。

车主缴费后,系统会自动更新车辆状态,并记录离开时间。

3. 车辆信息管理:系统可以对车辆信息进行管理,包括查询、修改、删除等功能。

车主可以通过系统查询自己的停车记录、费用等信息。

4. 停车场管理:系统可以实时监控停车场的停车位情况,并提供可用停车位数量的查询功能。

当停车位不足时,系统会提醒车主选择其他停车场。

第三部分:系统设计我们的停车场管理系统采用了面向对象的设计思想,将系统划分为多个模块进行开发。

每个模块负责不同的功能,通过接口进行交互。

系统使用数据库来存储和管理车辆信息和停车记录。

在用户界面设计上,我们注重简洁、直观的操作,以提供良好的用户体验。

第四部分:系统的优势相比传统的停车管理方式,我们的停车场管理系统具有以下优势:1. 提供便捷的停车服务:车主只需通过系统录入车辆信息,系统会自动分配停车位,并提供自动计费和付款功能,节省了车主的时间和精力。

2. 提供实时的停车位信息:系统可以实时监控停车场的停车位情况,车主可以提前查询可用停车位数量,避免因停车位不足而浪费时间。

停车场管理系统 程序设计

停车场管理系统  程序设计

一、停车场管理系统1.1设计要求1。

1.1问题描述设计一个停车场管理系统,模拟停车场的运作,此程序具有以下功能:①汽车到达,则显示汽车在停车场内或便道上的停车位置。

②若车离去,则显示汽车在停车场内停留的时间和应缴纳的费用(在便道上停留的时间不收费)。

1.1。

2基本要求①要求以栈模拟停车场,以队列模拟车场外地便道,按照从终端读入的输入数据序列进行模拟管理。

②求处理的数据元素包括三个数据项:汽车“到达”或“离去"信息.汽车牌照号码以及离去的时刻。

③要求栈以顺序结构实现,队列以链表实现。

1。

1.3测试数据自行设计一组在停车场上停车的数据和便道上停车的数据.1。

1.4实现提示该停车场能容纳车辆的数量,便道上的停车数量。

车辆到达对应栈的入栈操作,车辆离开对应栈的出栈操作。

1。

2设计代码及注释#include<iostream>#include<time.h〉#include<ctime〉#include〈dos。

h〉#include<windows.h>using namespace std;#define PASS 20#define POT 20struct passLot//便道队列数据结构{int num;//车位号time_t timep;//停车时间int carNum;//停车的车牌号码};struct potLot//停车场栈数据结构{int num;time_t timep;int carNum;};void printLine()//打印下划线(作为主界面图表的框架){cout〈<"\t\t\t___________________________________”<〈endl;return;}void printStar()//打印星号{cout〈〈endl〈〈"\t\t******************************************************”<<endl;}class erroFull//停车位满时异常类{public:erroFull(){system("color 3c");}void ex(){cout〈<endl<〈"\t\t\t!!!停车场位已满!”〈〈endl;_sleep(2000);}~erroFull(){}};class erroEmp//停车位空时异常类{public:erroEmp(){system("color 3c”);}void ex(){cout<〈”!!!停车场位为空!”〈〈endl;_sleep(2000);}~erroEmp(){}};class parkingLot//停车场类{public:parkingLot(){passLot* pa;//便道停车位指针potLot* po;//停车场停车位指针flag=0;//用来记忆队列(便道)中停车的数量rear=front=0;//初始化队列头尾base=0;top=base;//初始化栈头尾int i=0;//初始化停车场和便道空间以及车位号for(;i〈POT;i++){pa=(passLot*)malloc(sizeof(passLot));a[i]=pa;a[i]-〉num=i+1;a[i]->carNum=0;po=(potLot*)malloc(sizeof(potLot));b[i]=po;b[i]->num=i+1;b[i]->carNum=0;}}~parkingLot(){cout〈〈”\t\t停车场数据已清空.”〈〈endl;}void passLG()//便道管理函数{try{if(flag==20) throw erroFull();//如果停车位已满,则抛出车位慢得异常情况system(”cls”);printStar();cout<<"\t\t\t\t您进入了便道停车界面”〈<endl;cout〈〈endl〈〈”\t\t\t便道停车场共有20个车位,现共停"<<flag<〈"个车位.”<〈endl<〈endl;cout<〈"\t\t\t请输入将要停车的号码:";cin>>a[rear]-〉carNum;a[rear]—>timep=time(NULL);cout<<endl<<"\t\t\t!!汽车停放在"〈<a[rear]-〉num〈<”车位成功,系统将在一秒后返回上层界面!!"<<endl;rear=(rear+1)%PASS;flag++;_sleep(1000);}catch(erroFull &err){err。

停车场管理系统的设计C语言课程设计

停车场管理系统的设计C语言课程设计

2014-2015学年第二学期《高级语言程序设计》课程设计报告题目:停车场管理系统的设计专业:计算机科学与技术班级:13级(3)班姓名:指导教师:**成绩:计算机与信息工程系二0一五年月日目录1、设计内容及要求2、整体设计停车模块车辆信息浏览模块取车模块3、运行与测试报告4、设计感想5、源程序代码设计目的:通过设计一个停车场管理系统,进一步消化和巩固已学过的C 语言程序设计基础理论,学习和实践程序设计的各种技能,利用C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具,同时也掌握与数组有关的算法、函数的调用、结构体类型变量的定义和使用;文件打开、关闭、读、写等文件操作函数的使用,提高实际运用能力。

设计内容:1.有一个两层的停车场,每层有6个车位,当第一层车位停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共四项,其中停车时间按分钟计算。

2.假设停车场初始状态为第二层已经有四辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。

即先将这四辆车的信息存入文件“car.dat”中(数组的对应元素也要进行赋值)3.停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件“car.dat”中,并将在此之前的停车时间加5。

(此题简化时间的处理:当有一辆车进入时才对别的车加时间5分钟)4.收费管理(取车):当有车开走时,输入其车牌号,先按其停车时间计算费用,每5分钟2毛钱。

同时从文件“car.dat”k 删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组清零)。

按用户的选择来判断是否要输出停车收费的总计。

5.输出停车场中全部车辆的信息。

6.退出系统。

需求分析车辆信息要用文件存储,提供文件的输入输出操作;当车开走时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择。

c++程序设计报告停车场

c++程序设计报告停车场

C++课程设计报告题目:学生成绩管理程序目录1 课程设计目的 (1)2 任务与要求13 主要数据构造〔类函数〕24 程序功能构造25 功能测试36 课程设计总结77 附:课程设计源代码81.课程设计目的〔1〕稳固和加深学生对c++课程根本知识的理解和掌握;〔2〕掌握c++编程和调试的根本技能;〔3〕利用c++进展简单软件设计的根本思路和方法,初步理解面向对象编程思想;〔4〕提高学生运用c++解决实际问题的能力;〔5〕提高学生综合运用C++编程知识的能力;〔6〕培养学生工程设计和综合分析的能力;〔7〕培养和提高学生书写课程设计报告的能力;〔8〕培养学生实际操作能力和团结协作能力,为后续课程的学习打下坚实的根底。

2.课程设计任务与要求任务:编写停车场管理程序,用于停车场对车辆的管理。

程序能够实现可用车位统计与查询、零车位提示、停车时长统计、按车型时长收费、管理员收费累计等功能。

要求:编写停车场收费管理系统,定义汽车类Car和管理员类Manager,Car类有number(车牌号),model(车型)、et(enter time,入场时间)、qt (quit time)、price(每小时收费价)、cost(费用)等属性,Manager类有id和key等,实现以下收费功能:⑴可用车位统计与查询;⑵零车位提示;⑶停车时长统计;⑷按车型时长收费;⑸管理员收费累计。

主界面如下:3.主要数据构造〔类,函数〕主函数:int main〔〕;停车函数:void putcar();取车函数:void tackcar();时间函数:string time1;判断车位函数:int juge;4.程序功能构造程序主要功能如图1所示。

用户名和密码正确进入系统的截图输入车牌号的界面车辆类型选择界面查询信息界面按车牌查询界面按车位查询界面历史信息查询界面收费界面6.课程设计总结经过一个学期对"C++程序设计"的学习,我学习到了根本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的根底。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【问题描述】设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内己停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开人;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

试为停车场编制按上述要求进行管理的模拟程序。

【基本要求】以桟模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。

每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。

对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。

钱以顺序结构实现,队列以链表结构实现。

【测试】设n=2,输入数据为:(‘A’,1,5), (‘A’,2,10), (‘D’,1,15), (‘A’,3,20),(‘A’,4,25), (‘A’,5,30), (‘D’,2,35), (‘D’,4,40), (‘E’,0,0)。

其中,‘A’表示到达(Arrival);‘D’表示离去(Departure);‘E’表示输入结束(End)。

【实现提示】需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。

输入数据按到达或离去的时刻有序。

栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。

【程序代码】//预定义常量和类型#define OVERFLOW -2#define OK 1#define ERROR 0#define STACK_INIT_SIZE 1typedef int status ;//函数调用声明#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<conio.h>//定义一个结构体用于存储停车数量和时间typedef struct{int car_num;int time;} car_info;//以栈的顺序存储模拟停车场#define STACK_INIT_SIZE 1typedef struct{car_info *base;car_info *top;status stacksize;} sqstack;//构造一个空栈表示停车场void Initstack(sqstack *s){s->base=(car_info *)malloc(STACK_INIT_SIZE*sizeof(car_info)); if(!s->base) exit(OVERFLOW);s->top=s->base;s->stacksize=0;}//插入新的元素e(即将进入停车场的车辆)为栈顶元素void push(sqstack *s,car_info e){*s->top++=e;s->stacksize++;}//若栈不为空(停车场有车辆),则删除栈顶元素,用e返回其值否则返回ERROR car_info pop(sqstack *s){car_info e;if(s->top==s->base){printf("停车场内没有该车辆!\n");exit(0) ;}e=*--s->top;s->stacksize--;return e;}//-----单链队列-----队列的链式存储结构-----typedef struct Qnode{int car_num;int time;struct Qnode *next;} QNode,*QueuePtr;typedef struct{QueuePtr front; //队头指针QueuePtr rear; //队尾指针int length;} LinkQueue;//构造一个空队列来模拟便道status InitQueue(LinkQueue *Q){Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q->front)exit(OVERFLOW);Q->front->next=NULL;Q->length=0;return OK;}//插入新的元素a(即将进入便道的车辆)为队尾元素void EnQueue(LinkQueue *Q,car_info *a ){QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->car_num=a->car_num;p->time=a->time;p->next=NULL;Q->rear->next=p;Q->rear=p;Q->length++;}//若队列不为空,则删除Q的队头元素,用e返回其值否则返回ERROR QueuePtr DeQueue(LinkQueue *Q){QueuePtr p,e,s={0};if(Q->front==Q->rear){printf("便道上没有车辆!\n");return s;}p=Q->front->next;e=p;Q->front->next=p->next;Q->length--;if(Q->rear==p)Q->front=Q->rear;//free(p);return e;}//对于新的元素若栈已满则存入队列,栈未满则存入栈void arrive(sqstack *s,LinkQueue *p,car_info a,int n){if(s->stacksize<n){push(s,a);printf("\n车牌号为%d的车辆进入停车场%d号车道\n",a.car_num,s->stacksize);}else{EnQueue(p,&a);printf("\n停车场已满,车牌号为%d的车辆停在便道的%d号位置\n",a.car_num,p->length);}}//对于要取出的元素,将其从栈顶删除,输出其相关信息,让队头元素入栈void leave(sqstack *tcc,sqstack *dcc,LinkQueue *p,car_info a,float pay){car_info x,ss;QueuePtr b;int find=1,arrivetime=0;float cost=0.0;while(find){ss=pop(tcc);push(dcc,ss);if(ss.car_num==a.car_num){find=0;cost=(a.time-ss.time)*pay;arrivetime=ss.time;}}pop(dcc); //把临时堆栈的第一辆车(要离开的)去掉;while(dcc->stacksize){x=pop(dcc);push(tcc,x);}if(tcc->stacksize<2&&p->length!=0){b=DeQueue(p);x.car_num=b->car_num;x.time=b->time;push(tcc,x);printf("车牌号为%d的车辆由便道进入停车场%d号车道\n",x.car_num,tcc->stacksize);}printf("\n**********************************************\n");printf("|车牌号码|进站时刻|出站时刻|停留时间|停车费用|\n");printf("|%-6d |%-6d |%-6d |%-6d |%-6.2f |\n",a.car_num,arrivetime,a.time,a.time-arrivetime,cost);printf("**********************************************\n");}//主函数void main(){sqstack tcc,dcc;LinkQueue p;car_info a;int sum=1000,n;float pay;char sign;printf("\n|************************停车场管理**************************| \n");printf("|******A/a:车辆到达*******D/d:车辆离开******E/e:退出系统*****|\n\n");Initstack(&tcc);Initstack(&dcc);InitQueue(&p);printf("请先输入停车场的车位总数,收费标准(元/小时):");scanf("%d%f",&n,&pay);getchar();printf("\n请输入A/D/E,车牌号,时刻:");scanf("%c%d%d",&sign,&a.car_num,&a.time);getchar();while(sum){switch(sign){case 'a':case 'A':arrive(&tcc,&p,a,n);break;case 'D':case 'd':leave(&tcc,&dcc,&p,a,pay);break; case 'e':case 'E':exit(OVERFLOW);break;}printf("\n请输入A/D/E,车牌号,时刻:"); scanf("%c%d%d",&sign,&a.car_num,&a.time); getchar();sum--;}getch();}#define OVERFLOW -2#define OK 1#define ERROR 0#define STACK_INIT_SIZE 1 typedef int status ;#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<conio.h>typedef struct{int car_num;int time;} car_info;typedef struct{car_info *base;car_info *top;status stacksize;} sqstack;void Initstack(sqstack *s){s->base=(car_info *)malloc(STACK_INIT_SIZE*sizeof(car_info));if(!s->base) exit(OVERFLOW);s->top=s->base;s->stacksize=0;}void push(sqstack *s,car_info e){*s->top++=e;s->stacksize++;}car_info pop(sqstack *s){car_info e;if(s->top==s->base){printf("停车场内没有该车辆!\n");exit(0) ;}e=*--s->top;s->stacksize--;return e;}typedef struct Qnode{int car_num;int time;struct Qnode *next;} QNode,*QueuePtr;typedef struct{QueuePtr front;QueuePtr rear;int lenth;} LinkQueue;status InitQueue(LinkQueue *Q){Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));if(!Q->front)exit(OVERFLOW);Q->front->next=NULL;Q->lenth=0;return OK;}void EnQueue(LinkQueue *Q,car_info *a ){QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->car_num=a->car_num;p->time=a->time;p->next=NULL;Q->rear->next=p;Q->rear=p;Q->lenth++;}QueuePtr DeQueue(LinkQueue *Q){QueuePtr p,e,s={0};if(Q->front==Q->rear){printf("便道上没有车辆!\n");return s;}p=Q->front->next;e=p;Q->front->next=p->next;Q->lenth--;if(Q->rear==p)Q->front=Q->rear;//free(p);return e;}void arrive(sqstack *s,LinkQueue *p,car_info a,int n){if(s->stacksize<n){push(s,a);printf("\n车牌号为%d的车辆进入停车场%d号车道\n",a.car_num,s->stacksize);}else{EnQueue(p,&a);printf("\n停车场已满,车牌号为%d的车辆停在便道的%d号位置\n",a.car_num,p->lenth);}}void leave(sqstack *tcc,sqstack *dcc,LinkQueue *p,car_info a,float pay){car_info x,ss;QueuePtr b;int find=1,arrivetime=0;float cost=0.0;while(find){ss=pop(tcc);push(dcc,ss);if(ss.car_num==a.car_num){find=0;cost=(a.time-ss.time)*pay;arrivetime=ss.time;}}pop(dcc); //把临时堆栈的第一辆车(要离开的)去掉;while(dcc->stacksize){x=pop(dcc);push(tcc,x);}if(tcc->stacksize<2&&p->lenth!=0){b=DeQueue(p);x.car_num=b->car_num;x.time=b->time;push(tcc,x);printf("车牌号为%d的车辆由便道进入停车场%d号车道\n",x.car_num,tcc->stacksize);}printf("\n**********************************************\n");printf("|车牌号码|进站时刻|出站时刻|停留时间|停车费用|\n");printf("|%-6d |%-6d |%-6d |%-6d |%-6.2f |\n",a.car_num,arrivetime,a.time,a.time-arrivetime,cost);printf("**********************************************\n");}void main(){sqstack tcc,dcc;LinkQueue p;car_info a;int sum=1000,n;float pay;char sign;printf("\n|************************停车场管理**************************| \n");printf("|******A/a:车辆到达*******D/d:车辆离开******E/e:推出系统*****|\n\n");Initstack(&tcc);Initstack(&dcc);InitQueue(&p);printf("请先输入停车场的车位总数,收费标准(元/小时):");scanf("%d%f",&n,&pay);getchar();printf("\n请输入A/D/E,车牌号,时刻:");scanf("%c%d%d",&sign,&a.car_num,&a.time);getchar();while(sum){switch(sign){case 'a':case 'A':arrive(&tcc,&p,a,n);break;case 'D':case 'd':leave(&tcc,&dcc,&p,a,pay);break;case 'e':case 'E':exit(OVERFLOW);break;}printf("\n请输入A/D/E,车牌号,时刻:");scanf("%c%d%d",&sign,&a.car_num,&a.time);getchar();sum--;}getch();}。

相关文档
最新文档