數(shù)據(jù)結(jié)構(gòu)c語言版課程設(shè)計(jì)停車場管理系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)c語言版課程設(shè)計(jì)停車場管理系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)c語言版課程設(shè)計(jì)停車場管理系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)c語言版課程設(shè)計(jì)停車場管理系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)c語言版課程設(shè)計(jì)停車場管理系統(tǒng)_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計(jì):停車場c語言版本的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),要求用棧模擬停車場,用隊(duì)列模擬便道,實(shí)現(xiàn)停車場的收費(fèi)管理系統(tǒng)停車場停滿車后車會停在便道上面下面附上源碼,vc:(下編譯#include stdio。h /include <stdlib.h> /malloc#include time.h /獲取系統(tǒng)時(shí)間所用函數(shù) include conio。h> /getch()include windows。h /設(shè)置光標(biāo)信息 mallcodefine MaxSize 5 /*定義停車場棧長度/#define PRICE 0。05 /*每車每分鐘收費(fèi)值/define BASEPRICE 0。5 /

2、基礎(chǔ)停車費(fèi)define Esc 27 /退出系統(tǒng)define Exit 3/結(jié)束對話define Stop 1/停車define Drive 2/取車int jx=0,jy=32; /全局變量日志打印位置typedef structint hour; int minute;Time,PTime; /*時(shí)間結(jié)點(diǎn)/typedef struct /定義棧元素的類型即車輛信息結(jié)點(diǎn)/int num ; /*車牌號/ Time arrtime; /*到達(dá)時(shí)刻或離區(qū)時(shí)刻/CarNode;typedef struct /*定義棧,模擬停車場*/CarNode stackMaxSize; int top;SqS

3、tackCar;typedef struct node /定義隊(duì)列結(jié)點(diǎn)的類型*/int num; /*車牌號*/ struct node next;QueueNode;typedef struct /定義隊(duì)列,模擬便道*/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

4、printstop(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=MaxSize1)return(0);/如果棧滿,返回0elses>stack+s-top=x;/棧不滿,到達(dá)車輛入棧return(1); /棧頂元素出棧/CarNode pop(SqStackCa

5、r s) CarNode x;if(stop0)x。num=0; x.arrtime。hour=0;x.arrtime。minute=0;return(x); /如果棧空,返回空值elses>top-;return(s-stackstop+1); /棧不空,返回棧頂元素 /初始化隊(duì)列*/void InitLinkQueue(LinkQueueCar q) qfront=(QueueNode)malloc(sizeof(QueueNode)); /產(chǎn)生一個(gè)新結(jié)點(diǎn),作頭結(jié)點(diǎn)if(qfront!=NULL)qrear=q-front;qfront->next=NULL;qfrontnum

6、=0; /頭結(jié)點(diǎn)的num保存隊(duì)列中數(shù)據(jù)元素的個(gè)數(shù) /數(shù)據(jù)入隊(duì)列*/void EnLinkQueue(LinkQueueCar q,int x) QueueNode p;p=(QueueNode)malloc(sizeof(QueueNode)); /產(chǎn)生一個(gè)新結(jié)點(diǎn) p-num=x; p>next=NULL;q>rearnext=p; /新結(jié)點(diǎn)入隊(duì)列 q>rear=p;qfront-num+; /隊(duì)列元素個(gè)數(shù)加1 /數(shù)據(jù)出隊(duì)列*/ int DeLinkQueue(LinkQueueCar *q) QueueNode *p;int n;if(qfront=q>rear) /

7、隊(duì)空返回0return(0);elsep=qfront-next;q>front->next=pnext;if(pnext=NULL)qrear=qfront;n=p-num;free(p);q>front>num;return(n); /返回出隊(duì)的數(shù)據(jù)信息/* 車輛到達(dá) */參數(shù):停車棧 停車隊(duì)列 車輛信息/返回值:空/功能:對傳入的車輛進(jìn)行入棧 棧滿則入隊(duì)列void Arrive(SqStackCar stop,LinkQueueCar *lq,CarNode x)int f;f=push(stop,x); /入棧if (f=0) /棧滿EnLinkQueue(lq

8、,x。num); /入隊(duì) printstop(1,lq-front->num,0,23);printlog(x.arrtime,x。num,1,B,lqfront->num,0); qingping(0);printf(”您的車停在便道d號車位上n”,lqfrontnum);/更新對話elseprintstop(0,stop-top+1,0,23);printlog(x。arrtime,x。num,1,P,stoptop+1,0);qingping(0); printf(”您的車停在停車場d號車位上n",stop-top+1);/更新對話qingping(1);print

9、f("按任意鍵繼續(xù)”);getch();/* 車輛離開 */參數(shù):停車棧指針s1,暫存棧指針s2,停車隊(duì)列指針p,車輛信息x/返回值:空/功能:查找棧中s1的x并出棧,棧中沒有則查找隊(duì)p中并出隊(duì),打印離開收費(fèi)信息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) /當(dāng)棧不空且未找到xy=pop(s1);if

10、(y。num!=x。num) n=push(s2,y);position-;elsef=1;if(y。num=x.num) /找到xgotoxy(33,17);printf(”d:%-2d",(x.arrtime。houry。arrtime。hour),(x。arrtime.minutey。arrtime.minute) );fee=(x.arrtime。hour-y。arrtime。hour)60+(x.arrtime.minutey.arrtime.minute))PRICE+BASEPRICE;gotoxy(48,17);printf(”2。1f元n",fee);qi

11、ngping(0);printf(”確認(rèn)您的車輛信息");qingping(1); printf(”按任意鍵繼續(xù)”);getch();while(s2->top1) y=pop(s2);f=push(s1,y);n=DeLinkQueue(p);if(n!=0)y。num=n;y。arrtime=x。arrtime;f=push(s1,y);printleave(p->frontnum+1,position,s1>top+1); /出棧動(dòng)畫ji隊(duì)列成員入棧printlog(x。arrtime,x。num,0,P',position,fee);printlog

12、(y。arrtime,y.num,1,'P',s1>top+1,0);elseprintleave(0,position,s1top+2);printlog(x.arrtime,x。num,0,P,position,fee);else /若棧中無x while(s2>top 1) /還原棧 y=pop(s2); f=push(s1,y);q=pfront;f=0;position=1;while(f=0q->next!=NULL) /當(dāng)隊(duì)不空且未找到xif(qnext-num!=x.num)q=q-next;position+;else /找到xq>ne

13、xt=q->next->next;pfront-num-;if(qnext=NULL)p-rear=pfront;gotoxy(33,17);printf("0:0”);gotoxy(48,17);printf("0元”);qingping(0);printf("您的車將離便道”);qingping(1);printf(”按任意鍵繼續(xù)”);getch();printleave(-1,position,p-front-num+1); /出隊(duì)動(dòng)畫printlog(x。arrtime,x。num,0,'B,position,0);f=1;if(f=0

14、) /未找到xqingping(0);printf(”停車場和便道上均無您的車”);qingping(1);printf(”按任意鍵繼續(xù)");getch();/*獲取系統(tǒng)時(shí)間*/返回PTime類型PTime get_time()Time t;t=new Time;time_t timer; struct tm *tblock; timer=time(NULL); tblock=localtime(timer); tminute=tblocktm_min;t-hour=tblocktm_hour;return t;/移動(dòng)光標(biāo)*/蔣光標(biāo)移動(dòng)到(x,y)點(diǎn)void gotoxy(int x

15、,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; /起始點(diǎn)int a24=2,0,0,1,2,0,0,1; /方向for(int i=0;i2 ;i+)for(int j=0; j<20; j+)x+=ai0;y+=ai1;gotoxy(x,y);printf(”");x+=

16、ai0;y+=ai1;gotoxy(x,y);if(i=0) printf(”);elseprintf(”");for(j=0; j<12; j+)x+=ai2; y+=ai3;gotoxy(x,y);printf("");x+=ai2; y+=ai3;gotoxy(x,y);if(i=0)printf("");elseprintf(”);gotoxy(22,8);printf(”小王:”);gotoxy(22,11);printf("顧客:");gotoxy(22,14);printf("* 停車信息 *&

17、quot;);gotoxy(23,15);printf("車牌號:”);gotoxy(42,15);printf(”時(shí)間:”);gotoxy(23,17);printf(”停車時(shí)長:”);gotoxy(42,17);printf(”收費(fèi):");/*清屏函數(shù)/更新對話框前將原對話晴空void qingping(int a)if(a=0) /清空小王的對話gotoxy(28,8);printf(” ”);gotoxy(28,9);printf(" ”);gotoxy(28,8);else if(a=1) /清空顧客的對話gotoxy(28,11);printf(” &

18、quot;);gotoxy(28,12);printf(" ”);gotoxy(28,13);printf(” ”);gotoxy(28,11);else /清空車輛信息gotoxy(31,15);printf(” ”);gotoxy(48,15);printf(" ”);gotoxy(33,17);printf(” ");gotoxy(48,17);printf(" ”);gotoxy(31,15);/用上下鍵移動(dòng)選擇int getkey()char c;int x=28,y=11;while(1)gotoxy(x,11);printf("

19、");gotoxy(x,12);printf(" ”);gotoxy(x,13);printf(” ”);gotoxy(x,y);printf(”); c=getch();if(c=13) return y-10;/enter鍵返回當(dāng)前選項(xiàng)if(c!=32)continue;/不是方向鍵進(jìn)行下次循環(huán)c=getch(); if(c=72) if(y>11) y-; /上if(c=80) if(y<13) y+; /下/輸入車輛信息CarNode getcarInfo()PTime T;CarNode x;qingping(0);printf(”請輸入您的車牌號n&

20、quot;);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 ");printf(”- ");printf(" 主

21、車道 ”);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(" 時(shí)間 車牌號 進(jìn)(1)/出(0) 車位(B便道P停車場) 收費(fèi)(元) ”);/打印日志記錄void printlog(Time t,int n,int io,char ab,int po,double f)jy+;gotoxy(jx,jy);/printf(” 時(shí)

22、間 車牌號 進(jìn)(1)/出(0) 車位(B便道P停車場) 收費(fèi)(元) ”);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;x

23、0+)gotoxy(x0,y0);printf("%s",car);Sleep(30);gotoxy(x0,y0);printf(” ”);for(;y0y;y0+)gotoxy(x0,y0);printf(”%s",car);Sleep(100);gotoxy(x0,y0);printf(" ");for(;x0x;x0)gotoxy(x0,y0);printf("s”,car);Sleep(50);gotoxy(x0,y0);printf(” ”);gotoxy(x,y);printf("%s”,car);elsex=(

24、12num)6;y=y3;for(;x0<x;x0+)gotoxy(x0,y0);printf(”%s”,car);Sleep(30);gotoxy(x0,y0);printf(" ”);gotoxy(x,y);printf(”s",car);void printleave(int a,int po,int num)static char car=”【】”;int x0=0,y0=23;int x=0,y=28;int i;if(a=-1) x=(12po)*6;y=y-3;gotoxy(x,y);printf(” ");gotoxy(x,y2); prin

25、tf(”s”,car);Sleep(100);if(12>num)gotoxy(12-num)6,y);printf(" ”);gotoxy(x,y);printf("s”,car);for(;x>x0;x-)gotoxy(x,y2); printf("s”,car);Sleep(30);gotoxy(x,y2);printf(” ”);elsei=num+1;for(;num>po;num-)x=(num+6)*6;y=28;for(;x72;x+)gotoxy(x,y);printf(”%s”,car);Sleep(30);gotoxy(x,

26、y);printf(” ");for(;y>21;y-)gotoxy(x,y);printf(”%s”,car);Sleep(50);gotoxy(x,y);printf(" ”);for(;x>(inum+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(;x72;x+)gotoxy(x,y);printf(”s”,car);Sleep

27、(30);gotoxy(x,y);printf(" ");for(;y23;y)gotoxy(x,y);printf(”%s”,car);Sleep(50);gotoxy(x,y);printf(” ”);for(;x>0;x)gotoxy(x,y);printf(”s",car);Sleep(30);gotoxy(x,y);printf(" ”);num+;for(;inum0;num+)x=(i-num+6)*6;y=21;for(;x<72;x+)gotoxy(x,y);printf("%s”,car);Sleep(30);gotoxy(x,y);printf(” ”);for(;y28;y+)gotoxy(x,y);printf("%s”,car);Sleep(50);gotoxy(x,y);printf(” ");for(;x(num-1+6)6;x-)gotoxy(x,y);printf(”%s”,car);Sleep(30);gotoxy(x,y);printf(” ");gotoxy(x,y);printf("s”,car);if(a>0)x=66;y=25;gotoxy(x,y);printf(” ");gotoxy(x,y-2); printf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論