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

C語(yǔ)言實(shí)現(xiàn)停車管理系統(tǒng)

 更新時(shí)間:2022年03月15日 14:21:21   作者:會(huì)飛的企鵝》《  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)停車管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

設(shè)計(jì)題目

設(shè)停車場(chǎng)是一個(gè)可以停放n輛汽車的南北方向的狹長(zhǎng)通道,且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停放在車場(chǎng)的最北端),若車場(chǎng)內(nèi)已停滿n輛車,那么后來的車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當(dāng)停車場(chǎng)內(nèi)某輛車要離開時(shí),在它之后進(jìn)入的車輛必須先退出車場(chǎng)為它讓路,待該輛車開出大門外,其它車輛再按原次序進(jìn)入車場(chǎng),每輛停放在車場(chǎng)的車在它離開停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。試為停車場(chǎng)編制按上述要求進(jìn)行管理的模擬程序。要求程序輸出每輛車到達(dá)后的停車位置(停車場(chǎng)或便道上),以及某輛車離開停車場(chǎng)時(shí)應(yīng)繳納的費(fèi)用和它在停車場(chǎng)內(nèi)停留的時(shí)間。

需求分析

由于停車場(chǎng)只有一個(gè)大門,當(dāng)停車場(chǎng)內(nèi)某輛車要離開時(shí),在它之后進(jìn)入的車輛必須先退出車場(chǎng)為它讓路,先進(jìn)停車場(chǎng)的后退出,后進(jìn)車場(chǎng)的先退出,符合棧的“后進(jìn)先出,先進(jìn)后出”的操作特點(diǎn),因此,可以用一個(gè)棧來模擬停車場(chǎng)。而當(dāng)停車場(chǎng)滿后,繼續(xù)來到的其它車輛只能停在便道上,根據(jù)便道停車的特點(diǎn),先排隊(duì)的車輛先離開便道進(jìn)入停車場(chǎng),符合隊(duì)列的“先進(jìn)先出,后進(jìn)后出”的操作特點(diǎn),因此,可以用一個(gè)隊(duì)列來模擬便道。排在停車場(chǎng)中間的車輛可以提出離開停車場(chǎng),并且停車場(chǎng)內(nèi)在要離開的車輛之后到達(dá)的車輛都必須先離開停車場(chǎng)為它讓路,然后這些車輛依原來到達(dá)停車場(chǎng)的次序進(jìn)入停車場(chǎng),因此在前面已設(shè)的一個(gè)棧和一個(gè)隊(duì)列的基礎(chǔ)上,還需要有一個(gè)地方保存為了讓路離開停車場(chǎng)的車輛,由于先退出停車場(chǎng)的后進(jìn)入停車場(chǎng),所以很顯然保存讓路車輛的場(chǎng)地也應(yīng)該用一個(gè)棧來模擬。因此,本題求解過程中需用到兩個(gè)棧和一個(gè)隊(duì)列。棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。

程序代碼

#include
#include<stdlib.h>
#include<stdio.h>
#include
#define MAXSIZE 5
#define price 0.01
#pragma warning(disable: 4996)
using namespace std;

typedef struct time {
  int hour;
  int min;
  }Time;/時(shí)間結(jié)點(diǎn)/
typedef struct carnews {
  char num[10];
  Time reach;
  Time leave;
 }CarNode;/車輛信息結(jié)點(diǎn)/
typedef struct NODE {
  CarNode* stack[MAXSIZE + 1];
  int top; //??捎玫淖畲笕萘?
 }SeqStackCar;/模擬停車場(chǎng)/
