【數(shù)據(jù)結(jié)構(gòu)】A類停車場(chǎng)管理系統(tǒng)_第1頁(yè)
【數(shù)據(jù)結(jié)構(gòu)】A類停車場(chǎng)管理系統(tǒng)_第2頁(yè)
【數(shù)據(jù)結(jié)構(gòu)】A類停車場(chǎng)管理系統(tǒng)_第3頁(yè)
【數(shù)據(jù)結(jié)構(gòu)】A類停車場(chǎng)管理系統(tǒng)_第4頁(yè)
【數(shù)據(jù)結(jié)構(gòu)】A類停車場(chǎng)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.東北大學(xué)信息科學(xué)與工程學(xué)院數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告題目 立體化停車場(chǎng)管理課題組長(zhǎng) 張曉峰課題組成員 曹喬家 王子驕專業(yè)名稱 計(jì)算機(jī)科學(xué)與技術(shù)班級(jí) 計(jì)1307指導(dǎo)教師 楊雷2015 年 1月:課程設(shè)計(jì)任務(wù)書題目:立體化停車場(chǎng)管理問題描述:設(shè)停車場(chǎng)有地上和地下兩層,統(tǒng)一管理。地下停車場(chǎng)采用單入口和單出口。地上停車場(chǎng)采用南北方向的雙口,每個(gè)口都有一個(gè)入口和出口。停車順序先地上,后地下。地上入口處各有一個(gè)單車道的等候通道,并允許等候的車輛因急事從等候通道直接開走。設(shè)計(jì)要求:設(shè)計(jì)停車場(chǎng)模擬管理程序。(1)采用棧、隊(duì)列和有序表等數(shù)據(jù)結(jié)構(gòu)。(2)等候車輛的管理。(3)地下、地上停車位的管理。(4)停車計(jì)費(fèi)功能

2、。(5)其它完善性功能。指導(dǎo)教師簽字:年月日 目錄1 課題概述11.1 課題任務(wù)11.2 課題原理11.3 相關(guān)知識(shí)12 需求分析12.1 課題調(diào)研12.2 用戶需求分析13 方案設(shè)計(jì)23.1 總體功能設(shè)計(jì)23.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)23.3 函數(shù)原型設(shè)計(jì)33.4 主算法設(shè)計(jì)43.5 用戶界面設(shè)計(jì)44 方案實(shí)現(xiàn)44.1 開發(fā)環(huán)境與工具44.2 程序設(shè)計(jì)關(guān)鍵技術(shù)44.3 個(gè)人設(shè)計(jì)實(shí)現(xiàn)44.3.1 張曉峰設(shè)計(jì)實(shí)現(xiàn)44.3.2 曹喬家設(shè)計(jì)實(shí)現(xiàn)114.3.3 王子驕設(shè)計(jì)實(shí)現(xiàn)155 測(cè)試與調(diào)試195.1 個(gè)人測(cè)試195.1.1 張曉峰測(cè)試19 5.1.2 曹喬家測(cè)試205.1.3 王子驕測(cè)試215.2 組裝與

3、系統(tǒng)測(cè)試215.3 系統(tǒng)運(yùn)行226 課題總結(jié)246.1 課題評(píng)價(jià)246.2 團(tuán)隊(duì)協(xié)作256.3 團(tuán)隊(duì)協(xié)作256.4 個(gè)人設(shè)計(jì)小結(jié)256.4.1張曉峰設(shè)計(jì)小結(jié)25 6.4.2 曹喬家設(shè)計(jì)小結(jié)256.4.3 王子驕設(shè)計(jì)小結(jié)257 附錄A 課題任務(wù)分工26A-1 課題程序設(shè)計(jì)分工26A-2 課題報(bào)告分工27 附錄B 課題設(shè)計(jì)文檔(光盤)28B-1課程設(shè)計(jì)報(bào)告(電子版)28B-2源程序代碼(*.H,*.CPP)28B-3工程與可執(zhí)行文件)28B-4屏幕演示錄像文件(可選)28 附錄C 用戶操作手冊(cè)(可選)28C.1 運(yùn)行環(huán)境說明28C.2 操作說明28 1 課題概述1.1 課題任務(wù)【問題描述】設(shè)停車場(chǎng)

