数据结构c语言版课程设计报告停车场管理系统
数据结构c语言版课程设计停车场管理系统样本
课程设计:停车场
c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统
停车场停满车后车会停在便道上面
下面附上源码,vc:(下编译
#include <stdio.h>
//#include <stdlib.h> //malloc
#include <time.h> //获取系统时间所用函数
#include <conio.h> //getch()
#include <windows.h> //设置光标信息 mallco
#define MaxSize 5 /*定义停车场栈长度*/
#define PRICE 0.05 /*每车每分钟收费值*/
#define BASEPRICE 0.5 //基础停车费
#define Esc 27 //退出系统
#define Exit 3 //结束对话
#define Stop 1 //停车
#define Drive 2 //取车
int jx=0,jy=32; //全局变量日志打印位置
typedef struct
{int hour;
int minute;
}Time,*PTime; /*时间结点*/
typedef struct /*定义栈元素的类型即车辆信息结点*/
{int num ; /*车牌号*/
Time arrtime; /*到达时刻或离区时刻*/
}CarNode;
typedef struct /*定义栈,模拟停车场*/
{CarNode stack[MaxSize];
int top;
停车场管理c语言pta
停车场管理c语言pta
停车场管理系统是一个常见的项目,可以使用C语言来实现。
这个系统可以包括车辆进入和离开的记录、收费计算、停车位管理
等功能。在PTA(Programming Teaching Assistant)上实现停车
场管理系统可以通过以下步骤进行:
1. 数据结构设计,首先,需要设计合适的数据结构来存储车辆
信息、停车位状态等。可以使用结构体来表示车辆信息,使用数组
或链表来管理停车位的状态。
2. 车辆进入和离开记录,编写函数来处理车辆进入和离开的记录,包括记录车辆的进入时间、离开时间,以及相应的费用计算。
3. 收费计算,根据停车时间和车辆类型(例如小型车、大型车)来计算停车费用。可以设置不同的收费标准,并编写函数来进行费
用计算。
4. 停车位管理,设计算法来管理停车位的分配和释放,确保停
车场的停车位能够合理利用。
5. 用户界面,可以使用C语言的控制台来实现简单的用户界面,让用户可以输入车辆信息、查询停车费用等操作。
在PTA上实现停车场管理系统需要考虑到输入输出的格式,以
及对各种异常情况的处理。同时,还需要编写测试用例来验证程序
的正确性和稳定性。
总之,通过合理的数据结构设计、功能模块划分和用户界面实现,可以在PTA上使用C语言实现停车场管理系统。这样的项目可
以帮助学生加深对C语言的理解,并锻炼编程能力。
C语言课设之停车场管理系统
C语言课程设计实习报告
目录
一. 题目要求
二. 需求分析
三.总体设计
四. 具体程序
五. 上机操作及使用说明
六. 存在问题与不足
七. 学习心得
停车场管理
一. 题目要求
1.设计一个停车场用长度为N的堆栈来模拟。由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。
2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
二. 需求分析
根据题目要求首先设计一个堆栈,以堆栈来模拟停车场,又每辆汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素设计成汽车的车牌号。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车
的车牌号。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。由于时间不像汽车一样需要让道,可设计了一个顺序表来存放时间。又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。
停车场管理系统C课程设计报告
重庆科技学院
《面向对象程序设计》课程设计报告
学院:电气与信息工程学院专业班级:计科2012-05
学生姓名:蒋鑫学号: 2012442101
设计地点(单位)_____I313________
设计题目:_ 停车场管理系统 ___
完成日期: 2014 年 1月 8 日
指导教师评语: ______________________ _______________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________
成绩(五级记分制):______ __________
指导教师(签字):________ ________
重庆科技学院
课程设计任务书
设计题目:停车场管理系统设计
学生姓名蒋鑫
课程名称面向对象课程设计专业班级计科12-5班
地点I313 起止时间12月30日~1月10日
设计内容及要求1)问题描述
定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、到达的时间和离开的时间等信息和相关的对属性做操作的行为。
定义一个管理类,完成对停车场的管理。停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
C语言程序设计实习报告-停车场管理系统
C语言课程设计实习报告
姓名:成帅安学号:20141002605
院(系):工程学院专业:土木工程
2016年6 月
2016.6 中国地质大学C语言课程设计 1 第一章停车场管理系统
§1.1题目描述
1、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。
2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。即先将这四辆车的信息存入文件“car.dat"中(数组的对应元素也要进行赋值)。
3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"car.dat"中,并将在此之前的所有车的停车时间加5。
4、收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元。(停车费用可设置一个变量进行保存),同时从文件"car.dat"中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零)。按用户的选择来判断是否要输出停车收费的总计。
5、输出停车场中全部车辆的信息。
6、退出系统。
§1.2算法设计
1、需求分析:车辆信息用文件储存,提供文件的输入输出操作;
当车离开时要删除文件中该车的信息,因而要提供文件的删除操作;
用键盘式菜单实现功能选择。
数据结构(C语言版)停车场管理(完美版)
数据结构(C语言版)停车场管理(完美版)
#include
#include
#include
#define OK 1
#define OVERFLOW -2
#define SIZE 2 //停车场位置数
typedef int Status;
typedef struct Car1{
int number; //车号
int ar_time; //到达时间
}CarNode;
typedef struct{
CarNode *base; //堆栈底
CarNode *top; //堆栈顶
int stacksize;
}Park;
typedef struct Car2{
int number; //车号
int ar_time; //到达时间
struct Car2 *next;
}*CarPtr;
typedef struct{ //便道
CarPtr front; //便道的队列的对头
CarPtr rear; //便道的队列的队尾
int length;
}Shortcut;
Status InitStack(Park &P){ //初始化停车场
P.base=(CarNode*)malloc(SIZE*sizeof(Car1));
if(!P.base)
exit(OVERFLOW);
P.top=P.base;
P.stacksize=0;
return OK;
}
Status Push(Park &P,CarNode e){ //车进入停车场*P.top++=e;
++P.stacksize;
return OK;
}
Status Pop(Park &P,CarNode &e){ //车离开停车场if(P.top==P.base)
C语言课程设计停车场管理系统方案
c语言课程设计
主题停车管理系统
主题停车管理系统
教官颜东
学生
专业电子信息工程
教学单位物理系(盖章)
目录
1设计能力和设计要求
1.1系统功能简介
1.2系统运行环境
2功能划分,模块详细说明
3程序流程图
4操作和操作说明
4.1系统的运行
4.2操作说明
摘要5......5......6......7......8......9 (9)
附件:源程序列表
1设计能力和设计要求
1.1系统功能介绍
⏹该系统具有简洁的菜单界面,用户通过输入简单的选项即可完成
相应的工作。
⏹用户可以选择1、2、3、4进行相应的操作,统一查看,统一输
出。
⏹这个停车场管理系统
(1)停车场为两层,每层6个车位。只有一楼住满了,二楼才能用。(停车场可以用二维数组实现,每个数组元素存储一个车牌号。)每辆车的来信
(2)假设停车场的初始状态是一层停了4辆车,车位为1-4个,停车时间为20、15、10、5。即这四辆车的信息会先存储在文件“car.dat”中(数组的对应元
素也会被赋值)。
(3)停车操作:当一辆车进入停车场时,先输入其车牌号,然后分配给它一个楼
层号和一个车位号(分配前检查车位的使用情况,如果一楼空着就停在一楼),
停车时间设置为5。最后,将新停放的汽车的信息添加到文件“car.dat”中,在此之前所有汽车的停放时间加5。
(4)收费管理(取车):汽车离开时,输入其车牌号,先按其停车时间计算费用,
每5分钟0.2元。(设置一个变量可以节省停车费),同时从文件“car.dat”
中删除该车的信息,将该车对应的车位设置为可用状态(即二维数组的对应元
C语言课程设计停车场管理
04 停车场管理系统设计
停车场管理系统需求分析
车辆信息 管理:记 录车辆信 息,如车 牌号、车 型、颜色 等
车位管理: 记录车位 信息,如 车位编号、 位置、状 态等
停车收费 管理:计 算停车费 用,支持 多种支付 方式
校等。
停车场管理系统的功能
车辆识别:自动识别车牌号码,记录车辆信息 车位管理:实时更新车位使用情况,显示剩余车位数量 收费管理:自动计算停车费用,支持多种支付方式 车辆引导:提供车辆引导服务,帮助车主快速找到空闲车位 安全监控:实时监控停车场内车辆和人员活动,保障停车场安全 数据分析:统计停车场使用情况,为停车场管理提供决策支持
停车场管理系统的应用场景
商业停车场:商场、写字楼、酒店等 住宅小区停车场:住宅小区、公寓等 公共停车场:机场、火车站、地铁站等 特殊停车场:医院、学校、政府机关等
03
C语言在停车场管理系 统中的应用
C语言的特点
简洁明了:语法简洁,易于理解和编写
灵活高效:可以高效地实现各种算法和功能
跨平台:可以在多种操作系统和硬件平台上运行
错误处理:使用if、else、switch等语句进行错误处理,如处理输入错误、 文件操作错误等
C语言在停车场管理系统中的优势
数据结构课程设计_停车场管理系统
数据结构课程设计
题目:停车场管理系统
姓名:邓全飞
学号:201120320105
专业:信息和计算科学
指导老师:姜俊坡
目录
一课题分析 (3)
二逻辑分析 (3)
2.1 数据结构的描述和每个基本操作的功能说明 (3)
2.1 给出本程序包含的模块及模块之间的调用关系图 (4)
2.3 写出重要部分的伪码算法 (4)
三详细设计 (5)
3.1 数据结构的定义,及其基本操作的实现 (5)
3.2主函数和其他函数的实现或伪码算法 (5)
3.3 程序的层次结构的函数调用关系图 (8)
3.4 详细设计 (8)
四程序源代码 (9)
五程序调试和测试 (16)
5.1 主界面 (16)
5.2 具体操作 (16)
5.2.1进站时间和车牌号 (16)
5.2.2 车站已满,请进入临时车道 (17)
5.2.3 出站和收费 (18)
5.2.4 结束 (18)
5.3 相关操作 (18)
六程序中遇到的问题和解决方法 (19)
6.1 写提纲 (19)
6.2 在程序调试过程,遇到的相关问题.............. 错误!未定义书签。七总结.. (20)
八参考文献 (21)
一课题分析
a)该程序主要利用栈和队列来实现车的到达及其离开功能,其中主要有对
各种情况的处理,要求如下:
1、要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的
数据序列进行模拟管理
2、要求处理的数据元素包括三个数据项:汽车“到达”或“离去”信息,汽
车牌照号码及到达或离去的时间
3、该系统完成以下功能:若是车辆到达,则输出汽车在停车场内或便
道上的停车位置;若是离去,则输出汽车在停车场内停留的时间和应缴
停车场管理系统(数据结构课程设计)
停车场管理系统
一编程思想:
将停车场设计成一个虚拟的栈,将其入口设计成栈顶,在设计一个倒车场,也将其设计成一个虚拟的栈,使其入口为栈顶,再根据队
列设计一个供车来停放的便道,当停车场里的车辆不为满时,车辆进
入停车场,当停车场里的车辆为满时,车辆在便道里等候,当车辆从
停车场里出来的时候,如果出来的不是第一个车辆,则其前面的车辆
将进入倒车场里面,待车辆出去后,倒车场里的车再依次进入停车场,如果停车场不满的话,便道里等候的第一辆车进入停车场,进入停车
场的时间为停车场中车辆出来的时间,再设计一个函数用来显示停车
场以及便道中车辆的信息。
二程序流程图:
三,程序代码:
#include<stdio.h>
#define Size 3 /*车库容量*/
#define Price 5 /*单位价格*/
#define Null 0
typedef struct time
{
int hour; /*时间结点*/
}Time;
typedef struct
{
int car_number;
Time arrivetime,leavetime; /*车信息结点*/ int fee;
}car_info;
typedef struct
{
car_info *north;
car_info *south; /*停车场信息*/
int number;
}car_park;
typedef struct
{
car_info *west;
car_info *east; /*倒车场信息*/
int number;
}car_park_back;
Typedef struct car
(完整word版)C语言停车场管理系统课程设计
课程设计
课程设计名称:课程设计
专业班级:
学生姓名:
学号:
指导教师:
课程设计时间:
目录
1 需求分析。.。...。。....。。。.。...。。。。.。。.....。....。..。.。。.。。。。。。.。。。.。。.。。。.....。。。。。。。.。.。。.。....。..。...。3
2 概要设计。.。。。.。。.。..。..。.。..。.。。.。。。。.。.。.。。。。.。。。。。.。..。。..。。.。。..。..。..。.。....。..。。....。.。。.。。。.3
3详细设计..。。..。.。。.。。。。.。。.。.。..。。..。。.。。..。。。。。.。.....。.。.。..。..。.。..。..。.......。。..。.。。...。。..。。..。
4
4 运行环境..。。。..。.。。..。.。.。..。。。。.。....。。.。.。..。。。。。。.。..。。。。。.。..。..。..。...。。。..。。。.。。。。.。。。..。。。。..6
5开发环境。.。。。..。。。。..。。。。。..。。。..。...。..。。.。...。。。。。.。。.。。。。。。..。。.。。。......。。.。。。.。.。。。。.。。。。。.。.。。。
6
6 程序设计.。。。。。。.。..。.。。.....。...。....。.。...。.。。。.。。.。。。..。..。..。。..。。。.。。。......。..。。。。。.。。.。。。。.。。。。6
7 调试分析。。.。...。。。..。。。.。。。。......。.。。.。。。。....。.。.。。。。。。。。...。。。..........。.。..。..。。..。。.。..。。。。.。11
c语言停车场管理系统
// 仅供参考#include#include#include#define N 50 //停车场最多停车数typedef struct{char cnum[8];float date;}pnode; //栈中结点数据类型typedef struct{pnode car[N];int top;}packing; //栈的结构定义typedef struct teamNode{char cnum[8]; //汽车的车牌号码int number; //汽车在便道的序号即地址struct teamNode *next; //指向下一辆车的地址的指针}teamNode,*teamPtr; //定义队列中结点的数据类型typedef struct{teamPtr front; //队列的头指针teamPtr rear; //队列的尾指针}cteam; //队列的结构定义cteam* initTeam(){cteam *Q;Q=(cteam *)malloc(sizeof(teamNode));Q->front=(teamPtr)malloc(sizeof(teamNode));Q->front->next=NULL;Q->front->number=50;Q->rear=Q->front;return Q;} //初始化队列int inTeam(cteam *Q,char cnum[]){ //接收队列的地址,来车的车牌号码teamNode *p=(teamNode *)malloc(sizeof(teamNode));strcpy(p->cnum,cnum);p->next=NULL;p->number=Q->rear->number+1;Q->rear->next=p;Q->rear=p;return Q->rear->number;} //汽车入队,返回汽车在便道的位置。void firstTeam(cteam *Q,teamNode *q){teamNode *p=Q->front->next;strcpy(q->cnum,p->cnum);Q->front->next=p->next;free(p);}void outTeam(cteam *Q,int i){teamPtr o,p;p=Q->front;o=Q->front->next;while(o->next!=NULL){p=o;if(o->number==i)break;o=o->next;}if(o->next!=NULL) p->next=o->next;}packing* initPacking(){packing *P;P=(packing *)malloc(sizeof(packing));P->top=-1;return P;}int inPacking(packing *P,char cnum[],float time){ //接收栈的地址,来车的车牌号码和时间if(P->top<=(N-1)){P->top++;strcpy(P->car[P->top].cnum,cnum); //将车牌号码和停车时间等信息存入栈结点中P->car[P->top].date=time;}return P->top; //返回栈顶元素地址,即该车在停车场的停车位} //汽车进入停车场,入栈操作void outPacking(packing *P,cteam *Q,int x){ //栈的地址以及要出栈元素在栈中的位置xint j; //j接收停车位,辅助作用,没有实际意义float date,time,i;date=P->car[x].date; //date存放要离开的车的停车时间printf("请输入当前时间:");scanf("%f",&time); //time存放要离开的车的离开时间,当前时间while(date>time){printf("当前时间输入错误,请重新输入:\n");scanf("%f",&time);} //离开时间比停车时间长,重新输入时间time=(int)time+((time-(int)time)/60);date=(int)date+((date-(int)date)/60); //将时间转化为小时的表达形式i=time-date; //汽车一共停车多长时间printf("\n%s停车时间%3.2fH,应交费用%3.2f元。\n",P->car[x].cnum,i,5*i);packing *S;S=initPacking()
C语言停车场管理器程序_数据结构课程设计
做完了课程设计,用C语言写的。不过挑了个容易点的,停车场管理系统。不过写得好繁琐啊,好耐无用C语言了。请大家指教,也帮帮急需的朋友们。呵呵···
终于可以放假啦,嘿嘿·····
/*******************************停车场管理器*************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <conio.h>
/********************************************************************************/
#define MAXSTACKSIZE 2 /*车库容量*/
#define price 0.1 /*每车每分钟费用*/
typedef struct time{
int hour;
int min;
}Time; /*时间结点*/
typedef struct {
char num[10];
Time reach;
Time leave;
}CarNode; /*车辆信息结点*/
typedef struct {
CarNode *base;
CarNode *top;
int stacksize;
}SqStackCar; /*模拟车站*/
typedef struct car{
CarNode *data;
struct car *next;
数据结构课程设计停车场管理报告
数据结构课程设计
《停车场管理》
班级:
姓名:
学号:
设计日期:2012年7月2日——2012年7月11
日
1)需求分析
本次的数据结构课程设计所选的题目是停车场管理系统。根据题目要求,已知停车场是一个可停放n辆汽车的狭长通道,只有一个大门可供汽车出入,由此可将停车场的类型定义为栈,其容量为n。当停车场已经停满n辆车后,后来的车辆只能在便道上等待。当停车场内有车开走,便道上的第一辆汽车便可以进入停车场中。根据其先入先出的特点,可以将便道的类型定义为队列,容量不限。由题目可知,需停车辆的信息包括:车牌号码、汽车“到达”“离去”的信息、“到达”“离去”的时刻等。按照从终端读入的数据序列进行模拟管理。每辆车需要三个数据,其中车辆数据为:A表示到达,D表示离去,E表示程序结束。车辆牌照号码为整型数据,车辆到达或离开的时刻同样为整型数据。输入车辆到达应该输出的信息为:汽车在停车场内或便道上的停车位置;输入车辆离开应该输出的信息为汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
停车场管理系统主要实现以下几个功能:
(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。
(2)该程序设计能够通过车牌号能查到该车辆在停车场或便道中的位置。
(3)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的调度功能。
该程序设计可以完整的模拟停车场的管理过程。
2)概要设计
停车场管理系统是充分利用数据结构中栈和队列的思想实现的,栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。栈的主要特点是”后进先出”,即后进栈的元素先处理。停车场的容量即为栈的存储空间,停车场的车辆的停靠是无秩序的,因此采用链式存储的方式更适合,也方便车辆的调度。
数据结构课程设计停车场管理系统.doc
数据结构课程设计停车场管理系统
. .《数据结构》课程设计报告设计报告题目:停车场管理问题学院:信息科学与工程学院《数据结构》课程设计报告书1.1 课程设计选题的目的为大家解决一些生活中的实际问题,在这个过程中,自我设计的能力也在不断地提高。
此次程序设计综合运用所学数据额结构以及C语言的知识解决实际问题,将课堂的书本知识有效的在程序中体现出来,使我们更理解了C语言及数据结构的功能之强大,进一步让学生对面向对象的方法以及数据结构的编程思想有了较好了解和认识。1.通过课程设计,加深对《数据结构》这一课程所学内容的进一步理解与巩固。
2.通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计出合理的模块化结构。
3. 通过课程设计,提高程序开发功能,培养分析问题、解决实际问题的能力,能运用合理的控制流程编写清晰高效的程序。
1.2 课程设计选题的内容[问题描述] 设有一个可以停放n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,
都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。[实现要求] 要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。一.需求分析以栈模拟停车场,以队列模拟停车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包含三个数据项:
数据结构课程设计报告_15_停车场管理
停车场管理系统
数据结构课程设计程序设计书
小组成员:
彭路20131344031
崔琦20131344028
徐佳20131344027
范福龙20121344024
班级:13软件工程1班
时间:2014.12.22
目录
一、程序设计目标
二、问题描述
三、需求分析
四、概要设计
五、详细设计
六、源程序清单
七、软件说明书
八、测试报告
九、课程设计总结
一、程序设计目标
本管理程序由C/C++语言完成,实现了对停车场收费问题的处理。本程序保证了程序的健壮性和操作性,在阅读过使用说明书之后可以轻松使用。本管理系统假设车辆在停车场时一直有人在驾驶,或者说停车场的每块停车位均可智能移动。并假设车辆进出场耗时不计,且时间均为整数类型。最后自动或者人工完成收费。
二、问题描述
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车, 则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。
三、需求分析
根据问题描述,可把本停车场抽象成一个栈存储类型si,需要输入最大停
车容量no每当输入’A'时即为有车辆申请进入停车场操作,此时需要判断停车场
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计:停车场
c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统
停车场停满车后车会停在便道上面
下面附上源码,vc:(下编译
#include
//#include
#include
#include
#define MaxSize 5 /*定义停车场栈长度*/
#define PRICE 0.05 /*每车每分钟收费值*/
#define BASEPRICE 0.5 //基础停车费
#define Esc 27 //退出系统
#define Exit 3 //结束对话
#define Stop 1 //停车
#define Drive 2 //取车
int jx=0,jy=32; //全局变量日志打印位置
typedef struct
{int hour;
int minute;
}Time,*PTime; /*时间结点*/
typedef struct /*定义栈元素的类型即车辆信息结点*/ {int num ; /*车牌号*/
Time arrtime; /*到达时刻或离区时刻*/
}CarNode;
typedef struct /*定义栈,模拟停车场*/
{CarNode stack[MaxSize];
int top;
}SqStackCar;
typedef struct node /*定义队列结点的类型*/
{int num; /*车牌号*/
struct node *next;
}QueueNode;
typedef struct /*定义队列,模拟便道*/ {QueueNode *front,*rear;
}LinkQueueCar;
/*函数声明*/
PTime get_time();
CarNode getcarInfo();
void qingping(int a);
void gotoxy(int x,int y);
void printlog(Time t,int n,int io,char ab,int po,double f);
void printstop(int a,int num,int x0,int y0);
void printleave(int a,int po,int num);
/*初始化栈*/
void InitSeqStack(SqStackCar *s)
{
s->top=-1;
}
/* push入站函数*/
int push(SqStackCar *s,CarNode x) //数据元素x入指针s所指的栈{
if(s->top==MaxSize-1)
return(0); //如果栈满,返回0 else
{
s->stack[++s->top]=x; //栈不满,到达车辆入栈
return(1);
}
}
/*栈顶元素出栈*/
CarNode pop(SqStackCar *s)
{
CarNode x;
if(s->top<0)
{
x.num=0;
x.arrtime.hour=0;
x.arrtime.minute=0;
return(x); //如果栈空,返回空值
}
else
{
s->top--;
return(s->stack[s->top+1]); //栈不空,返回栈顶元素}
}
/*初始化队列*/
void InitLinkQueue(LinkQueueCar *q)
{
q->front=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点,作头结点if(q->front!=NULL)
{
q->rear=q->front;
q->front->next=NULL;
q->front->num=0; //头结点的num保存队列中数据元素的个数
}
}
/*数据入队列*/
void EnLinkQueue(LinkQueueCar *q,int x)
{
QueueNode *p;
p=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点
p->num=x;
p->next=NULL;
q->rear->next=p; //新结点入队列
q->rear=p;
q->front->num++; //队列元素个数加1
}
/*数据出队列*/
int DeLinkQueue(LinkQueueCar *q)
{
QueueNode *p;
int n;
if(q->front==q->rear) //队空返回0
return(0);
else
{
p=q->front->next;
q->front->next=p->next;
if(p->next==NULL)
q->rear=q->front;
n=p->num;
free(p);
q->front->num--;
return(n); //返回出队的数据信息}
}
/********************* 车辆到达***************************/
//参数:停车栈停车队列车辆信息
//返回值:空
//功能:对传入的车辆进行入栈栈满则入队列
void Arrive(SqStackCar *stop,LinkQueueCar *lq,CarNode x)
{
int f;
f=push(stop,x); //入栈
if (f==0) //栈满
{
EnLinkQueue(lq,x.num); //入队
printstop(1,lq->front->num,0,23);
printlog(x.arrtime,x.num,1,'B',lq->front->num,0);
qingping(0); printf("您的车停在便道%d号车位上\n",lq->front->num);
//更新对话
}
else
{
printstop(0,stop->top+1,0,23);
printlog(x.arrtime,x.num,1,'P',stop->top+1,0);
qingping(0); printf("您的车停在停车场%d号车位上\n",stop->top+1);