typedef struct car {
  CarNode* data;
  struct car* next;
}QueueNode; //模擬車進(jìn)入便道,便道的車進(jìn)入停車場(chǎng)
typedef struct Node {
  QueueNode* head; //頭指針
  QueueNode* rear; //尾指針
}LinkQueueCar;/模擬便道/
 void InitStack(SeqStackCar*); //創(chuàng)建空棧
 int InitQueue(LinkQueueCar*); //創(chuàng)建空隊(duì)列
 int Arrival(SeqStackCar*, LinkQueueCar*); //車輛到達(dá)
 void Leave(SeqStackCar*, SeqStackCar*, LinkQueueCar*); //車輛離開
 void PRINT(CarNode*, int); //輸出離開車輛的信息清單
 void List(SeqStackCar, LinkQueueCar); //對(duì)所用到的函數(shù)作提前聲明
   int main() {
    SeqStackCar Enter, Temp;
    LinkQueueCar Wait;
  int ch;
  InitStack(&Enter);//初始化車站
  InitStack(&Temp);//初始化讓路的臨時(shí)棧
  InitQueue(&Wait);//初始化通道
while (1) {
cout << "@歡迎使用本停車管理系統(tǒng)@" << endl;
cout << “----------------------------------------------------------------” << endl;
cout << " # # 1.車輛到達(dá) # # " << endl;
cout << " # # 2.車輛離開 # # " << endl;
cout << " # # 3.列表顯示 # # " << endl;
cout << " # # 4.退出系統(tǒng) # # " << endl;
cout << “----------------------------------------------------------------” << endl;
cout << “!說明:請(qǐng)注意正確輸入時(shí)間,在輸入‘時(shí)'后,按‘ENTER'或者‘空格',再輸入‘分'。不要為非數(shù)字” << endl;
cout << “請(qǐng)輸入所需要的服務(wù)!(1-4).” << endl;//進(jìn)入系統(tǒng)的目錄顯示
while (1) {
cin >> ch;
if (ch >= 1 && ch <= 4)break;
else cout << “輸入錯(cuò)誤!請(qǐng)選擇:(1-4).” << endl;
}
switch (ch) {
  case 1:Arrival(&Enter, &Wait); break;//車輛到達(dá)
  case 2:Leave(&Enter, &Temp, &Wait); break;//車輛離開
  case 3:List(Enter, Wait); break;//列表顯示信息
  case 4:exit(0);//退出主程序
  default:break;
  }
 }
}
void InitStack(SeqStackCar s) {//初始化棧
  int i; //停車數(shù)量
  s->top = 0; //棧頂元素置為0
  for (i = 0; i <= MAXSIZE; i++)
  s->stack[s->top] = NULL;
}
 int InitQueue(LinkQueueCar Q) {//初始化便道
  Q->head = (QueueNode*)malloc(sizeof(QueueNode)); //malloc函數(shù)為動(dòng)態(tài)分配空間
  if (Q->head != NULL) {
  Q->head->next = NULL;
  Q->rear = Q->head; //頭尾指針置為相等,隊(duì)列為空
  return(1);
}
else return(-1);
}
  int Arrival(SeqStackCar* Enter, LinkQueueCar* W) {//車輛到達(dá)
  CarNode* p;
  QueueNode* t;
  p = (CarNode*)malloc(sizeof(CarNode));//malloc函數(shù)為動(dòng)態(tài)分配空間
  flushall();//清除所有的緩存區(qū)
  cout << “請(qǐng)輸入車牌號(hào)(例如:AB123):” << endl;
  cin >> p->num;
  if (Enter->top < MAXSIZE)//車場(chǎng)未滿,車進(jìn)車場(chǎng)
{
  Enter->top++;
  cout << “車輛在車場(chǎng)第” << Enter->top << “位置!” << endl;
  cout << “請(qǐng)輸入到達(dá)時(shí)間:(小時(shí):分鐘)” << endl;
  cin >> p->reach.hour;
  while (p->reach.hour < 0 || p->reach.hour>23) {//控制時(shí)間格式正確
  cout << “輸入錯(cuò)誤!” << endl;
  cout << “請(qǐng)重新輸入到達(dá)時(shí)間的時(shí)(0-23)!” << endl;
  cin >> p->reach.hour;
}
  cin >> p->reach.min;
  while (p->reach.min < 0 || p->reach.min>59) {//控制分鐘格式正確
  cout << “輸入錯(cuò)誤!” << endl;
  cout << “請(qǐng)重新輸入到達(dá)時(shí)間的分(0-59)!” << endl;
  cin >> p->reach.min;
}
Enter->stack[Enter->top] = p;
return(1);
}
else//車場(chǎng)已滿,車進(jìn)便道
{
cout << “車場(chǎng)已滿,請(qǐng)?jiān)诒愕赖却?!?<< endl;
t = (QueueNode*)malloc(sizeof(QueueNode));
t->data = p;
t->next = NULL;
W->rear->next = t;
W->rear = t;
return(1);
}
}
void Leave(SeqStackCar* Enter, SeqStackCar* Temp, LinkQueueCar* W) {//車輛離開
int room;
CarNode* p;
QueueNode* q;
//判斷車場(chǎng)內(nèi)是否有車
if (Enter->top > 0)//有車
{
while (1) {//輸入離開車輛的信息
cout << “請(qǐng)輸入車在車場(chǎng)的位置1–” << Enter->top << “:”;
cin >> room;
if (room >= 1 && room <= Enter->top)break;
}
while (Enter->top > room) {//車輛離開
Temp->top++;//臨時(shí)通道棧頂指針
Temp->stack[Temp->top] = Enter->stack[Enter->top];
Enter->stack[Enter->top] = NULL;
Enter->top–;
}
p = Enter->stack[Enter->top];
Enter->stack[Enter->top] = NULL;
Enter->top–;
while (Temp->top >= 1) {//判斷臨時(shí)通道上是否有車
Enter->top++;
Enter->stack[Enter->top] = Temp->stack[Temp->top];
Temp->stack[Temp->top] = NULL;
Temp->top–;
}
PRINT(p, room);
if ((W->head != W->rear) && Enter->top < MAXSIZE) {//車站是未滿
//便道的車輛進(jìn)入車場(chǎng)
q = W->head->next;
p = q->data;//p指向鏈隊(duì)頭
Enter->top++;
cout << “便道的” << p->num << “號(hào)車進(jìn)入車場(chǎng)第” << Enter->top << “位置!” << endl;
cout << “請(qǐng)輸入現(xiàn)在的時(shí)間(小時(shí):分鐘):” << endl;
cin >> p->reach.hour;
if (p->reach.hour < 0 || p->reach.hour>23) {
cout << “輸入錯(cuò)誤!” << endl;
cout << “請(qǐng)重新輸入到達(dá)時(shí)間的時(shí)(0-23):” << endl;
cin >> p->reach.hour;
}
cin >> p->reach.min;
if (p->reach.min < 0 || p->reach.min>59) {
cout << “輸入錯(cuò)誤!” << endl;
cout << “請(qǐng)重新輸入到達(dá)時(shí)間的分(0-59):” << endl;
cin >> p->reach.min;
}
Enter->stack[Enter->top] = p;
W->head->next = q->next;
if (q == W->rear)W->rear = W->head;
free(q);//釋放q地址
}
else cout << “便道里沒有車!” << endl;//便道沒車
}
else cout << “車場(chǎng)里沒有車!” << endl;//車場(chǎng)沒車
}
void PRINT(CarNode* p, int room) {//輸出離開車輛的信息清單
int A1, A2, B1, B2;
cout << “請(qǐng)輸入離開的時(shí)間:(小時(shí):分鐘)” << endl;
cin >> p->leave.hour;
while (p->leave.hour < 0 || p->leave.hour>23) {
cout << “輸入錯(cuò)誤!” << endl;
cout << “請(qǐng)重新輸入離開的時(shí)間的時(shí)(0-23):” << endl;
cin >> p->leave.hour;
B1 = p->leave.hour;
}
cin >> p->leave.min;
if (p->leave.min < 0 || p->leave.min>59) {
cout << “輸入錯(cuò)誤!” << endl;
cout << “請(qǐng)重新輸入離開的時(shí)間的分(0-59):” << endl;
cin >> p->leave.min;
}
cout << endl << “離開車輛的車牌號(hào)為:” << endl;
puts(p->num);
cout << “其到達(dá)的時(shí)間為:” << p->reach.hour << “:” << p->reach.min << endl;
cout << “其離開的時(shí)間為:” << p->leave.hour << “:” << p->leave.min << endl;
A1 = p->reach.hour;
A2 = p->reach.min;
B1 = p->leave.hour;
B2 = p->leave.min;
cout << “應(yīng)交費(fèi)用為:” << (((B1 - A1) * 60 + (B2 - A2)) + 1440) % 1440 * price << “元!” << endl;
}
void List1(SeqStackCar* S) {//列表顯示車場(chǎng)信息
cout << “您選擇的是車場(chǎng)停車情況!” << endl;
int i;
if (S->top > 0) {//判斷車站內(nèi)是否有車
cout << “位置 到達(dá)時(shí)間 車牌號(hào)” << endl;
for (i = 1; i <= S->top; i++) {
cout << " " << i << " " << S->stack[i]->reach.hour << “:” << S->stack[i]->reach.min << " " << S->stack[i]->num << endl;
}
}
else cout << “車場(chǎng)里沒有車!” << endl;
}
void List2(LinkQueueCar* W) {//列表顯示便道信息
cout << “您選擇的是便道停車情況!” << endl;
int j = 1;
QueueNode* p;
p = W->head->next;
if (W->head != W->rear) {//判斷通道上是否有車
cout << “等待車輛的車牌號(hào)碼為:” << endl;
while (p != NULL) {
cout << j;
puts(p->data->num);
cout << j << " " << p->data->num << endl;
p = p->next;
j++;
}
}
else cout << “便道里沒有車!”;
}
void List(SeqStackCar S, LinkQueueCar W) {//列表界面
int flag, tag; //列表和標(biāo)簽
flag = 1;
while (flag) {//列表顯示循環(huán)控制
 cout << “請(qǐng)選擇您要顯示的信息!(1-3):” << endl;
 cout << “#——1.車場(chǎng)——#” << endl;
 cout << “#——2.便道——#” << endl;
 cout << “#——3.返回——#” << endl;
while (1) {
 cin >> tag;
 if (tag >= 1 || tag <= 3)break;
 else cout << “輸入錯(cuò)誤!請(qǐng)選擇(1-3):” << endl;
}
switch (tag) {
  case 1:List1(&S); break;//列表顯示車場(chǎng)信息
  case 2:List2(&W); break;//列表顯示便道信息
  case 3:flag = 0; break;
 default:break;
 }
 }
}

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

