版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 .PAGE16 / NUMPAGES16課程設(shè)計:停車場c語言版本的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計,要求用棧模擬停車場,用隊列模擬便道,實現(xiàn)停車場的收費管理系統(tǒng)停車場停滿車后車會停在便道上面下面附上源碼,vc:(下編譯#include /#include /malloc#include /獲取系統(tǒng)時間所用函數(shù) #include /getch()#include /設(shè)置光標信息 mallco#define MaxSize 5 /*定義停車場棧長度*/#define PRICE 0.05 /*每車每分鐘收費值*/#define BASEPRICE 0.5 /基礎(chǔ)停車費#define Esc 27 /退出系統(tǒng)#
2、define Exit 3/結(jié)束對話#define Stop 1/停車#define Drive 2/取車int jx=0,jy=32; /全局變量日志打印位置typedef structint hour; int minute;Time,*PTime; /*時間結(jié)點*/typedef struct /*定義棧元素的類型即車輛信息結(jié)點*/int num ; /*車牌號*/ Time arrtime; /*到達時刻或離區(qū)時刻*/CarNode;typedef struct /*定義棧,模擬停車場*/CarNode stackMaxSize; int top;SqStackCar;typedef
3、struct node /*定義隊列結(jié)點的類型*/int num; /*車牌號*/ struct node *next;QueueNode;typedef struct /*定義隊列,模擬便道*/QueueNode *front,*rear;LinkQueueCar;/*函數(shù)聲明*/PTime get_time();CarNode getcarInfo();void qingping(int a);void gotoxy(int x,int y);void printlog(Time t,int n,int io,char ab,int po,double f);void printstop(
4、int a,int num,int x0,int y0);void printleave(int a,int po,int num); /*初始化棧*/void InitSeqStack(SqStackCar *s) s-top=-1;/* push入站函數(shù) */int push(SqStackCar *s,CarNode x) /數(shù)據(jù)元素x入指針s所指的棧if(s-top=MaxSize-1)return(0);/如果棧滿,返回0elses-stack+s-top=x;/棧不滿,到達車輛入棧return(1); /*棧頂元素出棧*/CarNode pop(SqStackCar *s) Car
5、Node x;if(s-toptop-;return(s-stacks-top+1); /棧不空,返回棧頂元素 /*初始化隊列*/void InitLinkQueue(LinkQueueCar *q) q-front=(QueueNode*)malloc(sizeof(QueueNode); /產(chǎn)生一個新結(jié)點,作頭結(jié)點if(q-front!=NULL)q-rear=q-front;q-front-next=NULL;q-front-num=0; /頭結(jié)點的num保存隊列中數(shù)據(jù)元素的個數(shù) /*數(shù)據(jù)入隊列*/void EnLinkQueue(LinkQueueCar *q,int x) Queue
6、Node *p;p=(QueueNode*)malloc(sizeof(QueueNode); /產(chǎn)生一個新結(jié)點 p-num=x; p-next=NULL;q-rear-next=p; /新結(jié)點入隊列 q-rear=p;q-front-num+; /隊列元素個數(shù)加1 /*數(shù)據(jù)出隊列*/ int DeLinkQueue(LinkQueueCar *q) QueueNode *p;int n;if(q-front=q-rear) /隊空返回0return(0);elsep=q-front-next;q-front-next=p-next;if(p-next=NULL)q-rear=q-front;
7、n=p-num;free(p);q-front-num-;return(n); /返回出隊的數(shù)據(jù)信息/* 車輛到達 */參數(shù):停車棧 停車隊列 車輛信息/返回值:空/功能:對傳入的車輛進行入棧 棧滿則入隊列void Arrive(SqStackCar *stop,LinkQueueCar *lq,CarNode x)int f;f=push(stop,x); /入棧if (f=0) /棧滿EnLinkQueue(lq,x.num); /入隊 printstop(1,lq-front-num,0,23);printlog(x.arrtime,x.num,1,B,lq-front-num,0);
8、qingping(0);printf(您的車停在便道%d號車位上n,lq-front-num);/更新對話elseprintstop(0,stop-top+1,0,23);printlog(x.arrtime,x.num,1,P,stop-top+1,0);qingping(0); printf(您的車停在停車場%d號車位上n,stop-top+1);/更新對話qingping(1);printf(按任意鍵繼續(xù));getch();/* 車輛離開 */參數(shù):停車棧指針s1,暫存棧指針s2,停車隊列指針p,車輛信息x/返回值:空/功能:查找棧中s1的x并出棧,棧中沒有則查找隊p中并出隊,打印離開收
9、費信息void Leave(SqStackCar *s1,SqStackCar *s2,LinkQueueCar *p,CarNode x)double fee=0;int position=s1-top+1; /車輛所在車位int n,f=0;CarNode y;QueueNode *q;while(s1-top -1)&(f!=1) /當棧不空且未找到xy=pop(s1);if(y.num!=x.num) n=push(s2,y);position-;elsef=1;if(y.num=x.num) /找到xgotoxy(33,17);printf(%d:%-2d,(x.arrtime.ho
10、ur-y.arrtime.hour),(x.arrtime.minute-y.arrtime.minute) );fee=(x.arrtime.hour-y.arrtime.hour)*60+(x.arrtime.minute-y.arrtime.minute)*PRICE+BASEPRICE;gotoxy(48,17);printf(%2.1f元n,fee);qingping(0);printf(確認您的車輛信息);qingping(1); printf(按任意鍵繼續(xù));getch();while(s2-top-1) y=pop(s2);f=push(s1,y);n=DeLinkQueue(
11、p);if(n!=0)y.num=n;y.arrtime=x.arrtime;f=push(s1,y);printleave(p-front-num+1,position,s1-top+1); /出棧動畫ji隊列成員入棧printlog(x.arrtime,x.num,0,P,position,fee);printlog(y.arrtime,y.num,1,P,s1-top+1,0);elseprintleave(0,position,s1-top+2);printlog(x.arrtime,x.num,0,P,position,fee);else /若棧中無x while(s2-top -1
12、) /還原棧 y=pop(s2); f=push(s1,y);q=p-front;f=0;position=1;while(f=0&q-next!=NULL) /當隊不空且未找到xif(q-next-num!=x.num)q=q-next;position+;else /找到xq-next=q-next-next;p-front-num-;if(q-next=NULL)p-rear=p-front;gotoxy(33,17);printf(0:0);gotoxy(48,17);printf(0元);qingping(0);printf(您的車將離便道);qingping(1);printf(按
13、任意鍵繼續(xù));getch();printleave(-1,position,p-front-num+1); /出隊動畫printlog(x.arrtime,x.num,0,B,position,0);f=1;if(f=0) /未找到xqingping(0);printf(停車場和便道上均無您的車);qingping(1);printf(按任意鍵繼續(xù));getch();/*獲取系統(tǒng)時間*/返回PTime類型PTime get_time()Time *t;t=new Time;time_t timer; struct tm *tblock; timer=time(NULL); tblock=loc
14、altime(&timer); t-minute=tblock-tm_min;t-hour=tblock-tm_hour;return t;/*移動光標*/光標移動到(x,y)點void gotoxy(int x,int y)COORD coord;coord.X=x;coord.Y=y+3;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);/*畫圖*/畫出系統(tǒng)界面void panitPL()gotoxy(20,4);printf(*對話框*);int x=18,y=6; /起始點int a24=2,0,0,1,-2
15、,0,0,-1; /方向for(int i=0;i2 ;i+)for(int j=0; j20; j+)x+=ai0;y+=ai1;gotoxy(x,y);printf();x+=ai0;y+=ai1;gotoxy(x,y);if(i=0) printf();elseprintf();for(j=0; j); c=getch();if(c=13) return y-10;/enter鍵返回當前選項if(c!=-32)continue;/不是方向鍵進行下次循環(huán)c=getch(); if(c=72) if(y11) y-; /上if(c=80) if(y13) y+; /下/輸入車輛信息CarNo
16、de getcarInfo()PTime T;CarNode x;qingping(0);printf(請輸入您的車牌號n);qingping(1);printf(在下面輸入車輛信息);qingping(2);scanf(%d,&(x.num);T=get_time();x.arrtime=*T;gotoxy(48,15);printf(%d:%d,x.arrtime.hour,x.arrtime.minute);getch();return x;/打印停車場void printcar()gotoxy(0,20);/ printf();printf( 出場暫放區(qū) 1 2 3 4 5 );pri
17、ntf( );printf( 主車道 );printf( );printf( 12 11 10 9 8 7 6 5 4 3 2 1 );printf( );printf( );printf( 便道 停車區(qū) 1 2 3 4 5 );printf( );printf( 停車場管理日志nn);printf( 時間 車牌號 進(1)/出(0) 車位(B便道P停車場) 收費(元) );/打印日志記錄void printlog(Time t,int n,int io,char ab,int po,double f)jy+;gotoxy(jx,jy);/printf( 時間 車牌號 進(1)/出(0) 車位
18、(B便道P停車場) 收費(元) );if(io=0)printf( / %2.1f,f);gotoxy(jx,jy);printf( / %d / %c:%d,io,ab,po);gotoxy(jx,jy);printf( %d:%d / %d,t.hour,t.minute,n); void printstop(int a,int num,int x0,int y0)static char *car=;/int x0=0,y0=23;int x=0,y=28;if(a=0)x=(num+6)*6;for(;x072;x0+)gotoxy(x0,y0);printf(%s,car);Sleep
19、(30);gotoxy(x0,y0);printf( );for(;y0 x;x0-)gotoxy(x0,y0);printf(%s,car);Sleep(50);gotoxy(x0,y0);printf( );gotoxy(x,y);printf(%s,car);elsex=(12-num)*6;y=y-3;for(;x0num)gotoxy(12-num)*6,y);printf( );gotoxy(x,y);printf(%s,car);for(;xx0;x-)gotoxy(x,y-2); printf(%s,car);Sleep(30);gotoxy(x,y-2);printf( );
20、elsei=num+1;for(;numpo;num-)x=(num+6)*6;y=28;for(;x21;y-)gotoxy(x,y);printf(%s,car);Sleep(50);gotoxy(x,y);printf( );for(;x(i-num+6)*6;x-)gotoxy(x,y);printf(%s,car);Sleep(30);gotoxy(x,y);printf( );gotoxy(x,y);printf(%s,car);x=(po+6)*6;y=28; for(;x23;y-)gotoxy(x,y);printf(%s,car);Sleep(50);gotoxy(x,y)
21、;printf( );for(;x0;x-)gotoxy(x,y);printf(%s,car);Sleep(30);gotoxy(x,y);printf( );num+;for(;i-num0;num+)x=(i-num+6)*6;y=21;for(;x72;x+)gotoxy(x,y);printf(%s,car);Sleep(30);gotoxy(x,y);printf( );for(;y(num-1+6)*6;x-)gotoxy(x,y);printf(%s,car);Sleep(30);gotoxy(x,y);printf( );gotoxy(x,y);printf(%s,car);if(a0)x=66;y=25;gotoxy(x,y);printf( );gotoxy(x,y-2); printf(%s,car);Sleep(100);if(12a)gotoxy(12-a)*6,y);printf( );if(a1) gotoxy(x,y);printf(%s,car);printstop(0,i-1,x,y-2);/* main */ int main(void)SqStackCar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南醫(yī)學院《英語閱讀與思辨》2023-2024學年第一學期期末試卷
- 七年級語文上冊第二單元6散步教案新人教版
- 七年級道德與法治上冊第四單元生命的思考第八課探問生命第1課時誤區(qū)警示新人教版
- 三年級數(shù)學上冊7長方形和正方形第3課時周長導學案新人教版
- 三年級數(shù)學上冊第2單元兩三位數(shù)乘一位數(shù)2.8解決問題課時練冀教版
- 慢性胃炎培訓課件
- 《先芥蒂與麻醉》課件
- 人教版八年級物理下冊全冊教案
- 函數(shù)的圖象課件
- 涂料調(diào)色完整版本
- 建筑設(shè)計公司的商業(yè)計劃書
- 建筑景觀設(shè)計勞務合同
- 人教版PEP六年級英語下冊課件unit1
- 人教版四年級數(shù)學上冊寒假每日一練
- 律師法律服務應急預案
- 主動脈夾層介入手術(shù)的護理
- 浙江省嘉興市經(jīng)開區(qū)2023-2024學年四年級上學期期末學科素養(yǎng)評價科學試題
- 森林火災滅火器具使用與技巧課件
- 雙氧水資源綜合利用項目建議書
- 物流園區(qū)及貨運站場規(guī)劃設(shè)計方案
- 如何處理銷售過程中的問題和挑戰(zhàn)
評論
0/150
提交評論