4、有地上和地下兩層,統(tǒng)一管理。地下停車場(chǎng)采用單入口和單出口。地上停車場(chǎng)采用南北方向的雙口,每個(gè)口都有一個(gè)入口和出口。停車順序先地上,后地下。地上入口處各有一個(gè)單車道的等候通道,并允許等候的車輛因急事從等待通道直接開走。 【設(shè)計(jì)要求】設(shè)計(jì)停車場(chǎng)模擬管理程序。(1)采用棧、隊(duì)列和有序表等數(shù)據(jù)結(jié)構(gòu)。(2)等候車輛的管理。(3)地下、地上停車位的管理。(4)停車計(jì)費(fèi)功能。(5)其它完善性功能。1.2 課題原理 本程序主要運(yùn)用棧來模擬停車場(chǎng),建立上下兩個(gè)棧來模擬上下停車場(chǎng),一列表模擬車場(chǎng)便道,按照從終端輸入的數(shù)據(jù)序列進(jìn)行模擬管理,把停車的車位信息保存在新建的鏈表中,每組輸入的數(shù)據(jù)保存車牌號(hào),自動(dòng)生成車位號(hào)

5、和車輛到達(dá)時(shí)間保存在鏈表中,對(duì)每一組的數(shù)據(jù)輸出信息,包括車輛到達(dá)時(shí)間,離開時(shí)間,及停車費(fèi)用,用隊(duì)列保存便車道??康能囕v,以及車輛的登記和離開,最后的棧是以順序棧結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列和鏈表以鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)。1.3 相關(guān)知識(shí) 本實(shí)驗(yàn)主要運(yùn)用鏈表、棧、隊(duì)列等數(shù)據(jù)結(jié)構(gòu),運(yùn)用C語言中的指針、數(shù)組字符串等相關(guān)知識(shí)。 2 需求分析2.1 課題調(diào)研 通過在網(wǎng)上對(duì)各個(gè)停車場(chǎng)的調(diào)查,我們查到停車場(chǎng)有車輛的入場(chǎng)登記,車輛的離開及費(fèi)用,還有就是車輛的信息保存,每個(gè)車輛有車牌號(hào),到達(dá)和離開時(shí)間及停車費(fèi)用等等。2.2 用戶需求分析 本程序采用簡(jiǎn)單的界面,使使用者可以簡(jiǎn)單可了解軟件的使用,界面簡(jiǎn)單、大方。鏈表保存的車位信息,只需輸

6、入車牌號(hào),其他車位信息自動(dòng)由系統(tǒng)生成,可以免去使用的其他操作,為使用者省事,省力。同時(shí)本軟件的使用達(dá)到人性化,方便化,便于使用者的使用。 3 方案設(shè)計(jì)3.1 總體功能設(shè)計(jì) 本軟件要實(shí)現(xiàn)對(duì)進(jìn)入停車場(chǎng)的車輛登記功能,車輛離開的收費(fèi)功能,以及車輛進(jìn)入便車道的等待及從便車道,還有對(duì)車輛信息的查詢和對(duì)車場(chǎng)進(jìn)入和離開車輛的統(tǒng)計(jì)。3.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(1)時(shí)間的結(jié)構(gòu)體 struct now_timeint mday; int hour; int min; (2)車位信息的結(jié)構(gòu)體struct information int setnumber; char num10; struct now_time reac

7、h; struct now_time leave; setMAX*2(3)便車道隊(duì)列typedef struct char *base; int front; int rear; SqQueue(4)停車場(chǎng)的棧typedef structint *base; int *top; int stacksize;SqStack(5)車位信息的鏈表typedef struct LNodestructint stnumber; char num10; struct now_time reach; struct now_time leave; float fee; int totalhour;data;

8、struct LNode *next;LNode,*LinkList3.3 函數(shù)原型設(shè)計(jì)()void CreateList_L(LinkList &L) 建立車輛信息鏈表()Status initStack1(SqStack &S) 建立地上停車場(chǎng)的棧()Status initStack2(SqStack &S) 建立地下停車場(chǎng)的棧()Status Push(SqStack &S,int e) 車輛入棧即出場(chǎng)()Status Pop(SqStack &S,int &e) 車輛出棧即入場(chǎng)()Status initQueue(SqQueue &

9、;Q) 建立便車道的隊(duì)列()Status QueueLength(SqQueue Q) 計(jì)算便車道的車輛數(shù)量()Status stack_empty(SqStack S) 判斷停車場(chǎng)是否車滿()void enterstop( LinkList clist,SqStack &S,char number10,int *come,int i) 車輛進(jìn)入停車場(chǎng) ()Status leavestop(LinkList llist,LinkList clist,SqStack &S,SqQueue &Q,int *come,int*leave,int i) 車輛離開停車場(chǎng)()voi

