日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

课程设计---停车场管理系统

發布時間:2024/7/5 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 课程设计---停车场管理系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?【要求C或C++編程】
設停車場是一個可停放n輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場內按車輛到達時間的先后順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在停車場的最北端),若停車場內已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,在它之后進入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模擬程序。
【基本要求】
以棧模擬停車場,以隊列模擬車場外的便道,按照從終端讀入的輸入數據序列進行模擬管理。每一組輸入數據包括三個數據項:汽車“到達”或“離去”信息、汽車牌照號碼以及到達或離去的時刻。對每一組輸入數據進行操作后的輸出信息為:若是車輛到達,則輸出汽車在停車場內或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內停留的時間和應交納的費用(在便道上停留的時間不收費)。棧以順序結構實現,隊列以鏈表結構實現。

完整的實現代碼如下:

第一種方法:

#include "stdio.h" #include "stdlib.h" #include "string.h"#define MAX 2 //車庫容量 #define price 0.05 //每車每分鐘費用 typedef struct time //時間結點 { int hour; int min; }Time; typedef struct node //車輛信息結點 { char num[10]; Time reach; Time leave; }CarNode; typedef struct NODE //模擬車站 { CarNode *stack[MAX+1]; int top; }SeqStackCar; typedef struct car { CarNode *data; struct car *next; }QueueNode; typedef struct Node //模擬通道 { QueueNode *head; QueueNode *rear; }LinkQueueCar;void InitStack(SeqStackCar *); //初始化棧 int InitQueue(LinkQueueCar *); //初始化便道 int arrival(SeqStackCar *,LinkQueueCar *); //車輛到達 void leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); //車輛離開 void list(SeqStackCar,LinkQueueCar); //顯示存車信息int main(void) { SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch; InitStack(&Enter); //初始化車站 InitStack(&Temp); //初始化讓路的臨時棧 InitQueue(&Wait); //初始化通道 while(1) { printf("\n 1. The car arrive\n"); printf(" 2. The car leave\n"); printf(" 3. The schedule\n"); printf(" 4. Exit\n"); while(1) { scanf("%d",&ch); if(ch>=1 && ch<=4)break; elseprintf("\nPlease choose: 1|2|3|4."); } switch(ch) { case 1:arrival(&Enter,&Wait); //車輛到達break;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; s->top=0; for(i=0;i<=MAX;i++) s->stack[s->top]=NULL; } int InitQueue(LinkQueueCar *Q) //初始化便道 { Q->head=(QueueNode *)malloc(sizeof(QueueNode)); if(Q->head!=NULL) { Q->head->next=NULL; Q->rear=Q->head; return 1; } else return -1; } void print(CarNode *p,int room) //打印出站車的信息 { int A1,A2,B1,B2; printf("\nplease input thedepart time:/**:**/"); scanf("%d:%d",&(p->leave.hour),&(p->leave.min)); printf("\nthe number of the car:"); puts(p->num); printf("\nthe time the car arrive: %d:%d",p->reach.hour,p->reach.min); printf("the depart time: %d:%d",p->leave.hour,p->leave.min); A1=p->reach.hour; A2=p->reach.min; B1=p->leave.hour; B2=p->leave.min; printf("\nthe fee: %2.1f元",((B1-A1)*60+(B2-A2))*price); free(p); } int arrival(SeqStackCar *Enter,LinkQueueCar *W) //車輛到達 { CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode)); flushall(); printf("\ninput the number of the car(例:陜A1234):"); gets(p->num); if(Enter->top<MAX) //車場未滿,車進車場{ Enter->top++; printf("\nthe place of the car.",Enter->top); printf("\nthe time thecar arrive:/**:**/"); scanf("%d:%d",&(p->reach.hour),&(p->reach.min)); Enter->stack[Enter->top]=p; return 1; } else //車場已滿,車進便道{ printf("\n該車須在便道等待!"); 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 i, room; CarNode *p,*t; QueueNode *q; //判斷車場內是否有車if(Enter->top>0) //有車{ while(1) //輸入離開車輛的信息 { printf("\n請輸入車在車場的位置/1--%d/:",Enter->top); scanf("%d",&room); if(room>=1&&room<=Enter->top)break; } while(Enter->top>room) //車輛離開 { Temp->top++; 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) { 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<MAX) //便道的車輛進入車場{ q=W->head->next; t=q->data; Enter->top++; printf("\n便道的%s號車進入車場第%d位置.",t->num,Enter->top); printf("\n請輸入現在的時間/**:**/:"); scanf("%d:%d",&(t->reach.hour),&(t->reach.min)); W->head->next=q->next; if(q==W->rear) W->rear=W->head; Enter->stack[Enter->top]=t; free(q); } elseprintf("\n便道里沒有車.\n"); } elseprintf("\n車場里沒有車."); //沒車 } void list1(SeqStackCar *S) //列表顯示車場信息 { int i; if(S->top>0) //判斷車站內是否有車{ printf("\n車場:"); printf("\n 位置 到達時間 車牌號\n"); for(i=1;i<=S->top;i++) { printf(" %d ",i); printf("%d:%d ",S->stack[i]->reach.hour,S->stack[i]->reach.min); puts(S->stack[i]->num); } } elseprintf("\n車場里沒有車"); } void list2(LinkQueueCar *W) //列表顯示便道信息 { QueueNode *p; p=W->head->next; if(W->head!=W->rear) //判斷通道上是否有車 { printf("\n等待車輛的號碼為:"); while(p!=NULL) { puts(p->data->num); p=p->next; } } elseprintf("\n便道里沒有車."); } void list(SeqStackCar S,LinkQueueCar W) { int flag,tag; flag=1; while(flag) { printf("\n請選擇 1|2|3:"); printf("\n1.車場\n2.便道\n3.返回\n"); while(1) { scanf("%d",&tag); if(tag>=1 || tag<=3)break; elseprintf("\n請選擇 1|2|3:"); } switch(tag) {case 1:list1(&S);break; //列表顯示車場信息case 2:list2(&W);break; //列表顯示便道信息case 3:flag=0;break;default: break;} } }

