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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)課程設計:停車場 c語言版本的數(shù)據(jù)結構課程設計,要求用棧模擬停車場,用隊列模擬便道,實現(xiàn)停車場的收費管理系統(tǒng)數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第1頁。數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第1頁。停車場停滿車后車會停在便道上面下面附上源碼,vc:(下編譯#include<stdio.h>//#include<stdlib.h>//malloc#include<time.h>//獲取系統(tǒng)時間所用函數(shù)#include<conio.h>//getch()#include<windows.h>//設置光標信息mallco#defineMaxSize5/*定義停車場棧長度*/#definePRICE0.05/*每車每分鐘收費值*/數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第2頁。#defineBASEPRICE0.5//基礎停車費數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第2頁。#defineEsc27//退出系統(tǒng)#defineExit3 //結束對話#defineStop1 //停車#defineDrive2 //取車intjx=0,jy=32;//全局變量日志打印位置typedefstruct{inthour;intminute;}Time,*PTime;/*時間結點*/typedefstruct/*定義棧元素的類型即車輛信息結點*/{intnum;/*車牌號*/Timearrtime;/*到達時刻或離區(qū)時刻*/}CarNode;typedefstruct/*定義棧,模擬停車場*/{CarNodestack[MaxSize];inttop;}SqStackCar;typedefstructnode/*定義隊列結點的類型*/{intnum;/*車牌號*/structnode*next;}QueueNode;typedefstruct/*定義隊列,模擬便道*/{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(SqStackCar*s){ s->top=-1;}/*push入站函數(shù)*/intpush(SqStackCar*s,CarNodex)//數(shù)據(jù)元素x入指針s所指的棧{ if(s->top==MaxSize-1) return(0); //如果棧滿,返回0數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第3頁。 else數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第3頁。 { s->stack[++s->top]=x; //棧不滿,到達車輛入棧 return(1); }}/*棧頂元素出棧*/CarNodepop(SqStackCar*s){ CarNodex; if(s->top<0) { x.num=0; x.arrtime.hour=0; x.arrtime.minute=0; return(x);//如果???返回空值 } else { s->top--; return(s->stack[s->top+1]);//棧不空,返回棧頂元素 }}/*初始化隊列*/voidInitLinkQueue(LinkQueueCar*q){ q->front=(QueueNode*)malloc(sizeof(QueueNode));//產(chǎn)生一個新結點,作頭結點 if(q->front!=NULL) { q->rear=q->front; q->front->next=NULL; q->front->num=0;//頭結點的num保存隊列中數(shù)據(jù)元素的個數(shù) }}/*數(shù)據(jù)入隊列*/voidEnLinkQueue(LinkQueueCar*q,intx){ QueueNode*p; p=(QueueNode*)malloc(sizeof(QueueNode));//產(chǎn)生一個新結點 p->num=x; p->next=NULL; q->rear->next=p;//新結點入隊列 q->rear=p; q->front->num++;//隊列元素個數(shù)加1}/*數(shù)據(jù)出隊列*/intDeLinkQueue(LinkQueueCar*q){ QueueNode*p; intn;數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第4頁。 if(q->front==q->rear)//隊空返回0數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第4頁。 return(0); else { p=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);//返回出隊的數(shù)據(jù)信息 }}/*********************車輛到達***************************///參數(shù):停車棧停車隊列車輛信息//返回值:空//功能:對傳入的車輛進行入棧棧滿則入隊列voidArrive(SqStackCar*stop,LinkQueueCar*lq,CarNodex){ intf; 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); qingping(0); printf("您的車停在便道%d號車位上\n",lq->front->num); //更新對話 } else { printstop(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中并出隊,打印離開收費信息voidLeave(SqStackCar*s1,SqStackCar*s2,LinkQueueCar*p,CarNodex){ doublefee=0; intposition=s1->top+1;//車輛所在車位 intn,f=0; CarNodey;數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第5頁。 QueueNode*q;數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第5頁。 while((s1->top>-1)&&(f!=1))//當棧不空且未找到x { y=pop(s1); if(y.num!=x.num) { n=push(s2,y); position--; } else f=1; } if(y.num==x.num)//找到x { gotoxy(33,17); printf("%d:%-2d",(x.arrtime.hour-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(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); } else { printleave(0,position,s1->top+2); printlog(x.arrtime,x.num,0,'P',position,fee); } } else//若棧中無x { while(s2->top>-1)//還原棧 {y=pop(s2); f=push(s1,y); } q=p->front;數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第6頁。 f=0;數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第6頁。 position=1; while(f==0&&q->next!=NULL)//當隊不空且未找到x if(q->next->num!=x.num) { q=q->next; position++; } else//找到x { q->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("按任意鍵繼續(xù)"); getch(); printleave(-1,position,p->front->num+1);//出隊動畫 printlog(x.arrtime,x.num,0,'B',position,0); f=1; } if(f==0)//未找到x { qingping(0); printf("停車場和便道上均無您的車"); qingping(1); printf("按任意鍵繼續(xù)"); getch(); } }}/*獲取系統(tǒng)時間*///返回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;}/*移動光標*///蔣光標移動到(x,y)點voidgotoxy(intx,inty){ COORDcoord;數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第7頁。 coord.X=x;數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第7頁。 coord.Y=y+3; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);}/*畫圖*///畫出系統(tǒng)界面voidpanitPL(){ gotoxy(20,4); printf("****************對話框****************"); intx=18,y=6;//起始點 inta[2][4]={2,0,0,1,-2,0,0,-1};//方向 for(inti=0;i<2;i++) { for(intj=0;j<20;j++) { x+=a[i][0]; y+=a[i][1]; gotoxy(x,y); printf("═"); } x+=a[i][0]; y+=a[i][1]; gotoxy(x,y); if(i==0) printf("╗"); else printf("╚"); for(j=0;j<12;j++) { x+=a[i][2];y+=a[i][3]; gotoxy(x,y); printf("║"); } x+=a[i][2];y+=a[i][3]; gotoxy(x,y); if(i==0) printf("╝"); else printf("╔"); } gotoxy(22,8); printf("小王:"); gotoxy(22,11); printf("顧客:"); gotoxy(22,14); printf("***********停車信息***********"); gotoxy(23,15); printf("車牌號:"); gotoxy(42,15); printf("時間:"); gotoxy(23,17); printf("停車時長:"); gotoxy(42,17); printf("收費:");數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第8頁。}數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第8頁。/*清屏函數(shù)*///更新對話框前將原對話晴空voidqingping(inta){ if(a==0)//清空小王的對話 { gotoxy(28,8); printf(""); gotoxy(28,9); printf(""); gotoxy(28,8); } elseif(a==1)//清空顧客的對話 { gotoxy(28,11); printf(""); 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); }}//用上下鍵移動選擇intgetkey(){ charc; intx=28,y=11; while(1) { gotoxy(x,11); printf(""); gotoxy(x,12); printf(""); gotoxy(x,13); printf(""); gotoxy(x,y); printf(">>");c=getch(); if(c==13)returny-10; //enter鍵返回當前選項 if(c!=-32)continue; //不是方向鍵進行下次循環(huán) c=getch(); if(c==72)if(y>11)y--;//上 if(c==80)if(y<13)y++;//下 }}//輸入車輛信息CarNodegetcarInfo(){ PTimeT;數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第9頁。 CarNodex;數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第9頁。 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;}//打印停車場voidprintcar(){ gotoxy(0,20); //╔╗╝╚═║ printf("═══════════════════════════════════════╗"); printf("出場暫放區(qū)║12345║"); printf("----------------------------------------------------------------------║"); printf("主車道║"); printf("----------------------------------------------------------------------║"); printf("121110987654321║"); printf("═══════════════════════════════════╗║"); printf("↑╔══════════════╝║"); printf("便道停車區(qū)→║12345║"); printf("╚══════════════════╝"); printf("停車場管理日志\n\n"); printf("時間車牌號進(1)/出(0)車位(B便道P停車場)收費(元)");}//打印日志記錄voidprintlog(Timet,intn,intio,charab,intpo,doublef){ jy++; gotoxy(jx,jy);// printf("時間車牌號進(1)/出(0)車位(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);}voidprintstop(inta,intnum,intx0,inty0){ staticchar*car="【█】";// intx0=0,y0=23; intx=0,y=28; if(a==0)數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第10頁。 {數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第10頁。 x=(num+6)*6; for(;x0<72;x0++) { gotoxy(x0,y0); printf("%s",car); Sleep(30); gotoxy(x0,y0); printf(""); } for(;y0<y;y0++) { gotoxy(x0,y0); printf("%s",car); Sleep(100); gotoxy(x0,y0); printf(""); } for(;x0>x;x0--) { gotoxy(x0,y0); printf("%s",car); Sleep(50); gotoxy(x0,y0); printf(""); } gotoxy(x,y); printf("%s",car); } else { x=(12-num)*6; y=y-3; for(;x0<x;x0++) { gotoxy(x0,y0); printf("%s",car); Sleep(30); gotoxy(x0,y0); printf(""); } gotoxy(x,y); printf("%s",car); } }voidprintleave(inta,intpo,intnum){ staticchar*car="【█】"; intx0=0,y0=23; intx=0,y=28; inti; if(a==-1) { x=(12-po)*6; y=y-3; gotoxy(x,y); printf(""); gotoxy(x,y-2);printf("%s",car); Sleep(100); if(12>num) { gotoxy((12-num)*6,y); printf(""); }數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第11頁。 gotoxy(x,y); printf("%s",car);數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第11頁。 for(;x>x0;x--) { gotoxy(x,y-2);printf("%s",car); Sleep(30); gotoxy(x,y-2); printf(""); } } else { i=num+1; for(;num>po;num--) { x=(num+6)*6; y=28; for(;x<72;x++) { gotoxy(x,y); printf("%s",car); Sleep(30); gotoxy(x,y); printf(""); } for(;y>21;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(;x<72;x++) { gotoxy(x,y); printf("%s",car); Sleep(30); gotoxy(x,y); printf(""); } for(;y>23;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(;i-num>0;num++) { x=(i-num+6)*6; y=21; for(;x<72;x++) { gotoxy(x,y); printf("%s",car); Sleep(30);數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第12頁。 gotoxy(x,y); printf("");數(shù)據(jù)結構c語言版課程設計停車場管理系統(tǒng)全文共14頁,當前為第12頁。 } for(;y<28;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("%s",car); Sleep(100); if(12>a) { gotoxy((12-a)*6,y); printf(""); } if(a>1) { gotoxy(x,y); printf("%s",car); } printstop(0,i-1,x,y-2); } }}/************************************************************main*********

溫馨提示

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

評論

0/150

提交評論