10、d ccord(LinkList clist,int i,int setnumber) 信息登記()Status ListInsert_Link(LinkList &L,int i,int setnumber) 保存車輛到來的信息()void copy(char *a,char *b) 進(jìn)行車位號(hào)的比對(duì)()Status lListInsert_Link(LinkList &llist,int i,int lset,int totalhour,float fee,int day,int hour,int min) 保存車輛離開的信息()void showcome(LinkList

11、 list) 顯示車輛到來時(shí)間()void showleave(LinkList list) 顯示車輛離開時(shí)間3.4 主算法設(shè)計(jì) 程序運(yùn)行時(shí),當(dāng)車輛入場(chǎng)時(shí),車輛信息保存在鏈表里,并出棧來表示進(jìn)入一輛車,其車位和時(shí)間自動(dòng)生成,當(dāng)汽車離場(chǎng)時(shí),輸入車位信息,顯示時(shí)間,費(fèi)用。并把車輛離開時(shí)間等保存在離開的鏈表里,然后通過車位信息的輸入,即出場(chǎng)和離場(chǎng)鏈表表示輸出。3.5 用戶界面設(shè)計(jì) 主界面分別有車輛登記,車輛離場(chǎng),車場(chǎng)信息,退出系統(tǒng)四個(gè)功能,進(jìn)入車輛登記窗口輸入車牌號(hào),自動(dòng)生成車位信息顯示。車輛離場(chǎng)窗口進(jìn)入輸入車場(chǎng)及 車位信息,即彈出車位信息及停車費(fèi)用。車位信息即顯示地上下停車場(chǎng)進(jìn)出車輛的車輛信息,包

12、括到達(dá)時(shí)間、離開時(shí)間、車位號(hào)、車牌號(hào)、停車費(fèi)用等。退出系統(tǒng)即退出本軟件。 4 方案實(shí)現(xiàn)4.1 開發(fā)環(huán)境與工具 本程序在window7下實(shí)現(xiàn)和運(yùn)行,并使用Visual C+6.0編譯的。4.2 程序設(shè)計(jì)關(guān)鍵技術(shù) 本程序主要用棧來保存車位車位的信息,當(dāng)車場(chǎng)為空時(shí),棧此時(shí)是滿的,而當(dāng)車場(chǎng)滿時(shí),棧是空的。所以當(dāng)車輛入場(chǎng)時(shí)是出棧,而車輛進(jìn)場(chǎng)時(shí)時(shí)出棧。此外就是車輛信息的保存在鏈表里。因?yàn)槭堑厣舷聝蓚€(gè)停車場(chǎng),故我們采用兩個(gè)棧和兩個(gè)鏈表來保存其對(duì)應(yīng)的信息,我們還采用了系統(tǒng)時(shí)間,減少了使用者的輸入。4.3 個(gè)人設(shè)計(jì)實(shí)現(xiàn)4.3.1 張曉峰設(shè)計(jì)實(shí)現(xiàn) 設(shè)計(jì)時(shí)間車位兩個(gè)結(jié)構(gòu)體,以及時(shí)間函數(shù)。主函數(shù)的設(shè)計(jì)。保存車輛到達(dá)與

13、離開信息(利用鏈表)(1)時(shí)間與車位信息的結(jié)構(gòu)體源程序:struct now_timeint mday; int hour; int min;struct information int setnumber; char num10; struct now_time reach; struct now_time leave; setMAX*2;(2)保存車輛到來信息源程序: 車輛信息,包括車牌號(hào),到達(dá)時(shí)間。儲(chǔ)存在鏈表中,后續(xù)查詢車場(chǎng)信息中利用此函數(shù)。Status ListInsert_Link(LinkList &L,int i,int setnumber)LNode *p,*s;int

