數(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頁,還剩9頁未讀, 繼續(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/#include/malloc#include/獲取系統(tǒng)時(shí)間所用函數(shù)#include/getch()#include/設(shè)置光標(biāo)信息mallco#definemaxsize5/*定義停車場棧長度*/#defineprice0.05/*每車每分鐘收費(fèi)值*/#definebaseprice0.5/基礎(chǔ)停車費(fèi).#defineesc27/退出系統(tǒng)#defineexit3/結(jié)束對話#definestop1/停車#defin

2、edrive2/取車intjx=0,jy=32;/全局變量日志打印位置typedefstructinthour;intminute;time,*ptime;/*時(shí)間結(jié)點(diǎn)*/typedefstruct/*定義棧元素的類型即車輛信息結(jié)點(diǎn)*/intnum;/*車牌號*/timearrtime;/*到達(dá)時(shí)刻或離區(qū)時(shí)刻*/carnode;typedefstruct/*定義棧,模擬停車場*/carnodestackmaxsize;inttop;sqstackcar;typedefstructnode/*定義隊(duì)列結(jié)點(diǎn)的類型*/intnum;/*車牌號*/structnode*next;queuenode;t

3、ypedefstruct/*定義隊(duì)列,模擬便道*/queuenode*front,*rear;linkqueuecar;/*函數(shù)聲明*/ptimeget_time();carnodegetcarinfo();voidqingping(inta);voidgotoxy(intx,inty);voidprintlog(timet,intn,intio,charab,intpo,doublef);voidprintstop(inta,intnum,intx0,inty0);voidprintleave(inta,intpo,intnum);/*初始化棧*/voidinitseqstack(sqsta

4、ckcar*s)s-top=-1;/*push入站函數(shù)*/intpush(sqstackcar*s,carnodex)/數(shù)據(jù)元素x入指針s所指的棧if(s-top=maxsize-1)return(0);/如果棧滿,返回0else.s-stack+s-top=x;/棧不滿,到達(dá)車輛入棧return(1);/*棧頂元素出棧*/carnodepop(sqstackcar*s)carnodex;if(s-toptop-;return(s-stacks-top+1);/棧不空,返回棧頂元素/*初始化隊(duì)列*/voidinitlinkqueue(linkqueuecar*q)q-front=(queuen

5、ode*)malloc(sizeof(queuenode);/產(chǎn)生一個(gè)新結(jié)點(diǎn),作頭結(jié)點(diǎn)if(q-front!=null)q-rear=q-front;q-front-next=null;q-front-num=0;/頭結(jié)點(diǎn)的num保存隊(duì)列中數(shù)據(jù)元素的個(gè)數(shù)/*數(shù)據(jù)入隊(duì)列*/voidenlinkqueue(linkqueuecar*q,intx)queuenode*p;p=(queuenode*)malloc(sizeof(queuenode);/產(chǎn)生一個(gè)新結(jié)點(diǎn)p-num=x;p-next=null;q-rear-next=p;/新結(jié)點(diǎn)入隊(duì)列q-rear=p;q-front-num+;/隊(duì)列元素個(gè)

6、數(shù)加1/*數(shù)據(jù)出隊(duì)列*/intdelinkqueue(linkqueuecar*q)queuenode*p;intn;if(q-front=q-rear)/隊(duì)空返回0.return(0);elsep=q-front-next;q-front-next=p-next;if(p-next=null)q-rear=q-front;n=p-num;free(p);q-front-num-;return(n);/返回出隊(duì)的數(shù)據(jù)信息/*車輛到達(dá)*/參數(shù):停車棧停車隊(duì)列車輛信息/返回值:空/功能:對傳入的車輛進(jìn)行入棧棧滿則入隊(duì)列voidarrive(sqstackcar*stop,linkqueuecar*

7、lq,carnodex)intf;f=push(stop,x);/入棧if(f=0)/棧滿enlinkqueue(lq,x.num);/入隊(duì)printstop(1,lq-front-num,0,23);printlog(x.arrtime,x.num,1,b,lq-front-num,0);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(您的車停在停

8、車場%d號車位上n,stop-top+1);/更新對話qingping(1);printf(按任意鍵繼續(xù));getch();/*車輛離開*/參數(shù):停車棧指針s1,暫存棧指針s2,停車隊(duì)列指針p,車輛信息x/返回值:空/功能:查找棧中s1的x并出棧,棧中沒有則查找隊(duì)p中并出隊(duì),打印離開收費(fèi)信息voidleave(sqstackcar*s1,sqstackcar*s2,linkqueuecar*p,carnodex)doublefee=0;intposition=s1-top+1;/車輛所在車位intn,f=0;carnodey;queuenode*q;.while(s1-top-1)&(f!=1

9、)/當(dāng)棧不空且未找到xy=pop(s1);if(y.num!=x.num)n=push(s2,y);position-;elsef=1;if(y.num=x.num)/找到xgotoxy(33,17);rintf(%d:%-2d,(x.arrtime.hour-y.arrtime.hour),(x.arrtime.minute-y.arrtime.minute);ee=(x.arrtime.hour-y.arrtime.hour)*60+(x.arrtime.minute-y.arrtime.minute)*price+baseprice;gotoxy(48,17);printf(%2.1f元

10、n,fee);qingping(0);printf(確認(rèn)您的車輛信息);qingping(1);printf(按任意鍵繼續(xù));getch();while(s2-top-1)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-front-num+1,position,s1-top+1);/出棧動(dòng)畫ji隊(duì)列成員入棧printlog(x.arrtime,x.num,0,p,position,fee);printlog(y.arrtime,y.num,

11、1,p,s1-top+1,0);elseprintleave(0,position,s1-top+2);printlog(x.arrtime,x.num,0,p,position,fee);else/若棧中無xwhile(s2-top-1)/還原棧y=pop(s2);f=push(s1,y);q=p-front;f=0;.position=1;while(f=0&q-next!=null)/當(dāng)隊(duì)不空且未找到xif(q-next-num!=x.num)q=q-next;position+;else/找到xq-next=q-next-next;p-front-num-;if(q-next=null

12、)p-rear=p-front;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)/未找到xqingping(0);printf(停車場和便道上均無您的車);qingping(1);printf(按任意鍵繼續(xù));getch();/*

13、獲取系統(tǒng)時(shí)間*/返回ptime類型ptimeget_time()time*t;t=newtime;time_ttimer;structtm*tblock;timer=time(null);tblock=localtime(&timer);t-minute=tblock-tm_min;t-hour=tblock-tm_hour;returnt;/*移動(dòng)光標(biāo)*/蔣光標(biāo)移動(dòng)到(x,y)點(diǎn)voidgotoxy(intx,inty)coordcoord;coord.x=x;.coord.y=y+3;setconsolecursorposition(getstdhandle(std_output_hand

14、le),coord);/*畫圖*/畫出系統(tǒng)界面voidpanitpl()gotoxy(20,4);printf(*對話框*);intx=18,y=6;/起始點(diǎn)inta24=2,0,0,1,-2,0,0,-1;/方向for(inti=0;i2;i+)for(intj=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)returny-10;/enter鍵返回當(dāng)前選項(xiàng)if(c!=-32)continue

15、;/不是方向鍵進(jìn)行下次循環(huán)c=getch();if(c=72)if(y11)y-;/上if(c=80)if(y13)y+;/下/輸入車輛信息carnodegetcarinfo()ptimet;carnodex;.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();returnx;/打

16、印停車場voidprintcar()gotoxy(0,20);/printf();printf(出場暫放區(qū)12345);printf(-);printf(主車道);printf(-);printf(121110987654321);printf();printf();printf(便道停車區(qū)12345);printf();printf(停車場管理日志nn);printf(時(shí)間車牌號進(jìn)(1)/出(0)車位(b便道p停車場)收費(fèi)(元);/打印日志記錄voidprintlog(timet,intn,intio,charab,intpo,doublef)jy+;gotoxy(jx,jy);/print

17、f(時(shí)間車牌號進(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);voidprintstop(inta,intnum,intx0,inty0)staticchar*car=【】;/intx0=0,y0=23;intx=0,y=28;if(a=0).x=(num+6)*6;for(;x072;x0+)gotoxy(x0,y0);printf(%s,car);sleep(

18、30);gotoxy(x0,y0);printf();for(;y0x;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();elsei=

19、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);printf()

20、;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*/intmain(void)sqstackcars1,s2;

溫馨提示

  • 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

提交評論