国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

模擬停車場管理系統(tǒng)(c++,使用棧和隊列)

這篇具有很好參考價值的文章主要介紹了模擬停車場管理系統(tǒng)(c++,使用棧和隊列)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、問題描述

二、算法結構分析與設計

三、算法主模塊的流程及各子模塊的主要功能

四、算法詳細設計

五、源代碼


一、問題描述

  1. 功能要求

????????設停車場只有一個可以停放幾輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場內按車輛到達的先后順序依次排列,若車場內已經停滿幾輛汽車,則后來的汽車只能在門外的便道上等候,一旦有汽車開走,則排在便道上的第一輛汽車即可進入,當停車場某輛車要離開時,由于停車場是狹長通道,在他之后開入的車輛必須先退出車場為他讓路,待該輛汽車開出大門之后,為他讓路的車輛按照原次序進入車場。在這里假設汽車不能從便道上開走。

?????2.輸入輸出要求

每一組輸入數據要求包括三個數據項:汽車“到達”或“離去”的信息、汽車拍照號碼、汽車到達或者離去的時刻。

二、算法結構分析與設計

  1. 時間

typedef?struct?Time

{

? ? int?mon=0;

? ? int?date=0;

? ? int?hour=0;

? ? int?min=0;

? ? int?sec=0;

?? ?

}Time;

2.汽車

typedef struct Car

{

? ? string ChePai="";

? ? Time?in;

? ? Time out;

}Car;

3.順序棧

typedef struct SeqStack

{

? ? Car?CheWei[MAXSIZE];

? ? int?top=-1;

?? ?

}SeqStack;

4.鏈式隊列

typedef struct QNode

{

? ? Car?data;

? ? QNode?*next=NULL;

?? ?

}QNode;

typedef struct LQueue

{

? ? QNode?*front,*rear;

?? ?

}LQueue;

三、算法主模塊的流程及各子模塊的主要功能

子模塊的主要功能:

1)壓棧和出棧SeqStack* InStack(SeqStack* pl,Car a)

SeqStack* OutStack(SeqStack* pl,Car a)

2)入隊和出隊LQueue* InQueue(Car a,LQueue* p)

Car OutQueue(LQueue* p)

3)初始化隊LQueue* InitLQueue()

4)獲取系統(tǒng)時間,計算時間差void differ(Time in,Time out)

Time GetTime()

5)算錢int MoneyCalculate(int MoneyPH,Time in,Time out)

主程序流程

模擬停車場管理系統(tǒng)(c++,使用棧和隊列)

四、算法詳細設計

1.寫出各個模塊的偽碼算法

得到系統(tǒng)時間:

{獲取系統(tǒng)時間

賦值返回

}文章來源地址http://www.zghlxwxcb.cn/news/detail-472543.html

尋找車輛用于查詢:

{遍歷棧,若查詢到車牌一致,返回

遍歷隊列,若查詢到車牌一致,返回

}

入棧:

{top指針上移

獲取系統(tǒng)時間,賦給car進入的時間

裝填數據

}

出棧:

{如果內部車輛出棧,外部車輛壓入輔助棧,內部車輛出棧,外部車輛壓回;

如果最外邊的車輛出棧,則直接出棧。

獲取系統(tǒng)時間,計算時間差,計算應繳納的金額。

}

計算繳納的費用:

{計算停泊了幾個小時,不超過半個小時的部分忽略不計

自定義每小時停泊的價格,返回總金額

}

初始化隊:

{申請頭節(jié)點空間和第一個數據節(jié)點的空間

頭節(jié)點的頭尾指針均指向第一個數據節(jié)點

第一個數據節(jié)點的后繼置空

返回頭節(jié)點

}

入隊:

{獲取系統(tǒng)時間,賦給進入的車輛

如果此時便道內沒有車輛,第一個數據節(jié)點裝填

如果此時便道內已經有了車輛,申請新的節(jié)點空間,裝填數據,尾指針后移

返回頭節(jié)點

}

出隊:

{如果便道內有多個車輛,用一個node類型指針指向待入車輛,用一個car變量承接數據,出隊之后釋放指針指向的空間,返回承接的數據

如果只有一個車輛,用一個car類型指針指向數據,承接數據后釋放指針,返回數據

}

