欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易停車場(chǎng)管理系統(tǒng)

 更新時(shí)間:2022年03月15日 13:45:39   作者:計(jì)算機(jī)小弟11  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易停車場(chǎng)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

問(wèn)題描述:

設(shè)停車場(chǎng)內(nèi)只有一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)大門(mén)可供汽車進(jìn)出。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門(mén)在最南端,最先到達(dá)的第一輛車停放在車場(chǎng)的最北端),若車場(chǎng)內(nèi)已停滿n輛汽車,則后來(lái)的汽車只能在門(mén)外的便道上等候,一旦有車開(kāi)走,則排在便道上的第一輛車即可開(kāi)入;當(dāng)停車場(chǎng)內(nèi)某輛車要離開(kāi)時(shí),在它之后開(kāi)入的車輛必須先退出車場(chǎng)為它讓路,待該輛車開(kāi)出大門(mén)外,其它車輛再按原次序進(jìn)入車場(chǎng),每輛停放在車場(chǎng)的車在它離開(kāi)停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。

由題得,此系統(tǒng)要實(shí)現(xiàn)的功能為:

 (1)設(shè)計(jì)停車場(chǎng)內(nèi)的結(jié)構(gòu)。(由題分析為一個(gè)棧,因?yàn)橹挥幸粋€(gè)門(mén)所以其就像數(shù)據(jù)結(jié)構(gòu)中學(xué)到的棧,但是因?yàn)榧纫鰲S忠霔#颂幬揖蛯⑦@個(gè)棧簡(jiǎn)化為了一個(gè)鏈表)

(2)當(dāng)車庫(kù)滿時(shí),在車庫(kù)外等待的結(jié)構(gòu)。(就像排隊(duì)一樣,先來(lái)先進(jìn)后來(lái)后進(jìn),只能從一端進(jìn),另一端出)。

(3)車輛的結(jié)構(gòu),一輛車要有什么信息?首先要有這輛車的車牌號(hào),可以用一個(gè)字符數(shù)組來(lái)存儲(chǔ)(因?yàn)檐嚺撇灰欢ㄈ菙?shù)字,還可能有漢字,英文字母等),題中要求要用要計(jì)算收費(fèi),就要知道駛?cè)霑r(shí)間和駛出時(shí)間(怎樣獲取在下面會(huì)說(shuō)到)。

算法描述:

1、剛開(kāi)始定義結(jié)構(gòu)類型,如車的類型,車庫(kù)里的類型,車庫(kù)外等待的類型。

2、聲明所要用到的函數(shù):

?void menu(Stack *cheku,SequenQueue* paidui);//開(kāi)始菜單
?
//就是展示出菜單的函數(shù)
//隊(duì)列的相關(guān)操作
?
SequenQueue* InitQueue();//申請(qǐng)一個(gè)空隊(duì)
int EmptyQueue(SequenQueue* Q);//判斷隊(duì)空
int FullQueue(SequenQueue* Q);//判斷隊(duì)滿
int EnQueue(SequenQueue* Q, ElemType *e);//入隊(duì)
int DeQueue(SequenQueue* Q, ElemType *e); //出隊(duì)
Stack* build();//建鏈表
int fullstack(Stack *cheku);//判斷鏈表滿
void tingche(Stack *cheku,SequenQueue* paidui);//停車的函數(shù)
void likai(Stack *cheku,SequenQueue* paidui);//離開(kāi)的函數(shù)
void chakan(Stack *cheku,SequenQueue* paidui);//查看車庫(kù)停車情況的函數(shù)?

3、一些可能不理解的說(shuō)明的說(shuō)明。

(1). 獲取時(shí)間的函數(shù),寫(xiě)頭文件 #include <time.h>,定義一個(gè) time_t類型的變量starttime,starttime=time(NULL);就是獲取1970年1月1日到當(dāng)前的秒數(shù),定義一個(gè)字符數(shù)組 tmp2[100],strftime(tmp2,sizeof(tmp2),"%Y-%m-%d  %H:%M:%S",localtime(&q->a.starttime));用這一句就能把當(dāng)前時(shí)間的年月日時(shí)分秒存進(jìn)字符數(shù)組中,puts(tmp2),就得到了當(dāng)前的時(shí)間。

