当前位置:首页 » 编程语言 » 停车场管理系统c语言

停车场管理系统c语言

发布时间: 2025-01-16 09:02:35

A. 停车场管理模拟系统怎么用c语言写的

停车场管理模拟系统可以通过C语言编写,主要涉及到数据结构、文件操作、控制台输入输出等技术的综合应用。

详细

第一段:基础框架与数据结构选择

在C语言中实现停车场管理模拟系统,首先需要构建基础的数据结构来表示停车场和车辆。通常,停车场可以抽象为一个具有固定容量的栈或者队列,根据实际需求来选择。车辆则可以用结构体来表示,包含车牌号、停车时间等属性。例如,可以定义一个结构体`Car`来存储车辆信息,以及一个数组`parkingLot`来模拟停车场。

第二段:功能实现与算法设计

系统需要实现的基本功能包括车辆的进入、离开和查询等。进入功能需要判断停车场是否已满,如果未满则添加车辆信息到停车场中,并更新相关数据;离开功能需要根据车牌号找到对应车辆,计算停车费用,然后移除车辆信息;查询功能则提供当前停车场的状态,如剩余车位、已停车辆列表等。这些功能都需要通过编写相应的C语言函数来实现,并涉及到数据结构的遍历、查找、插入和删除等操作。

第三段:用户交互与界面设计

为了让系统更加友好和易用,还需要设计一个用户交互界面。在C语言中,这通常通过控制台输入输出来实现。可以设计一个循环菜单,让用户通过输入不同的选项来选择想要执行的操作,然后调用相应的函数来处理。例如,可以显示一个包含“1. 车辆进入”、“2. 车辆离开”、“3. 查询状态”等选项的菜单,并根据用户的输入来执行相应的功能。

第四段:扩展性与健壮性考虑

在实际应用中,还可以考虑添加更多的功能来增强系统的扩展性和健壮性。例如,可以引入文件操作来保存和加载停车场的数据,以便在程序重启后能够恢复之前的状态;还可以添加错误处理机制来应对用户输入错误或异常情况,提高系统的稳定性和可用性。这些功能都需要在C语言的编程框架内进行设计和实现。

综上所述,通过合理地选择数据结构、设计算法、构建用户交互界面以及考虑扩展性和健壮性等因素,可以使用C语言编写出一个功能完善且易于使用的停车场管理模拟系统。

B. C语言 停车场记录停车时间与收费

printf("time is %f s\n",difftime(t_end,t_end));difftime中两个都是t_end,注定为0。

C. c语言程序设计实验报告80~100行,关于一种小游戏的,语句简单些,

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAX_PARKING_SIZE 10//停车场最大停车数量
#define PRIZE 10.00//停留每小时单价
#define true 1
#define false 0

typedef struct stack
{
long pos[MAX_PARKING_SIZE];//存储车牌号码
int time[MAX_PARKING_SIZE];//存储进入车站的时间
int point;//最后一辆车的位置指针
}Stack;//定义栈-模拟停车场

typedef struct queue
{
int num;//存储车牌号
struct queue *next;//指向下一辆车
}Queue;//定义队列-模拟停车场外

void InitStack(Stack *s)
{
s->point=-1;
}//初始化栈

Queue *InitQueue()//初始化队列
{
Queue *q;
q=(Queue *)malloc(sizeof(Queue));
q->next=NULL;
return q;
}

int StackPop(Stack *s,long *i,int *j)//退栈函数
{
if(s->point==-1)return false;
else
{
*i=s->pos[s->point];
*j=s->time[s->point];
s->point--;
return true;
}
}

int StackPush(Stack *s,long i,int j)//压栈函数
{
if(s->point==MAX_PARKING_SIZE-1)return false;
else
{
s->point++;
s->pos[s->point]=i;
s->time[s->point]=j;
return true;
}
}

int QueuePop(Queue **qH,long *i)//退队函数
{
Queue *temp;
if((*qH)->next==NULL)return false;
else
{
temp=(*qH)->next;
(*qH)->next=temp->next;
*i=temp->num;
free(temp);
return true;
}
}

int QueuePush(Queue **q,long i)//入队函数
{
Queue *temp;
if((temp=(Queue *)malloc(sizeof(Queue)))==NULL)return false;
else
{
(*q)->next=temp;
temp->num=i;
temp->next=NULL;
*q=temp;
return true;
}
}