五、源代碼

#include<iostream>
#include<time.h>
using namespace std;
#define MAXSIZE 5
typedef int DataType;

//定義時間
typedef struct Time
{
    int mon=0;
    int date=0;
    int hour=0;
    int min=0;
    int sec=0;
    
}Time;


typedef struct Car
{
    string ChePai="";
    Time in;
    Time out;
    
}Car;


//定義順序棧
typedef struct SeqStack
{
    Car CheWei[MAXSIZE];
    int top=-1;
    
}SeqStack;


//定義鏈式隊列
typedef struct QNode
{
    Car data;
    struct QNode *next=NULL;
    
}QNode;

typedef struct LQueue
{
    QNode *front=NULL,*rear=NULL;
    
}LQueue;


void TimePrint(Time a)
{
    cout<<"時間為:"<<a.mon<<"月 "<<a.date<<"日 "<<a.hour<<"時 "<<a.min<<"分 "<<endl;
    
}


Time GetTime()
{
    Time a;
    time_t t;
    tm *p;
    time(&t);
    p=localtime(&t);
    a.mon=p->tm_mon+1;
    a.date=p->tm_mday;
    a.min=p->tm_min;
    a.hour=p->tm_hour;
    a.sec=p->tm_sec;
    return a;
}

Car Search(SeqStack* pl,LQueue* bd,Car op)
{
    int j=1;
    //先在棧內找
    for(int i=0;i<=pl->top;i++)
    {
        if(pl->CheWei[i].ChePai==op.ChePai)
        {
            cout<<"在第"<<i+1<<"號車位"<<endl;
            
            return pl->CheWei[i];
        }
    }
    
    //然后在隊列里找
    QNode* p=bd->front;
    while(op.ChePai!=p->data.ChePai&&p->next!=NULL)
    {
        p=p->next;
        j++;
    }
    cout<<"車在便道的第"<<j<<"位"<<endl;
    return p->data;
}

SeqStack* InStack(SeqStack* pl,Car a)
{
    pl->top++;
    
    a.in=GetTime();
    pl->CheWei[pl->top]=a;
    TimePrint(a.in);
    return pl;
}

//汽車離去,出棧
SeqStack* OutStack(SeqStack* pl,Car a)
{
    SeqStack* fz=new SeqStack();//注意,需要將指針初始化。
    
    while(pl->CheWei[pl->top].ChePai!=a.ChePai)
    {
        fz->top++;
        fz->CheWei[fz->top]=pl->CheWei[pl->top];
        pl->top--;
        
    }
    
    while(fz->top!=-1)
    {
        
        pl->CheWei[pl->top]=fz->CheWei[fz->top];
        pl->top++;
        fz->top--;
        
    }
    pl->top--;
    a.out=GetTime();
    TimePrint(a.out);
    int MoneyCalculate(int MoneyPH,Time in,Time out);
    int money=MoneyCalculate(5,a.in,a.out);//所需要的金額一并輸出
    void differ(Time in,Time out);
    differ(a.in,a.out);
    cout<<"應繳納:"<<money<<"元"<<endl;
    return pl;
}

//算錢
int MoneyCalculate(int MoneyPH,Time in,Time out)
{
    int money;
    if(out.min<in.min)
    {
        out.hour--;
        out.min+=60;
        
    }
    if(out.min-in.min>=30)
        out.hour++;//超過半個小時部分按一個小時計算
    money=MoneyPH*(out.hour-in.hour);
    return money;
    
}

//計算時間差
void differ(Time in,Time out)
{
    Time d;
    if(out.min<in.min)
    {
        out.hour--;
        out.min+=60;
        
    }
    d.hour=out.hour-in.hour;
    d.min=out.min-in.min;
    TimePrint(d);
    
}

LQueue* InitLQueue()
{
    LQueue* p=new LQueue();
    QNode* q=new QNode();
    p->front=q;
    p->rear=q;
    q->next=NULL;
    return p;
    
    
}
LQueue* InQueue(Car a,LQueue* p)
{//傳入需要入隊的車輛信息和便道隊的地址
    a.in=GetTime();
    if(p->front->data.ChePai=="")
    {
        p->front->data=a;
        return p;
    }
    else
    {
        QNode* q=new QNode();
        q->data=a;
        p->rear->next=q;
        p->rear=q;
        return p;
    }
}