(2). 代碼中用到了Sleep函數(shù),這個(gè)函數(shù)的功能為延時(shí),要用到一個(gè)頭文件,#include <time.h>,此函數(shù)是與(3)中的配合使用。

(3).(2)中提到的就是system("cls"),他的作用就是清屏,(2)的作用就是把結(jié)果讓用戶看到。故兩者配合,就能得到奇效。

程序代碼:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
#define MAXSIZE 1024
static int maxsize;
typedef char ElemType;
typedef struct
{
?? ?char ?num[10];//車牌
?? ?time_t starttime,endtime;//進(jìn)入推出時(shí)間?
}car; ? //車?
typedef struct Stack
{
?? ?int top;
? ? car a;
? ? struct Stack *next;
? ??
}Stack;
typedef struct
{
?? ?char a[10];
}dat;
typedef struct?
{//隊(duì)列結(jié)構(gòu)定義
? ?dat ? ? ?data[MAXSIZE];
? ?int ? ? ?front;
? ?int ? ? ?rear;
?}SequenQueue;
void menu(Stack *cheku,SequenQueue* paidui);//開(kāi)始菜單 ?
SequenQueue* InitQueue();//申請(qǐng)一個(gè)空隊(duì)?
int EmptyQueue(SequenQueue* Q);//判斷隊(duì)空?
int FullQueue(SequenQueue* Q);//判斷隊(duì)滿?
int EnQueue(SequenQueue* Q, ElemType *e);//入隊(duì)?
int DeQueue(SequenQueue* Q, ElemType *e); //出隊(duì)
Stack* build();//建鏈表?
void tingche(Stack *cheku,SequenQueue* paidui);
int fullstack(Stack *cheku);
void likai(Stack *cheku,SequenQueue* paidui);
void chakan(Stack *cheku,SequenQueue* paidui);
?int main()
{
?? ?Stack *cheku=build();
?? ?SequenQueue* paidui=InitQueue();
?? ?printf("請(qǐng)輸入車庫(kù)最大容量:");
?? ?scanf("%d",&maxsize);?
?? ?system("cls");
?? ?menu(cheku,paidui);
?? ?return 0;
}
void menu(Stack *cheku,SequenQueue* paidui)
{
? ? printf("********** ? ? ? ?歡迎來(lái)停車 ! ? ? ? ?**********\n");
? ? printf("********** ? ? ? ?請(qǐng)選擇一項(xiàng) ? ? ? ? ?**********\n");
? ? printf("********** ? ? ? ? 1 : park. ? ? ? ? ?**********\n");
? ? printf("********** ? ? ? ? 2 : leave. ? ? ? ? **********\n");
? ? printf("********** ? ? ? ? 3 : view. ? ? ? ? ?**********\n");
? ? printf("********** ? ? ? ? 4 : exit. ? ? ? ? ?**********\n");
? ? int option;
? ? scanf("%d",&option);
? ? system("cls");
? ? switch(option)
? ? {
? ? ? ? case 1:
?? ??? ?{
? ? ? ? ?? ??? ?tingche(cheku,paidui);
? ? ? ? ?? ??? ?menu(cheku,paidui);
? ? ? ? ? ? ?? ?break;
? ? ? ? }
? ? ? ? case 2:
?? ??? ?{
? ? ? ? ?? ??? ?likai(cheku,paidui);
? ? ? ? ?? ??? ?menu(cheku,paidui);
? ? ? ? ?? ??? ?break;
? ? ? ? }
? ? ? ? case 3:
?? ??? ?{
? ? ? ? ?? ?chakan(cheku, paidui);
? ? ? ? ? ?menu(cheku,paidui);
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? case 4:
?? ??? ?{
? ? ? ? ? ? printf("********** ? ? 歡迎再次使用,謝謝! ? **********\n");
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? default:{
? ? ? ? ? ? printf("********** ? ? ?請(qǐng)輸入正確的指令! ? ?**********\n");
? ? ? ? ? ? Sleep(1000);
? ? ? ? ? ? menu(cheku,paidui);
? ? ? ? ? ? system("cls");
? ? ? ? ? ? break;
? ? ? ? }
? ? }
}
int fullstack(Stack *cheku)
{
?? ?if(cheku->top<maxsize-1)
?? ??? ?return 1;
?? ?else
?? ??? ?return 0;
}
SequenQueue* InitQueue()
{
?? ?SequenQueue* Q = NULL;
?? ?Q = (SequenQueue*)malloc(sizeof(SequenQueue));
?? ?Q->front = Q->rear = 0;
?? ?return Q;
}
int DeQueue(SequenQueue* Q, ElemType *e)
{
?? ?if(EmptyQueue(Q))
?? ??? ?return FALSE;
?? ?else
?? ?{
?? ??? ?strcpy(e,Q->data[Q->front].a);
?? ??? ?Q->front=(Q->front+1)%MAXSIZE;
?? ??? ?return TRUE;
?? ?}?
}
int EnQueue(SequenQueue* Q, ElemType *e)
{
?? ?if(FullQueue(Q))
?? ??? ?{
?? ??? ??? ?printf("等待的車輛太多,請(qǐng)下次再來(lái)");
?? ??? ??? ?return FALSE;
?? ??? ?}
?? ?strcpy(Q->data[Q->front].a,e);
?? ?Q->rear = (Q->rear+1)%MAXSIZE;
?? ?return TRUE;
}
int FullQueue(SequenQueue* Q)
{
?? ?if((Q->rear+1)%MAXSIZE==Q->front)
?? ?{
?? ??? ?return TRUE;
?? ?}
?? ?else
?? ?{
?? ??? ?return FALSE;
?? ?}
}
int EmptyQueue(SequenQueue* Q)
{
?? ?if(Q->front == Q->rear)
?? ??? ?return TRUE;
?? ?else
?? ??? ?return FALSE;
}
Stack* build(Stack *cheku,SequenQueue* paidui)
{
?? ?Stack* a;
?? ?a=(Stack*)malloc(sizeof(Stack));
?? ?a->top=-1;
?? ?return a;
}
void tingche(Stack *cheku,SequenQueue* paidui)
{
?? ?Stack *p;
?? ?p=(Stack *)malloc(sizeof(Stack));
?? ?printf("請(qǐng)輸入車牌號(hào)\n");
?? ?fflush(stdin);
?? ?gets(p->a.num);
?? ?if(fullstack(cheku))
?? ?{
?? ??? ?p->next=cheku->next;
?? ??? ?cheku->next=p;
?? ??? ?p->a.starttime=time(NULL);
?? ??? ?cheku->top++;
?? ??? ?printf("停車成功\n");
?? ??? ?Sleep(1000);
?? ??? ?system("cls");
?? ?}
?? ?else
?? ?{
?? ??? ?printf("車庫(kù)已滿請(qǐng)?jiān)陂T(mén)口等待\n");
?? ??? ?EnQueue(paidui,p->a.num);
?? ??? ?Sleep(1000);
?? ??? ?system("cls");
?? ?}?
}
void likai(Stack *cheku,SequenQueue* paidui)
{
?? ?char m[10];
?? ?Stack *p,*q;
?? ?char e[10];
?? ?int n=0;
?? ?p=cheku;
?? ?if(cheku->top==-1)
?? ?{
?? ??? ?printf("車庫(kù)為空\(chéng)n");
?? ??? ?Sleep(1000);
?? ??? ?system("cls");?
?? ?}
?? ?else
?? ?{
?? ?printf("請(qǐng)輸入離開(kāi)的車牌:\n");
?? ?fflush(stdin);
?? ?gets(m);
?? ?while(p->next!='\0')
?? ?{?? ?double money;?
?? ??? ?if(strcmp(p->next->a.num,m)==0)
?? ??? ?{
?? ??? ??? ?q=p->next;
?? ??? ??? ?p->next=q->next;
?? ??? ??? ?q->a.endtime=time(NULL);
?? ??? ??? ?money=(q->a.endtime-q->a.starttime)*0.00139;
?? ??? ??? ?char tmp1[100],tmp2[100];
?? ??? ??? ?strftime(tmp1,sizeof(tmp1),"%Y-%m-%d ?%H:%M:%S",localtime(&q->a.endtime));
?? ??? ??? ?strftime(tmp2,sizeof(tmp2),"%Y-%m-%d ?%H:%M:%S",localtime(&q->a.starttime));
?? ??? ??? ?printf("停車時(shí)間:%s\n",tmp2);
?? ??? ??? ?printf("離開(kāi)時(shí)間:%s\n",tmp1);
?? ??? ??? ?printf("共停%ds\n",q->a.endtime-q->a.starttime);?
?? ??? ??? ?printf("收費(fèi)%.5lf元(一小時(shí)五元)\n",money);?
?? ??? ??? ?Sleep(3000);
?? ??? ??? ?free(q);
?? ??? ??? ?system("cls");
?? ??? ??? ?cheku->top--;
?? ??? ??? ?n++;
?? ??? ??? ?if(EmptyQueue(paidui)==0)
?? ??? ??? ?{
?? ??? ??? ??? ?DeQueue(paidui,e);
?? ??? ??? ??? ?Stack *d=(Stack *)malloc(sizeof(Stack));
?? ??? ??? ??? ?strcpy(d->a.num,e);
?? ??? ??? ??? ?d->a.starttime=time(NULL);
?? ??? ??? ??? ?d->next=cheku->next;
?? ??? ??? ??? ?cheku->next=d;
?? ??? ??? ??? ?cheku->top++;
?? ??? ??? ??? ?printf("已將等待的第一輛車進(jìn)入停車場(chǎng)");
?? ??? ??? ??? ?Sleep(1000);
?? ??? ??? ??? ?system("cls");?
?? ??? ??? ?}?
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?p=p->next;
?? ?}
?? ?if(n==0)
?? ?{
?? ??? ?printf("未找到該車輛信息請(qǐng)重試");
?? ??? ?Sleep(1000);
?? ??? ?system("cls");
?? ?}
}?? ??
}
void chakan(Stack *cheku,SequenQueue* paidui)
{
?? ?if(cheku->top==maxsize-1)
?? ?{
?? ??? ?printf("車庫(kù)已滿,共有%d的車輛在等候",(paidui->rear-paidui->front+MAXSIZE)%MAXSIZE);
?? ??? ?Sleep(1000);
?? ??? ?system("cls");
?? ?}
?? ?else
?? ?{
?? ??? ?printf("車庫(kù)還有%d個(gè)空位",maxsize-cheku->top-1);
?? ??? ?Sleep(1000);
?? ??? ?system("cls");
?? ?}
}

代碼可能不是最佳,如有錯(cuò)誤,敬請(qǐng)指正。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++繼承中的訪問(wèn)控制實(shí)例分析

    C++繼承中的訪問(wèn)控制實(shí)例分析

    這篇文章主要介紹了C++繼承中的訪問(wèn)控制,是面向?qū)ο蟪绦蛟O(shè)計(jì)中非常重要的知識(shí)點(diǎn),需要的朋友可以參考下
    2014-08-08
  • C語(yǔ)言實(shí)現(xiàn)圖的遍歷之深度優(yōu)先搜索實(shí)例

    C語(yǔ)言實(shí)現(xiàn)圖的遍歷之深度優(yōu)先搜索實(shí)例

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)圖的遍歷之深度優(yōu)先搜索實(shí)例,采用不同的方法實(shí)現(xiàn)了深度優(yōu)先搜索算法,有不錯(cuò)的借鑒價(jià)值,需要的朋友可以參考下
    2014-09-09
  • 最新評(píng)論