相關(guān)文章

  • C語(yǔ)言算法金手指摩爾投票法手撕絕大多數(shù)問題

    C語(yǔ)言算法金手指摩爾投票法手撕絕大多數(shù)問題

    這篇文章主要為大家介紹了C語(yǔ)言算法之金手指摩爾投票法手撕絕大多數(shù)問題的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 在C語(yǔ)言中輸入中文字符串講解

    在C語(yǔ)言中輸入中文字符串講解

    這篇文章主要介紹了在C語(yǔ)言中輸入中文字符串講解,本文通過概念和案例相結(jié)合講述了如何在C語(yǔ)言中使用中文,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 分析C語(yǔ)言一個(gè)簡(jiǎn)單程序

    分析C語(yǔ)言一個(gè)簡(jiǎn)單程序

    本文主要介紹C語(yǔ)言簡(jiǎn)單的程序,這里給大家詳細(xì)介紹C語(yǔ)言代碼,對(duì)函數(shù)概念、頭文件、自定義函數(shù)等基礎(chǔ)信息的講解,希望能幫助剛剛學(xué)習(xí)的同學(xué)
    2016-07-07
  • C語(yǔ)言分支循環(huán)其嵌套語(yǔ)句的使用

    C語(yǔ)言分支循環(huán)其嵌套語(yǔ)句的使用

    本文主要介紹了switch 嵌套和循環(huán)嵌套,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語(yǔ)言算法的時(shí)間復(fù)雜度和空間復(fù)雜度

    C語(yǔ)言算法的時(shí)間復(fù)雜度和空間復(fù)雜度

    這篇文章主要介紹了C語(yǔ)言算法的時(shí)間復(fù)雜度和空間復(fù)雜度,算法在編寫成可執(zhí)行程序后,運(yùn)行時(shí)需要耗費(fèi)時(shí)間資源和空間(內(nèi)存)資源,更多相關(guān)需要的朋友可以參考一下
    2022-07-07
  • C++類和對(duì)象之類的6個(gè)默認(rèn)成員函數(shù)詳解

    C++類和對(duì)象之類的6個(gè)默認(rèn)成員函數(shù)詳解

    類是對(duì)某一事物的抽象描述,具體地講類是C++中的一種構(gòu)造的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于C++類和對(duì)象之類的6個(gè)默認(rèn)成員函數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • C++自動(dòng)析構(gòu)時(shí)的順序問題

    C++自動(dòng)析構(gòu)時(shí)的順序問題

    這篇文章主要介紹了C++自動(dòng)析構(gòu)時(shí)的順序,通過實(shí)例代碼給大家講解了C++ 構(gòu)造與析構(gòu)的執(zhí)行順序,代碼簡(jiǎn)單易懂,非常不錯(cuò)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C語(yǔ)言手寫多級(jí)時(shí)間輪定時(shí)器

    C語(yǔ)言手寫多級(jí)時(shí)間輪定時(shí)器

    這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)手寫多級(jí)時(shí)間輪定時(shí)器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-09-09
  • C++ string 字符串查找匹配實(shí)例代碼

    C++ string 字符串查找匹配實(shí)例代碼

    下面小編就為大家?guī)硪黄狢++ string 字符串查找匹配實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • C語(yǔ)言運(yùn)算符深入探究?jī)?yōu)先級(jí)與結(jié)合性及種類

    C語(yǔ)言運(yùn)算符深入探究?jī)?yōu)先級(jí)與結(jié)合性及種類

    C語(yǔ)言運(yùn)算符號(hào)指的是運(yùn)算符號(hào)。C語(yǔ)言中的符號(hào)分為10類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位操作運(yùn)算符、賦值運(yùn)算符、條件運(yùn)算符、逗號(hào)運(yùn)算符、指針運(yùn)算符、求字節(jié)數(shù)運(yùn)算符和特殊運(yùn)算符
    2022-05-05

最新評(píng)論