第二種方法:

#include "stdio.h" #include "stdlib.h"#define SIZE 10 typedef struct {int hour;int min; }time; //車的時間結構體typedef struct {int num;int position;time t;float money; }Car; //車的信息 typedef struct {Car elem[SIZE+1]; int top; //指向便道中的第一個空位 } Stack; //創建堆棧typedef struct Node {Car data; struct Node *next; }CQueueNode;//建立過道的程序: typedef struct {CQueueNode *front;CQueueNode *rear; }LinkQueue; //設置的便道//便道初始化程序 void InitQueue(LinkQueue *Q) {Q->front=(CQueueNode*)malloc(sizeof(CQueueNode)); //使mallo返回的指針轉換為指向CQueueNode類型數據的指針if(Q->front!=NULL) {Q->rear=Q->front; Q->front->next=NULL;} }int EnterQueue(LinkQueue *Q,Car *t) {CQueueNode *NewNode; NewNode=(CQueueNode*)malloc(sizeof(CQueueNode)); //給便道申請空間if(NewNode!=NULL) {NewNode->data.num=t->num; NewNode->data.t.hour=t->t.hour; NewNode->data.t.min=t->t.min; NewNode->next=NULL; Q->rear->next=NewNode; Q->rear=NewNode; return 1; } else return 0; } void InitStack(Stack *S) {S->top=0; } //確保堆棧為空void Push(Stack *S,Car *r) //便道中的車入庫 {S->top++; S->elem[S->top].num=r->num; r->position=S->elem[S->top].position=S->top; S->elem[S->top].t.hour=r->t.hour; S->elem[S->top].t.min=r->t.min; } int IsEmpty(Stack* S) //判斷車庫是否為空 {return(S->top==0?1:0); }int IsFull(Stack *S) //判斷車庫是否為滿 {return(S->top==SIZE?1:0); }int GetTop(Stack *S,Car *n) //車離開車庫 {n->num=S->elem[S->top].num; n->position=S->elem[S->top].position; n->t.hour=S->elem[S->top].t.hour; n->t.min=S->elem[S->top].t.min; return 1; } int DeleteQueue(LinkQueue *Q,Car *x) {CQueueNode *p; if(Q->front==Q->rear)return 0; //判斷便道為空p=Q->front->next; //將便道中的車放入車庫Q->front->next=p->next; if(Q->rear==p) Q->rear=Q->front; x->num=p->data.num; x->t.hour=p->data.t.hour; x->t.min=p->data.t.min; free(p); //釋放臨時指針return 1; } void In(Stack *S,LinkQueue *Q,Car*r) {if(IsFull(S)) {printf("車庫已滿,請等待!"); EnterQueue(Q,r); //車進入便道 }else {Push(S,r); printf("\n您現在所在位置 %d",r->position); //打印車的位置} } void TaM(Car *r,int h,int m) {if(m>r->t.min){r->t.min+=60;r->t.hour-=1;}h=r->t.hour-h;m=r->t.min-m;printf("\n停車 %d小時 %d 分鐘\n",h,m);printf("每小時收費30元\n");h=h*60;m=h+m; r->money=0.5*m; printf("請支付金額%.2f元\n",r->money); //輸出車主應付金額 } void Out(Stack *S,Stack *S0,Car *r,LinkQueue *Q) {int tag=S->top; Car x; if(IsEmpty(S))printf("沒有此車!"); else {for(;r->num!=S->elem[tag].num && tag>0;tag--) {Push(S0,&S->elem[tag]); S->top--; } if(r->num==S->elem[tag].num) {TaM(r,S->elem[tag].t.hour,S->elem[tag].t.min); S->top--; for(;S0->top>0;S0->top--) Push(S,&S0->elem[S0->top]); if(S->top<SIZE && Q->front!=Q->rear) //判斷車庫是否有此車,有就找到此車,然后退出{DeleteQueue(Q,&x);Push(S,&x); } }else if(tag==0) //過道中的車無需收車費{printf("未進入停車場應支付金額 0元!"); for(;S0->top>0;S0->top--)Push(S,&S0->elem[S0->top]); } } }void print1(Stack *S) {int tag; Car x; printf("停車場停車情況:\n"); if(IsEmpty(S))printf("無車!"); for(tag=S->top;S->top>0;S->top--) if(GetTop(S,&x)) //顯示車庫中個車的信息及到達時間printf("車牌號 %d,所在位置 %d,到達/離開時間 %d:%d\n",x.num,x.position,x.t.hour,x.t.min); S->top=tag; }void print2(LinkQueue *Q) {CQueueNode *p; p=Q->front->next; for(;p!=NULL;p=p->next) //顯示過道上車的信息及到達時間printf("等待車牌號 %d, 到達/離開時間 %d:%d",p->data.num,p->data.t.hour,p->data.t.min); }void print() {printf("\n***********************************歡迎光臨*************************************\n"); printf("\n 請選擇:\n"); printf("\n 1 :到達"); printf("\n 2 :離開"); printf("\n 3 :搜索"); printf("\n 4 :退出\n"); printf("\n"); }int main(void) {int n,m,i=1,j,flag=0;Car c[10];Stack S,S0; //設定堆棧S,SOLinkQueue Q; //便道InitStack(&S); //堆棧SInitStack(&S0); //臨時堆棧S0InitQueue(&Q);while(1) {print(); scanf("%d",&m); switch(m){case 1:printf("\n請輸入車牌號:"); scanf("%d",&c[i].num); printf("\n請輸入到達/離開時間:"); scanf("%d:%d",&c[i].t.hour,&c[i].t.min); In(&S,&Q,&c[i]);i++; //車輛的情況break;case 2:printf("\n請輸入車牌號:"); scanf("%d",&n); for(j=0;j<10;j++) if(n==c[j].num)break; printf("\n請輸入到達/離開時間:"); scanf("%d:%d",&c[j].t.hour,&c[j].t.min); Out(&S,&S0,&c[j],&Q); //車輛的情況break; case 3:print1(&S); //輸出車庫中車的信息print2(&Q); //輸出過道上車的信息break; //終止case 4:flag=1;break; default:printf("\n輸入錯誤,請輸入 1,2,3 或4"); } if(flag)break; //結束程序} return 0; }



