停车场管理系统c语言程序,c语言程序设计 停车场管理系统 停车场有1-20个车位号,设计一个停车场管理系统,实现停车场管理...
#include
#include
#include
#include
#define max 3
#define price 1
int b=1;
typedef struct
{
int day;
int hour;
int min;
}TIME;//時間結點
typedef struct
{
char num[10]; //車牌號
TIME time; //進入停車場的時間
int n; //進入停車場的位置
}information;
//棧結構體定義
typedef struct node
{
information data;
struct node *next;
}stacknode;stacknode *top1,*top2;
//隊列結構體定義
typedef struct
{
information data;
stacknode *front,*rear;
}LQueue;LQueue *Q;
//函數聲明部分/
stacknode *Init(); //棧的初始化
stacknode *into(stacknode *top1,LQueue *Q); //初始化車輛進入
int expenses(stacknode *p,int x,int y); //停車費用計算函數
stacknode *leave(stacknode *top1,char str[],LQueue *Q); //車輛駛出出場函數
LQueue *InitLQue(); //初始化隊列函數
LQueue *wait(LQueue *q,stacknode *s); //車輛進入候車便道函數
int EmptyLQue(LQueue *q); //判斷候車便道有無等待車輛函數
stacknode *out(LQueue *q); //候車區車輛出隊
stacknode *LQinto(stacknode *p,stacknode *top1); //從候車便道進入停車場函數
void show(stacknode *top1); //顯示停車場所有信息函數
void T_shou(LQueue *Q); //顯示候車區信息
/*函數部分*/
//主函數
void main()
{
char str[10];
Q=InitLQue();
top1=Init();
top2=Init();
Q=InitLQue();
int i;
printf("\t\t\t*************************************\n");
printf("\t\t\t\t 停車場管理系統\n");
printf("\t\t\t|| 1. 車輛進入停車場 ||\n");
printf("\t\t\t|| 2. 車輛離開停車場 ||\n");
printf("\t\t\t|| 3. 顯示停車場內所有車輛信息 ||\n");
printf("\t\t\t|| 4. 顯示候車區內所有車輛信息 ||\n");
printf("\t\t\t|| 5. 退出 ||\n");
printf("\t\t\t*************************************\n");
while(i!=5)
{
printf("\t請輸入選項1-5:");
scanf("%d",&i);
switch(i)
{
case 1:
top1=into(top1,Q);
break;
case 2:
printf("請輸入離開車輛的車牌號:");
scanf("%s",str);
top1=leave(top1,str,Q);
break;
case 3:show(top1);break;
case 4:T_shou(Q);break;
case 5:exit(1);
default:printf("輸入錯誤,請重新輸入1—5:");
break;
}
}
}
/*子函數*/
//初始化
stacknode *Init()
{
stacknode *top;
top=(stacknode *)malloc(sizeof(stacknode));
top=NULL;
return top;
}
//初始化車輛進入
stacknode *into(stacknode *top1,LQueue *Q)
{
stacknode *p,*q;
time_t rawtime; //調用系統時間函數
struct tm *timeinfo; //時間結點
time(&rawtime);
timeinfo=localtime(&rawtime);
p=(stacknode *)malloc(sizeof(stacknode));
if(p==NULL)
{
printf("內存分配失敗");
return top1;
}
printf("請輸入進入停車場車輛的車牌號:");
scanf("%s",p->data.num);
q=top1;
while(q!=NULL)
{
if(strcmp(p->data.num,q->data.num)==0)
{
printf("車牌號輸入有誤,該車已進入!");
return top1;
}
q=q->next;
}
p->data.time.day=timeinfo->tm_mday;
p->data.time.hour=timeinfo->tm_hour;
p->data.time.min=timeinfo->tm_min;
p->data.n=b;
if(b>max)
{
printf("停車場已滿,請在便道等候!\n");
wait(Q,p);
return top1;
}
if(top1==NULL)
{
p->next=NULL;
top1=p;
}
else
{
p->next=top1;
top1=p;
}
b++;
printf("車輛進入停車場成功,時間已經自動載入!\n");
printf("車牌為%s的汽車駛入時間為:%d號%d點%d分\n",top1->data.num,top1->data.time.day,top1->data.time.hour,top1->data.time.min);
return top1;
}
//停車費用計算函數
int expenses(stacknode *p,int x1,int x2,int x3)
{
int w;
if(x3!=0)
w=(x1*24+x2+1-(p->data.time.day*24+p->data.time.hour))*price;
else
w=(x1*24+x2-(p->data.time.day*24+p->data.time.hour))*price;
return w;
}
//車輛駛出出場函數
stacknode *leave(stacknode *top1,char str[],LQueue *Q)
{
int i,day,hour,min;
time_t rawtime;
struct tm *timeinfo;
time(&rawtime);
timeinfo=localtime(&rawtime);
day=timeinfo->tm_mday;
hour=timeinfo->tm_hour;
min=timeinfo->tm_min;
stacknode *p,*q;
if(top1==NULL)
{
printf("停車場沒有車輛!\n");
return top1;
}
q=(stacknode *)malloc(sizeof(stacknode));
if(p==NULL)
{
printf("內存分配失敗");
return top1;
}
q=top1;
while(q!=NULL)
{
if(strcmp(q->data.num,str)==0)
break;
q=q->next;
}
if(q==NULL)
{
printf("輸入有誤,該車輛不在停車場!\n");
return top1;
}
for(i=top1->data.n;i>q->data.n;i--)
{
p=(stacknode *)malloc(sizeof(stacknode));
if(p==NULL)
{
printf("內存分配失敗");
return top1;
}
strcpy(p->data.num,top1->data.num);
p->data.time=top1->data.time;
p->data.n=top1->data.n-1;
top1=top1->next;
if(top2==NULL)
{
p->next=NULL;
top2=p;
}
else
{
p->next=top2;
top2=p;
}
}
top1=top1->next;
while(top2!=NULL)
{
p=(stacknode *)malloc(sizeof(stacknode));if(p==NULL){printf("內存分配失敗");return top1;}
p->data.n=top2->data.n;
strcpy(p->data.num,top2->data.num);
p->data.time=top2->data.time;
p->next=top1;
top1=p;
top2=top2->next;
}
if(EmptyLQue(Q))
{
p=out(Q);
p->data.n--;
top1=LQinto(p,top1);
}
else
b--;
printf("車牌為%s的汽車駛出時間為:%d號%d點%d分\n",q->data.num,day,hour,min);
printf("車輛駛出停車場需要繳納的費用為:%d元\n",expenses(q,day,hour,min));
return top1;
}
//隊列函數初始化
LQueue *InitLQue()
{
LQueue *Q;
stacknode *p;
Q=(LQueue *)malloc(sizeof(LQueue));
p=(stacknode *)malloc(sizeof(stacknode));
p->next=NULL;
Q->front=Q->rear=p;
return Q;
}
//候車區隊列入隊
LQueue *wait(LQueue *q,stacknode *s)
{
s->next=NULL;
q->rear->next=s;
q->rear=s;
return q;
}
//判斷候車便道有無車輛等待
int EmptyLQue(LQueue *q)
{
if(q->front==q->rear)
return 0;
else
return 1;
}
//候車區車輛出隊
stacknode *out(LQueue *q)
{
stacknode *p;
p=q->front->next;
if(q->front->next==q->rear)
{
q->rear=q->front;
return p;
}
else
q->front->next=p->next;
p->next=NULL;
return p;
}
//候車隊列進入停車場
stacknode *LQinto(stacknode *p,stacknode *top1)
{
p->next=top1;
top1=p;
return top1;
}
//顯示停車場內所有車輛信息
void show(stacknode *top1)
{
printf(" 停車場內全部車輛信息表\n");
if(top1==NULL)
printf(" 停車場內無車!\n");
else
{
printf("車牌號 進入時間 位置\n");
while(top1!=NULL)
{
printf(" %s %d號%d點%d分 第%d位\n",top1->data.num,top1->data.time.day,top1->data.time.hour,top1->data.time.min,top1->data.n);
top1=top1->next;
}
}
}
//顯示候車區的汽車信息
void T_shou(LQueue *Q)
{
LQueue *q;
q=(LQueue *)malloc(sizeof(LQueue));
q->rear=Q->rear->next;
printf(" 候車區信息\n");
if(q->front==q->rear)
printf("候車區沒有車輛!\n");
else
{
printf("車牌號 進入時間\n");
while(q!=NULL)
{
printf("%s%d號%d點%d分",q->data.num,q->data.time.day,q->data.time.hour,q->data.time.min);
q->rear=q->rear->next;
}
}
}
/*時間函數
int timef()
{
int x,y;
time_t rawtime;
struct tm *timeinfo;
time(&rawtime);
timeinfo=localtime(&rawtime);
x=timeinfo->tm_mday,y=timeinfo->tm_hour;
}
time_t rawtime;
struct tm *timeinfo;
time(&rawtime);
timeinfo=locoltime(&rawtime);
timeinfo->tm_ymday,*/
取消
評論
總結
以上是生活随笔為你收集整理的停车场管理系统c语言程序,c语言程序设计 停车场管理系统 停车场有1-20个车位号,设计一个停车场管理系统,实现停车场管理...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 猎魂觉醒哪个职业是亲儿子
- 下一篇: 苹果8p是双卡双待吗(苹果官网报价)