//出隊,得到車輛
Car OutQueue(LQueue* p)
{
    Car RIn;
    Car* op1;
    if(p->front!=p->rear)
    {
        QNode* q=p->front;
        p->front=p->front->next;
        RIn=q->data;
        free(q);
        return RIn;
    }
    else
    {
        RIn=p->front->data;
        op1=&(p->front->data);
        free(op1);
        return RIn;
        
    }
    
}

void CarInfPrint(Car a)
{
    cout<<"車牌號為:"<<a.ChePai<<endl;
    
    
}


int main()
{
    string a;
    SeqStack* pl=new SeqStack;
    SeqStack fz;
    LQueue* bd=InitLQueue();
    string cp;
    Car op;
    Car op1;
    
    cout<<"歡迎來到模擬停車場管理程序"<<endl;
    while(true)
    {
        cout<<"查詢車輛信息請輸入1,錄入車輛信息請輸入2"<<endl;
        cin>>a;
        
        //查詢車輛信息
        if(a=="1")
        {
            cout<<"請輸入車牌號:"<<endl;
            cin>>op.ChePai;
            op=Search(pl, bd, op);
            differ(op.in,GetTime());
            CarInfPrint(op);//車牌號打印正常。
            continue;
        }
        
        //錄入車輛信息
        if (a=="2")
        {
            string b;
            
            cout<<"離去請按1,到達請按2"<<endl;
            cin>>b;
            
            //離去
            if(b=="1")
            {
                
                cout<<"請輸入車牌號:"<<endl;
                cin>>op.ChePai;
                op=Search(pl, bd, op);
                OutStack(pl, op);
                if(bd->front->data.ChePai!="")
                {
                    op1=OutQueue(bd);
                    InStack(pl,op1);
                }
                continue;
                
            }
            //到達
            if(b=="2")
            {
                cout<<"請輸入車牌號:"<<endl;
                cin>>cp;
                op.ChePai=cp;
                if(pl->top==MAXSIZE-1)
                    InQueue(op,bd);
                if(pl->top<MAXSIZE-1)
                    InStack(pl,op);
                CarInfPrint(op);
                continue;
            }
            else
            {
                cout<<"輸入錯誤,請重新輸入"<<endl;
                continue;
            }
        }
        
        else
        {
            cout<<"輸入錯誤,請重新輸入"<<endl;
            continue;
        }
    }
}