?

總結

以上是生活随笔為你收集整理的课程设计---停车场管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本加勒比在线 | 四虎影院一区 | av在线色 | 久久久噜噜噜www成人 | av大帝 | 美女少妇直播 | 国产69视频在线观看 | 日本在线免费观看 | 日本天堂网在线 | av国产片 | 国产视频播放 | 色老头一区二区三区在线观看 | 一级片一区二区三区 | 爱爱视频一区二区 | 91在线观看免费高清 | 色就色综合 | 欧美成人自拍 | 亚洲视频一二三区 | 精品久久九九 | 日韩av一二区| 日韩视频免费在线 | 中文字幕日韩精品亚洲一区小树林 | aaaa免费视频 | 国产精品无码99re | 中国女人内精69xxxxxx | 国产一线二线三线在线观看 | 射美女 | 日本xxxx18高清hd | 美女日批视频在线观看 | 3p视频在线观看 | 麻豆一区二区在线观看 | 魔女鞋交玉足榨精调教 | 婷婷亚洲综合 | 91成人在线观看喷潮 | 午夜爽爽爽视频 | 久久久久亚洲精品 | 亚洲激情网站 | 亚洲无av| 国产精品suv一区 | 丰满熟女人妻一区二区三 | 右手影院亚洲欧美 | 久久狠 | 久久九九综合 | 日韩国产一区 | 丰满人妻一区二区三区53号 | 玖玖玖精品 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | av片一区二区三区 | 五月婷婷在线播放 | 亚洲视频综合网 | 成人av免费在线 | 香蕉网站在线 | 午夜爽爽视频 | 亚洲乱码国产乱码精品 | 91浏览器在线观看 | 午夜免费大片 | 伊人久久久久久久久久久 | 人人插人人爽 | 午夜男人的天堂 | 揄拍成人国产精品视频 | 亚洲成人一区在线观看 | 91丨国产| 国产自偷自拍 | 波多野结衣欲乱上班族 | 中国极品少妇xxxx | 日韩国产电影 | 俄罗斯嫩小性bbwbbw | 午夜欧美在线 | 国产重口老太伦 | 在线免费三级 | 五月激情小说网 | 天堂一二三区 | 日日爽| 国产视频精品一区二区三区 | 黄污视频在线播放 | 综合久久久久久 | av在线资源播放 | 国产一区二区精彩视频 | 一区二区的视频 | 欧美日韩一区二区三区在线观看 | 三级免费毛片 | 国产午夜福利一区二区 | 91秘密入口 | 91精品国产91久久久久久吃药 | 中文字幕一区二区三区人妻 | 91精品婷婷国产综合久久蝌蚪 | 一本久道视频一本久道 | 欧美亚洲国产另类 | 性欧美另类| 亚洲一区在线视频 | 国产精品久久久久久久久免费 | 清清草免费视频 | 日本少妇激情 | av片在线观看免费 | 911美女片黄在线观看游戏 | 天天综合久久综合 | 久久精品美乳 | 国产高清一 | 97成网|