14、 j; p=L; j=0; while(p&&j<i-1)p=p->next; +j; if(!p|j>i-1)return ERROR; s=(LinkList)malloc(sizeof(LNode); s->data.stnumber=setsetnumber.setnumber; s->data.reach.hour=setsetnumber.reach.hour; s->data.reach.mday=setsetnumber.reach.mday; s->data.reach.min=setsetnumber.reach.m

15、in; copy(s->data.num,setsetnumber.num); s->next=p->next; p->next=s; return OK;(3)保存車輛離開 離開時(shí),記錄離開時(shí)間,算出總時(shí)間,為后續(xù)計(jì)算費(fèi)用做鋪墊。同樣將信息儲(chǔ)存在鏈表中,在離開停車場(chǎng)函數(shù)中利用該函數(shù)。Status lListInsert_Link(LinkList &llist,int i,int lset,int totalhour,float fee,int day,int hour,int min)LNode *p,*s; int j; p=llist; j=0; whi

16、le(p&&j<i-1)p=p->next; +j;if(!p|j>i-1)return ERROR; s=(LinkList)malloc(sizeof(LNode); s->data.fee=fee; s->data.totalhour=totalhour; s->data.stnumber=lset; s->data.leave.mday=day; s->data.leave.hour=hour; s->data.leave.min=min; copy(s->data.num,setlset.num); s-&g

17、t;next=p->next; p->next=s; return OK; (4)時(shí)間函數(shù)源代碼: 采用系統(tǒng)時(shí)間,日小時(shí)分鐘格式。分為入場(chǎng)時(shí)間和出場(chǎng)時(shí)間。void showcome(LinkList list)LNode *p; p=list->next; while(p) printf("n %st%d號(hào)t%d日%d時(shí)%d分",p->data.num,p->data.stnumber,p->data.reach.mday,p->data.reach.hour,p->data.reach.min);p=p->next;

18、void showleave(LinkList list)LNode *p;p=list->next;while(p)printf("n %st%d號(hào)t%d日%d時(shí)%d分",p->data.num,p->data.stnumber,p->data.leave.mday,p->data.leave.hour,p->data.leave.min);p=p->next;(5)主函數(shù): 本程序的關(guān)鍵所在。對(duì)所有函數(shù)進(jìn)行調(diào)用,并實(shí)現(xiàn)界面的顯示。登記,離開,查詢,退出四個(gè)部分。主菜單的建立,界面設(shè)計(jì)等。void main()int choice

19、1,choice2,choice3,wait,ture=1; int i; int come1=0;int leave2=0;int come3=0;int leave4=0; int *p1,*p2,*p3,*p4; p1=&come1;p2=&leave2; p3=&come3; p4=&leave4; char number10; SqStack stack_set1; SqStack stack_set2; SqQueue queue_turn; initStack1(stack_set1); initStack2(stack_set2); initQu

20、eue(queue_turn); LinkList llist1,llist2,clist1,clist2; CreateList_L(llist1); CreateList_L(clist1); CreateList_L(llist2); CreateList_L(clist2); for(i=1;i<=MAX+1;i+)seti.setnumber=i; seti.num1='#' system("color 3B"); printf("nnnnnnnnn*歡迎使用停車場(chǎng)管理系統(tǒng),按任意鍵進(jìn)入主菜單*"); do getchar

21、(); system("cls"); printf(" 歡迎使用停車場(chǎng)管理系統(tǒng)nnn");printf(" 主菜單nn"); printf(" *1* 汽車登記n"); printf(" *2* 汽車離場(chǎng)n"); printf(" *3* 車場(chǎng)信息n"); printf(" *0* 退出系統(tǒng)nn");printf("*請(qǐng)按提示輸入:n"); scanf("%d",&choice1); switch(choic

22、e1)case 1:system("cls"); printf(" *汽車登記*nnn");if(!stack_empty(stack_set1)/進(jìn)入停車場(chǎng) printf("n *請(qǐng)輸入您的車牌號(hào)(例:遼A3475):"); scanf("%s",number); enterstop(clist1,stack_set1,number,p1,1);else if(!stack_empty(stack_set2) printf("n *請(qǐng)輸入您的車牌號(hào)(例:遼A3475):"); scanf(&q

23、uot;%s",number); enterstop(clist2,stack_set2,number,p3,2); else/進(jìn)入便車道等待 wait=w_total(queue_turn); printf("*您好,當(dāng)前停車場(chǎng)已滿,有%d在等待!*n 您是否愿意進(jìn)入便車道等待:n",wait);printf(" *1*:愿意等待!tt*2*:不愿意等待n"); while(ture=1)scanf("%d",&choice3); getchar(); switch(choice3)case 1:enterlane

24、(queue_turn,wait);/汽車進(jìn)入便車道 printf("*您好,請(qǐng)進(jìn)入便車道等待*!"); ture=0;break; case 2: printf("n*汽車離開!"); ture=0; break; default: printf("n*您好,輸入錯(cuò)誤,請(qǐng)重新輸入!");ture=1;break;case 2:system("cls");printf("*汽車離場(chǎng)*nnn");printf(" *1* 地上車場(chǎng)n");printf(" *2* 地下

25、車場(chǎng)n"); scanf("%d",&choice2); switch(choice2)case 1:printf(" *地上停車場(chǎng)*n "); leavestop(llist1,clist1,stack_set1,queue_turn,p1,p2,1); break; case 2: printf(" *地下停車場(chǎng)*n "); leavestop(llist2,clist2,stack_set2,queue_turn,p3,p4,2); break; default: printf("*您輸入的有誤,請(qǐng)重

26、新輸入:");break;case 3:/*今天信息的顯示*/system("cls"); printf(" *車場(chǎng)信息*nn");if(come1+come3)=0)printf("*無車輛到達(dá)!n");else printf("*到達(dá)%d輛車:",come1+come3); printf ("n*汽車信息*車牌號(hào)*t*車位號(hào)*t*到達(dá)時(shí)間*t"); printf ("n*地上車場(chǎng)*t"); showcome(clist1); printf ("n*地下

27、車場(chǎng)*t"); showcome(clist2); printf("n");if(leave2+leave4)=0) printf("*無車輛離開!n");elseprintf("*離開%d輛車:",leave2+leave4); printf ("n*汽車信息: *車牌號(hào)*t*車位號(hào)*t*到達(dá)時(shí)間*t"); printf ("n*地上車場(chǎng):t"); showleave(llist1); printf ("n*地下車場(chǎng):t"); showleave(llist2);

28、 break;case 0:system("cls");printf(" *退出停車系統(tǒng)!*n"); break;default : printf("*您輸入的有誤,請(qǐng)重新輸入:");getchar();while(choice1!=0);4.3.2 曹喬家設(shè)計(jì)實(shí)現(xiàn) 設(shè)計(jì)進(jìn)入停車場(chǎng)和離開停車場(chǎng)函數(shù),結(jié)合之前棧,鏈表,隊(duì)列以及數(shù)組。(1)進(jìn)入停車場(chǎng)源代碼:void enterstop( LinkList clist,SqStack &S,char number10,int *come,int i) int e; *come=*c

29、ome+1; Pop(S,e); sete.setnumber=e;copy(sete.num,number);struct tm *newtime; char am_pm = "AM" time_t long_time; time( &long_time ); newtime = localtime( &long_time ); sete.reach.hour=newtime->tm_hour;sete.reach.mday=newtime->tm_mday; sete.reach.min=newtime->tm_min; printf(

30、"nn *請(qǐng)核對(duì)您的停車信息*n"); printf(" *停車牌號(hào)*: %sn",sete.num);if(i=1)printf(" *地上車場(chǎng)*: %dn",sete.setnumber);if(i=2)printf(" *地下車場(chǎng)*: %dn",sete.setnumber); printf(" *到達(dá)時(shí)間*: %d:%d:%dn", sete.reach.mday,sete.reach.hour,sete.reach.min); ccord(clist,*come,sete.setnum

31、ber); 利用出棧函數(shù)來表示車輛進(jìn)入停車場(chǎng),等同于車位出停車場(chǎng)。利用set數(shù)組,存儲(chǔ)進(jìn)入車場(chǎng)的車輛信息。包括進(jìn)入時(shí)間,車號(hào)等。時(shí)間函數(shù)的時(shí)候,顯示到達(dá)時(shí)間,并按先下后上的順序,選擇上下兩個(gè)停車場(chǎng),并輸出。(2)離開停車場(chǎng)源代碼:Status leavestop(LinkList llist,LinkList clist,SqStack &S,SqQueue &Q,int *come,int*leave,int i)char number10; int t,lset; int j=1; int totalhour; float fee; printf ("*請(qǐng)輸入您的

32、停車位號(hào):");doscanf ("%d",&lset); getchar();for(int i=0;i<=MAX;i+)if(setlset.num1='#')j=0;if(j=0)printf(" *車場(chǎng)并沒有停車*n");return ERROR;elseif(lset>MAX |lset<1)printf("*您輸入有誤,該車號(hào)并不存在!*n*請(qǐng)重新輸入您的車位號(hào):n");t=1;elseif(setlset.num1='#')printf("*該

33、車位為空,不能進(jìn)行離開操作!*n*請(qǐng)重新輸入您的車位號(hào):n");t=1;elsestruct tm *newtime;char am_pm = "AM"time_t long_time;time( &long_time ); newtime = localtime( &long_time ); totalhour=(newtime->tm_mday-setlset.reach.mday)*24*60+(newtime->tm_hour-setlset.reach.hour)*60+(newtime->tm_min-setlset.

34、reach.min); fee=price*totalhour; printf(" *以下是您本次停車的信息*n"); printf(" *停車牌號(hào)*:%sn",setlset.num); printf(" *停車位號(hào)*:%dn",setlset.setnumber); printf(" *到達(dá)時(shí)間*:%d:%d:%dn", setlset.reach.mday,setlset.reach.hour,setlset.reach.min); printf(" *離開時(shí)間*:%d:%d:%dn",

35、newtime->tm_mday,newtime->tm_hour,newtime->tm_min); printf(" *停車費(fèi)用*:%f",fee); printf("nnnt*謝謝您的光臨,祝您一路平安*!nn"); printf("nnnntttmention:press any key continue!"); getchar(); system("cls"); *leave=*leave+1; lListInsert_Link(llist,*leave,lset,totalhour,f

36、ee,newtime->tm_mday,newtime->tm_hour,newtime->tm_min); setlset.num1='#'Push(S,lset);if(!EmptyQueue(Q)DeQueue(Q); printf("n *請(qǐng)停在停車便道的客戶進(jìn)入停車場(chǎng)!*n");if(i=1)/判斷車場(chǎng)printf("n*輸入您的車牌號(hào)(例:遼A3475):");scanf("%s",number); enterstop(clist,S,number,come,1); t=0;if(i=2)

37、 printf("n*輸入您的車牌號(hào)(例:遼A3475):"); scanf("%s",number); enterstop(clist,S,number,come,2); t=0;elset=0;while(t=1);return OK; 離開停車場(chǎng),包括計(jì)費(fèi)的顯示,信息存儲(chǔ)在鏈表中。其中包含出場(chǎng)費(fèi)用的計(jì)算,按分鐘計(jì)時(shí)。實(shí)現(xiàn)輸入車位號(hào)即顯示車輛信息(車號(hào),進(jìn)場(chǎng)時(shí)間)離開時(shí),顯示所需費(fèi)用。最后利用一個(gè)便車道的判空,判斷是否有車輛等待入場(chǎng),如果有,則停在剛剛空出的車位上。若沒有,返回0;4.3.3 王子驕設(shè)計(jì)實(shí)現(xiàn) 停車場(chǎng)棧的建立,便車道的建立,保存車位信息

38、,地上地下兩個(gè)車場(chǎng),判斷車場(chǎng)是否已滿,便車道上的車輛數(shù)目函數(shù)。(1)便車道的建立源代碼:便車道用一隊(duì)列表示。typedef struct char *base; int front; int rear; SqQueue;(2)代表停車場(chǎng)的棧建立源代碼:typedef structint *base; int *top; int stacksize;SqStack;(3)保存車位信息: 在進(jìn)入停車場(chǎng)時(shí),要把車輛信息保存在鏈表中,調(diào)用此函數(shù)可以實(shí)現(xiàn)該功能。信息包括車牌號(hào)以及入場(chǎng)時(shí)間。typedef struct LNodestructint stnumber; char num10; struct

39、 now_time reach; struct now_time leave; float fee; int totalhour;data; struct LNode *next;LNode,*LinkList;void copy(char *a,char *b)int i;for(i=0;(ai=bi)!='0'i+); void CreateList_L(LinkList &L)L=(LinkList) malloc (sizeof(LNode); L->next=NULL;void ccord(LinkList clist,int i,int setnumb

40、er) ListInsert_Link(clist,i,setnumber);(4)建立地上地下兩個(gè)停車場(chǎng): 題目要求兩個(gè)停車場(chǎng),建立方法相同,最大車位號(hào)相等。Status initStack1(SqStack &S) int i;S.base=(int * )malloc(MAX * sizeof(int);if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=MAX;for(i=1;i<=MAX;i+)*S.top+=i; return OK;Status initStack2(SqStack &S) int i;S.b

41、ase=(int * )malloc(MAX * sizeof(int);if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=MAX;for(i=1;i<=MAX;i+)*S.top+=i;return OK;(5)便車道的建立與判斷是否已滿: 便車道在后續(xù)的離開停車場(chǎng)時(shí)調(diào)用。如車道上有車等待,當(dāng)車場(chǎng)中有車離開時(shí),進(jìn)行一次車道判空。若非空,則進(jìn)入車場(chǎng)并停在對(duì)應(yīng)的車位。Status initQueue(SqQueue &Q)Q.base=(char*)malloc(100*sizeof(char10); if(!Q.base)exi

42、t(OVERFLOW);Q.front=Q.rear=0; return OK;Status stack_empty(SqStack S)if(S.top=S.base)return OK; else return ERROR;(6)棧的相關(guān)函數(shù): 由于本程序設(shè)計(jì)的車場(chǎng),是以滿棧的形式。即車位號(hào)已經(jīng)將車場(chǎng)占滿。車輛入棧,相當(dāng)于車位號(hào)出戰(zhàn)。以實(shí)現(xiàn)在車輛進(jìn)入時(shí),輸出車位號(hào)信息。所以入棧為有車離開車場(chǎng),出棧為有車進(jìn)入車場(chǎng)。Status Push(SqStack &S,int e)if(S.top-S.base>=S.stacksize)if(!S.base)exit(OVERFLOW)

43、;S.top=S.base+S.stacksize;*S.top+=e;return OK;Status Pop(SqStack &S,int &e)if(S.top=S.base)return ERROR;e=*-S.top;return OK;(7)計(jì)算便車道車輛數(shù)目: 計(jì)算隊(duì)列長(zhǎng)度,即車輛數(shù)目。Status QueueLength(SqQueue Q) return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;Status w_total(SqQueue Q) return QueueLength(Q);(8)隊(duì)列判空:Status EnQueu

44、e(SqQueue &Q,int e)if(Q.rear+1)%MAXQSIZE=Q.front)return ERROR; Q.baseQ.rear=e; Q.rear=(Q.rear+1)%MAXQSIZE; return OK;(9)進(jìn)入車道等待:Status enterlane(SqQueue &Q,int waitenumber)EnQueue(Q,waitenumber); return OK; 設(shè)計(jì)的函數(shù),均被后續(xù)進(jìn)出停車場(chǎng)所使用,實(shí)現(xiàn)對(duì)應(yīng)功能。 5 測(cè)試與調(diào)試5.1 個(gè)人測(cè)試5.1.1 張曉峰測(cè)試5.1.2 曹喬家測(cè)試5.1.3 王子驕測(cè)試5.2 組裝與系統(tǒng)測(cè)試

45、把各個(gè)函數(shù)通過主函數(shù)的調(diào)用來實(shí)現(xiàn)停車場(chǎng)的各個(gè)功能的實(shí)現(xiàn),當(dāng)進(jìn)入主函數(shù),再調(diào)用各個(gè)副函數(shù)來實(shí)現(xiàn)功能的實(shí)現(xiàn)。操作名稱操作流程操作結(jié)果和輸出登錄系統(tǒng)打開登錄頁(yè)面,按任意鍵進(jìn)入主菜單從登錄系統(tǒng)到進(jìn)入主菜單,花費(fèi)1秒時(shí)間?;緷M足了系統(tǒng)顯示要求。車輛登記輸入車牌號(hào)確定即自動(dòng)生成車位信息用列表的方式顯示出了符合條件的記錄。從服務(wù)器端返回信息,花費(fèi)50毫秒-100毫秒,滿足要求。汽車離場(chǎng)進(jìn)入窗口,輸入車場(chǎng)及車位信息自動(dòng)生成車輛的到達(dá)離開時(shí)間及停車費(fèi)用。退出系統(tǒng)點(diǎn)擊退出本軟件執(zhí)行結(jié)束,退出系統(tǒng)。5.3 系統(tǒng)運(yùn)行(1).進(jìn)入系統(tǒng)(2).進(jìn)入主菜單(3.).進(jìn)入汽車登記(4).進(jìn)入汽車離場(chǎng)系統(tǒng)(5).進(jìn)入車位信息

46、 6 課題總結(jié)6.1 課題評(píng)價(jià)(1)系統(tǒng)功能總結(jié):登記功能:車輛進(jìn)入停車場(chǎng)時(shí),對(duì)車輛的信息進(jìn)行登記,包括車牌號(hào),進(jìn)入停車場(chǎng)的時(shí)間,將信息儲(chǔ)存在鏈表中;收費(fèi)功能:再離開停車場(chǎng)時(shí),系統(tǒng)將利用時(shí)間函數(shù)計(jì)算出車輛在停車場(chǎng)中的時(shí)長(zhǎng),并計(jì)算出所需費(fèi)用,顯示在離開信息中;查詢功能:可查詢停車場(chǎng)全天的信息,包括場(chǎng)內(nèi)現(xiàn)有車輛以及離開車輛的信息,包含所有的登記信息以及離開時(shí)間費(fèi)用信息;(2)程序運(yùn)行評(píng)價(jià): 本程序說明清晰易懂,使用時(shí)按照說明操作即可。用棧表示車場(chǎng),隊(duì)列存儲(chǔ)車輛。事項(xiàng)車輛與車號(hào)的一一對(duì)應(yīng)。但對(duì)于界面方面,不夠美觀,程序也不夠?qū)嵱?。由于本程序只做了管理方面的?shí)現(xiàn),所以在采集數(shù)據(jù)方面還需要手動(dòng)輸入。由于

47、開發(fā)能力和時(shí)間所限,本程序目前還需要在一定程度上進(jìn)行改進(jìn)和完善,根據(jù)以后運(yùn)行問題以及學(xué)習(xí)的新知識(shí),我們可以在功能方面進(jìn)一步加強(qiáng)。6.2 團(tuán)隊(duì)協(xié)作 在此次數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn)中。我們學(xué)會(huì)了在編程過程中要學(xué)會(huì)各個(gè)成員的合作,以及各個(gè)函數(shù)的組合調(diào)用,在編程中我們要積極向老師請(qǐng)教,各個(gè)成員之間的團(tuán)隊(duì)合作,積極配合,才能更好地完成一個(gè)完整的、成功的程序。6.3 下一步工作 通過這次編程實(shí)驗(yàn),我們意識(shí)到了我們的知識(shí)還遠(yuǎn)遠(yuǎn)不過,我們還要繼續(xù)學(xué)習(xí)我們尚未了解的知識(shí),并且把我們現(xiàn)有的知識(shí)要學(xué)會(huì)靈活運(yùn)用,熟練的掌握我們現(xiàn)在的知識(shí),并為以后的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。我們還要繼續(xù)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的其他知識(shí),為將來的編程打下基礎(chǔ)。6.4 個(gè)人設(shè)計(jì)小結(jié)6.4.1 張曉峰設(shè)計(jì)小結(jié) 經(jīng)過這些天的編程上機(jī)實(shí)驗(yàn),使我們更加深入的了解數(shù)據(jù)結(jié)構(gòu)這門課程,數(shù)據(jù)結(jié)構(gòu)不僅僅要求我們具有熟練的知識(shí),還要我們有豐富的實(shí)際實(shí)驗(yàn)的經(jīng)驗(yàn),使我們能更加地熟練運(yùn)用數(shù)據(jù)結(jié)構(gòu)這門課來解決我們面對(duì)的問題,對(duì)我們將來做更大的程序有非常大的幫助。還懂得了團(tuán)隊(duì)合作的重要性。6.4.2 曹喬家設(shè)計(jì)小結(jié) 這次課程設(shè)計(jì)使我對(duì)配合的能力有了更

溫馨提示

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

評(píng)論

0/150

提交評(píng)論