到了這里,關于模擬停車場管理系統(tǒng)(c++,使用棧和隊列)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 基于python的停車場管理系統(tǒng)的設計與實現/智能停車管理系統(tǒng)

    基于python的停車場管理系統(tǒng)的設計與實現/智能停車管理系統(tǒng)

    車位信息 是 停車場供應用戶 必不可少的一個部分。在 停車場發(fā)展 的整個過程中, 車位信息 擔負著最重要的角色。為滿足如今日益復雜的管理需求,各類 系統(tǒng)管理 程序也在不斷改進。本課題所設計的 停車場管理系統(tǒng) , 使用 Django 框架 , Python語言 進行開發(fā),它的優(yōu)點代

    2024年02月10日
    瀏覽(28)
  • 停車場管理系統(tǒng)(C語言)

    停車場管理系統(tǒng)(C語言)

    1、問題描述 設有一個可以停放n輛汽車的狹長停車場,它只有一個大門可以供車輛進出。車輛按到達停車場時間的早晚依次從停車場最里面向大門口處停放(最先到達的第一輛車放在停車場的最里面)。如果停車場已放滿n輛車,則后來的車輛只能在停車場大門外的便道上等待

    2024年02月04日
    瀏覽(21)
  • 用JAVA實現停車場管理系統(tǒng)

    該程序使用ArrayList存儲停車記錄,并通過switch-case語句實現菜單選擇功能。主要功能包括: 停車:輸入車牌號和進入時間,自動分配停車位編號, 結算:根據停車位編號計算停車費用,計費標準為停車時長(秒)乘以每秒費用0.05元,同時記錄車輛離開時間和費用; 查看記錄

    2024年02月11日
    瀏覽(27)
  • 數據結構停車場管理系統(tǒng)設計

    數據結構停車場管理系統(tǒng)設計

    數據結構與算法分析課程設計之數據結構停車場管理系統(tǒng)設計。主要應用到數據結構中的棧與隊列。運用到的編程語言為C++。 目錄 一? 設計要求? 二 思路分析 三 設計流程 先附上完整代碼: 運行結果圖: 1.1 問題描述 :設停車場是一個可停放n輛車的狹長通道,且只有一個

    2024年02月04日
    瀏覽(16)
  • 停車場管理系統(tǒng)文件錄入(C++版)

    停車場管理系統(tǒng)文件錄入(C++版)

    ??作者主頁:微涼秋意 ?作者簡介:后端領域優(yōu)質創(chuàng)作者??,CSDN內容合伙人??,阿里云專家博主?? 之前寫的停車場管理系統(tǒng)或者是通訊錄管理系統(tǒng)都沒有使用 文件 錄入、保存數據,今天帶來一個文件錄入信息的C++版停車場管理系統(tǒng)。代碼部分都會有詳細注釋,稍加思

    2024年02月03日
    瀏覽(21)
  • 【數據結構】停車場管理系統(tǒng)程序設計

    【數據結構】停車場管理系統(tǒng)程序設計

    說明: 該程序設計采用常見基礎的數據結構棧和隊列實現了一個簡單停車場管理系統(tǒng)。在具體設計中,實現了系統(tǒng)頁面和停車場的示意圖顯示,通過調用順序棧和鏈隊的相關函數,模擬了實際停車場的運營流程。 目錄 1 任務內容 2 需求分析 2.1 功能需求 2.2 輸入輸出需求 3 概

    2024年02月03日
    瀏覽(25)
  • Python 實驗報告,實現停車場收費管理系統(tǒng)

    3.某小型收費停車場有50個車位,有一個入口與一個出口,滿1小時收費1元,不足1小時不收費,10元封頂,超過1天罰款200元。編寫程序實現停車場出入口管理。 要求: (1)定義出入口類,將車位總數與目前停在停車場的車輛信息(每輛車包括車牌和入場時間)定義為類屬性;

    2024年02月12日
    瀏覽(25)
  • 基于Web的停車場管理系統(tǒng)(Java)

    基于Web的停車場管理系統(tǒng)(Java)

    目錄 一、系統(tǒng)介紹 1.開發(fā)的環(huán)境 2.本系統(tǒng)實現的功能 3.數據庫用到的表 4.工程截圖 二、系統(tǒng)展示 1、登錄頁面 ?2、首頁 3、系統(tǒng)信息管理模塊? ?4、車位信息管理模塊 ?5、IC卡信息管理模塊 ?編輯6、固定車主停車管理模塊 7、臨時車主停車管理模塊 8、系統(tǒng)功能操作模塊 三

    2024年02月10日
    瀏覽(17)
  • 【計算機畢業(yè)設計】智能停車場管理系統(tǒng)

    【計算機畢業(yè)設計】智能停車場管理系統(tǒng)

    ? ? ? 摘 要 本論文主要論述了如何使用JAVA語言開發(fā)一個智能停車場管理系統(tǒng),本系統(tǒng)將嚴格按照軟件開發(fā)流程進行各個階段的工作,采用B/S架構,面向對象編程思想進行項目開發(fā)。在引言中,作者將論述智能停車場管理的當前背景以及系統(tǒng)開發(fā)的目的,后續(xù)章節(jié)將嚴格按照

    2024年02月06日
    瀏覽(26)
  • ?基于JAVAEE的停車場管理系統(tǒng)(論文+PPT+源碼)

    ? 詳情介紹 畢業(yè)設計(論文) 論文題目 基于JAVAEE的停車場管理系統(tǒng) Thesis Topic JAVAEE – based parking management system 畢業(yè)設計(論文)任務書 畢業(yè)設計(論文)題目:基于JAVAEE的停車場管理系統(tǒng)畢業(yè)設計(論文)要求及原始數據(資料):1.了解當前停車場管理的實際需求,確

    2024年02月03日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包