int main()
{
int time,i,j,inStack,inQueue;
long num;
char state;
Stack park;
Queue *H,*p,*temp,*temp2;
H=InitQueue();
p=H;
system("color 9E");
InitStack(&park);//初始化队列和栈
printf("**********这里是停车场管理程序,欢迎使用**************\n");
printf("\n停车场最大能停车%d辆,停车时间不得超过24小时,现在停车的单价为每小时%.2f元\n",MAX_PARKING_SIZE,PRIZE);
while(1)
{
inStack=inQueue=0;temp=H;
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ 停车场管理系统 ┃\n");
printf("┃ (A或a)汽车到达和已到汽车查询 ┃\n");
printf("┃ (D或d)汽车离开 ┃\n");
printf("┃ (E或e)程序退出 ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("\n您的选择是:");

state=getche();
if(state=='a'||state=='A'||state=='d'||state=='D')
{
printf("\n输入车牌号(数字):");
scanf("%ld",&num);
printf("\n输入到达或查询或离开的的时间(24小时制,单位:小时):");
scanf("%d",&time);
}
if(state=='a'||state=='A')
{
for(i=0;i<=park.point;i++)
if(park.pos[i]==num)
{
inStack=1;
break;
}//在车站中查找
for(j=1;temp->next!=NULL;j++)
{
temp2=temp;
temp=temp2->next;
if(temp->num==num)
{
inQueue=1;
break;
}
}//在车站外查找
if(inStack)
printf("\n查询结果:输入的汽车已经在车站中第%d个位置停留了%d个小时!\n",i+1,time>park.time[i]?time-park.time[i]:time+24-park.time[i]);
else if(inQueue)
printf("\n查询结果:输入的汽车已经在车站外第%d个位置等候\n",j);
else
{
if(StackPush(&park,num,time)==false)
{
QueuePush(&p,num);
printf("\n车站已满,车辆停在场外。\n");
}
else printf("\n车辆成功进站!\n");
}//如果车辆到达,当车站已满,停在车站外,否则,进入车站
}
else if(state=='d'||state=='D')//如果是离开
{
for(i=0;i<=park.point;i++)
if(park.pos[i]==num)
{
inStack=1;
break;
}//在车站中查找
if(inStack)//如果在车站中
{
printf("正要离开的汽车在车站中第%d个位置停留了%d个小时,应付%.2f元\n",i+1,time>park.time[i]?time-park.time[i]:time+24-park.time[i],time>park.time[i]?(time-park.time[i])*PRIZE:(time+24-park.time[i])*PRIZE);
while(i<park.point)
{
park.pos[i]=park.pos[i+1];
park.time[i]=park.time[i+1];
i++;
}
park.point--;//把离开的车辆从车站中删除
if(H->next!=NULL)
{
QueuePop(&H,&num);
if(H->next==NULL)p=H;
StackPush(&park,num,time);
printf("\n停车场空出一位置。场外等候的%d号汽车入站了!\n",num);
}//如果车站外有车,入站
}
else//不在车站中
{
for(i=1;temp->next!=NULL;i++)
{
temp2=temp;temp=temp2->next;
if(temp->num==num)
{
inQueue=1;
break;
}
}//查找是否在车站外
if(inQueue)
{
printf("\n汽车在停车场外,不收费\n",i);
temp2->next=temp->next;
if(temp==p)p=temp2;
free(temp);
}//在车站外
else printf("\n对不起,您输入了不存在的车牌号!\n");
}
}
else if(state=='e'||state=='E')
{
printf("\n");
break;
}
else printf("\n输入错误!\n");
}
return 0;
}

D. C语言停车场管理系统

/*----------------------------------------------------------------
// Copyright (C) 2009 沈阳工程学院信息安全工作室
// 版权所有。
//
// 文件名:模拟停车场问题.cpp
// 文件功能描述:模拟停车场问题
//
//
// 创建标识:20091214
//
// 修改标识:20091218
// 修改描述:完成编码
//----------------------------------------------------------------*/

//头文件
#include <iostream>
#include <malloc.h>
#include <string>
#include <windows.h>

//常量定义
#define MAX_STOP 4 //定义停车场最大停车数
#define MAX_PLATE 10 //定义车牌号最大长度
#define TIME_COUNT "秒" //定义时间单位
#define TIME_MS_TO_CONUT 1000 //定义时间进制,意为由TIME_COUNT到毫秒的进制
#define UNIT_PRICE 10 //定义单位时间收费标准

using namespace std; //使用std命名空间

//数据结构定义
//定义存储汽车信息的结构体
typedef struct
{
char license_plate[MAX_PLATE]; //汽车牌照号码,定义为一个字符指针类型
char state; //汽车当前状态,字符p表示停放在停车位上,字符s表示停放在便道上,每辆车的初始状态用字符i来进行表示
int time; //汽车停入停车场时的时间,用来计时收费
}CAR;

//定义模拟停车场的栈结构
typedef struct
{
CAR STOP[MAX_STOP]; //汽车信息的存储空间
int top; //用来指示栈顶位置的静态指针
}SeqStack;

//定义模拟便道的队列结构
typedef struct node
{
CAR WAIT; //汽车信息的存储空间
struct node *next; //用来指示队列位置的动态指针
}QNode; //链队列节点的类型
//定义链队列的收尾指针
typedef struct
{
QNode *front,*rear;
}LQueue; //将头尾指针封装在一起的链队

//函数声明
int Empty_LQueue(LQueue *q); //判队空
int LeaveCheck(SeqStack parking , char *license_plate); //检查离开的车是否在停车场中
int QueueLength(LQueue *q); //判队长度
int Out_LQueue(LQueue *&sidewalk , char *license_plate); //出队操作
int StackEmpty(SeqStack parking); //判断栈是否为空
int StackFull(SeqStack parking); //判断栈是否为满
int StackPop(SeqStack &parking); //出栈操作
int StackTop(SeqStack parking , char *license_plate , int &time);//取栈顶元素
void Car_come(SeqStack &parking , LQueue *&sidewalk); //有车到来时的操作
void Car_leave(SeqStack &parking , LQueue *&sidewalk); //有车离开的操作
void Display(SeqStack parking); //显示停车场内的所有信息 调试时用
void InitStack(SeqStack &parking); //初始化栈
void InitList(LQueue *&sidewalk); //初始化队列
void In_LQueue(LQueue *&sidewalk , char *license_plate); //进队操作
void Input_Check(char *license_plate); ////检验输入的车牌是否合法
void StackPush(SeqStack &parking , char *license_plate , int stop_time);//进栈操作

void main()
{
//定义变量
SeqStack parking;
LQueue *sidewalk = NULL;
char *choice = new char;
int flag = 1; //定义一个变量 判断是否退出

//初始化一个为空的停车场
InitStack(parking);
//初始化一个为空的便道
InitList(sidewalk);

//运行界面及功能选择
while(flag)
{
cout<<"\n\t 停车场模拟管理系统 \n\n";
cout<<"\t|--------------------------------------------------|\n\n";
cout<<"\t|本程序为停车场的模拟管理系统,有车到来时请按C键。|\n\n";
cout<<"\t|然后根据屏幕提示进行相关操作,有车要走时请按l键。|\n\n";
cout<<"\t|然后根据屏幕提示进行相关操作,查看停车场请按D键。|\n\n";
cout<<"\t|然后根据屏幕提示进行相关操作,要退出系统请按Q键。|\n\n";
cout<<"\t|--------------------------------------------------|\n\n";
cout<<"请选择操作:";
gets(choice);
if(1 != strlen(choice))
{
cout<<"请正确输入选项!";
continue;
}
else
{
switch(*choice)
{
case 'c':
case 'C':
{
Car_come(parking,sidewalk);break;
}
case 'l':
case 'L':
{
Car_leave(parking,sidewalk);break;
}
case 'q':
case 'Q':
{
flag=0;break;
}
case 'd':
case 'D':
{
Display(parking);break;
}
default:
cout<<"选择不正确!请重新选择!\n";
}
}
}
}
//有车到来时的操作
void Car_come(SeqStack &parking , LQueue *&sidewalk)
{
//定义变量
char license_plate[MAX_PLATE];

cout<<"请输入车辆的车牌号码:";
Input_Check(license_plate);
//判断停车场是否已满,满则进入便道,不满进入停车场
if(StackFull(parking))
{
In_LQueue(sidewalk , license_plate); //进入便道
cout<<"停车场已满请在便道等候,您的位置为"<<QueueLength(sidewalk)
<<endl;
}
else
{
StackPush(parking , license_plate , GetTickCount()); //进入停车场
cout<<"请进入停车场中的"<<parking.top+1<<"号停车位\n";
}
// Display(parking);
}

//有车离开时的操作
void Car_leave(SeqStack &parking , LQueue *&sidewalk)
{
//定义变量
SeqStack tmpparking; //定义临时停车场
char leave_license_plate[MAX_PLATE]; //要离开的车牌号
char license_plate[MAX_PLATE]; //存放从停车场中读出来的车牌信息
int time;

InitStack(tmpparking); //初始化临时停车场
//判断停车场中是否有车
if(StackEmpty(parking))
{
cout<<"当前停车场中没有车\n";
return; //退出子函数
}

cout<<"请输入要离开的车牌照:";
Input_Check(leave_license_plate);
cout<<"当前停车场中有"<<parking.top+1<<"辆车\n";

if(LeaveCheck(parking , leave_license_plate)) //判断车是否在停车场中
{
//车在停车场中
cout<<"您的车在"<<LeaveCheck(parking , leave_license_plate)<<"号车位上\n";
while(StackTop(parking , license_plate , time)
&& (strcmp(parking.STOP[parking.top].license_plate , leave_license_plate) != 0))
{
strcpy(parking.STOP[parking.top].license_plate , license_plate);
cout<<"牌照为"<<license_plate<<"的车暂时退出停车场"<<parking.top+1<<"号位\n";
StackPush(tmpparking , license_plate , time); //停车场中的车暂时退出 进入临时停车场
StackPop(parking); //出栈
}

cout<<"牌照为"<<license_plate<<"的车离开停车场"<<parking.top+1<<"号位\n";
cout<<"您在停车场中停了"<<(GetTickCount()-time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl; //输出所停时间信息
cout<<"应缴费用为"<<(GetTickCount()-time)/TIME_MS_TO_CONUT*UNIT_PRICE<<"元\n";; //输出费用信息
StackPop(parking); //出栈
//将临时停车场中的车停回停车场
while(StackEmpty(tmpparking) != 1)
{
StackTop(tmpparking , license_plate , time);
StackPush(parking , license_plate , time);
cout<<"牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号位\n";
license_plate[0] = '\0';
StackPop(tmpparking);
}

if(parking.top+1 == MAX_STOP-1) //判断车离开前停车场是否停满
if(QueueLength(sidewalk)) //如果停满则判断便道上是否有车
{
//便道中有车 则从便道中停入停车场
Out_LQueue(sidewalk , license_plate); //出队
StackPush(parking , license_plate , GetTickCount()); //入栈
cout<<"在便道中牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号位\n";
}
}
else
//车不在停车场中
cout<<"您的车不在停车场中!\n";
}

//初始化顺序栈
void InitStack(SeqStack &parking)
{
parking.top = -1;
}

//判栈空
int StackEmpty(SeqStack parking)
{
if(parking.top == -1)
return 1;
else
return 0;
}

//判栈满
int StackFull(SeqStack parking)
{
if(parking.top == MAX_STOP-1)
return 1;
else
return 0;
}

//入栈
void StackPush(SeqStack &parking , char *license_plate , int stop_time)
{
parking.top++;
strcpy(parking.STOP[parking.top].license_plate , license_plate);
parking.STOP[parking.top].state = 'p';
parking.STOP[parking.top].time = stop_time;
}

//出栈 返回栈顶指针
int StackPop(SeqStack &parking)
{
if(StackEmpty(parking))
return 0;
else
return parking.top--;
}

//取栈顶元素
int StackTop(SeqStack parking , char *license_plate , int &time)
{
if(StackEmpty(parking))
return 0;
else
{
strcpy(license_plate , parking.STOP[parking.top].license_plate);
time = parking.STOP[parking.top].time;
return 1;
}
}

//显示所有
void Display(SeqStack parking)
{
if(parking.top == -1)
printf("停车场为空\n");
else
{
while(parking.top != -1)
{
cout<<"车牌号为:"<<parking.STOP[parking.top].license_plate;
cout<<",停在"<<parking.top + 1 <<"号车位上";
cout<<",已停"<<(GetTickCount()-parking.STOP[parking.top].time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl;
parking.top--;
}
}
}

//初始化队列
void InitList(LQueue *&sidewalk)
{
sidewalk = (LQueue *)malloc(sizeof(LQueue));
sidewalk->front=sidewalk->rear = NULL;
}

//入队
void In_LQueue(LQueue *&sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;
car_on_sidewalk = (QNode *)malloc(sizeof(QNode)); //为新节点开辟新空间
strcpy(car_on_sidewalk->WAIT.license_plate , license_plate); //将数据写入节点
car_on_sidewalk->WAIT.state = 's'; //写入停车信息
car_on_sidewalk->WAIT.time = GetTickCount(); //写入停车时间
car_on_sidewalk->next = NULL;
if(Empty_LQueue(sidewalk)) //队空则创建第一个节点
sidewalk->front = sidewalk->rear = car_on_sidewalk;
else
{
//队非空插入队尾
sidewalk->rear->next = car_on_sidewalk;
sidewalk->rear = car_on_sidewalk;
}
}

//判队空
int Empty_LQueue(LQueue *q)
{
if(q->front == NULL)
return 1;
else
return 0;
}

//判队长度 返回队长
int QueueLength(LQueue *q)
{
QNode *p=q->front;
int i=0;
while(p != NULL)
{
i++;
p=p->next;
}
return i;
}

//出队 成功返回1 队空返回0
int Out_LQueue(LQueue *&sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;

if(Empty_LQueue(sidewalk)) //如果队空返回0
return 0;

car_on_sidewalk = sidewalk->front;
strcpy(license_plate , car_on_sidewalk->WAIT.license_plate);//取出队头元素
if(sidewalk->front == sidewalk->rear) //队中只有一个元素
sidewalk->front = sidewalk->rear=NULL; //删除元素
else
sidewalk->front = sidewalk->front->next; //队头指针后移
free(car_on_sidewalk); //释放指针
return 1;
}

//检查离开的车是否在停车场中 返回车在停车场中位置 不在则返回0
int LeaveCheck(SeqStack parking,char *license_plate)
{
int flag = parking.top+1; //定义变量记录当前车在停车场中位置

if(StackEmpty(parking))
return 0;
else
{
//查找离开车所在位置
while(parking.top != -1 && strcmp(parking.STOP[parking.top].license_plate , license_plate) != 0)
{
flag--;
parking.top--;
}
return flag;
}
}

//检验输入的车牌是否合法
void Input_Check(char *license_plate)
{
int flag = 1;
int i;
string tmpstr;
while(flag)
{
cin>>tmpstr;
getchar();
if(tmpstr.length()<MAX_PLATE)
{
for(i=0;i<10;i++)
license_plate[i] = tmpstr.c_str()[i];
flag = 0;
}
else
cout<<"输入有误,请重新输入:";
}
}

以前的课设 你看看吧 纯手工的~~

E. C语言停车场管理程序(顺序号 int,车牌号 char(8),停车位号int,进入停车场时间cha

for(int i=0;i<=Enter->top;i++)
{if( Enter->stack[i]->num==p->num)
{ cout<<"你的车号与停车场内车号重复"<<endl;
break;
}
}
if(Enter->top<MAX)
{
Enter->top++;
cout<<endl<<"车辆在车场第"<<Enter->top<<"位置.";
cout<<endl<<"车辆到达时间:";
cin>>p->reach.hour>>p->reach.min;
cout<<endl<<"车辆到达登记完毕!"<<endl;
cout<<"--------------------------------------------"<<endl;
Enter->stack[Enter->top]=p;
return 1;
}

热点内容
linuxoracle操作 发布:2025-01-16 12:40:50 浏览:44
河北存储服务价格 发布:2025-01-16 12:39:21 浏览:342
挂机服务器的搭建 发布:2025-01-16 12:34:07 浏览:415
安卓怎么删除信任凭证 发布:2025-01-16 12:22:06 浏览:335
代理编译 发布:2025-01-16 12:07:59 浏览:794
服务器为什么老是无响应 发布:2025-01-16 12:07:59 浏览:892
安卓怎么传软件到苹果 发布:2025-01-16 12:01:28 浏览:952
pythonforzip 发布:2025-01-16 11:59:46 浏览:910
磁感密码锁有多少钥匙 发布:2025-01-16 11:41:12 浏览:117
酷睿电脑配置怎么查看 发布:2025-01-16 11:27:26 浏览:563